0

多言語サイトがあります。このサイトには、次のようなリンクがあるロケールフラグメニューがあります

example.com/en/pages/more-info
example.com/fr/pages/plus-d-informations
example.com/de/pages/mehr-infos
example.com/pl/pages/więcej-informacji

ユーザーが特定のページにアクセスすると、ページ全体がたとえばフランス語でローカライズされていることがわかります。ただし、メニューには、Webサイトで使用される可能性のあるすべてのローカリゼーションを表示する必要があります。

問題は、このコードを使用する必要があるかどうかです。

putenv("LANG=" . $language); 
setlocale(LC_ALL, $language); 
bindtextdomain("messages", "Locale");
bind_textdomain_codeset("messages", 'UTF-8'); 
textdomain("messages");

それから

<a href="/fr/pages/<?=_("more-info")?>">French</a>
... 

毎回、ロケールを切り替えるには、フラグメニューに各項目を表示するときに?

$languageフラグメニューに各項目を表示する前に変更します。

それは正しい解決策ですか?

4

1 に答える 1

0

言語を反復処理して別の言語のリンクを印刷するときに、一時的にロケールを切り替えることは一般的な方法です。私が取り組んだサイトでそれを行いました。

  • 開始する前に「現在のロケール」を保存し、そのコード セクションの作業が完了したらロケールを元のロケールに戻すことを忘れないでください。
  • それは、ロケールを切り替えるための多くのメカニズムのようです。それを関数にカプセル化する必要があります。
  • パフォーマンスに関しては、メッセージがどのように保存されているか、またはキャッシュされているかどうかはわかりません。アプローチがうまく機能していないことがわかった場合は、キャッシュ用のメカニズムを追加して修正するのは簡単です。
于 2013-03-22T10:28:04.980 に答える