2010-07-19 2 views
1

Я работаю над проектом Zend Framework, MVC, веб-сайта предприятия. Я хотел бы разработать дружественную систему перевода с возможностью перевода каждого слова в соответствии с его контекстом (иногда одно и то же слово имеет другой перевод).Как построить встроенную систему перевода, подобную Magento's

Zend Framework использует Zend_Translate для i18n и локализации. Мы также видели систему Magento (которая использует ZF) встроенную систему перевода, где пользователи могут translate pages directly.

Мы хотим знать, как работает эта встроенная система перевода, чтобы мы могли создать подобную систему с улучшениями.

  1. Где хранятся переводы: в базе данных или в файлах CSV?

  2. Как система знает, чтобы получать переводы для одного и того же слова, когда пользователь переводил разные страницы на разные страницы?

  3. Как нам создать страницу для поддержки встроенного перевода?

  4. Как система обрабатывает статический текст и динамический (управляемый базой данных) текст?

  5. Встроенный перевод кажется, что он сделает сайт очень медленным. Как Magento решает эту проблему?

Пожалуйста, если у вас есть больше вопросов, которые следует объяснить, напишите их. Благодаря

+1

Когда все написано жирным шрифтом, ничего. –

ответ

3

Начиная с начала здесь (в будущем, это, вероятно, более чем один логический вопрос):

  1. Magento хранит основные переводы (при условии, программистом) в CSV-файлов, но встроенные переводы хранящихся в базе данных.

  2. Переводы Magento действуют на целые строки, а не на слова. Предоставляя полное предложение для контекста для переводов, возможны идиоматические переводы. Компромисс, очевидно, заключается в том, что каждое предложение должно быть переведено, а не каждое слово.

  3. Ответ Magento на это заключается в том, чтобы обернуть все локализуемые строки при вызове локализатора. Шаблоны Magento обычно смотрят что-то вроде этого (функция двойного подчеркивания сопоставляет функции «перевести в текущей локали»):

    print $this->__("Please translate this string");

  4. Динамический текст (как в описании продукта) в Magento часто не переводится , но если вы хотите сделать это, это так просто, как передавая правильную строку переводчику, как это:

    print $this->__($someString);

  5. это маловероятно, что перевод будет сделать перерыв или ваш сайт (смотреть на ваши БД запросов для большинства проблемы с производительностью), но это, тем не менее, законный вопрос. Magento делает несколько вещей, чтобы помочь. Во-первых, он хранит сериализованные версии файлов CSV в кеше, так что чтение CSV становится более эффективным. Во-вторых, Magento предлагает кеширование страниц, чтобы можно было сохранить вывод всей страницы (при условии, что он будет отображаться одинаково), а также кэширование на уровне блоков для небольших фрагментов страницы.Между ними вы в хорошей форме по большей части.

Надеюсь, что это поможет!

Спасибо, Джо

+0

Большое спасибо Yosef – Yosef

Смежные вопросы