0

私は多言語プロジェクトに取り組んでいます。記事、商品説明などのコンテンツはデータベースから表示されます。これは問題ありません。問題は、フォーム ラベル、エラー メッセージなどの「静的な」説明があることです。

これまでのところ、私はこれで終わりました。私はCOOKIEに言語を保存し、設定された言語でメッセージを書く機能を持っています。この内容の _lang.php という名前のファイルがあります:

$['empty_field']['sk'] = "Slovak description of error";
$['empty_field']['en'] = "English description of error";

等々。これは良い解決策ですか?他の解決策はありますか?ありがとう

だから私はgettext()を試してみましたが、これで終わりました:(出力は大歓迎です)

putenv("LANGUAGE=sk_SK");
setlocale(LC_ALL, 'sk_SK');
$dom = "roids";
bindtextdomain($dom, "www/roids/_locale");
textdomain($dom);
echo gettext('welcome');

このフォルダーを作成しました:_locale/sk_SK/roids.po

roids.po の内容:

msgid ""
msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"

msgid "welcome"
msgstr "vitaj"

私は WAMP サーバーを使用していますが、このパス www/roids/_locale が適切かどうかわかりません。Wamp は D:\wamp にインストールされ、ww ファイルは D:\wamp\www にあります。

4

3 に答える 3

3

いくつかのリソースを参照する必要があると思います。1 つの良いものは、スタック交換ネットワーク上にあります。 PHP ローカリゼーションのベスト プラクティス? gettext?

もう 1 つの優れたリソースは google です。グーグルでPHPローカリゼーションのベストプラクティス を見る PHPとローカリゼーションで使用できる優れたライブラリがたくさんあります

このためのもう 1 つの優れたリソースは、php 自体のgettext関数です。これは、私がこのようなことをする方法です。

アップデート

これは、このテーマに関する O'Reilly グループの非常に優れたチュートリアルです。 Gettext - オライリー メディア

于 2013-03-03T07:54:47.790 に答える
2

状況に応じて、次のような配列を維持する代わりに

$['empty_field']['sk'] = "Slovak description of error";
$['empty_field']['en'] = "English description of error";

おそらく、iniファイルとPHP parse_ini_fileを使用して、文字列をより簡単に管理したり、他の文字列にファームアウトしたりできます。

[sk]
empty_field = "Slovak description of error";
; others in here ...

[en]
empty_field = "English description of error";
; others in here ...

langを最初の配列にするというWouterJのコメントに賛成です。

于 2013-03-03T10:09:41.430 に答える
1

require_one特定の言語の PHP ファイルを読み込むために使用します。

すなわち

require_once('/some/path/errors_'. $_SERVER['HTTP_ACCEPT_LANGUAGE'] . '.php');

そのファイルは、その言語の関連するエラー メッセージなどの配列を定義します。

于 2013-03-03T08:03:12.460 に答える