I have a product list which store english description for each field.
How can i implement/architect multi-language feature to provide same product in french ?
Have a look at the variatons. It should help you plan your multilingual web sites.
It depends on your requirements, but a common way to do this is with language translation files ( the common extension is .po or .mo ) used by the GNU gettext project, and supported across multiple platforms. Essentially, what you store in the database is a key, and depending on the specific language you are displaying, you pull the correct value based on that key.
Using .po files also means you can use a language file editor like http://www.poedit.net/
There are a few implementations of gettext, for most platforms / languages.
Here is a reference for php:
http://php.net/manual/en/book.gettext.php
or if you're using the zend framework
http://framework.zend.com/manual/en/zend.translate.adapter.html
In general, just store the msgid, and use gettext to retreive the right value depending on the selected language.
An example:
- create a directory 'locale'
and sub directories for the 2 letter language code
locale/en
locale/fr
and create file for each page you wish to translate
locale/en/default.po
locale/fr/default.po
in the english file you create string definitions using the standard syntax
msgid "site-main-welcome"
msgstr "Hello! Welcome to our site"
in the french po file
msgid "site-main-welcome"
msgstr "Salut! bienvenue à notre website"
Related
My requirement: I want to add one more language say Spanish in footer section of language drop down list on Electronic UK storefront. Once we select the Spanish language our website content should change to Spanish Language.
I have read the hybris wiki related to Internationalization and Localization but I could not find any optimal solution.
Please help me in this to achieve the above functionality.
Open hmc or backoffice. Open your current base store, navigate to languages and add spanish to the list.
Notice, that there will be no data for the language, so your homepage might look very empty.
If you want to add localizations for the cms and product content, you have to add the language to all your catalog versions. Otherwise, your language wont show up in the cmscockpit/productcockpit.
Everything that appears on your homepage as words separated by dots (e.g. "search.placeholder") is not saved in the database. Those are spring messages. They are maintained in a file in your storefront. Find them in
/mystorefront/web/webroot/WEB-INF/messages/
by the names
base_XX.properties
theme-my-theme_XX.properties
site-my-site_XX.properties
where XX is the isocode of your language (in your case es). If the file does not exist, create it. You can use the english file (e.g. base_en.properties) as a template and change the values to spanish ones. Beware, there are a LOT!
There might be more pitfalls, but those are the ones, that came to my mind.
Does anybody know, if in Liferay is possibility to use default value in ui message ? I mean I have two files .properties with translations, for example: en.properties:
welecome=Hallo everybody
someKey=
,and default.properites
welecome=Hallo everybody
someKey=value of some key
I want to achieve, that if I use:
<liferay-ui:message key="welcome" />
<liferay-ui:message key="someKey" />
with English language (where there is no translation for key 'someKey'), the displayed value will be:
Hallo everybody
value of some key
I mean, when there is no translation for some key, liferay portlet will use value from default properties file.
regards
With the standard naming conventions, you typically have files like Language.properties and Language_en.properties. When english language is displayed, but the entry is not contained in Language_en.properties, I expect the value from Language.properties to be shown.
However, in your case you define someKey as an empty value, which means that it's defined as exactly this.
Moreover, Liferay offers a "Language Builder" tool that you can run during development time (in the plugins-sdk just run ant build-lang. It will create configured language files automatically, automatically copying the values from the original file if they are not yet contained in the translated file.
If you have api credentials for bing, it can also use these to get an automatically translated value for various languages, but I'm not a big fan of these. Actually, I'm quite annoyed by automatic translations.
I develop a application and submit it on iTunes. and i also did localization for this application for German language. but in German market it showing Language : English. but i want to show both language English and German. like attach sample is showing :
Thx
Mitesh
see your localization string name change it to localizable.strings and then whatever your key put in your whatever language file.
I am creating a Multilingual web site and I use a resource manager for each language.
when user select a language all pages use the selected resource bondles.
as entire sites only is available in one language,how search engines crawl the other languages ?
or does search engine crawl optional provided languages ?
As you know, when you have a static multilingual website that has separate page for each language, you don't have any problem with search engines. Whereas, each page has an unique url.
But in dynamic applications, you don't have separate page for each language and have to use resource instead, you can add a new language or remove an already existing language and so on.
Therefore, we have to use Url Rewriter/Routing for generating unique url for each language. Check the following example out.
Suppose we have a webform in the following url and our application supports two languages (e.g. English United States en-US, English Great Britain en-GB).
www.domain.com/home.aspx
There are some problems, we have permanent url for all of languages. Thus, search engines will be index the default language anyway. The solution is simple, you have to generate separate url for each language by using Url Rewriter/Routing as follows.
www.domain.com/{country}/{language}/home.aspx
Afterwards, you have to inference the specified culture name from the above url and set the current Culture and UICulture properties. Thus, the requested page will be shown in desired language.
The sitemap should be generate programmatically and uses the same way as above, in this case.
www.domain.com/{country}/{language}/sitemap.xml
You have to inference the specified culture from the above url and generate sitemap dependent on culture. To introduce available sitemaps to the search engines you have to use robots.txt that should be generate programmatically as well.
you might be using cookies/sessions for remembering selected language, right?
Neither of them affects search engine. They simply ignore cookies. However, If u rely on session variable for remembering selected language, in the absence of cookies each time new session will be created canceling the language selection.
Ankit
I've developed a site in english (admin & front end) but the site needs to be in a Dutch. Locale and i18n modules have been installed.
Dutch has been added to the list of languages and set as default in admin/settings/language.
I'm now wondering how I can translate strings like the date output? For ex, when I print out a date from a view, it still outputs the days and months in English.
In admin/settings/language/configure I've selected "path prefix only" but I don't get the language code in the url's and links. How is this achieved?
Thanks
You can translate month names, days and much more using Translation interface. Navigate to:
Administer -> Site Building -> Translate interface (admin/build/translate) -> Search (admin/build/translate/search)
and use the search form to locate the string you wish to translate.
Since you've already added Dutch to your site, you can download entire Dutch translation on http://localize.drupal.org. Site is currently in beta, so you will have to login using your Drupal.org credentials.
Use this link to export Dutch translation of Drupal. Just make sure you choose All in one file format so you can easily import it in your site using Translate interface -> Import
To get the language code in the URLs you will have to enable Multilingual support for each content type you need translated (admin/content/types) by opening edit and selecting desired option under Workflow settings -> Multilingual support.
After that make sure that you specify Dutch/English language while adding or editing nodes.