ASP.NET 多言語対応

ASP.NET 多言語対応

概要

各言語に応じたテキストをそれぞれ用意しておいた上で、
レスポンスの状況に応じて表示するテキストを切り替える技術

リソースファイル

言語毎に別々のリソースファイルを用意する。
ファイル名は自由。
格納場所:App_GlovalResourcesフォルダ
※フォルダの追加方法(VisualStudio2013forWeb)
サイト > 右クリックメニュー:「追加」> 「ASP.NETフォルダーの追加」> 「App_GlovalResources」
リソースファイル
※ファイルの追加方法(VisualStudio2013forWeb)
「App_GlovalResources」フォルダ > 右クリックメニュー:「追加」> 「新しい項目」> アセンブリリソースファイル
ファイル名(デフォルト):ファイル名.resx
ファイル名(別言語):ファイル名.ja.resx、ファイル名.en-US.resx、ファイル名.de-DE.resx等
asp_net_language_resource
作成したリソースファイルに名前(キー)、値をそれぞれ設定する。

リソースファイルの割り当て

※~.aspxファイル
<%@ Page
  Title="Home Page"
  Language="C#"
  AutoEventWireup="true"
  CodeBehind="Default.aspx.cs"
  Inherits="WebFormTest._Default"
  Culture="auto"
  UICulture="auto" %>
<%@ OutputCache
  VaryByParam="none"
  VaryByHeader="Accept-language"
  Duration="120" %>
<asp:label
  runat="server"
  text="<%$ Resources:MyResource, Greeting %>"
  ID="lblCurrent">
</asp:label>
※リソースファイル:MyResourceにおけるキー(名前):Greeting を表示する様に設定

テスト方法

※Chromeの場合
設定 > 詳細設定を表示する > 言語 > 言語と入力の設定
asp_net_language_browser
言語の優先順位をドラッグして入れ替える。
↑ では英語を優先している。

結果

ブラウザの言語が英語の時

リソースファイル名.resxのリソースファイルのテキストが表示される。
※本サイトの例では「Hello」
ブラウザの言語が日本語の時

リソースファイル名.jp.resxのリソースファイルのテキストが表示される。