2009-05-05 13 views
8

適切な記事(a/an)を使用している間、文に正しく名詞を挿入する文化的に敏感な方法を探しています。 String.Formatを使用するか、これを行う適切な方法が他の場所に存在する場合は、何か他のものを使用できます。適切な記事(a/an)in String.Format

ベース文:「あなたが見ている/ {0}」

これはにフォーマットする必要があります。「あなたはニンジンを見ている」または「あなたが見ている例えば

卵。"

私は現在、挿入する単語の最初の文字を手動でチェックし、手動で "a"または "an"を挿入することでこれを行っています。しかし、アプリケーションが他の言語にローカライズされている場合、これにより制限されることが懸念されます。

この問題に対処するためのベストプラクティスはありますか?

解決策:この問題は、当初の表現方法で解決するためのユーティリティやフレームワークが存在しないという点では問題が複雑になっているようです。私の状況では、翻訳者が必要とするレベルのコントロールを持つことができるように、名詞とともにデータベースに記事を格納するのが最善の解決策であるようです。すべての提案をありがとう!

+5

注意すべき点が1つあります。 「最初の手紙」の解決策でさえ完全ではありません。 "an"の使用は、次の単語が母音で始まるときに起こるので、 "herbivore"が "h"で始まるにもかかわらず、適切な用語は(例えば) "herbivore"です。 –

答えて

4

lc(1時間、帽子)で指摘されている問題以外に、さまざまな言語の文法規則が大きく異なります。例えば、多くのラテン語ベースの言語は、名詞の「性別」と「数」に基づいて名詞の記事を切り替えるが、これは時には単語の最後の数文字から推測できるが、英語と同じ問題がある...多くの例外。

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

9

問題は-VS-ANを出発手紙が、開始によって決定されていない、でも英語です。始まりの手紙に基づいて英語でかなり良い仮定をすることができますが、いくつかの例外があります(例:「時間」、「ユーザー」)。

最高のことは、選択できる単語の発音にアクセスできることです。

これを除いて、次に行うべきことは、一般的な例外のリストを作成し、残りの部分を推測することです。 Wikipediaから


"a" または "an" は 発音のルールではなく よりもスペル規則によって決定されるの選択。 「An」は、 であり、別の方法で必要とされる の厄介な声門停止(瞬間的な無音 の休止)を除去するために音声で使用される。 「X線」...次の 段落は、表記規則 が理解されていない場合に使用できる "an" のスペルルールです。

0

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

2

他の言語でも、オブジェクトの性別や実際のオブジェクト数などによって異なるコンテキストで問題が発生します(一部の言語では1つのオブジェクトと2つのオブジェクトが区別されるだけでなく、ロシア語で2つ以上のオブジェクト)。

"あなたは(n)がXを見ている" と同等のは、次のようになります:

"ドゥsiehst EIN X"
または「ドゥsiehstドイツ語から例を使用するには

アイネXオブジェクトX.とオブジェクトの男女の性別に応じて、」
または 『ドゥsiehst einenのX』

は、それが歴史に基づいたばかりのオブジェクトの名前にリンクされている、あなたが推測できないものです伝統。

したがって、ほとんどの言語でこのような区別を実装する簡単な方法はありません。私の助言は、常にすべての場合に有効な製剤を使用することです。

は、「あなたはタイプXのオブジェクトを見ている」
または
または

1

どのようにこれは文化的に敏感である「あなたは1 Xを見ている」「あなたは(n)がXを見ていますか」?あなたは何をしようとしていますは英語で意味があります。他の言語では、文章にまったく異なる変更が必要な場合があります。いくつかは名詞を修正することができ、いくつかは文構造を変更し、いくつかは単語を並べ替えるなどします。

は、他の言語にローカライズされたときには、になります。これを解決する自動方法はありません。

単純な例として、 "the {something}"を書き込もうとするとどうなるか考えてみてください。 英語では、単に "the"と接頭辞を付けるだけです。フランス語では、性別やそれが複数であるかどうかに応じて、le、laまたはlesの接頭辞を付けます。 デンマーク語では、代わりに 'en'または 'et'接尾辞を追加します。単語表が「bord」に変換されるところでは、「the table」は「bordet」になります。そして、 "椅子"(ストール)は "盗まれ"ます。

文全体に対してトランスレータの制御権を与えることだけが、この意味があります。文化的に依存した言葉をちょうどそこに差し込むことはできません。

実際には、アプリケーションを自在にローカライズできないことを受け入れるのが最善の解決策です。たぶん、いくつかの主要な言語が可能であることを保証することができます。それ以外の場合は、問題を無視してください。その後、ある時点でアプリケーションを言語Xに翻訳する必要がある場合は、翻訳者と協力してアプリケーションコードに必要な変更を加えます。

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

+0

スウェーデン語では意味があります。そして、*あらゆる言語で意味があるかどうかを決して知ることはできないので、それは完全にばかげたアプローチではありません。しかし、私は翻訳がフレーズ単位でなければならず、名詞ではないことに同意します。いくつかの言語には名詞がない場合もあります。 – bzlm

+0

私はこのアプローチが英語に限られていることをよく知っています(英語のシナリオをすべて解決することさえできないと指摘している人もいます)。だから私はこの質問を開いたのです – DivisionByZorro

+0

あなたが*働くことを期待すればばかばかしいアプローチです*。彼は文化に敏感なアプローチを求めましたが、その意味ではばかげています。より限定された文脈では、「英語で働き、ドイツ語、スペイン語、ロシア語などに翻訳できればうれしい」ということもできるが、一般的には文化を尊重しない* – jalf

3

old text adventure computer gamesの日に、これを解決する1つの方法は、実際の物の「a」、「an」、「the」などを作ることでした。これらのゲームで「メールボックス」が表示されているときは、「a」を決定するスマートなAIはありません。オブジェクトの名前は「メールボックス」です。いくつかのゲームでは、 "あなたは郵便箱を開く"と言うことができます。それはダムに聞こえることがあります。そして、 "文箱を開く"と言うことができます。つまり、入力されたオブジェクトの別の名前があり、異なる文法的な文脈で使用されます。私はあなたが現在行っているルートの代わりにこのルートに行くことをお勧めします。