2015-10-18 86 views
0

我正在嘗試創建一個簡單的多語言網站。 (數據將在稍後存儲在數據庫中)基本上,我會在我的表格上使用語言字符串(如tr_text和en_text)開始列......我不確定這是否是正確的方法。獲取該字符串並將其附加到變量名稱之前

我的DB會看起來像:

-------------------------------- 
# | en_text  | tr_text  
-------------------------------- 
1 | English Text | Turkish Text 
-------------------------------- 

這裏是我的代碼:

<?php 

    $get_lang = $_GET['language']; 

    if ($get_lang == 'tr') { 
     $lang = 'tr_'; 
    } else if ($get_lang == 'en') { 
     $lang = 'en_'; 
    } 

    $tr_text = 'Turkish Text'; // It will be stored in my DB 
    $en_text = 'English Text'; // It will be also stored in my DB 
?> 

<body> 

    <?php echo $lang.'text'; ?> 

</body> 
</html> 
+0

你需要[變量變量](http://php.net/manual/en/language.variables.variable.php)來實現這一點,而且應該避免這些。至於「恰當地」實施這種翻譯,這是一個已經廣泛討論的話題,並且存在幾種複雜的解決方案 - 您可能想要使用關鍵詞['i18n'和/或'L10n'](https://en.wikipedia .org/wiki/Internationalization_and_localization)在您的進一步研究。 – CBroe

+0

$ field = $ lang.'text'; 從表中選擇$ field; – Scream

+0

http://symfony.com/doc/current/components/intl.html –

回答

2

,這不是一個好主意,你應該把數組

lang_en.php:

<?php 
    $lang = array('hi' => 'Hi', 
        'user' => 'User'); 

?> 

lang_tr.php:

<?php 
    $lang = array('hi' => 'Hola', 
        'user' => 'bla bla bla'); 
?> 

anypage.php

<?php 

$lang= "tr";// or en 
include("lang_".$lang.".php"); 

echo $lang['hi']; //output Hi for en , and Hola for tr 
+0

謝謝。我認爲這是最簡單的方法。 – Dejavu

0

,可以儲存在一個單獨的表翻譯。

該表將存儲類名稱,對象ID,字段名稱,語言字符串和交換。

你可以看看doctrine translating是如何工作,使用它,或者自己實現一些簡單的東西。

相關問題