2011-09-12 4 views
4

翻訳のためのこの文字列を想像してください:gettextは/ anまたはd '/ deをどのように扱いますか?

"あなたのパスは%sによってブロックされています"。

変数が "anaconda"の場合はどうなりますか?今度は "あなたのパスは%sによってブロックされています"でなければなりません。

gettextはこれにどのように対処するのですか?またはクライアントプログラマがこれに対処する方法、あるいは他のシステムがこれにどのように対処していますか?

"%sのページ"この文字列を想像してみてください。

"Brian"または "Jim"または "Lucinda"を渡したいとします。すべての井戸と良い。

しかしフランス語の翻訳では、これは次のとおりです。

"ページ・デ%sを"。

Jean-PaulまたはClaudetteの場合、これは問題ありませんが、貧しいAnaisはどうですか?彼女は「ページ・ド・アナワス」ではなく、「ページ・ディ・アナワイ」を必要としています。

gettextはこれに対処していますか?標準的な練習は何ですか?

+0

これらのケースを試しましたか? –

+2

"%sさんのページ"。英語でも必ずしも機能しません。名前が難しい場合は通常、アポストロフィを追加するだけです。例えばJonesesの – dsas

+0

gettextはこの問題に対処していないと言っても間違いないと思います。 – tripleee

答えて

3

期待どおり、gettextは文法上正しい文字列を構築するのに役立ちません。英語で問題がない場合でも、プログラム固有の表示テキストを作成することは、言語固有の問題が発生する可能性があるため、大きなローカリゼーションです。管理しやすい場合は、恐らく恐竜によってブロックされたパス、バニーであなたのパスがブロックされたルート、アナコンダによってパスがブロックされたパスなど、それぞれのケースごとに別々のストリングを用意する必要があります。翻訳システムは、翻訳メモリの使用、さらにはより洗練された自動翻訳(翻訳者が必要に応じて校正して修正する必要がある)であってもプロセスを自動化するのに役立ちます。

あなたの「ページ・ド・アナワイズ」/「ページ・ド・クラウデット」は素晴らしい例です。このような場合の唯一の解決策は、ローカライズ可能な文字列テーブルにフォーマット文字列を格納することです(例: "Page de:Anais"はすべてのケースで非常にきれいですが、 "%sのページ"を "Page de:%s"としてローカライズします)。しかし、ローカライザーは、このフォーマット文字列がどこに行くのか、どのように構築されるのかを理解する必要があるので、これを明確にする必要があります。

最も広く誤って翻訳された文字列の1つは、「%n of%n」(ページ「1/4」のようにページを印刷するために使用される)です。例えば。フランス語では、文字通りの翻訳は「1 de 4」であり、この文脈では無意味であり、「1 sur 4」でなければならない。

関連する問題