![]() |
|
|
![]()
|
|
| anoth |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 22.10.2010 Репутация: нет Всего: нет |
Приветствую.
У меня есть задача, на которую я пока не нашел оптимального решения, хотя спрашивал помощи в нескольких местах. 1. Есть работающее приложение на Ruby. 2. Нужно клонировать его структуру, без контента, и дать возможность редакторам перевести интерфейс каждого клона на свой язык. Каждый клон должен быть доступен по ссылке domain.tld/clon_lang (напр. domain.tld/en , domain.tld/ru , domain.tld/ua ) 3. На фронт-офисе каждого клона нужно вывести переключатель доступных языков (клонов) с переходом по клику (выбору) языка на каждый клон. Как бы это выглядело, например, в HTML или php&mysql: 1. Файлы проекта живут в domain.tld 2. Создаются поддиректории domain.tld/en , domain.tld/ru , domain.tld/ua 3. В каждую поддиректорию копируются файлы проекта 4. В шаблоне каждого проекта выводится меню\переключатель языков 5. Переводчикам выдаются .lang -файлы или те файлы, которые содержатязыковые константы, в зависимости от того, как написан проект. 6. Если проекты завязаны на базу данных, делается несколько копий базы, по числу языков. Т.е. общее время на создание каждого клона равно времени копирования файлов и создания базы. А как это выглядит в Ruby? Я получил несколько вариантов ответов (отвечали разные люди): 1. Для RoR приложений это делается очень просто. 2. Для перевода используется специальные файлы yml которые хранятся в config/locales. Потребуется примерно 30 часов - но это с потолка цифра - надо смотреть на приложение - если все хорошо то и в 10 можно уложиться , если плохо то и 100 будет мало 3. Клонировать структуру просто, если сайт сделан по уму. Если нет, то нужно писать i18n и займет в зависимости от количества контента ~ 5-7 часов. Добавить ссылки на клонированные версии - 1 час. 4. Многоязычность легко реализуется в шаблонах с помощью языковых файлов и доп. логики, уверен для этой цели существует множество Rubygems, однако и в ручную это реализовать не сложно, если проект не слишком большой. вам следует предоставить каждому редактору по копии языкового файла. далее в зависимости от субдомена или url выдается определенная кука или сессия, которая хранит выбранный язык. Насчет контента на нескольких языках: в базу данных Posts можно добавит столбец: lang в котором будет содержаться код языка: ru, en, fr и т.д... при запросе к базе данных просто добавить фильтр по этому столбцу. 5. Можно клонировать базу и использовать по файлу локали на каждый язык, http://guides.rubyonrails.org/i18n.html. Придется запускать по инстансу приложения на каждый домен, что немножко накладно. Грубо говоря клонировать config/environments/production.rb в сonfig/environments/production_ru.rb, указывать там нужную локаль и соотвественно добавлять параметры БД для данного окружения в config/database.yml. 6. В rails есть стандартный механизм перевода заголовков в зависимости от выбранной локали. Надо создать где нибудь на странице переключатель локали(языков) и потом для каждого заголовка прописать его альтернативное значение в зависимости от локали. Есть нюанс, как редактировать эти заголки, онлайн на сайте или просто в файле а потом его закидывать на хостинг. Про мистику: поскольку задача не теоретическая, я спросил у автора каждого более-менее внятного ответа, за сколько денег и времени они могли бы взяться её решить. Кому-то даже отправил исходники. После этого все (!) ответившие пропадали, т.е. переставали выходить на связь. Прямо "Звонок" какой-то... В итоге у меня есть список пропавших программистов на ruby, но некому решить задачу. В общем, прошу помощи зала. Готов оплатить консультации и личное участие. Спасибо. P.S.вопрос модератору - я хочу сослаться на эту тему из раздела "Объявления о найме специалистов". Если это протеворечит правилам форума, дайте мне знать. Спасибо. Это сообщение отредактировал(а) anoth - 22.10.2010, 10:44 |
|||
|
||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
Никто тебе не мешает сделать то же самое с RoR-приложением, просто для RoR так не принято, да и масштабируемость у такого подхода хромает. Думаю, основная загвоздка в пункте "Есть работающее приложение на Ruby"... Дело в том, что мультилингвальность должна быть неотъемлемой частью архитектуры. Поэтому не исключаю, что пропавшие просто постеснялись озвучить сумму полной переделки твоего приложения. Лично мне для обеспечения мультилингвальности нравится плагин acts_as_multilingual. Есть пример демо-приложения. P.S. Если тебя не интересует схожесть структуры сайта для разных языков, то проще всего сделать по отдельной БД для каждого языка. Это просто до безобразия, если твоё приложение уже поддерживает I18n в представлениях(views). Это сообщение отредактировал(а) source777 - 22.10.2010, 13:45 -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
![]()
|
| Правила форума "Ruby on Rails" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Ruby On Rails | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |