0

私はウェブサイト プロジェクトに取り組んでおり、プロジェクトを国際化する必要があります。今、私はリソースファイルを使用しています。

私はすでにすべてを国際化していますが、私が思いついたことの1つは、その方法を知りたいということです:

データベースに既にある一連のクラスがあるとします。各クラスには、Description という名前の文字列プロパティがあります。ロケール ブラウザに基づいて説明を表示する方法はありますか? つまり、ブラウザを英語で使用し、説明を英語で表示しますが、フランス語に変更してそれらの説明をフランス語で表示しますか? (各説明に「数値」値を割り当て、リソースファイルに1:人事、2:IT、3:ヘルスケアなどを割り当てることを考えました。そして、それぞれの値を持つフランス語用の別のファイルですが、私は思うそれは一種の混乱です)

どうもありがとうございました

4

1 に答える 1

1

説明テキストが定数であることを考えると、それぞれのテキストの翻訳キーを DB に書き込んで、翻訳ファイルから一致する (ローカライズされた) 値を取得することはできませんか? DB を変更できない場合は、DB の既存の値を翻訳ファイルのキーとして使用し、それぞれの翻訳にマップするだけです。スペースなどを取り除く必要があるかもしれませんが、それは大したことではありません。

あなたのDBで:

Human Resources
Health Care
...

翻訳ファイルの例:

英語:

Human_Resources | Human Resources
Health_Care     | Health Care
...

フランス語:

Human_Resources | Service du personnel
...

変換された値の取得 (疑似):

var translationKey = descriptionValueFromDB.Replace(' ', '_');
var translatedDescription = ResourceManager.GetString(translationKey);

どう思いますか?

乾杯、アレックス

更新: ビュー内に翻訳された文字列を表示することは、標準的な手法を使用して簡単です。ビューにデータを提供するためにモデル オブジェクトを使用していると仮定しています。次に、たとえば、既製の翻訳をモデルに書き込んで、ビュー内で使用できます。

    public class FooModel
    {
      public string Description {get; set;}
      public string TranslatedDescription
      {
        get { return Description.ToTranslationKey().Translate(); }
      }
    }

    public static class TranslationExtensions
    {
      public static string ToTranslationKey(this string term)
      {
        if (string.IsNullOrEmpty(term))
          return term;

        return term.Replace(' ', '_');
      }

      public static string Translate(this string term)
      {
        if (string.IsNullOrEmpty(term))
          return term;

        return ResourceManager.GetString(term);
      }
    }

<div id="fooDescription">@Model.TranslatedDescription</div>

もちろん、翻訳部分をビューに移動することもできます。

<div id="fooDescription">@Model.Description.ToTranslationKey().Translate()</div>

ムケイ?

于 2013-03-16T10:13:09.357 に答える