Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

We've moved the forum!

Please use forum.silverstripe.org for any new questions (announcement).
The forum archive will stick around, but will be read only.

You can also use our Slack channel or StackOverflow to ask for help.
Check out our community overview for more options to contribute.

Archive /

Our old forums are still available as a read-only archive.

Moderators: martimiz, Sean, Ed, biapar, Willr, Ingo

template in 2 language


Go to End


7 Posts   3964 Views

Avatar
Webbear

Community Member, 5 Posts

26 May 2008 at 6:07pm

first, I love SS and I also like the i18n!
Now, I'm getting into troubles because I have to build a template for two language (german and french). On my testinstallation I can switch between languages quite easily using the same alias (url) and linking it with ?lang=de or ?lang=fr. Also the meta tag 'content' is changing correctly. But I'd like to switch also some 'default' links like 'print this page' or even the sitetitle in a h1 and those thing I wrote in the template (and want to let it there). I tried the _t function. The language file is correctly created in folder lang in mysite by /i18n/textcollector/.
But there is no switch of the lang file.
I might have missed an important fact in the config file:

i18n::enable();
i18n::set_locale('de_CH');
i18n::set_default_lang('de');

Can anbody help me with this? Thanks a lot
Webbear

Avatar
cliersch

Community Member, 75 Posts

26 May 2008 at 11:46pm

Do you want to use 2 different SS-Installations?
If you want to switch a template between two languages you have to change the set_local parameters in the _config.php.
To switch between German an French:
i18n::set_locale('de_DE');
setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
//i18n::set_locale('fr_FR');
//setlocale (LC_ALL, 'fr_FR@euro', 'fr_FR', 'fr', 'fr');

Avatar
Webbear

Community Member, 5 Posts

27 May 2008 at 9:45am

thanks tiga
but sorry, this didn't work out. Don't want to have to ss installation for two languages.
I want one installation, one template with translations of i.e. contact ->Kontakt or drucken -> imprimer.

Avatar
Webbear

Community Member, 5 Posts

29 May 2008 at 12:45am

After trying more with i18n and ss I see better how ss works.
The problem I have is not setting the locale (and getting the right lang file) but 'changing' the local setting by url (?lang=fr) to get the right language file.

Avatar
lekoala

Community Member, 31 Posts

29 May 2008 at 1:50am

I had the same trouble... what I did was adding in the init of page.php this bit of code :

/*set locale */
$curLang=Session::get('currentLang');
switch($curLang) {
case "fr":
i18n::set_locale('fr_FR');;
break;
case "en":
i18n::set_locale('en_US');
break;
}
/*end of set locale*/

thus, when you set your language with ?lang=en for instance, it will update the locale accordingly... this is only working if you use one locale per language, obviously...

Avatar
Webbear

Community Member, 5 Posts

29 May 2008 at 4:53am

Thanks lekoala
coming closer! Where exactly you put this lines in page.php ? And what did you write in _config.php? (It's quite hot those days in Switzerland, brain's getting very slow...)

Avatar
lekoala

Community Member, 31 Posts

29 May 2008 at 7:34pm

no worries... here it comes :

class Page_Controller extends ContentController {
function init() {
parent::init();

/*set locale */
$curLang=Session::get('currentLang');
switch($curLang) {
case "fr":
i18n::set_locale('fr_FR');;
break;
case "nl":
i18n::set_locale('nl_NL');
break;
case "en":
i18n::set_locale('en_US');
break;
}
/*end of set locale*/
Requirements::themedCSS("layout");
Requirements::themedCSS("typography");
Requirements::themedCSS("form");
}

By the way, I'm not sure that's the best (and recommended) way to deal with locales, but... it works. so...

in _config.php, you just have to make sure that i18n is enabled.

//enable multi lingual support
i18n::enable();

then you can run the textcollector and translate everything... as a side note, here is a sample line of code for translating a template

// in mysite/lang/en_US.php
$lang['en_US']['ActivityPage.ss']['MUST_BE_REGISTERED'] = 'You must be registered to join this event';