Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Lokalisierung und Internationalisierung von Cakephp

Detaillierte Erläuterung der Lokalisierung und Internationalisierung von Cakephp

黄舟
黄舟Original
2016-12-20 09:22:471159Durchsuche

Programmierer, die CakePHP-Programmbeispiele gesehen haben, werden feststellen, dass in Controller oder View die meisten Ausgaben mit einer Funktion __("xxxx") ausgeführt werden.

Diese Funktion entspricht im Gegensatz zur Funktion getText() in Bei anderen Frameworks erhält es dynamisch den entsprechenden Sprachinhalt basierend auf dem Schlüsselwert und dem Gebietsschema.


1) Was sind i18n, l10n?
Zunächst müssen Sie die beiden Wörter Lokalisierung und Internationalisierung verstehen, die als Lokalisierung bzw. Internationalisierung bezeichnet werden und die Konvertierung einer Webanwendung zur Anpassung bedeuten eine bestimmte Sprache (oder Kultur) erfordert, während Internationalisierung die Fähigkeit von Webanwendungen darstellt, lokalisiert zu werden. Internationalisierung und Lokalisierung werden oft als i18n und l10n abgekürzt; die Zahlen 18 und 10 sind die Anzahl der Buchstaben vom ersten bis zum letzten Buchstaben des Wortes

2) Implementieren Sie lokalisierte Sprachdateien

Jeder Controller, der lokalisierte Inhalte benötigt, muss zunächst auf die L10n-Klasse von CakePHP verweisen. Es kann in AppController importiert werden, sodass es für alle Controller verwendet werden kann

view plaincopy

//Referenz-L10n-Klasse:

 App::import('Core', 'l10n');

Klasse ProductController erweitert AppController {                                           }


Als nächstes müssen Sie die entsprechende Sprachdatei erstellen (der Dateiname ist default.po), um lokalisierte Inhalte zu verwalten. Die Datei enthält eine Reihe von Zeichenfolgen und deren IDs, was die Organisation, Verwaltung und Übersetzung des Inhalts erleichtert, und wird im entsprechenden Sprachordner gespeichert. Zum Beispiel:

view plaincopy

/app/locale/eng/LC_MESSAGES/default.po (Englisch)

/app/locale/fre/LC_MESSAGES/default.po (French)

/app/locale/chi/LC_MESSAGES/default.po (Chinesisch). )

Der Ordner mit lokalisierten Inhalten wird im CakePHP-Installationsverzeichnis/app/locale abgelegt. Jede Sprache entspricht einem anderen 3-Buchstaben-Code, der dem ISO 639-2-Standard entspricht. (Weitere Informationen finden Sie auf der Website der Library of Congress, http://www.loc.gov/standards/iso639-2/php/code_list.php)
Sobald Sie die Datei erstellt haben, können Sie die lokalisierte Datei bearbeiten Inhalt. Beachten Sie, dass der Schlüsselwert jeder Zeichenfolge eindeutig sein und den entsprechenden Wert enthalten muss. Das Folgende ist ein einfaches Beispiel:

Der Inhalt der englischsprachigen Datei default.po:

view plaincopy

msgid "purchase" msgstr „Bitte kaufen Sie einen Ball, indem Sie seinen Namen auswählen <.>

view plaincopy
msgid "search" msgstr „Klicken Sie hier, um unsere Produktdatenbank zu durchsuchen.“

Entspricht dem Inhalt der chinesischen Standarddatei:

 view plaincopy
msgid "purchase" msgstr "Bitte kaufen Sie einen Ball, indem Sie einen Namen auswählen."

e03b848252eb9375d56be284e690e873bc5574f69a0cba105bc93bd3dc13c4ec
msgid     "search"      msgstr     "点击搜索我们的产品列表。"
 view plaincopy
e03b848252eb9375d56be284e690e873bc5574f69a0cba105bc93bd3dc13c4ec pre> ;/pre>

e03b848252eb9375d56be284e690e873bc5574f69a0cba105bc93bd3dc13c4ec

e03b848252eb9375d56be284e690e873bc5574f69a0cba105bc93bd3dc13c4ec (wobei msgid zur Identifizierung von Zeichenfolgen verwendet wird und konsistent sein sollte verschiedene Sprachdateien, während msgstr der Inhalt der entsprechenden Sprache ist)

Die

.po-Datei sollte UTF-8-codiert sein und jeder msmstr-Wert muss auf 1014 Zeichen begrenzt sein. Wenn Sie einen Macintosh-Computer verwenden, achten Sie darauf, beim Bearbeiten der Datei Unix-Zeilenvorschübe (LF) zu verwenden, da die Datei sonst nicht korrekt analysiert wird. Sie können .po-Dateien ganz einfach mit Poedit, einem kostenlosen Editor, bearbeiten.

3) Legen Sie das lokale Gebietsschema der Anwendung fest (dieser Schritt kann weggelassen werden, Cakephp verwendet die entsprechende Sprache zur Anzeige gemäß den Browsereinstellungen des Benutzers)

1. In config/core. php Verwenden Sie configure::write:

Configure::write('Config. language' , "chi");

wobei chi für Chinesisch steht und Englisch eng sein sollte.

2. Schreiben Sie in die PHP-Datei, bevor Sie das Programm starten (stellen Sie beispielsweise die entsprechende Sprache entsprechend dem Gebietsschema des Benutzers in beforeFilter ein):

$this->Session- >write ("Config.sprache", "chi");

3. Verwenden Sie den folgenden Code, um

App::import('Core', 'L10n ' );

$l10n = & new L10n();

$l10n->get('chi'); //Setze das Gebietsschema auf Chinesisch

  

//然后使用_()函数来实现本地化  

_('msgid');  

4)实现本地化

    在需要实现本地化的地方,调用_()函数

1、直接输出字符串,没有返回值:

view plaincopy

__("msgid"); 或者  _("msgid", false);  

 

2、间接输出字符串,有返回值:

view plaincopy

__("msgid",true);  

 

3、还有input要加个label来使他出现中文。

view plaincopy

echo $form->input('name',array('label'=>__('msgid',true)));  


 5)没有覆盖的内容

    日期、货币格式的国际化可以直接用php中的setlocale函数来实现。

 以上就是Cakephp本地化和国际化详解 的内容,更多相关内容请关注PHP中文网(www.php.cn)! 


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn