私はいつもgettextについて聞いたことがあります - 文字列引数に基づいて翻訳を検索するためのunixコマンドなのですが、それは.potファイルを生成しますが、誰かが私に説明してくれますか? Webフレームワークでは?gettextを使ってPHPでi18nのサポートを追加しますか?
確立されたフレームワークがどのようにそれを行っているかを見て回るかもしれませんが、自分の解決策を提供するために実際に掘り下げる前に、
私はいつもgettextについて聞いたことがあります - 文字列引数に基づいて翻訳を検索するためのunixコマンドなのですが、それは.potファイルを生成しますが、誰かが私に説明してくれますか? Webフレームワークでは?gettextを使ってPHPでi18nのサポートを追加しますか?
確立されたフレームワークがどのようにそれを行っているかを見て回るかもしれませんが、自分の解決策を提供するために実際に掘り下げる前に、
gettextシステムは、同じ文章の異なる言語の翻訳を含むソーステキストファイルから作成されたバイナリファイルのセットから文字列をエコーします。
ルックアップキーは、「基本」言語の文です。ソースコードに
あなたがキーと翻訳版で対応するテキストファイルを持っています言語ごとに
echo _("Hello, world!");
のようなものを持っています(のprintf関数で使用することができます%sに注意してください)
french
msgid "Hello, world!"
msgstr "Salut, monde!"
msgid "My name is %s"
msgstr "Mon nom est %s"
italian
msgid "Hello, world!"
msgstr "Ciao, mondo!"
msgid "My name is %s"
msgstr "Il mio nome è %s"
これら
はあなたのローカライズを作成するために通過する必要が主な手順は次のとおりですロケールのようなディレクトリ構造に.moのファイルを置きますde_DE/LC_MESSAGES/myPHPApp.mo
ロケール/ en_EN/LC_MESSAGES/myPHPApp.mo
ロケール/語it_IT/LC_MESSAGES/myPHPApp.mo
あなたは、PHPスクリプトは、PHPから
を使用する必要があるロケールの例を設定する必要がありますマニュアルでは、PHPマニュアルから常に
<?php
// Set language to German
setlocale(LC_ALL, 'de_DE');
// Specify location of translation tables
bindtextdomain("myPHPApp", "./locale");
// Choose domain
textdomain("myPHPApp");
// Translation is looking for in ./locale/de_DE/LC_MESSAGES/myPHPApp.mo now
// Print a test message
echo gettext("Welcome to My PHP Application");
// Or use the alias _() for gettext()
echo _("Have a nice day");
?>
が良いチュートリアル
しかし、上記のためhereを見て、その部分のために非常に明確ですPHPマニュアルの例では、指定された文字列を翻訳していないようです。この例とは何か関係がありますか? –