Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Клонирование проекта, i18n и немного мистики 
:(
    Опции темы
anoth
  Дата 22.10.2010, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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
PM   Вверх
source777
Дата 22.10.2010, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 12
Всего: 56



Цитата(anoth @  22.10.2010,  09:49 Найти цитируемый пост)
Как бы это выглядело, например, в HTML или php&mysql:
1. Файлы проекта живут в domain.tld
2. Создаются поддиректории domain.tld/en , domain.tld/ru , domain.tld/ua
3. В каждую поддиректорию копируются файлы проекта
4. В шаблоне каждого проекта выводится меню\переключатель языков
5. Переводчикам выдаются .lang -файлы или те файлы, которые содержатязыковые константы, в зависимости от того, как написан проект.
6. Если проекты завязаны на базу данных, делается несколько копий базы, по числу языков.

Никто тебе не мешает сделать то же самое с RoR-приложением, просто для RoR так не принято, да и масштабируемость у такого подхода хромает.


Цитата(anoth @  22.10.2010,  09:49 Найти цитируемый пост)
Про мистику: поскольку задача не теоретическая, я спросил у автора каждого более-менее внятного ответа, за сколько денег и времени они могли бы взяться её решить. Кому-то даже отправил исходники. После этого все (!) ответившие пропадали, т.е. переставали выходить на связь. Прямо "Звонок" какой-то... 

Думаю, основная загвоздка в пункте "Есть работающее приложение на Ruby"... Дело в том, что мультилингвальность должна быть неотъемлемой частью архитектуры. Поэтому не исключаю, что пропавшие просто постеснялись озвучить сумму полной переделки твоего приложения.  smile 
Лично мне для обеспечения мультилингвальности нравится плагин acts_as_multilingual. Есть пример демо-приложения.

P.S.  Если тебя не интересует схожесть структуры сайта для разных языков, то проще всего сделать по отдельной БД для каждого языка. Это просто до безобразия, если твоё приложение уже поддерживает I18n в представлениях(views).

Это сообщение отредактировал(а) source777 - 22.10.2010, 13:45


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby on Rails"
source777
  • С чего начать? начинаем
  • Документацию смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby On Rails | Следующая тема »


 




[ Время генерации скрипта: 0.0451 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.