ich hab folgendes:
Router::connect('/:lang', array('controller'=>'pages','action'=>'index'));
Router::connect('/:lang/:controller/:action/*', array('controller' => 'pages', 'action' => 'index'));
dann tue ich hardcoded in meinem controller den paramter rausnehmen und mache dies hier im 'pages_controller.php' :
function language() {
if(!isset($this->params['lang']) && empty($this->params['lang'])) {
$lang = explode('-', $_SERVER['HTTP_ACCEPT_LANGUAGE']); // hier setze ich fest welche spache der user schon vorgewählt hat um im schon auf die richtige language zu lotzen
$language = array('lang'=>$lang[0]);
}else{
$language = array('lang' => $this->params['lang']);
}
switch($language['lang']) {
case 'de':
$pageLang = 'de';
$spLang = 'de_DE';
break;
case 'en':
$pageLang = 'en';
$spLang = 'en_US';
break;
default:
$pageLang = 'de';
$spLang = 'de_DE';
break;
}
$this->params['splang'] = $spLang;
return $this->params['lang'] = $pageLang;
}
das wäre dann die methode die ich dann in meinem beforefilter reinschmeße:
function beforefilter() {
parent::beforeFilter();
$this->language();//Sprachausgabe nur in en und de derzeit moeglich
$this->set('home', $this->Setting->field('set_kat_id'));
if($this->language()=='en') {// hier lege ich fest welche default.po er wählen soll eng oder ger
$translate = 'eng';
}else{
$translate = 'ger';// ger habe ich nicht eingespeist das heißt wenn er nichts findet verwendet er normal __('Senden') anstelle noch extra eine translate file anzugeben weil es eben nicht nötig ist
}
Configure::write('Config.language', $translate);
$this->Session->write('Config.language', $translate);// hier lege ich fest dann welche sprache gewählt wurde und speichere sie in einer session das er auch vortlaufend die sprache beibehält ist etwas optimierungswürdig aber hatte keine zeit bisher
}
und mein folder wo die '.po' ist sieht folgendermaßen aus:
- /app
-- /locale
--- /eng
---- /LC_MESSAGES
-- /default.po
wie du siehst habe ich keinen ger ordner aber falls ich es mal brauche habe ich es schon so voreingestellt
und in der default.po kommt dann deine übersetzung rein
msgid "Anfrage Senden" msgstr "Send request"
bei mir ist halt die sprache die ich brauche eingestellt vom user abhängig
hoffe das hilft dir
2011/7/25 gloop <gloop@web.de>
Im from germany ;)
Die englische übersetzung klappt, aber auch nur, weil englisch die
voreinstellung von cake php ist.
mit __('id', true); klappt es nicht, aber ich habe auch gelesen, dass
dies für die rückgabe einer variable ist und nicht die ausgabe direkt.
Configure::write('Config.language', 'de'); << das funktioniert leider
nicht.
> 2011/7/25 gloop <gl...@web.de>
On 25 Jul., 19:18, Davor Ilic <webfa...@gmail.com> wrote:
> in your default.po you write this
>
> msgid "Anfrage Senden"
> msgstr "Send request"
>
> and with the gloabl func __('Anfrage Senden', true);
>
> be sure to write it corectly or your translate won´t work
>
> or did you mean some other stuff
>
> where you from? i´m from austria... if it´s easier for you to write in
> german then do this please it´s also for me easier :D
>
>
>
>
>
>
>
>
> > OH i try it again and with Configure::write('Config.language', 'en');
> > it works fine!
>
> > How can i include the german language?
>
> > On 25 Jul., 17:03, Davor Ilic <webfa...@gmail.com> wrote:
> > > i´ve use it like that __('test', true);
>
> > > but also you have to define some vars to switch did from en to other lang
> > > you?
>
> > > 2011/7/25 gloop <gl...@web.de>
>
> > > > Hello,
>
> > > > i search a whole time in the web for multilanguage in CakePHP. I found
> > > > that must create a folder in /app/locale/deu/LC_MESSAGE with a file
> > > > default.po. These musst filled with:
>
> > > > msgid "test"
> > > > msgstr "here the text"
>
> > > > that could use in the *.ctp with:
>
> > > > <?php __('test');?>
>
> > > > if the entry not found it would write "test".
>
> > > > Default is in CakePHP "en".
>
> > > > Now i've write in /app/locale/eng/LC_MESSAGE/default.po for testing
> > > > the same text like in the german version, but it writes always the
> > > > "msgid".
>
> > > > I've never managed to write the "msgstr".
>
> > > > Can anyone help me with my problem :(
>
> > > > Kind regards
> > > > gloop
>
> > > > --
> > > > Our newest site for the community: CakePHP Video Tutorials
> > > >http://tv.cakephp.org
> > > > Check out the new CakePHP Questions sitehttp://ask.cakephp.organdhelp
> > > > others with their CakePHP related questions.
>
> > > > To unsubscribe from this group, send email to
> > > > cake-php+unsubscribe@googlegroups.com For more options, visit this
> > group
> > > > athttp://groups.google.com/group/cake-php
>
> > --
> > Our newest site for the community: CakePHP Video Tutorials
> >http://tv.cakephp.org
> > Check out the new CakePHP Questions sitehttp://ask.cakephp.organd help
> > others with their CakePHP related questions.
>
> > To unsubscribe from this group, send email to
> > cake-php+unsubscribe@googlegroups.com For more options, visit this group
> > athttp://groups.google.com/group/cake-php
--
Our newest site for the community: CakePHP Video Tutorials http://tv.cakephp.org
Check out the new CakePHP Questions site http://ask.cakephp.org and help others with their CakePHP related questions.
To unsubscribe from this group, send email to
cake-php+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php
Our newest site for the community: CakePHP Video Tutorials http://tv.cakephp.org
Check out the new CakePHP Questions site http://ask.cakephp.org and help others with their CakePHP related questions.
To unsubscribe from this group, send email to
cake-php+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php
No comments:
Post a Comment