Intereting Posts

Как сделать несколько языковых сайтов с включенными соответствующими файлами на PHP?

У меня есть 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» для того же подхода …