2015-11-06 2 views
1

Как создать многоязычную форму с помощью переводов из базы данных с помощью объекта pdo?MySQL/PHP Многоязычная форма

, например, есть мой код, чтобы создать PDO объект:

try { 
    $pdo = new PDO("mysql:host=$servername;dbname=$dbname",$username, $password); 
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} catch (PDOException $e) { 
    echo $e->getMEssage(); 
    die(); 
} 

$sql = "SELECT FROM `lang_content` `id`, `:lang`"; 
$query = $pdo->prepare($sql); 

if($query->execute(array(
     ':lang' => $_GET['lang'].'_content' 
    ))){ 
    // Show content 
} 

MySQL структура таблицы:

CREATE TABLE `lang_content` (
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `en_content` VARCHAR(1000) NULL DEFAULT NULL, 
    `lv_content` VARCHAR(1000) NULL DEFAULT NULL, 
    `ru_content` VARCHAR(1000) NULL DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) 
COMMENT='All translations' 
ENGINE=MyISAM 
; 

MySQL Пример таблицы данных:

id en_content lv_content ru_content 
1 MOD   KASKO  КАСКО 
2 MTPL  OCTA  ОСАГО 

И я хотел бы использовать его как: если lang en

<?= $result->1 ?> // Echo MOD 

Вернется MOD,

<?= $result->2 ?> // Echo MTPL 

Вернется

ОСАГО

ответ

0

Честно говоря, что это не хорошая практика, чтобы сделать ваш перевод с помощью базы данных. Многие крупные платформы делают это через какой-то текстовый формат. Например, magento делает это через файлы csv.

Вы можете начать разработку с помощью следующего кода.

Ваш испанский перевод файлов es.csv

'Home', 'Inicio' 
'Page 1', 'Pagina 1' 
'Page 2', 'Pagina 2' 
'Page 3', 'Pagina 3' 

Первый столбец слов будет ваш язык по умолчанию, который будет определен в пределах функции.

<a href="#"><?php __("Home"); ?> 

Тогда вы должны использовать оператор switch, подобный тому, который у вас есть, чтобы захватить какой язык выбрать пользователь. Функция __() будет выглядеть примерно так. Где вход будет «домашним»

$csv = array_map('str_getcsv', file($file)); 
// Logic (where it would do the translation) 
// It could look for the input in the $cvs variable if it exist then use the next value of the current array. Else keep the text the same. 

Ваш файл cvs должен будет указать точные слова для перевода.

+0

Можно ли добавить 3 языка в 1 CSV-файл? и выбрать колонку зависит от того, какой язык выбран? Поскольку у меня уже есть файл Excel с переводами – AlexIL

+0

Его можно, но вам нужно создать какую-то логику. Я бы рекомендовал вам делать это в отдельных файлах, потому что, если у вас есть большое количество переводов в одном файле, это может быть болью. было бы лучше, если бы у вас были все файлы перевода отдельно на основе их языка в каталоге, называемом locale, или когда-либо вы хотите его назвать. –

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