Failed to get i18n working.... please help
Posted 14 January 2010 - 03:55 AM
I'm trying for 2 days to get i18n working, read all posts, guides and api docs, and still the most simple case doesn't work. I did this:
set the language and sourceLanguage in controller and main.php to 'nl' Created a general.php under protected/messages/nl with this content:
And used this in the login.php (from the generated skeleton app)
<h1><?php Yii::t("general", 'Aanmelden'); ?></h1>
And still no label is displayed....
Please help, what's missing? :-(
Posted 14 January 2010 - 10:07 AM
<h1><?php echo Yii::t("general", 'Aanmelden'); ?></h1>
Or was that just a trivial copying error?
<?php echo Yii::t('newsModule.articles', 'news'); ?>
Inside my view file and it does absolutely nothing than printing 'news' to the screen. Even when i have set the app()->sourcelanguage to 'en' and the app()->language to 'nl'. The language file is stored in: "/modules/news/messages/nl/articles.php".
I can call the module.. it displays news.. but the translation doesnt work. (i'm sorry i do post this inside this topic because i'm having exact the same problem.
The "/modules/news/messages/en/articles.php" file:
<?php return array( 'news' => 'news (english)' );
The "/modules/news/messages/nl/articles.php" file:
<?php return array( 'news' => 'nieuws' );
It prints "news".. so it doesnt translate, otherwise, if i misconfigured something it should print "news (english)".
I figured out my self. I had to put the Messages folder inside the /modules/news map. not in a application map, now it's working
Posted 14 January 2010 - 10:14 AM
The key must be a translated message! That's the cool thing in Yii, you don't have to write message resources if your targetLangue and source language are the same.
Your articles.php should contain:
'nieuws' => 'nieuws'
But you even don't need a dutch message bundle, if you set sourceLanguage and language to 'nl' in the main.php config (like I do).
Posted 14 January 2010 - 10:22 AM
Posted 14 January 2010 - 10:41 AM
i placed the messages inside /modules/news/messages/nl/articles.php
I know what you mean mlindhout, but i want to keep the source language of my application English. So i create a dutch translation set. I want to keep all options open (for the future). If developpers from other countries are going to edit the source files, they dont need to translate the word: aanmelden and find out what it means in english. English is the worlds main langauge. Thats why i want the sourcelanguage to be english
I have a tricky folder setup.
/app/frontend/.. contains all 'frontend' stuff (controllers, views etc)
/app/backend/.. contains all 'backend' stuff (controllers, views etc)
/app/shared/.. contains all 'shared' stuff. (models, shared configs) i want to put the messages in here but that wont work)
/app/modules/.. contains all the modules
/app/modules/news/.. looks like:
/app/modules/news/messages.. (i want this inside the shared folder.. but okay)
/app/modules/news/newsModule.php (the module class)
(later i want to add installation files etc)