2017-01-14 8 views
1

多言語サイトを作成する最良の方法を見つけようとしています。その後、コードコンテンツ構造の多言語ウェブサイト

<?php 
    if (isset($_GET['lang'])) { 
     $lang = $_GET['lang']; 
    } 

    $content = array(
      'bg' => array(
       'word1' => 'Начало', 
       'word2' => 'Тест' 
      ), 


      'en' => array(
       'word1' => 'Home', 
       'word2' => 'Test' 
      ), 
     ); 
?> 

そして、このようコンテンツを印刷:

<?= $content[$lang]['word1'] ?> 
<?= $content[$lang]['word2'] ?> 

Here is picture of the code too.私はおそらく私が何か間違ったことをやっている最初の時間のためにこれをやっているこれは、私はこの瞬間にやっていることです。どうすればこの構造を改善できますか?
はまた、私はページに表示されるすべてのtransalteをやってるので、私はデータベースでそれをputing思うだけではなく、内容が間違っています。

答えて

0

あなたが現在それをやっている方法は完全に罰金ですが、私はクリーンなファイルを保つために、あなたのコードからあなたの翻訳を区切るためにあなたに推薦します。

これをやって(持っているかもしれないし、それら複数回)、あなたはまだ翻訳ファイルのためのPHPを使用することができますが、すべてのファイルに翻訳を宣言する必要はありません

<?php 
return [ 
    'word1' => '...', 
    'word2' => '...' 
]; 
?> 
bg.php

とあなたの翻訳を含むように、ちょうどこれを行うと、この

$content = require('translations/' . $lang . '.php'); 
echo $content['word1']; 

ような何かを書く、あなたはまた、与えられた言語が有効であることを、確認する必要があります。

$valid_languages = ['bg', 'en']; 
if (!in_array($lang, $valid_languages)) die('usefull message'); 
+0

これは素晴らしいアイディアです。どうもありがとう。 1つの最後の質問:word1、word2、wordNがベストプラクティスですか?このようにコードではあまり明確ではないからです。 – rergergergerg

+0

もっと意味のある名前を付けるべきです。 1つのアイデアは単純なキーになり、他のアイデアは元の文字列になるので、翻訳が与えられなければ簡単に後退します。しかし、後で文字列を変更すると – Philipp

関連する問題