解決策 1: ロケールのフォルダー構造
最良の (そして最も簡単な) 方法は、ロケール名 (または LCID) を返す新しいHtmlHelper
拡張メソッドを追加することであり、後でそれを使用できます (画像、スクリプトなど)。もちろん、最良の方法は、そのようなフォルダー構造にローカライズされたファイルを配置することです。
/images
/en-US
image1.png
/en-GB
image1.png
/es-ES
image1.png
そして、これはあなたがそれを使用する方法です:
<img src="/images/@Html.Locale/backgrounds/back.png" />
これは、そのような拡張メソッドの例です。
public MvcHtmlString Locale(this HtmlHelper helper)
{
// in case you're setting UI culture
return MvcHtmlString.Create(System.Threading.Thread.CurrentThread.CurrentUICulture.Name);
}
この単純化がうまくいかず、画像の特定の呼び出しが必要な場合は、UrlHelper
呼び出されるメソッドを作成するImage
かFile
、ロケール名または LCID に置き換えられるいくつかのトークンを使用してサーバー アプリの相対パスを指定します。
解決策 2: リソース ファイルのリンク
また、リソース ファイル内に画像パスを配置し、それらの値をビューで使用して、画像 (またはその他のファイル) の正しいパスを提供することもできます。
public MvcHtmlString Resource(this UrlHelper helper, string classKey string resourceKey)
{
return MvcHtmlString.Create(helper.ViewContext.HttpContext.GetGlobalResourceObject(classKey, resourceKey));
}
そして、あなたの見解ではそれを次のように使用します:
<img src="@Url.Resource("images", "header")" />