3

ASP.NETMVCアプリケーションに実装Globalizationしたいと思います。Localization

私はこのようないくつかのチュートリアルを経験しました。

しかし問題は、彼が言語ごとに複数のビューを作成していることです。

したがって、ビューが10個ある場合は、言語ごとに10個のビューを作成する必要があります。合計で100個になります。単一のビューと可能であればPOファイルを使用して多言語(つまり8言語)アプリケーションを作成する最良の方法を教えてください。

4

1 に答える 1

1

私の意見では、複数のビューを実行するのが最善の方法です。苦労が多すぎると感じた場合、それはおそらく、MVC アプリケーションが適切な MVC パターンに従っていないことが原因です。ビューは常にダムであるべきです。また、ビューが馬鹿げている場合、そこにあるのは書き込みとレイアウトだけです。

とはいえ、もちろん何らかの文化サービスを行うこともできます。あなたに必要なのは:

  • カルチャ サービス (インスタンス、シングルトン、または静的。必要に応じて異なります)
  • 各言語の各文字列のキーと値のペアを保持する XML ファイル

パターン

  • アプリケーションの負荷
  • サービスのインスタンスまたは静的構成
  • サービスは、必要に応じて適切な XML をロードします。
  • View は Context または Static メソッドからサービスを呼び出します@String.Format(Context.CultureService.GetFormat("HELLOWORLD"), "World")
  • サービス"Hello %s!"は、ロードされた XML からフェッチされたようなフォーマット文字列を返します

編集

ああ、小数/通貨/日付のデフォルトのグローバル化を許可するCurrentには、現在のカルチャのインスタンスを返すプロパティも検討する必要があります。そうすれば、次のように使用できます。@ViewModel.SomeDate.ToString(Context.CultureService.Current.DateTimeFormat)

編集2

あと2つ。

この全体@String.Format(Context.CultureService.GetFormat(), "")が非常に長いため、次のようなものを記述できるようにヘルパーを作成することを検討してください。@Globalize("HELLOWORLD", "World")

列挙型を使用して文字列データを一般化することを検討してください。魔法の文字列を取り除くことでビューがよりきれいになり、リファクタリングが容易になります。結果は次のようになります@Globalize(HOME.Hello, User.Name)

于 2012-10-24T13:40:06.450 に答える