質問者
WEBサイトの多言語化について

質問
すべての返信
-
ありがとうございます。一通り教えていただいたキーワードを参考にドキュメントを読んでみました。
実際にテストを行ってみたところルートディレクトリにある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 」と表示されます。
サブディレクトリ以下のページに対してリソースを適用するにはどうしたらいいでしょうか?
-
> 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 フォルダの追加」を選択すると、スペルミスを防げます。
-
>というような使い方は、おそらく間違っています。<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あれから何度か試みてますが、やはり同じエラーが表示されてサブディレクトリにあるページに適用することができません。ビルドが途中で停止します。
-
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 %> を使用したローカライズを実施していて、正常に動作しています。