как сделать многоязычный php сайт? - PullRequest
0 голосов
/ 30 июня 2010

Я занимаюсь разработкой сайта с использованием php и mysql. Я хочу знать ... как можно справиться с многоязычной поддержкой? Я хочу, чтобы пользователь мог выбрать из выпадающего списка и выбрать свой язык. Тогда все (контент, кнопки, ссылки), кроме написанного пользователем, на их языке.

Какой хороший способ подойти к этому? Использовать куки? Сессия

Ответы [ 5 ]

2 голосов
/ 30 июня 2010

Примерно так работает:

Langs.php

<?

// check if language switch as been set at url var
if ($_GET["lang_change"]) {

    $_SESSION['session_name']["lang"] = $_GET["lang_change"];

}


// set value to lang for verification
$active_lang = $_SESSION['session_name']["lang"];


// verify $lang content and set proper file to be load
switch ($active_lang) {

    case 'prt':
        $lang_file = 'prt.php';
        break;

    case 'gbr':
        $lang_file = 'gbr.php';
        break;

    case 'fra' :
        $lang_file = 'fra.php';
        break;

    case 'esp' :
        $lang_file = 'esp.php';
        break;

    case 'deu' :
        $lang_file = 'deu.php';
        break;

    default:
        $lang_file = 'gbr.php';

}


// load proper language file for site presentation
include_once ('$lang_file);

?>

LANG GBR FILE (gbr.php)

define("LANG_PAGETITLE_HOMEPAGE", 'Homepage');
define("LANG_BTN_KNOW_MORE", 'know more');

СПОСОБ ИЗМЕНЕНИЯ ЯЗЫКА (образец URL)

<a href="index.php?lang_change=gbr" title"">USE ENG</a>

По сути, у вас есть PHP-файлы с константами, каждый файл с языком.

При нажатии вы устанавливаете URL-адрес var (например: lang_change = lang).

Это приведет к перезагрузке страницы, и файл langs.php, включенный в начало вашего index.php, загрузит выбранный язык ...

Если вам нужно больше объяснений по этому поводу, оставьте комментарий, и я вышлю вам рабочий образец!

Ps: переменные сеанса, показанные в этом коде, полезны для взаимодействия с системами входа в систему или просто для того, чтобы избежать использования параметров url ...

1 голос
/ 27 июля 2012

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

1 голос
/ 30 июня 2010
  • Сохранить все динамическое содержимое, помеченное реальным языком
  • Используйте gettext () для кнопок и т. Д. Этот способ намного быстрее, чем включение файлов .php с массивами
0 голосов
/ 30 июня 2010

Я думаю, что следующее поможет вам получить общее представление о его разработке.

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

Вам нужно будет написать скрипт на php, так как всякий раз, когда пользователь выбирает язык из выпадающего списка, страница может перезагружаться с языковым сеансом. Другой php-скрипт для извлечения выбранного языка из данных сеанса и включения соответствующего языкового файла в шаблон / пользовательский интерфейс.

Тот же подход можно использовать при извлечении данных контента из таблицы, где во всех запросах MySQL вы можете использовать дополнительный поиск типа языка из таблицы контента. так что этот файл будет загружен.

SELECT * FROM posts WHERE lang='en' AND featured = 1

Во многих случаях языки требуют, чтобы HTML и CSS были установлены соответственно, чтобы язык идеально отображался в браузере. Это означает, что вы также можете определить язык внутри HTML и в CSS определить шрифты и направления (справа налево или слева направо).

Я рекомендую вам прочитать следующее, чтобы получить больше информации о том, как это сделать. http://www.stylusinc.com/website/multilanguage_support.htm

0 голосов
/ 30 июня 2010

Я думаю, что стоит подумать о работе со структурой, поддерживающей интернационализацию.

Посмотрите на этот пример, используя CakePHP http://bakery.cakephp.org/articles/view/p28n-the-top-to-bottom-persistent-internationalization-tutorial

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...