31

gettextの一般的なローカリゼーション/翻訳の代替手段はありますか?

オープンソースでもプロプライエタリでも構いません。

gettextの代替と言うとき、私はある種のローカリゼーションバックエンドを備えた国際化のためのライブラリを意味します。

私が尋ねている理由は、(とりわけ)gettextが少し面倒で静的なことを行う方法を、主にバックエンドビットで見つけたからです。

4

4 に答える 4

47

まず第一に、私gettextはこの時点で最高の1つだと思います。

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リソース。

今:

  • 最後の2つの合計がらくた...翻訳と保守を使用するのは非常に難しく、複数形をサポートしていません。
  • Qt ts/tm-Qtフレームワークを使用する必要があります。と非常によく似たモデルがありgettextます。悪い解決策ではありませんが、Qtに限定されています。ジェネリックプログラムではあまり役に立ちません。
  • POSIXカタログ-誰もそれらを使用せず、複数形はサポートしません。くだらない。
  • OASIX XLIFF-「標準」ソリューション。XMLに依存します。ICUでさえ、使用するには特定のICUリソースへのコンパイルが必要です。限られた翻訳ツール、XLIFFをサポートするライブラリを知りません。複数形はそれほど使いやすいものではありません(ICUには4.xリリースでのみサポートが含まれていました)。

今、私たちは何を持っていますか?

GNUgettextは、広く使用されており、優れたツールを備えており、複数形をサポートしており、翻訳者コミュニティで非常に人気があります...

では、gettextはそれほど良い解決策ではないと本当に思いますか?

私はそうは思わない。あなたは他のソリューションをまったく使ったことがないので、そもそもそれがどのように機能するかを理解するようにしてください。

于 2010-02-02T16:16:59.123 に答える
8

Fluentは、gettextに欠けている多くの適応を提供する新しいシステムです。gettextが複数形化をサポートしている場合、fluentにはテキストバリアントの一般的なフレームワークがあります。gettextが翻訳キーとして「untranslated」文字列を使用する場合、fluentは抽象キーをサポートします(ソース言語でたまたま同名であるものに対して複数の翻訳を許可します。 これはより広範な比較です。

Firefoxの設定コードベースから取得した流暢な.ftlファイルの例は、次のようになります。

# 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.
于 2019-03-27T22:58:51.733 に答える
3

gettext()とそれらすべてのpro-gettext()に関する興味深いコメント。

ほとんどの場合、うまく機能していないと言っているわけではありませんが、1つのプロジェクトをそれで管理しようとすると、すぐにそれを使用することの難しさに圧倒されました。今日、翻訳者向けのユーザーインターフェイスがいくつかあるかもしれませんが、私は見ていませんでした。文字列の抽出とマージは、私にとってはそれを行っていません。

さて、すべてがXMLであるため、私の環境にとってはるかに優れたソリューションであるXLIFFについて話してくれたArtyomに感謝します。おー!そして、そこには優れた編集者がいます。しかし、gettext()が好きなら、それらは見つかりません。8-)

たとえば、これを確認することをお勧めします。

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

さて、これはプログラマーにすべてを機能させるための悪夢を与えるかもしれませんが、私たちが望んでいるのは、翻訳者にとって夢が叶うことです(そして、gettext()でそれを伝えることができるので、翻訳が注がれるときにプログラマーによる作業はゼロです。すべての仕事をしなければなりませんでした!)

于 2011-09-19T06:30:21.270 に答える
2

gettext * .po /*.moファイルおよびその他の多くの形式をサポートするZendの代替手段があります。gettextはモジュールとして実装されており、翻訳データを更新するにはサーバーを再起動する必要があるため、多くのApacheサーバーは翻訳ファイルをキャッシュします。

Zendの実装はこれを回避し、さらに多くの形式をサポートします。

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

于 2012-11-15T04:50:46.233 に答える