Как построить встроенную систему перевода, аналогичную Magento's - PullRequest
1 голос
/ 19 июля 2010

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

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

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

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

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

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

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

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

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

1 Ответ

3 голосов
/ 19 июля 2010

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

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

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

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

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

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

    print $this->__($someString);

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

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

Спасибо, Джо

...