トップ回答者
暗黙的なローカリゼーションの警告

質問
-
Windows7 (x64) + Visual Studio 2010 Pro を使っています。
Login.aspx に、labelLogin (Label コントロール) を配置し、
App_LocalResources に、Login.aspx.resx, Login.aspx.ja.resx, Login.aspx.en.resx を
作成しました。
それぞれの resx のプロパティには、
カスタムツール: ResXFileCodeGenerator
ビルドアクション: 埋め込まれたリソース
を設定しています。
また、Login.aspx の labelLogin コントロールには、meta:resourcekey="labelLogin" を
書き、あとは resx に名前を設定したいのですが…ここで警告がでてしまいます。
Login.aspx.ja.resx と Login.aspx.en.resx の名前には、labelLogin.Text が設定できるの
ですが、既定のリソース Login.aspx.resx の名前には、labelLogin.Text が設定できません。
「リソース名 'labelLogin.Text'は有効な識別子ではありません。」と Visual Studio が警告を
出してくるのですが…何故、こういった警告がでるのでしょうか?
また、対処方法は、どうすればいいのでしょうか?
わかりにくい説明かもしれませんが、是非、お助けください。よろしくお願いします。
回答
-
SurferOnWww さん、コメントありがとうございます。
「暗黙的なローカリゼーション」ではなく、どちらかというと、「明示的なローカリゼーション」について
コメントいただいているように感じましたので、コメントを控えさせていただいていました。
結論から書きますと、再度、aspx と リソースファイルを作り直すことで、解決いたしました。
VS2010 では、aspx を作成した後、デザインビューを表示し、[ツール] - [ローカルリソースの生成]
の順に選択すると、リソースファイルを自動生成し、暗黙的なローカリゼーションが可能となります。
このとき、リソースファイルのビルドアクションは「コンテンツ」となるようです。
- 回答としてマーク ぱろむぽろむ 2010年9月11日 16:58
すべての返信
-
依然としてよく分かっていませんが・・・
> 「リソース名 'labelLogin.Text'は有効な識別子ではありません。」と Visual
> Studio が警告を出してくるのですが…何故、こういった警告がでるのでしょうか?エラーメッセージでググって見たら原因らしいものが見つかりました。これではな
いですか?リソース名 '<ファイル>' が有効な識別子ではない
http://msdn.microsoft.com/ja-jp/library/ms228672(VS.80).aspxxxxxx.resx の下の xxxxx.Designer.cs というファイルが自動生成されていて、その
中に「厳密に型指定されたリソース クラス」が定義されていませんか?> また、対処方法は、どうすればいいのでしょうか?
上のページに書いてあるので試してみてください。
でも、何か変ですね。Web アプリケーションプロジェクトで作っていると思いますが、App_LocalResources
の中に直接リソースファイルを追加していったのなら「厳密に型指定されたリソース
クラス」はできないはずですが。最初にルート直下に作って、それを App_LocalResources に移動したりしませんでし
たか?
ちなみに、Web サイトプロジェクトならそういった面倒な問題は一切出ないはずで
す。個人的にはこちらがお勧めです。追伸
Login コントロールに表示される、「ユーザー名」などの文字は、国際化
対応がされていますので、リソースファイルを定義するようなことは不要
ですよ。 -
SurferOnWww さん、コメントありがとうございます。
「暗黙的なローカリゼーション」ではなく、どちらかというと、「明示的なローカリゼーション」について
コメントいただいているように感じましたので、コメントを控えさせていただいていました。
結論から書きますと、再度、aspx と リソースファイルを作り直すことで、解決いたしました。
VS2010 では、aspx を作成した後、デザインビューを表示し、[ツール] - [ローカルリソースの生成]
の順に選択すると、リソースファイルを自動生成し、暗黙的なローカリゼーションが可能となります。
このとき、リソースファイルのビルドアクションは「コンテンツ」となるようです。
- 回答としてマーク ぱろむぽろむ 2010年9月11日 16:58
-
> 「暗黙的なローカリゼーション」ではなく、どちらかというと、「明示的
> なローカリゼーション」についてコメントいただいている暗黙的だからとか、明示的だからどうのこうのと言っているのではなく、エ
ラーの原因は「厳密に型指定されたリソース クラス」が定義されていること
であろうと言っています。先のレスで「xxxxx.resx の下の xxxxx.Designer.cs というファイルが自動
生成されていて」と書きましたが、そこがポイントです。チェックしてもら
えましたか?最初にルート直下にリソースファイルを作って、それを App_LocalResources
に移動したのではないかと想像しています。自分が試した限りでは、それ以外
に問題を再現できる方法はなかったので。
> 再度、aspx と リソースファイルを作り直すことで、解決いたしました。ご自分はそれでよかったのでしょうが、ここはフォーラムですので、私を含め
た他の方の参考になるような情報(例えば何が原因だったのかなど)を提供で
きませんか?