Yii Framework Forum: Übersetzung der Website - Yii Framework Forum

Jump to content

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

Übersetzung der Website Rate Topic: -----

#1 User is offline   g3ck0 

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

Posted 03 June 2009 - 05:30 PM

So... gleich noch eine Frage =)

Und zwar muss ich ein multilinguales CMS schreiben. Dabei bin ich auf das folgende gestoßen:

http://www.yiiframew...oc/cookbook/26/

Dieser Link ist ganz hilfreich, um die Auswahl der Sprache zu steuern. Der Einbau hat auch eingermaßen problemlos funktionert, man beachte dabei aber unbedingt die Kommentare!

Nun wird aber leider nicht alles übersetzt, was ich sehr strange finde. Daher frage ich mich, wie genau die Übersetzung denn funktioniert! Ich habe schon die Sprachfiles im Yii-Framework-Ordner (z.b. framework/messages/de/yii.php) gefunden. Was wird aber genau mit den darin stehen Informationen gemacht? Ein Replace-All wird aber wohl nicht auf die fertige HTML-Seite angewendet?

mfg
armin
0

#2 User is offline   Mike 

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

Posted 04 June 2009 - 06:06 AM

Was wird denn nicht übersetzt? Ich werd mal prüfen, ob die messages für Deutsch auf dem aktuellen Stand ist. Dort sind aber nur die Nachrichten von Yii-Komponenten hinterlegt. Alles andere muss man mit Yii::t() selbst übersetzen.
0

#3 User is offline   g3ck0 

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

Posted 04 June 2009 - 07:21 AM

ab wenn genau wird eigentlich übersetzt bzw. wie genau funktioniert das? ich denke nicht, dass erst die komplette html-seite gerendert wird und dann da drüber ein parser läuft?
0

#4 User is offline   Mike 

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

Posted 04 June 2009 - 08:07 AM

Übersetzt wird bei jedem Aufruf der Methode Yii::t(). Yii verwendet diese intern bereits um alle Systemmeldungen u.ä. zu übersetzen.

Bei deinen eigenen Seiten kommt Yii::t() meist in Viewdateien vor, etwa so:


<h1><?php echo Yii::t('navi','Hauptmenü') ?></h1>
<p><?php echo Yii::t('navi','Bitte wählen Sie') ?>:</p>
<ul>
<li><a href="impressum.php"><?php echo Yii::t('content','Impressum') ?></li>
...


Immer wenn die Viewdatei gerendert wird, wird für jeden Textschnippsel Yii::t() aufgerufen und die korrekte Übersetzung zurückgeliefert. Zur besseren Organisierung muss als erster Parameter eine Kategorie übergeben werden. Damit landen dann alle zu übersetzenden Texte aus einer Kategorie im selben Katalog und der Übersetzer tut sich leichter, Sachen zuzuordnen.

Für Details, wo die zu übersetzenden Sachen dann landen, bitte auch mal die entsprechende Seite im Handbuch durchlesen:
http://www.yiiframew.../de/topics.i18n
0

#5 User is offline   g3ck0 

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

Posted 04 June 2009 - 12:42 PM

Irgendwie ists komisch... bei mir wird nichts übersetzt, wenn ich den Code einbinde und per ComboBox umschalte. Ich kann gerne einen Screenshot anhängen, oder Code, aber ich denke des wird nichts bringen. Hier meine views/site/login.php:
<?php
// -----------------------------------------------------------------------------

// Titel der Website setzen
$this->pageTitle=Yii::app()->name . ' - Login';

// -----------------------------------------------------------------------------
?>

<div class="container-entry">
<h1>Login</h1>

<div class="text">

<div class="yiiForm">
<?php echo CHtml::beginForm(); ?>

<?php echo CHtml::errorSummary($form); ?>

<div class="simple">
<?php echo CHtml::activeLabel($form,'username'); ?>
<?php echo CHtml::activeTextField($form,'username') ?>
</div>

<div class="simple">
<?php echo CHtml::activeLabel($form,'password'); ?>
<?php echo CHtml::activePasswordField($form,'password') ?>
</div>

<div class="action">
<?php echo CHtml::activeCheckBox($form,'rememberMe'); ?>
<?php echo CHtml::activeLabel($form,'rememberMe'); ?>
<br/>
<?php echo CHtml::submitButton('Login'); ?>
</div>

<?php echo CHtml::endForm(); ?>

</div><!-- yiiForm -->

</div>
</div>

Ich habe diese nur ein wenig umgebaut, aber die Label-Beschriftungen bleiben immer gleich, auch das "Remember me next time"... Muss ich da selbst noch hand anlegen?
0

#6 User is offline   Mike 

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

Posted 05 June 2009 - 01:07 AM

Es fehlt Yii::t(). Die Labels hast du ja vermutlich in den zugehörigen ActiveRecords unter attributeLabels hinterlegt. Dort muss dann der Aufruf von Yii::t() für jedes Label erfolgen. Yii weiß ja sonst nicht, was genau du übersetzen möchtest.
0

#7 User is offline   g3ck0 

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

Posted 05 June 2009 - 05:06 AM

achso... ich hab gedacht, dass das bei dan standardmodulen das automatisch macht. werde mir das dann nochmals anschauen! danke.
0

#8 User is offline   Mike 

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

Posted 05 June 2009 - 05:12 AM

Siehe auch diesen Beitrag, da hab ich nochmal ausführlich alles zusammengefasst, was man so beachten muss:
http://www.yiiframew...6.html#msg13856
0

#9 User is offline   g3ck0 

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

Posted 05 June 2009 - 05:13 AM

vielen dank =) das ist echt klasse!
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