PHP-интерфейс, похожий на Rosetta? - PullRequest
26 голосов
/ 05 июня 2011

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

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

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

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

enter image description here

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

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

Ответы [ 3 ]

22 голосов
/ 05 июня 2011

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2 голосов
/ 18 мая 2013

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

2 голосов
/ 05 июня 2011

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

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

...