Yii Framework Forum: Fehler beim Übersetzung mit Yii:t() - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Fehler beim Übersetzung mit Yii:t() Rate Topic: -----

#1 User is offline   g3ck0 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 96
  • Joined: 03-June 09

Posted 08 July 2009 - 12:43 AM

Guten Morgen erst mal,

und zwar habe ich gerade einen seltsamen Fehler entdeckt, in so fern das ein Fehler ist. ich bin diesem Post gefolgt und habe alles entsprechend umgesetzt, es haut auch wunderbar funktioniert. Nur bin ich dann auf ein recht lustiges Problem gestoßen, wobei ich erst mal etwas Code zeigen will. Bitte die Dateien beachten!

[code=views/site/contact.php]...
<?php echo Yii::t('contact', 'blub'); ?>
...[/code]

[code=messages/de/contact.php]<?php

return array (
  // ...
  'blub' => 'deutsch',
  // ...
);

?>[/code]


[code=messages/en/contact.php]<?php

return array (
  // ...
  'blub' => 'englisch',
  // ...
);

?>[/code]

Soweit, so gut. Nun sollte man doch meinen, dass Yii einmal das Wort deutsch und einmal das Wort englisch liefert, je nachdem welche Sprache ich selektiere, aber Pustekuchen. englisch wird mir geliefert, aber deutsch nicht. Ist das so gewollt?
0

#2 User is offline   g3ck0 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 96
  • Joined: 03-June 09

Posted 08 July 2009 - 12:49 AM

Etwas habe ich gerade noch heraus gefunden: Sobald Sonderzeichen, wie ä, ö ,ü oder / etc. im Text vorhanden sind und die Dateien unterschiedliche Zeichensätze haben (UTF-8 vs. Ansi), dann klappt die Übersetzung teilweise auch nicht.

Dies hat aber direkt nichts mit dem oben beschriebenen Problem zu tun.
0

#3 User is offline   mbi 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 604
  • Joined: 08-May 09

Posted 08 July 2009 - 02:35 AM

ich würde die sourceLanguage englisch lassen und stattdessen language auf de setzen, um dann mit Yii::t() immer die englischen Keys anzusprechen
0

#4 User is offline   g3ck0 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 96
  • Joined: 03-June 09

Posted 08 July 2009 - 03:36 AM

Es ist eigentlich egal, wie ich das mache! Sinnvoll wäre es, wenn ich nur einen Platzhalter definiere und dann die entsprechende Übersetzung geladen wird. Und genau das passiert ja nicht zu 100%! Dann weiß ich nur nicht, warum auch eine entsprechende Übersetzungsdatei angelegt wird.
0

#5 User is offline   Lollinger.de 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 79
  • Joined: 19-May 09
  • Location:Ulm, Germany

Posted 13 July 2009 - 03:28 AM

Ähm ich glaube du verwendet Yii::t() etwas Falsch. Ich habe in meiner Anwendung keine Deutsche Datei mit Texten, nur die Fremden Sprachen. Du gibst einen Text folgendermaßen aus:

<?php echo Yii::t('Index', 'Deutscher Text'); ?>


nach dem durchlaufen der Message Methode erhälst du dann eine Datei in der dann ein Array enthalten ist das folgendermaßen aussieht:


<?php
return array (
  'Deutscher Text' => 'Englischer Text',
  'Registrierung' => 'Register',
  'Willkommen zurück {vorname}!' => 'Welcome back {vorname}!',
);
?>


Alles auf der rechten Seite musst du manuell eingeben bzw. eben übersetzen. Die Deutschen Texte sind alle in der Anwendung enthalten.
0

#6 User is offline   g3ck0 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 96
  • Joined: 03-June 09

Posted 13 July 2009 - 03:40 AM

Hm... okay, d.h. abhängig von der sourceLanguage, die ich in der main.php definiere sollte ich die deutschen Meldungen im Quellcode verwenden und die anderen Texte entsprechend übersetzen?

Das hier hat mich dann nur etwas in die Irre geführt:

cd protected;
./yiic message config/messages.php


Da es mir auch für die deutschen Texte die Message-Dateien erstellt. Diese kann ich dann ja aber getrost löschen, oder?
0

#7 User is offline   Mike 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 3,013
  • Joined: 06-October 08
  • Location:Upper Palatinate

Posted 13 July 2009 - 04:29 AM

Das kommt daher, weil du vermutlich in config/messages.php unter languages auch de mit stehen hast. Da deine Quelldateien aber eh schon deutsch sind (sourceLanguage=de), sucht Yii nicht nach deutschen Übersetzungen sondern verwendet direkt den Ursprungstext.
0

#8 User is offline   mb 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 19
  • Joined: 15-January 09

Posted 12 August 2009 - 10:20 AM

hmm, sollte man da auf getAttributeLabel etc. verzichten?

ich finde es nur sehr mühsam, quer im projekt die texte zu pflegen.
(da ich mehr als 30 controller habe und an diesen stellen auch hinweistexte, fehlermeldungen etc. haben)


was ist bei einer textänderung in deutsch, wenn die sprachdatei für deutsch nicht generiert wird?
-> fange ich dann an, und suche die stelle im quelltext?


finde die lösung bis jetzt noch nicht ganz optimal...
0

#9 User is offline   Mike 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 3,013
  • Joined: 06-October 08
  • Location:Upper Palatinate

Posted 13 August 2009 - 02:30 AM

Du kannst Yii::t() auch innerhalb von attributeLabels() verwenden:

    public function attributeLabels() {
         return array(
             'Email' => Yii::t('forms','Your email address'),
             'FirstName' => Yii::t('forms','First name'),
 


Damit nicht alle zu übersetzenden Sachen in der selben Datei landen, kannst du auch noch unterschiedliche Kategorien beim Aufruf von t() verwenden. So wird das relativ übersichtlich.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users