1

私はこの問題にかなり長い間取り組んでおり、これが最初の質問ではありませんが、ローカリゼーションを正しく機能させることができません。私は WAMP サーバーと php gettext を使用しています。私の問題のデモンストレーションのために作成した簡単なコード:

 /* dirs */
 $directory = realpath('../locale');
 $domain = 'messages';

 /* trying to find out correct setting - last one is winner */
 $locale ="ro";             
 $locale ="ro_utf8";
 $locale ="ro_RO";
 $locale ="ro_RO.UTF-8";
 $locale ="Romanian_Romania.1250";  

 putenv("LANG=".$locale);

 print setlocale( LC_ALL, $locale);
 setlocale( LC_ALL, $locale);

 bindtextdomain($domain, $directory);
 textdomain($domain);
 bind_textdomain_codeset($domain, 'UTF-8');

 /* STRING TO BE TRANSLATED */
 echo _('string');

ディレクトリには、この../localeような多くのフォルダーがあります - $language_name/LC_MESSAGES/。これらには、対応する .po および . 次のような翻訳を含む mo ファイル:

msgid "string"
msgstr "string SK"

sk_SKフォルダ内またはこれ

msgid "string"
msgstr "string RO"

、、、、、、、フォルダ内。 ro_ ro_RO_ ro_RO.UTF8_ ro_RO.UTF-8_romanianRomanian_RomaniaRomanian_Romania.1250

そして、どのようなドキュメントが見えますか:

Romanian_Romania.1250 文字列 SK

はっきりとわかるように、 locale() を romanianに設定しましたが、テキストはdirectoryの翻訳を使用して翻訳されていますsk_SK。私は何を間違っていますか?

サーバーが期待する $locale 文字列とディレクトリ名に関する情報を取得するために使用できる関数はありますか?

4

2 に答える 2

1

次のようにコードを実行してみてください。

setlocale(LC_ALL, 'ro_RO','Romanian'); 

それは私のプロジェクトで働いていました

于 2013-07-17T21:37:42.753 に答える
0

君にも手伝える :

locale -a

また、コンピューターに存在する言語を確認できます。

 sudo locale-gen pt_PT
 sudo locale-gen pt_PT.utf8
 sudo update-locale
于 2016-10-24T08:41:55.617 に答える