Альтернативы gettext? - PullRequest
       15

Альтернативы gettext?

27 голосов
/ 02 февраля 2010

Существуют ли общие альтернативы gettext для локализации / перевода?

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

Когда я говорю «альтернатива gettext», я имею в виду библиотеку для интернационализации с своего рода локализацией.

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

Ответы [ 4 ]

43 голосов
/ 02 февраля 2010

Прежде всего, я думаю, gettext является одним из лучших на данный момент.

Вы можете взглянуть на Boost.Locale, который может предоставить лучший API и использовать модель словаря gettext.: http://cppcms.sourceforge.net/boost_locale/docs/ (не является официальной частью Boost, все еще бета).


Редактировать:

Если вам не нравится gettext...

Это технологии перевода:

  • OASIS XLIFF
  • GNU gettext po / mo файлы
  • POSIX каталоги
  • Файлы Qt ts / tm
  • Свойства Java,
  • Ресурсы Windows.

Сейчас:

  • Последние два полных дерьма ..Очень сложно использовать перевод и поддержку, не поддерживают формы множественного числа.
  • Qt ts / tm - требует использования каркаса Qt.Имеют очень похожую модель на gettext.Неплохое решение, но ограничено Qt.Не очень полезен в общих программах.
  • Каталоги POSIX - никто не использует их, поддержка множественных форм не поддерживается.Дерьмо.
  • OASIX XLIFF - «стандартное» решение, зависит от XML, даже ICU требует компиляции для конкретных ресурсов ICU для использования.Инструменты для ограниченного перевода, я не знаю ни одной библиотеки, которая поддерживает XLIFF.Множественные формы не так просты в использовании (ICU включала некоторую поддержку только в версии 4.x).

Что теперь у нас есть?

GNU gettext, широко используется, имеетзамечательные инструменты, имеет отличную поддержку множественных форм, очень популярную в сообществе переводчиков ...

Итак, решите, действительно ли вы считаете, что gettext - не очень хорошее решение?

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

2 голосов
/ 15 ноября 2012

Существует альтернатива от Zend, которая поддерживает файлы gettext * .po / * .mo и многие другие форматы. Многие серверы Apache кэшируют файлы перевода, потому что gettext реализован как модуль, и сервер должен быть перезапущен для обновления данных перевода.

Реализация Zend избегает этого и поддерживает множество других форматов:

http://framework.zend.com/manual/1.12/en/zend.translate.html

2 голосов
/ 19 сентября 2011

Интересные комментарии о gettext () и всех тех pro-gettext ().

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

Теперь я благодарю вас, Артем, за то, что вы рассказали о XLIFF, который является намного лучшим решением для моей среды, поскольку все является XML. Ой! И там есть отличные редакторы. Но если вам нравится gettext (), вы их не найдете. 8 -)

Я предлагаю посмотреть на это, например:

https://sourceforge.net/projects/wordforge2/

Теперь, это может дать программисту кошмар, чтобы заставить все это работать, но мы хотим, чтобы мечта осуществилась для переводчиков (и ноль работает программистом, когда переводит поток, потому что я могу сказать вам это с помощью gettext () Я должен был сделать всю работу!)

0 голосов
/ 28 марта 2019

Свободно - это новая система, которая предлагает ряд адаптаций, которые отсутствуют в gettext. Там, где gettext поддерживает плюрализм, у fluent есть общая структура для текстовых вариантов. Там, где gettext использует «непереведенную» строку в качестве ключа перевода, fluent поддерживает абстрактный ключ (допускает множественные переводы для чего-то, что, как оказалось, является одноименным в исходном языке. Вот более подробное сравнение .

Пример свободного файла .ftl, взятого из кодовой базы настроек firefox , выглядит следующим образом:

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

blocklist-window =
    .title = Block Lists
    .style = width: 55em

blocklist-description = Choose the list { -brand-short-name } uses to block online trackers. Lists provided by <a data-l10n-name="disconnect-link" title="Disconnect">Disconnect</a>.
blocklist-close-key =
    .key = w

blocklist-treehead-list =
    .label = List

blocklist-button-cancel =
    .label = Cancel
    .accesskey = C

blocklist-button-ok =
    .label = Save Changes
    .accesskey = S

# This template constructs the name of the block list in the block lists dialog.
# It combines the list name and description.
# e.g. "Standard (Recommended). This list does a pretty good job."
#
# Variables:
#   $listName {string, "Standard (Recommended)."} - List name.
#   $description {string, "This list does a pretty good job."} - Description of the list.
blocklist-item-list-template = { $listName } { $description }

blocklist-item-moz-std-listName = Level 1 block list (Recommended).
blocklist-item-moz-std-description = Allows some trackers so fewer websites break.
blocklist-item-moz-full-listName = Level 2 block list.
blocklist-item-moz-full-description = Blocks all detected trackers. Some websites or content may not load properly.
...