- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Самописный сайтик.
Всяческие нединамические части (типа шапки) прописаны инклуд файлах. Каждый такой файлик состоит из кучки строк вида:
В масштабах русской версии сайтик прекрасно пашет и в случае чего легко редактируется в этих самых файлах. Но вот сейчас у него планируется 5 дополнительных языковых версий. С динамикой все ясно, а вот статику такую как лепить? Не делать же море копий этих файлов для каждого языка. Захочется чего-нить поправить из оформления, так во всем море придется править, да и переводчикам сложнее с формированием ТЗ. Напрашивается вариант вроде
Скажите, более опытные товарищи, оно так и лепится? Если да — то тупо дергаем из БД все необходимые поля для статики определенной страницы и потом раскидываем их по массиву, проставляя в тексте руками числовые значения?
З.Ы. Не знаю, как на форуме заэкранировать квадратные скобки. ***91; и ***93; — это они.
Пытаетесь по максимуму отделить контент от представления (без фанатизма, конечно). Отдельно переводите шаблоны и встраиваемый в них контент. Лишь затем работаете с наборами строк под разные языки. Уверяю, что если все остальное вы сделаете правильно, то таких наборов будет не так уж и много.
Дык вот у меня вопрос именно в этом. Правильный подход-то мною озвученный или нет?
Используйте не массивы напрямую, а какую-нибудь функцию или метод. И вместо индексов используйте текс (тут поможет функционал ассоциативных массивов). Определите базовый язык, который будете использовать в шаблоне, например, английский. В итоге шаблон будет выглядеть примерно так:
<span><a href="/reg" title="<?php echo tr('Create account'); ?>"><?php echo tr('Register'); ?></a> или <a href="/login" title="<?php echo tr('Login'); ?>"><?php echo tr('Login'); ?></a></span>.Функция tr читает откуда-то (куки, параметр URL и т.п.) текущий язык и обрабатывать строку. Языки можно хранить в отдельном файле или еще как-то примерно в таком виде:
В итоге вполне удобно работать как с шаблонами, так и с переводами.
Joker-jar, спасибо за наводку, есть над чем подумать. Хотя функция, видимо, все же из БД будет это дело брать, но все равно удобнее, чем сразу массив вместо функции, хоть нагрузки на БД будет и не меньше. Хм. Или собственно из БД и сформировать массив $language просто из вашего примера, а потом из него инфу цапать, индексами или названиями — это уже как удобнее...
Резюме: в любом случае самая правильная структура таблицы в БД будет типа:
1. Create Account. Создать аккаунт. Перевод на Китайский.
2. Register. Зарегистрироваться. Перевод на Китайский.
и т.д.
А дальше отбирать по 1, 2 или по Create Account, Register. Верно?
Я использую файлы. Есть папка languages, в ней лежат файлы ru.lng, fr.lng и так далее, внутри них - вышеописанные массивы. Функция tr определяет текущий язык, если язык en, то просто возвращает переданный параметр, иначне инклудит нужный язык и возвращает элемент массива.
Скажите, более опытные товарищи, оно так и лепится?
Я не опытный, но знаю, что многие опытные предпочитают gettext. (это почти стандарт для мультиязычных приложений)
Не знаю, как на форуме заэкранировать квадратные скобки. ***91; и ***93; — это они
Используй бб-код [code][/code], а не [php][/php].
Я использую файлы. Есть папка languages, в ней лежат файлы ru.lng, fr.lng и так далее, внутри них - вышеописанные массивы. Функция tr определяет текущий язык, если язык en, то просто возвращает переданный параметр, иначне инклудит нужный язык и возвращает элемент массива.
Я сейчас сделал похоже, но А) в БД (ибо удобнее для переводчиков да и собственно БД и служит для хранений подобных Д) и параметром не английский вариант текста, а все же индекс (быстрее заполнять таблицу в БД и менять html-файлы плюс английские варианты могут быть длинноваты, тот минус, что менее понятно в html, что здесь за параметр, для меня не так важен, т.к. знаю в этих файлах все вдоль и поперек).
---------- Добавлено 22.11.2014 в 13:56 ----------
Я не опытный, но знаю, что многие опытные предпочитают gettext. (это почти стандарт для мультиязычных приложений)
Используй бб-код [code][/code], а не [php][/php].
Угумс, так и хотел, но протупил и кнопку с кодом не нашел. Теперь вот внимательнЕе глянул, и усё вижу. А так вообще погано все с квадратными скобками обстоит, в УРЛах же они могут вполне использоваться (для параметров со множественными значениями), в результате такую ссылку нормально в форум с ББ кодами не поставишь, только через ...