0

私が作成しているウェブサイトに、いくつかの言語を含めたいと思います。

以下は、どの言語を表示する必要があるかを識別する方法です。

    <?php
    $pagename = $_SERVER["REQUEST_URI"];
       if (strpos($pagename,'?en') !== false) 
         {
            echo 'english';
here is when I have to include a language template file for english language.
         }
    ?>

私の目標は、すべてのWebサイトを任意の言語で複製するのではなく、言語テンプレートファイルを含めることです。

たとえばindex.php、変数はすべての言語で同じになりますが、内容は変更されます。

<div id="main">
<?php echo $main_description; ?>
</div>

これを機能させるには、どのように言語ファイルを含める必要がありますか?

$main_description ="this is the main description written in english"
4

5 に答える 5

1

テンプレートごとに異なる言語を作成し、英語のファイルの代わりにそのファイルを含める必要があるでしょう。

私がお勧めできるなら、あなたはあなたのウェブサイトのためにこれを試しましたか? https://translate.google.com/manager/

あなたの仕事をずっと楽にするかもしれません。

于 2012-07-16T14:08:26.887 に答える
1

あなたが持っているifステートメントに似たものを使用して、すべての変数を含む特定のファイルを含めることができます。

switch ($_GET['lang']) {
    case "en":
        include "lang/en.php";
        break;
    case "es":
        include "lang/es.php";
        break;
    default:
        include "lang/en.php";
}

ただし、ここでは、すべての文字列が変数になるため、残りのコードでこれらの変数を使用/上書きしないように注意する必要があります。

このページでは、JSON でエンコードされた言語ファイルをスクリプトが読み込んで必要なテキストを見つけ、翻訳されたテキストを返す方法について、非常にシンプルでわかりやすい例を示します。

于 2012-07-16T14:06:46.543 に答える
1

開発がそれほど進んでいない場合は、国際化をサポートするフレームワークを使用することをお勧めします。

たとえば、Codeigniter には言語クラスがあります。

または、彼らのものに似たものを実装することもできます。

于 2012-07-16T14:07:29.037 に答える
1

国際化への事実上の標準的なアプローチは、GNU Gettext ( PHP バインディング) です。

于 2012-07-16T14:10:03.343 に答える
0

ファイルを使用して実行しないでください。次のようなデータベースを作成してください。

id               | en              | de             | es
---------------------------------------------------------------------
MAIN_DESCRIPTION | English desc .. | German desc .. | Spanish desc ..
MENU_1           | English des2 .. | German des2 .. | Spanish des2 ..

適切なコードを取得したら、適切なテーブルをロードするだけです

if ( strpos( $pagename, '?en' ) !== false ) {
  $lang_code = 'en';
} elseif ( strpos( $pagename, '?de' ) !== false ) {
  $lang_code = 'de';
...
}

$query = "SELECT " . $lang_code . " FROM texts WHERE id = MAIN_DESCRIPTION";

など..。

PS:クエリ内に変数を直接挿入しないでください。不正なquery injection試行が発生します。

于 2012-07-16T14:08:16.387 に答える