Интерфейс для перевода PHP похож на Rosetta?

#php #zend-framework #internationalization #translation #gettext

#php #zend-framework #интернационализация #перевод #получаемый текст #gettext

Вопрос:

В настоящее время я переношу веб-приложение с подхода интернационализации на основе базы данных (каждое слово имеет запись в таблице перевода и фактический перевод) на веб-приложение на основе Zend_Translate и CSV-файлов.

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

Знаете ли вы автономный интерфейс для перевода на основе PHP, совместимый с конечным пользователем, который поддерживает один из предлагаемых Zend_Translate адаптеров — в идеале gettext или csv?

Что-то вроде Rosetta от Python / Django, но на PHP? Rosetta делает именно то, что мне нужно:

введите описание изображения здесь

но я бы очень хотел остаться с PHP здесь по причинам настройки сервера.

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

Комментарии:

1. Так что, возможно, я неправильно понимаю вопрос. Я предполагаю, что вы хотите автоматизировать извлечение и замену литеральных строк из PHP-кода. Действительно ли Rosetta можно было бы использовать для решения проблемы, но ваше возражение заключается в том, что это не реализовано в PHP? Кажется странным, что программа на базе Python тоже может обрабатывать литеральные строки в PHP-коде. Возможно, проблема в том, что вы вручную извлекаете интересующие литералы и модифицируете PHP-код для доступа к переводу, и все, что вам нужно, это часть управления переводом? Если это так, разве PHP-программа для этого не была бы относительно простой?

2. @Ira аргумент в пользу PHP вместо Python заключается в том, что я много развертываю на платформах, где последний недоступен, и требование состоит в том, чтобы иметь возможность изменять переводы на лету. Действительно, было бы относительно легко создать что-то свое, но я хотел бы знать, существует ли готовый продукт, который уже выполняет эту работу.

3. Действительно, я неправильно понял. Я все еще не понимаю, как Rosetta обрабатывает PHP-часть, но я буду считать это поэтической вольностью. Я отозвал свой ответ.

4. Каким-то образом я чувствую, что вы остановились на Zend_Translate и CSV (или gettext?). Что вам сейчас нужно, так это способ редактирования данных CSV (или gettext)?

5. @Adrian точно! Какой из них не имеет значения, я мог бы жить с обоими форматами.

Ответ №1:

Я не видел другого и, вероятно, по следующей причине. Несмотря на то, что написано на веб-сайте SimplePO, переводчикам не нравятся системы параллельного перевода, как показано выше, и часто они не будут работать с ними.

Именно так программисты представляют себе работу переводчиков, и это неверно. Переводчики работают с инструментарием под названием TMX, Translation Memory Exchange (общее название смотрите в Okapi — реализация с открытым исходным кодом, чтобы получить представление об этом), и в нем они создают словари перевода для слов, фраз и предложений. Они берут файл различных форматов и загружают его в программное обеспечение TMX, это дает им первый проход, который переведен на 60%, 70% и т.д., Но, как и Google language API, Ужасно искажен с точки зрения смысла на целевом языке.

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

Они делают это таким образом по ряду причин: а) это имеет смысл, работает и снижает их рабочую нагрузку и б) потому что им платят за word, а параллельный перевод не позволяет им использовать свои инструменты и максимизировать свой доход.

Переводчикам нужен файл в формате, который вы можете экспортировать, они могут импортировать и переводить, экспортировать и отправлять вам обратно для импорта.

Форматы файлов могут быть csv, rtf, tmx, xliff, gettext, и если вы прочитаете документы Symfony framework, вы сможете увидеть, как они это делают и обрабатывают (на мой взгляд, они неплохо справляются).

Сказав все это, я был в похожем положении около 8 лет назад, когда мне нужно было написать сайт на английском, французском, немецком, венгерском и словацком языках, и я сделал то же самое, что и SimplPO, и просто написал свое собственное параллельное приложение, позволяющее это сделать. Однако компания, для которой мы писали приложение, выполнила весь свой собственный перевод собственными силами, поэтому мы не столкнулись с проблемой с переводчиками. Когда мы это делали, мы написали экспорт в RTF и импорт из RTF (что само по себе ошеломляет), чтобы переводчики могли функционировать, как описано выше.

Однако SimplePO — единственная другая реализация идеи, которую я видел. Такие фреймворки, как Zend, похоже, думают, что вы просто создаете теги поиска для замены слов и фраз и не встраиваете в приложение никакого элемента управления для управления процессом. Следовательно, вскоре он выходит из-под контроля, и его обслуживание становится сложным и дорогостоящим.

Большинство людей, которые пишут многоязычные веб-сайты, на самом деле этого не делают. Они пишут мастер-сайт, а затем делают копию, переводят ее и поддерживают переведенную версию. Нам логические типы кажутся неуклюжими, но на самом деле они очень эффективны.

Одна из причин, по которой это эффективно, заключается в том, что i18n и l10n касаются многих других вещей, помимо языка.

  • Внешний вид и ощущения. Англосаксы любят холодные цвета и шрифты San serif, испаноязычные народы любят шрифты с засечками и более яркие цвета. И когда вы знакомитесь с другими культурами, ожидания сильно различаются по планировке, типам, цветам и т.д.
  • Французский и в некоторой степени немецкий языки на 30% длиннее и более подробны, чем эквивалентный английский, поэтому ваш макет очень быстро отправляется в корзину для рук.

  • Семитский язык справа налево

  • Японский и другие языки, не основанные на алфавите, могут запускать ltr rtl сверху вниз, а в некоторых даже нет пробелов
  • даты? США, Япония, Великобритания, венгерский как все разные
  • форматы валют и чисел, даже не начинайте меня

Что ж, извините, что продолжаю и подводлю итог: — Для простого перехода из стороны в сторону просто напишите это сами, у меня ушло около двух недель без каких-либо фреймворков, и я работал над этим по ходу дела, просто используя замену тегов. Но сделайте еще немного и обдумайте, что вы делаете. Внимательно.

Комментарии:

1. Спасибо за глубокое понимание перевода! Не все из этого применимо на 100% в моем случае — переводчики, о которых идет речь, не являются профессиональными переводчиками программного обеспечения, и не менее важной частью работы является предоставление владельцу сайта возможности вносить изменения в текст на лету — но это ценная информация, и ее полезно знать на будущее. Я взгляну на SimplePO.

Ответ №2:

Если вы можете использовать файлы gettext (Zend_Translate поддерживает их), вы можете попробовать POEdit. Он довольно прост в использовании и поддерживает формы множественного числа начиная с версии 1.3.

Однако пользователям придется загружать файлы и повторно загружать их в конце, потому что POEdit не является онлайн-инструментом. Я не знаю ни одного другого веб-инструмента.

Ответ №3:

Вы можете попробовать Transtable, простой веб-интерфейс для редактирования переводов в массивах php.