многоязычность

Тема в разделе "PHP", создана пользователем nmDimas2, 6 фев 2011.

Модераторы: latteo
  1. nmDimas2

    nmDimas2 Постоялец

    Регистр.:
    20 апр 2010
    Сообщения:
    78
    Симпатии:
    12
    Почти в каждом Движке сайта используется Файл языка что очень удобно для редакции грамматических ошибок + организации многоязычности .
    Вопрос как ее реализовать просто в начале скрипта подключаем lenguege.php а в нем переменные и текст? или там особой какой та подход чтоб скрипт не перегружался???
     
  2. gres_18

    gres_18 Pythonобандерівець®

    Регистр.:
    26 апр 2009
    Сообщения:
    407
    Симпатии:
    206
    В каком смысле не перегружался? При загрузке скрипта проверяй куку Lan или сессийную переменную и подгружай только нужный lang-файл. Т.е. для каждого языка используй свой lang-файл. Вроде так.
     
  3. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    Как правило организовывается папка с названием типа languages в неё добавляются локализованные папки ru, en, и т.д. Дальше технология следующая: Если у тебя ресурс требующий обязательной регистрации (например игра) то целесообразно метку языка ставить в базе пользователя и ему в опциях предоставить возможность выбора языка. Если у тебя нечто общего характера (например сайт предприятия) то целесообразно где нибудь в удобном месте расположить ссылки языковые и при клике на них загонять в куки пользователя метку языка, а затем её собственно и проверять... Можно также использовать комбинированный способ...
    Сами языковые файлы можно организовать следующим образом:
    Либо один файл на весь ресурс (в случае если на ресурсе немного текста), или несколько разных файлов которые будут вызываться каждый в своём конкретном случае.
    Лучше всего заполнять языковые файлы в виде массива:
    PHP:
    $lang['идентификатор1'] = бла бла бла;
    $lang['идентификатор2'] = ох ох ох;
    Это удобно тем, что в коде скрипта сразу видно, что подгружается языковая переменная, к тому же иногда необходимо языковые переменные объявить глобально, в таком случае достаточно будет объявить только одну переменную
    PHP:
    global $lang;
    а не перечислять все переменные из файла...
    Еще один + этого метода - можно организовать многомерный массив(например названия изделий одного вида)
    PHP:
    $lang['avto']['mazda']     = 'Мазда';
    $lang['avto']['vaz']       = 'Жигули';
    $lang['avto']['mersedes']  = 'Мерседес';
    или
    PHP:
    $lang['mazda']['name']            = 'Мазда';
    $lang['mazda']['description']     = 'Отличная машина от японского производителя...';
    собственно изголяться можно по всякому...
    Подгружается языковой файл как правило один раз в начале скрипта, который будет использовать переменные их этого файла, через функцию
    PHP:
    include('./path_to_file/main.ln');
    Собственно в общих чертах всё... :)
     
    nmDimas2 нравится это.
  4. trooll

    trooll PHP кодер

    Регистр.:
    22 дек 2008
    Сообщения:
    503
    Симпатии:
    116
    Поднимал в свое время подобную тему, вот ознакомьтесь может найдете что нибудь для себя полезное:
    https://www.nulled.cc/showthread.php?t=179919

    p.s.: Если захотите поблагодарить не флудите, для благодарности есть кнопка Спасибо. А в особых случаях кошелек вебмани;)
     
    nmDimas2 нравится это.
  5. k12

    k12 Писатель

    Регистр.:
    19 мар 2009
    Сообщения:
    4
    Симпатии:
    0
    Можете использовать расширение php gettext если приложение ресурсоемкое, то поможет
     
  6. DenisK

    DenisK

    Регистр.:
    8 фев 2007
    Сообщения:
    205
    Симпатии:
    13
    да, если скрипт несложный, самыйнормальный вариант это различные файлы языков.

    lang_en.php
    lang_ru.php
    и т.д.

    завести переменную отвечающую за язык, и подставлять ее в имя языкового файла

    include ('lang_'.$lang1.'.php');
     
  7. trooll

    trooll PHP кодер

    Регистр.:
    22 дек 2008
    Сообщения:
    503
    Симпатии:
    116
    Кстати раз пошла такая пьянка, будет тогда полезно для общего развития почитать это:
    http://habrahabr.ru/blogs/php/112402/

    Выше по линку приведены примеры хранения данных в файлах в определенном типе и анализ скорости работы с каждым отдельно взятым примером и типом. В теме хоть и рассматриваться хранения конфигов в файлах, но думаю большой ризницы между хранением шаблонов языков нет , так как по сути шаблоны языков представляют из себя те же конфиги.
     
  8. egor_bulychev

    egor_bulychev Создатель

    Регистр.:
    27 янв 2007
    Сообщения:
    43
    Симпатии:
    11
    Наверное самое подходящие решение.
    http://php.russofile.ru/ru/authors/multilangual/php_gettext_prof/
    особенно с большим количеством слов.