none
WEBサイトの多言語化について RRS feed

  • 質問

  • 今開発しているASP.NETをベースとしたWEBサイトを多言語化しようと考えています。現在は日本語サイトなのですが、英語版を作成しようと思ってます。ページをそのままコピーして英語版に書き換えようと思いましたが、ASP.NETの提供する機能の中に多言語化するための何か機能があるのかと思い質問させていただきました。

    Windowsソフトウェアの多言語化のように何かいい方法はありますでしょうか?

    2007年3月27日 7:13

すべての返信

  • ASP.NET では、App_GlobalResource フォルダと App_LocalResource フォルダを利用することで、WinForms と同程度のリソース管理機能が提供されます。
    ヘルプで「ASP.NET Web ページのリソースの概要」あたりを引いてみるとよいでしょう。
     
    その他にも、「ASP.NET のグローバリゼーションおよびローカリゼーション」の項目に色々書いてあります。
    2007年3月27日 7:47
  • ありがとうございます。一通り教えていただいたキーワードを参考にドキュメントを読んでみました。

    実際にテストを行ってみたところルートディレクトリにあるDefault.aspxに対してローカルリソースの適用ができました。

     

    しかし、サブフォルダに配置したDefault2.aspxに対してはなかなかうまくできません。

     

    まずルートディレクトリのDefault.aspxに対しては次のようにしました。

    1-1.ルートディレクトリに「App_LocalResources」というフォルダを配置し、その中に「Default.aspx.en.resx」や「Default.aspx.ja.resx」を作成し、中に「String1」というキーに対して値をそれぞれ「TEST」、「テスト」と入力しました。

    1-2.Default.aspxにButtonコントロールを配置し、Text属性を「Text="<%$ Resources: String1 %>"」のようにしました。

    1-3.次に「Web.config」をルートディレクトリに配置し、「<globalization uiCulture="ja" culture="ja-JP"/>」を追加しました。

    以上のようにすることで、実際にButtonコントロールのTextプロパティを表示させることに成功しました。

    項目1-3を「<globalization uiCulture="en" culture="en-US"/>」とすることで参照するリソースを変更できました。

     

    さて、問題はサブディレクトリ以下の場合ですが、

    2-1.サブディレクトリとして「a」というフォルダを配置。

    2-2.サブディレクトリ「a」以下に「Default2.aspx」ページを配置。

    2-3.次に上記の項目1-1と同様にして、サブディレクトリ「a」以下に「App_LocalResources」というフォルダを配置し、その中に「Default2.aspx.en.resx」や「Default2.aspx.ja.resx」を作成し、中に「String1」というキーに対して値をそれぞれ「TEST」、「テスト」と入力しました。

    2-4.「Default2.aspx」にButtonコントロールを配置し、Text属性を「Text="<%$ Resources: String1 %>"」のようにしました。

    以上のようにしてビルドするとエラーが表示され、「 キー 'String1' が指定されたリソース オブジェクトは見つかりませんでした。 (プロジェクトの場所は省略してあります。)\a\Default2.aspx 12 」と表示されます。

     

    サブディレクトリ以下のページに対してリソースを適用するにはどうしたらいいでしょうか?

    2007年3月27日 22:21
  • > 1-3.次に「Web.config」をルートディレクトリに配置し、「<globalization uiCulture="ja" culture="ja-JP"/>」を追加しました。

     

    この部分はオプショナルなところなので、特に指定しなくても問題ありません。

    逆に、

     

    > 項目1-3を「<globalization uiCulture="en" culture="en-US"/>」とすることで参照するリソースを変更できました

     

    というような使い方は、おそらく間違っています。<globalization> タグで指定するのは、ブラウザから言語設定が指定されなかったり、指定された言語リソースがない場合に、デフォルトリソースの代替として参照するカルチャです。web.config には Web アプリケーションとしての規定値を記載し、参照するリソースの変更は、Web ブラウザ側のオプションで言語を変更してください。

     

     

    > サブディレクトリ以下のページに対してリソースを適用するにはどうしたらいいでしょうか?

     

    記載されている方法で、特に問題はないと思います。おそらく掲示板に記載する際のタイプミスだとおもうのですが、作成するフォルダは App_LocalResouce です。手動で作成されているようでしたら、スペルを確認してみてください。

     

    VisualStudio を利用している場合は、サブフォルダ a を右クリックして「ASP.NET フォルダの追加」を選択すると、スペルミスを防げます。

    2007年3月28日 12:39
  • >というような使い方は、おそらく間違っています。<globalization> タグで指定するのは、

    >ブラウザから言語設定が指定されなかったり、指定された言語リソースがない場合に、

    >デフォルトリソースの代替として参照するカルチャです。web.config には Web アプリケーションとしての規定値を記載し、

    >参照するリソースの変更は、Web ブラウザ側のオプションで言語を変更してください。

     

    そうですよね。言語の切り替えの方法が思いつかず、テストなので「ま、いいか」とWeb.configでの変更をしておりました。以後はその通りにしたいと思います。

     

    >記載されている方法で、特に問題はないと思います。

    >おそらく掲示板に記載する際のタイプミスだとおもうのですが、

    >作成するフォルダは App_LocalResouce です。

    >手動で作成されているようでしたら、スペルを確認してみてください。

    >VisualStudio を利用している場合は、サブフォルダ a を右クリックして「ASP.NET フォルダの追加」を選択すると、

    >スペルミスを防げます。

     

    Visual Studioを使っており、ご指摘いただいたように「ASP.NET フォルダの追加」で追加したのですが、

    「App_LocalResources」となっております。sはついています。

    ちなみに以下のサイトを参考にしておりますが、そこにもsがついているようです。

     

    ASP.NET Web ページのリソースの概要
    http://msdn2.microsoft.com/ja-jp/library/ms227427(VS.80).aspx

     

    あれから何度か試みてますが、やはり同じエラーが表示されてサブディレクトリにあるページに適用することができません。ビルドが途中で停止します。

    2007年3月29日 13:42
  •  coro さんからの引用

    Visual Studioを使っており、ご指摘いただいたように「ASP.NET フォルダの追加」で追加したのですが、

    「App_LocalResources」となっております。sはついています。

    あれから何度か試みてますが、やはり同じエラーが表示されてサブディレクトリにあるページに適用することができません。ビルドが途中で停止します。

    おお? 私のほうが覚え間違えていたようで、s があるのが正しかったです、すいません。
     
    1つ前の投稿をするときに確認用につくったプロジェクトでは、
    <root>
    ├App_LocalResources
    │├LocalizeTest1.aspx.resx
    │└LocalizeTest2.aspx.resx
    ├sub
    │├App_LocalResources
    ││├LocalizeTest3.aspx.resx
    ││└LocalizeTest4.aspx.resx
    │├LocalizeTest3.aspx
    │└LocalizeTest4.aspx
    ├LocalizeTest1.aspx
    └LocalizeTest2.aspx
    
    としていて、1, 3 は meta:resourcekey を使用したローカライズ。2, 4 は <%$Resource: KEY %> を使用したローカライズを実施していて、正常に動作しています。
     
    2007年3月29日 18:34