ASP.NETMVCアプリケーションに実装Globalization
したいと思います。Localization
私はこのようないくつかのチュートリアルを経験しました。
しかし問題は、彼が言語ごとに複数のビューを作成していることです。
したがって、ビューが10個ある場合は、言語ごとに10個のビューを作成する必要があります。合計で100個になります。単一のビューと可能であればPOファイルを使用して多言語(つまり8言語)アプリケーションを作成する最良の方法を教えてください。
ASP.NETMVCアプリケーションに実装Globalization
したいと思います。Localization
私はこのようないくつかのチュートリアルを経験しました。
しかし問題は、彼が言語ごとに複数のビューを作成していることです。
したがって、ビューが10個ある場合は、言語ごとに10個のビューを作成する必要があります。合計で100個になります。単一のビューと可能であればPOファイルを使用して多言語(つまり8言語)アプリケーションを作成する最良の方法を教えてください。
私の意見では、複数のビューを実行するのが最善の方法です。苦労が多すぎると感じた場合、それはおそらく、MVC アプリケーションが適切な MVC パターンに従っていないことが原因です。ビューは常にダムであるべきです。また、ビューが馬鹿げている場合、そこにあるのは書き込みとレイアウトだけです。
とはいえ、もちろん何らかの文化サービスを行うこともできます。あなたに必要なのは:
パターン
@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)