Хорошо.I18n (Интернационализация) - довольно странная вещь.Вы должны внести много изменений в свой код, чтобы сделать его многоязычным.
Для меня лучшее решение - это перенести его на CakePHP, который уже поддерживает I18n во многих слоях.Но это решение заставит вас потратить много времени.Итак ....
Быстрый метод перевода внутренних текстов, таких как
echo "Hello World"
или
<p>Hello World</p>
. Создает соответствующий языковой файл с расширением php для каждого.язык (то есть: es.php, el.php, en.php и т. д.), который будет содержать массив с ключами и значениями, который будет выглядеть следующим образом:
$l = array(
'WEB_TITLE' => 'My web site title',
'GEN_HELLO' => 'Hello World',
'MENU_HOME' => 'Home',
'MENU_PRODUCTS' => 'Products',
...
);
Затем на свой веб-сайт вынеобходимо загрузить соответствующий языковой файл в самом начале каждой страницы, и на вашей странице вы должны сделать что-то вроде этого:
echo $l['GEN_HELLO'];
и
<p><?php echo $l['GEN_HELLO']; ?></p>
Это внешний интерфейссторона вашего заявления.Теперь, чтобы сделать ваши данные многоязычными, вам нужно каким-то образом изменить структуру базы данных.
Допустим, у вас есть эта таблица
ARTICLES
id Title Content Date Active
В приведенной выше структуре вы должны сделать заголовок и содержимое I18n.совместимы.Чтобы перевести эти столбцы, вы должны создать еще одну таблицу с именем ARTICLES_L, которая будет выглядеть следующим образом:
ARTICLES_L
ID POST_ID COLUMN LANGUAGE CONTENT
В приведенной выше таблице вы должны сохранить идентификатор статьи, столбец, к которому относится перевод (т.е.: title) язык и переведенный контент.
Так что, если у вас есть эти записи в ARTICLES
ARTICLES
id Title Content Date Active
1 Title 1 This is content 1 2011-10-01 13:28:45 1
2 Title 2 This is content 2 2011-10-01 13:28:45 1
3 Title 3 This is content 3 2011-10-01 13:28:45 1
Таблица ARTICLES_L будет содержать эти записи
ARTICLES_L
ID POST_ID COLUMN LANGUAGE CONTENT
1 1 title es_ES Título 1
2 1 content es_ES Este es el contenido 1
3 1 title el_GR Τίτλος 1
4 1 content el_GR Αυτό είναι το περιεχόμενο 1
5 2 title es_ES Título 2
6 2 content es_ES Este es el contenido 1
....
На самом деле есть много других задач, которые вам нужно выполнить, но эта идея лежит в основе решения, которое я вам даю:)
Удачи
PN: Еще лучше для переднего концавашего приложения использовать это http://php.net/manual/en/book.gettext.php Этот способ используется в WordPress и CakePHP, но на очень низком уровне:Просто взгляни.Это будет лучше, чем создание файлов для каждого языка.