У меня есть 2 языка на моем сайте. Я хочу включить соответствующий файл в соответствии с выбранным языком. Например, <a href='index.php?lang=en'>English</a>
и <a href='index.php?lang=tr'>Turkish</a>
. Если пользователь нажимает на первую гиперссылку (на английском языке), я хочу отобразить эту информацию (с тегами HTML):
<h1>Hello</h1> How are you
В противном случае:
<h1>Selam</h1> Nasılsın
Я также не хочу, чтобы пользовательский язык менялся, если пользователь перешел на другую страницу внутри веб-сайта.
Как я могу это сделать?
Вы можете использовать .ini-файлы для хранения переведенных версий текста, например, en.ini будет содержать:
hello = "Hello" greeting = "How are you"
Хотя tr.ini будет содержать:
hello = "Selam" greeting = "Nasılsın"
Оба являются простыми текстовыми файлами (сохраненными в формате UTF-8). Теперь вы можете видеть, что строки имеют общие имена на всех языках (привет и приветствие), которые будут использоваться в коде следующим образом:
// First, load the appropriate language file: $lang = "en"; $strings = parse_ini_file( "$lang.ini" ); // Now we can use the following code no matter what $lang indicates (tr or en): echo( "<h1>{$strings[ "hello" ]}</h1><br/>{$strings[ "greeting" ]}" );
Одна вещь, о которой вы должны помнить:
parse_ini_file
читает файл из файловой системы, вы должны тщательно проверить значение в $ lang! не полагайтесь на ввод пользователя каким-либо образом на значение $lang
поскольку оно может быть вредоносным (ссылка на page.php?lang=en
не является достаточной). Проверьте значение $ lang на собственный белый список, например: $langs = array( "en", "tr" );
и если это не удастся, перенаправите на страницу общей ошибки или что-то еще … Лучшее решение для вас называется Gettext
Видеть :
Справочник PHP Gettext
Локализация веб-сайтов PHP с использованием gettext
Это без каких-либо обсуждений лучший способ иметь многоязычный веб-сайт. Gettext быстрее, чем любое другое решение.
Я думаю, что лучший способ сопоставить все ваши слова в базе данных, определить, какой язык, после чего получить все данные из базы данных, сопоставляя идентификатор языка (EN для английского и TU для турецкого) и указанное слово. Вы можете используйте «If, else» для того же подхода …