Over 10 языков поделитесь опытом

(Ответов: 3, Просмотров: 563)
  1. Гуру Аватар для MetalMessiah
    • Регистрация: 19.04.2011
    • Сообщений: 745
    • Записей в дневнике: 4
    • Репутация: 189
    Коллеги, поделитесь опытом.

    Есть сайт на русском языке, реализован на php+smarty. Нужно приделать к нему английскую версию, и, в перспективе, будет около 10 языков.
    Сайт представляет собой нечто типа структурированного каталога с дополнительными функциями, т.е. текста мало, в основном меню, названия кнопок и прочие дела, хотя есть и страницы с текстом. Меняются они редко, потому глубоко оптимизированный текст прописан прямо в шаблоне.

    Простейший вариант, который напрашивается - в движке подгружать разные шаблоны, 1 на каждый язык, лежащие в разных каталогах, но тогда для смены какого-то элемента его надо будет прописать в нескольких файлах - не интересно.

    Когда-то я уже делал РУС/АНГЛ/УКР сайт, в шаблоны вставлял конструкции
    Код:
    {if $language="ru"}Заголовок{else if $language=="en"}Header{else}блаблабла{/if}
    но для 10 языков это не самая лучшая идея.

    Еще 1 костыль - инклюдился php файл с двумерным массивом $texts['textname']['ru']="sfskdmfksdmfsd";
    В коде было echo $texts['textname'][$language] (делалось давно, сайт на 10 страниц, шаблонизатор не использовался).

    Подскажите, как это лучше всего реализовать, без костылей и дублирования кода.
    • 0
  2. Дипломник
    • Регистрация: 15.07.2013
    • Сообщений: 189
    • Репутация: 43
    • Webmoney BL: ?
    Цитата Сообщение от MetalMessiah Посмотреть сообщение
    $texts['textname'][$language]
    Можно, разве что, уменьшить на один уровень вложенности, если предварительно взять массив с нужными переводами.

    PHP код:
    // файл ru.php
    $lang = array(...);

    // файл en.php
    $lang = array(...);

    include 
    'ru.php';
    echo 
    $lang['header'];

    include 
    'en.php';
    echo 
    $lang['header']; 
    Конструкция чисто условная, но суть, думаю, понятна.
    • 1

    Спасибо сказали:

    MetalMessiah(03.02.2014),
  3. Дипломник Аватар для forekko
    • Регистрация: 08.01.2014
    • Сообщений: 146
    • Репутация: 7
    Что-то вы не так делаете, зачем вставлять переводы вручную в файлы шаблона, когда для этого уже придумана система локализации, используется например в темах-шаблонах WordPress.

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

    http://ru.wikipedia.org/wiki/Gettext
    • 1

    Спасибо сказали:

    MetalMessiah(03.02.2014),
  4. Новичок Аватар для Scripter
    • Регистрация: 12.09.2013
    • Сообщений: 10
    • Репутация: 1
    Как по мне, вариант с массивами намного лучше.
    • 1

    Спасибо сказали:

    MetalMessiah(03.02.2014),

Похожие темы

Темы Раздел Ответов Последний пост
Поделитесь опытом работы с форумом
Вопросы от новичков 43 03.06.2013 19:36
Сервер Lineage поделитесь опытом
Вопросы от новичков 4 10.03.2013 02:28
Поделитесь опытом e-mail маркетинга под буржуев.
Вопросы от новичков 2 02.08.2012 14:03
Поделитесь опытом работы с купонами
PPC и контекстная реклама 1 17.03.2012 20:55
Поделитесь опытом, как определять бюджет продвижения?
Вопросы от новичков 10 12.10.2011 23:53

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры