0

私のウェブサイトには2つの言語があります。選択した言語に応じて適切なファイルを含めたい。たとえば、<a href='index.php?lang=en'>English</a>および<a href='index.php?lang=tr'>Turkish</a>。ユーザーが最初のハイパーリンク(英語)をクリックした場合、この情報を(HTMLタグ付きで)表示したい:

<h1>Hello</h1>
How are you

さもないと:

<h1>Selam</h1>
Nasılsın

また、ユーザーがWebサイト内の他のページに移動した場合に、ユーザーが選択した言語を変更したくありません。

どうやってやるの?

4

3 に答える 3

4

あなたに最適なソリューションは Gettext という名前です

参照 :
PHP マニュアル Gettext
gettext を使用した PHP Web サイトのローカライズ

これは、議論の余地なく、多言語 Web サイトを持つための最良の方法です。Gettext は、他のどのソリューションよりも高速です。

于 2011-12-26T14:13:00.527 に答える
3

.iniファイルを使用して、テキストの翻訳バージョンを保持できます。たとえば、en.iniには次のものが含まれます。

hello    = "Hello"
greeting = "How are you"

tr.iniには以下が含まれます:

hello    = "Selam"
greeting = "Nasılsın"

どちらも単純なテキストファイルです(UTF-8形式で保存されています)。これで、文字列がすべての言語(hello&greeting)で共通の名前を持ち、次のようなコードで使用できることがわかります。

// First, load the appropriate language file:

$lang = "en";
$strings = parse_ini_file( "$lang.ini" );

// Now we can use the following code no matter what $lang indicates (tr or en):

echo( "<h1>{$strings[ "hello" ]}</h1><br/>{$strings[ "greeting" ]}" );

あなたが意識しなければならない1つのこと:

  • parse_ini_fileファイルシステムからファイルを読み取るため、$langの値を慎重に検証する必要があります。$lang悪意がある可能性があるため、の値をユーザー入力に依存しないでください(へのリンクpage.php?lang=enが十分ではありません)。たとえば、$ langの値を自分のホワイトリストと照合します。$langs = array( "en", "tr" );それが失敗した場合は、一般的なエラーページなどにリダイレクトします...
于 2011-12-26T15:24:05.353 に答える
0

データベース内のすべての単語をマップし、言語を検出し、その後、言語 ID (英語の場合は EN、トルコ語の場合は TU) と指定された単語をマッピングして、データベースからすべてのデータを取得するのが最善の方法だと思います..同じアプローチに「If、else」を使用します...

于 2011-12-26T14:19:32.883 に答える