8

適切な冠詞 (a/an) を使用しながら名詞を文に適切に挿入する、文化に配慮した方法を探しています。これを行う適切な方法が他の場所に存在する場合は、String.Format を使用できます。

例えば:

基本文: 「あなたは{0}を見ています」

これは、「ニンジンを見ている」または「卵を見ている」のようにフォーマットする必要があります。

現在、挿入する単語の最初の文字を手動で確認してから、「a」または「an」を手動で挿入することでこれを行っています。しかし、アプリケーションが他の言語にローカライズされている場合、これが私を制限するのではないかと心配しています。

この問題に取り組むためのベストプラクティスはありますか?

解決策: この問題は、私が最初に述べた方法でこの問題を解決するためのユーティリティまたはフレームワークが存在しないという点で複雑なようです。(私の状況では) 最良の解決策は、記事を名詞と共にデータベースに保存して、翻訳者が必要なレベルの制御を行えるようにすることです。すべての提案をありがとう!

4

6 に答える 6

9

問題は英語でも、a-vs-an は先頭の文字ではなく、先頭ので決まります。開始文字に基づいて英語でかなり適切な推測を行うことができますが、いくつかの例外があります (例: "hour"、"user")。

最善の方法は、単語の発音を選択できるようにすることです。

それを除けば、次善の策は一般的な例外のリストを作成し、残りを推測することです。


ウィキペディアから:

「a」または「an」の選択は、スペル規則ではなく音声規則によって決定されます。"an" は、"a" と次の単語 ("an X-ray" など) の間に必要となるぎこちない声門停止 (瞬間的な沈黙) を取り除くためにスピーチで使用されます。次の段落は、"an" の綴り規則です。これは、音声規則が理解されていない場合に使用できます。

于 2009-05-05T16:48:55.643 に答える
4

lc (an hour, a hat) によって指摘された問題に加えて、異なる言語の文法規則は大きく異なります。たとえば、多くのラテン語ベースの言語では、名詞の「性別」と「数」に基づいて名詞の冠詞を切り替えます。これは、単語の最後の数文字から推測できる場合がありますが、英語と同じ問題があります。多くの例外。

インターフェイスのローカライズについて話している場合は、各言語のインターフェイス要素の名詞を含む記事を保存します。ユーザー入力を処理している場合、これを行う簡単な方法はわかりません。

于 2009-05-05T16:56:53.677 に答える
3

古いテキスト アドベンチャー コンピューター ゲームの時代には、これを解決する 1 つの方法は、"a"、"an"、"the" などを実際の名前の一部にすることでした。これらのゲームで「メールボックス」が表示される場合、「a」を決定するスマート AI はありません。オブジェクトの名前は「メールボックス」です。一部のゲームでは、「you open a mailbox」と言うことができますが、これはばかげているように聞こえます。他のゲームでは、「you open the mailbox」と言うことができます。これは、入力されたオブジェクトの別の名前があり、異なる文法コンテキストで使用されることを意味します。今いるルートではなく、このルートを進むことをお勧めします。

于 2009-05-05T17:10:50.350 に答える
2

他の言語にも同様の問題がありますが、たとえば、オブジェクトの性別やオブジェクトの実際の数に応じて、コンテキストが異なります (また、一部の言語では、1 つと 2 つのオブジェクトを区別するだけでなく、1 つ、2 つ、またはそれ以上のオブジェクトでも文法が異なります。ロシア語で 2 つのオブジェクト)。

ドイツ語の例を使用するには:

「あなたはa(n) Xを見ている」と同等です:

「Du siehst ein X」
または「Du siehst eine X」
または「Du siehst einen X」

オブジェクト X の性別によって異なります。また、オブジェクトの性別は推測できないものであり、歴史的な伝統に基づいてオブジェクトの名前に関連付けられています。

そのため、ほとんどの言語でこのような区別を実装する簡単な方法はありません。私のアドバイスは、すべての場合に機能する処方を常に使用することです。

「タイプ X のオブジェクトを見ています」
または「a(n) X
を見ています」または「1 つの X を見ています」

于 2009-05-05T16:59:35.730 に答える
1

これはどのように文化的に敏感ですか?あなたがやろうとしていることは、英語でしか意味がありません。他の言語では、文にまったく異なる変更が必要になる場合があります。名詞を変更したり、文の構造を変更したり、単語を並べ替えたりする人もいます。

あなたがやろうとしていることは、他の言語にローカライズする壊れます。これを自動的に解決する方法はありません。

簡単な例として、「the {something}」と書こうとするとどうなるかを考えてみましょう。英語では、単語の前に「the」を付けるだけで問題ありません。フランス語では、性別と複数形かどうかに応じて、前に le、la、または les を付けます。デンマーク語では、代わりに「en」または「et」接尾辞を追加します。したがって、テーブルという言葉が「bord」に翻訳される場合、「テーブル」は「bordet」になります。そして「椅子」(stol)は「盗まれる」になります。

これを回避する唯一の有意義な方法は、翻訳者が文全体を制御できるようにすることです。文化に依存するいくつかの単語をあちこちに差し込むだけでよいと思い込まないでください。

したがって、実際には、アプリケーションを簡単にローカライズできないことを受け入れるのが最善の解決策かもしれません。おそらく、いくつかの主要な言語で可能であることを確認し、それ以外は問題を無視することができます. 次に、将来のある時点でアプリケーションを言語 X に翻訳する必要がある場合は、翻訳者と協力して、アプリケーション コードに必要な変更を加えます。

または、自分で文章を作成することを完全にあきらめる必要があります。文が正しいことを確認する唯一の方法は、翻訳者に文全体を書いてもらうことです。そしてもちろん、個々の単語を交換できるようにしたい場合、これは問題を引き起こします。

于 2009-05-05T17:09:30.837 に答える
0

.NET inflectorと呼ばれるライブラリがあり、複数化/単数化に使用されます。これは、同じ方法で再利用または拡張できる可能性があります。ここで探しているのは、例外を加えて微調整できる一般的な規則です。たとえば、一般的に母音として発音される文字の組み合わせで始まる単語などです。これは[厳密に言えば]文化的に敏感ではありませんが、少なくとも英語で始めることができるはずです.

于 2009-05-05T16:57:35.640 に答える