Products dissapeared, vanished or got lost

Written by Max Milbers. Posted in FAQs

Dont panic. This happened most likely due a change of the language setting.

There are two different translation sets in Virtuemart. There is the translation for normal text and messages for example login, cart, "product not found" and so on. This translation is usually done by the joomla/virtuemart community. You can use the language overrides to adjust them to your taste. This translation is selected in the joomla language manager. You can easily display your shop in 20 languages. It takes maybe 10 minutes to install it.

But there is also another language setting, which sets the languages for your own entered texts like the product desciption. The virtuemart language system is very fast, but had in vm2 the disadvantage that products must provide a "translation" even it is just a copy of the main language. Otherwise the sql was not able to find the product. In VirtueMart 3 the system works with fallback to the main language.
The products dissapeared, because you installed the store with english configured as main language in joomla. Then all tables are created with english language tag. If you change now in the joomla language manager the main language, then virtuemart tries to load non-existing language tables. Virtuemart uses as fallback the default site language of joomla or the first listed virtuemart language. You can make a store which uses a lot languages and show the product descriptions always in english, for example. 

How to solve it

Storing the configuration creates/updates the language tables if necessary. The selection of the languages works whitelisted. So when the selected language is not found, vm uses the fallback. If this does not work, you can select the fallback language.

For example the store got installed in english, then the joomla default site language got changed for example to spanish. Opening the virtuemart configuration shows no entries in the language configuration field. It worked before, because if nothing is configured, it is using the joomla default site language, which got changed meanwhile, so spanish is set as vm language. In a single language store it is just need to set "english" language in the configuration. VM selects then always the only available englisch.

If this should be fixed, in special if already content got entered, the best is to rename the tables with phpmyadmin or similar. You need just to rename all tables with a language tag to your new tag. The language tags are lower case using underscore. so en-GB becomes en_gb. So in case for spain, search for all tables with en_gb at the end and rename them to the spain tag es_es.