gettextの一般的なローカリゼーション/翻訳の代替手段はありますか?
オープンソースでもプロプライエタリでも構いません。
gettextの代替と言うとき、私はある種のローカリゼーションバックエンドを備えた国際化のためのライブラリを意味します。
私が尋ねている理由は、(とりわけ)gettextが少し面倒で静的なことを行う方法を、主にバックエンドビットで見つけたからです。
gettextの一般的なローカリゼーション/翻訳の代替手段はありますか?
オープンソースでもプロプライエタリでも構いません。
gettextの代替と言うとき、私はある種のローカリゼーションバックエンドを備えた国際化のためのライブラリを意味します。
私が尋ねている理由は、(とりわけ)gettextが少し面倒で静的なことを行う方法を、主にバックエンドビットで見つけたからです。
まず第一に、私gettext
はこの時点で最高の1つだと思います。
Boost.Locale
より良いAPIを提供し、gettext
の辞書モデルを使用する可能性があることを確認してください:http: //cppcms.sourceforge.net/boost_locale/docs/(Boostの公式部分ではなく、まだベータ版です)。
編集:
気に入らない場合gettext
...
これらは翻訳技術です:
今:
gettext
ます。悪い解決策ではありませんが、Qtに限定されています。ジェネリックプログラムではあまり役に立ちません。今、私たちは何を持っていますか?
GNUgettext
は、広く使用されており、優れたツールを備えており、複数形をサポートしており、翻訳者コミュニティで非常に人気があります...
では、gettextはそれほど良い解決策ではないと本当に思いますか?
私はそうは思わない。あなたは他のソリューションをまったく使ったことがないので、そもそもそれがどのように機能するかを理解するようにしてください。
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.
gettext()とそれらすべてのpro-gettext()に関する興味深いコメント。
ほとんどの場合、うまく機能していないと言っているわけではありませんが、1つのプロジェクトをそれで管理しようとすると、すぐにそれを使用することの難しさに圧倒されました。今日、翻訳者向けのユーザーインターフェイスがいくつかあるかもしれませんが、私は見ていませんでした。文字列の抽出とマージは、私にとってはそれを行っていません。
さて、すべてがXMLであるため、私の環境にとってはるかに優れたソリューションであるXLIFFについて話してくれたArtyomに感謝します。おー!そして、そこには優れた編集者がいます。しかし、gettext()が好きなら、それらは見つかりません。8-)
たとえば、これを確認することをお勧めします。
https://sourceforge.net/projects/wordforge2/
さて、これはプログラマーにすべてを機能させるための悪夢を与えるかもしれませんが、私たちが望んでいるのは、翻訳者にとって夢が叶うことです(そして、gettext()でそれを伝えることができるので、翻訳が注がれるときにプログラマーによる作業はゼロです。すべての仕事をしなければなりませんでした!)
gettext * .po /*.moファイルおよびその他の多くの形式をサポートするZendの代替手段があります。gettextはモジュールとして実装されており、翻訳データを更新するにはサーバーを再起動する必要があるため、多くのApacheサーバーは翻訳ファイルをキャッシュします。
Zendの実装はこれを回避し、さらに多くの形式をサポートします。
http://framework.zend.com/manual/1.12/en/zend.translate.html