2

次のような文を考えてみましょう。

"I visited this place {0} {1} ago."

{0}整数を表し、{1}それぞれ「年」または「年」という単語です。さて、ロシア語では、「年」という言葉は単数または複数ではなく、正確な数に依存します (год-года-лет)。したがって、「年」または「年」を区別するだけのルールは、ロシア語には不十分です。

ここで必要な情報は次のとおりです。リソース バンドルまたはソース コードにルールを追加し、文字列全体を保持する方法はありますか、または文字列を分割する必要がありますか?

"I visited this place {0} " + "{1} " + "ago."

... ソース コードでルールを展開しますか? このような問題をどのように処理しますか?ベストプラクティスはありますか?

4

2 に答える 2

3

i18nの黄金律

ローカライズされた文字列を連結して、ローカライズされた出力を生成しないでください。これまで。何らかの理由で。


ここでは、ローカライズされた形式の「年/年」を大きなテキストの途中に挿入することで、この規則に違反しています。あなたの特定の例では、これは簡単に回避できます-「N年」全体をローカライズし、代わりにそれを挿入するだけです-しかし、それは実際には問題を解決しません。コンテキストにさらに依存する構造を持つ言語があり、このアプローチはある時点で致命的に崩壊します。

最良の結果を得るには、文字列全体をローカライズする必要があります。ロシア語ロケールの場合、文字列は「年」パラメーターの値に応じて 3 つの異なる形式を持つ必要があります (ロシア語がわからないので、どの形式がどの値に使用されるかわかりません)。

どの i18n テクノロジーを使用しているかはわかりませんが、gettext (質問にタグが付けられています) はそのまま使用できます。

于 2013-02-11T12:40:21.723 に答える