Nuget の AttributeRouting パッケージの最新バージョンを使用して、ASP.Net MVC プロジェクトのルーティングをセットアップしています。英語 (プライマリ) とスペイン語 (セカンダリ) の 2 つの言語を使用する Web サイトを作成しています。2 つの言語の URL は異なります。たとえば、英語版の about us は www.root.com/en/about-us のようになりますが、スペイン語版は www.root.com/es/sobre-nosotros のようになります。
以下のようにルート プレフィックスを設定しています: [RoutePrefix("en", TranslationKey = "Home")]
次に、XML ファイルから値を FluentTranslationProvider に読み込むプログラムを作成しました。ルートを登録するためのコードは次のようになります。
var translations = new FluentTranslationProvider();
translations
.AddTranslations()
.FromFile();
routes.MapAttributeRoutes(
config =>
{
config.AddRoutesFromControllersOfType<BaseController>();
config.AddTranslationProvider(translations);
config.CurrentUICultureResolver =
(httpContext, routeData) =>
(string) routeData.DataTokens["cultureName"] ??
Thread.CurrentThread.CurrentUICulture.Name;
});
そして、Routes.axd ページにアクセスして以下を確認できるため、機能しているようです: http://imm.io/nm7Z
ページの後半で、私のコードは CurrentCulture が es-AR に設定されていることを示していますが、URLHelper クラスを呼び出して URL を構築すると、デフォルトの英語版のみが構築され、スペイン語版は提供されません。なぜこれが当てはまるのか、誰かが私に洞察を与えることができますか? 私は一生これを理解することはできません。