Как реализовать многоязычный сайт?

Тема в разделе "PHP", создана пользователем procter, 14 фев 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. procter

    procter Создатель

    Регистр.:
    20 окт 2008
    Сообщения:
    29
    Симпатии:
    0
    Есть скпипт в котором контент вперемешку с кодом. Как правильно реализовать многоязычный сайт? (интересует оптимальный алгоритм)
     
  2. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    634
    Симпатии:
    1.420
    В любом случае вам необходимо контент от кода. Ну а дальнейших вариантов может быть два. Либо создание отдельных файлов с текстами отображающимися на сайте на выбранном языке, либо использовать отдельную функцию, которая будет слать запросы к одному из онлайн-переводчиков и отдавать пользователю переведенный контент. Но во втором случае будет иметь место довольно некачественный и неточный перевод.
     
  3. best

    best

    Регистр.:
    12 апр 2006
    Сообщения:
    246
    Симпатии:
    54
    1. Берешь WP качаешь плагин - пользуешься...Можно джумлу и кое что еще... но это слабее.
    2. Берь любой двиг. Добавляешь в админку возможность смены базы, т.е. 2 базы на 2 языках. На поддомены вешаешь сайты с разными базами. На главном домене ставишь редирект по браузеру или по IP, можешь предоставить выбор пользователю и воспользоваться куками.
    3. Заказать и за тебя все сделают ))
     
  4. procter

    procter Создатель

    Регистр.:
    20 окт 2008
    Сообщения:
    29
    Симпатии:
    0
    Я предполагал заменить англ. текст переменными и далее использовать преключатель switch_case. Но не знаю насколько это правильно и оптимально. Если можно с примерами :thenks:
     
  5. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    634
    Симпатии:
    1.420
    Примерно так:
    в конфигурационном файле
    PHP:
    <?

    $x['ru']['about'] = 'О компании';
    $x['ru']['main'] = 'Главная';
    $x['en']['about'] = 'About';
    $x['en']['main'] = 'Main';
    ?>
    пример использования
    PHP:
    <?
    $deflang 'ru';
    if(!isset(
    $_GET['lang'])) $lang=$deflang;
    else 
    $lang $_GET['lang']; //Здесь, также, стоит включить проверку на валидность данной переменной. Как вариант можно реализовывать через сессию.
    echo $x[$lang]['main'];
    echo 
    $x[$lang]['about'];
    ?>
     
  6. Yozik

    Yozik

    Регистр.:
    5 дек 2007
    Сообщения:
    238
    Симпатии:
    65
    Зачем такие сложности? switch-case оптимальнее и проще.
     
  7. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    634
    Симпатии:
    1.420
    Согласен. Оптимальнее и проще... при условии, что сайт пишется с нуля. Если же речь идет об изменении уже существующего кода, в котором контент не отделен от кода, как в случае котором описал ТС, то намного проще и быстрее будет реализовать предложенным мной способом.
     
  8. BasTaller

    BasTaller Постоялец

    Регистр.:
    29 янв 2009
    Сообщения:
    52
    Симпатии:
    1
    Ну, это вы так зря.

    Что кусок кода со switch вставить, что с if - не вижу зависимости от ранее накодированного).

    http://ru.php.net/manual/en/control-structures.switch.php
     
Статус темы:
Закрыта.