- 非対称ローカライゼーション: 必要な場合にのみ性別/大小文字を使用して、自然な翻訳を目指す。表現力は原文の文法に制約されない
- 段階的な向上: 各翻訳は独立して管理され、他のロケールに影響を与えない。他の言語に影響を与えることなく、反復的に翻訳を改善できる
- 多様な機能: 日付、時刻、数値の書式。複数カテゴリ。双方向サポート。ユーザー書式。読みやすい文法。ランタイム翻訳および再翻訳。強力なエラー処理
- Apacheライセンスのオープンソース。サーバー実装は JS、Python、Rust で提供され、React バインディングも提供
Fluentを作った理由
- ソフトウェアのローカライゼーションは、英語のコピーに一対一で対応づける翻訳という古いパラダイムに支配されてきた
- 原文の文法は翻訳の表現力を制限する
- このパラダイムを変えるために Fluent を作った
- 翻訳者は開発者に許可を求めることなく、言語のあらゆる表現力を使えるべき
- Fluent では翻訳は非対称。英語のシンプルな文字列が、他言語では複雑な多変種の翻訳に対応づけられる
- Fluent を使えば、ソース言語に関係なく多様な言語の文法やスタイルに対応できる
- 独立性
- ある言語が高度なロジックの利点を活用しても、それを適用するために他のローカライゼーションは必要ない
- 各ローカライゼーションは、翻訳をどこまで複雑にするかをそれぞれ制御する
4件のコメント
おお、以前の1:1マッチングのパラダイムから脱却するというのはかなり興味深いですね
JavaScript専用のgettext劣化版。
https://github.com/projectfluent/fluent/wiki/Fluent-vs-gettext
そう言ってしまうと、このプロジェクトをあまりにも軽く見すぎていますね。
返答があまりにもそっけない(?)ので、そのように見えたのかもしれませんね。もう少し丁寧に書いてみます。
比較表はどうせ比較主体が誰かによって決まるものなので、大きな意味はありませんが、
私が劣化版だと感じた理由は…長い年月のあいだに多くの人々によってgettextに積み上げられてきたノウハウを尊重していないように感じたからです。
gettextはC言語でしか使えないと言っていましたが、主要言語の中でgettextをサポートしていない言語って何があるのでしょうか?
語順の問題を考慮してキー・ベースのパラメータを使ったとのことですが、すべての言語が辞書を基本機能として内蔵しているわけではないので、そうした言語では追加の手段(例: JavaならMapのようなもの)が必要になるわけです。gettextは位置ベースですが、語順変更についてはちゃんと考慮されています。
だらだら書いてしまいましたが、
実は…最初から気に入らなかった理由は ${...} ではなく {$...} だったからです^^
個人的には「車輪の再発明」をものすごく好みますが、この世になかった車輪を発明したかのように吹聴するのはあまりよく見えませんね。