2015-10-18 2 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 '; Выберите $ поле из таблицы; – 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

Вы должны хранить переводы в отдельной таблице.

В этой таблице будут храниться имя класса, идентификатор объекта, имя поля, языковая строка и трансаляция.

Вы можете посмотреть, как работает перевод doctrine, и использовать его, или реализовать что-то простое самостоятельно.

Смежные вопросы