none
暗黙的なローカリゼーションの警告 RRS feed

  • 質問

  • 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 が警告を

    出してくるのですが…何故、こういった警告がでるのでしょうか?

    また、対処方法は、どうすればいいのでしょうか?

     

    わかりにくい説明かもしれませんが、是非、お助けください。よろしくお願いします。

     

    2010年9月10日 11:03

回答

  • SurferOnWww さん、コメントありがとうございます。

    「暗黙的なローカリゼーション」ではなく、どちらかというと、「明示的なローカリゼーション」について

    コメントいただいているように感じましたので、コメントを控えさせていただいていました。

    結論から書きますと、再度、aspx と リソースファイルを作り直すことで、解決いたしました。

     

    VS2010 では、aspx を作成した後、デザインビューを表示し、[ツール] - [ローカルリソースの生成]

    の順に選択すると、リソースファイルを自動生成し、暗黙的なローカリゼーションが可能となります。

    このとき、リソースファイルのビルドアクションは「コンテンツ」となるようです。

     

    2010年9月11日 16:58

すべての返信

  • > わかりにくい説明かもしれませんが

    失礼な言い方かもしれませんが、実際何をしたいのかが分からな
    いです。

    分かりにくいとご自分で認識されているのでしたら、分かりやす
    くする努力をしてみませんか?

    少なくとも、何をしたいのかは具体的に書いておいていただけれ
    ばと思います。

    2010年9月10日 13:41
  • 依然としてよく分かっていませんが・・・

    > 「リソース名 'labelLogin.Text'は有効な識別子ではありません。」と Visual
    > Studio が警告を出してくるのですが…何故、こういった警告がでるのでしょうか?

    エラーメッセージでググって見たら原因らしいものが見つかりました。これではな
    いですか?

    リソース名 '<ファイル>' が有効な識別子ではない
    http://msdn.microsoft.com/ja-jp/library/ms228672(VS.80).aspx

    xxxxx.resx の下の xxxxx.Designer.cs というファイルが自動生成されていて、その
    中に「厳密に型指定されたリソース クラス」が定義されていませんか?

    > また、対処方法は、どうすればいいのでしょうか?

    上のページに書いてあるので試してみてください。


    でも、何か変ですね。

    Web アプリケーションプロジェクトで作っていると思いますが、App_LocalResources
    の中に直接リソースファイルを追加していったのなら「厳密に型指定されたリソース
    クラス」はできないはずですが。

    最初にルート直下に作って、それを App_LocalResources に移動したりしませんでし
    たか?


    ちなみに、Web サイトプロジェクトならそういった面倒な問題は一切出ないはずで
    す。個人的にはこちらがお勧めです。

    追伸

    Login コントロールに表示される、「ユーザー名」などの文字は、国際化
    対応がされていますので、リソースファイルを定義するようなことは不要
    ですよ。

    2010年9月11日 7:58
  • SurferOnWww さん、コメントありがとうございます。

    「暗黙的なローカリゼーション」ではなく、どちらかというと、「明示的なローカリゼーション」について

    コメントいただいているように感じましたので、コメントを控えさせていただいていました。

    結論から書きますと、再度、aspx と リソースファイルを作り直すことで、解決いたしました。

     

    VS2010 では、aspx を作成した後、デザインビューを表示し、[ツール] - [ローカルリソースの生成]

    の順に選択すると、リソースファイルを自動生成し、暗黙的なローカリゼーションが可能となります。

    このとき、リソースファイルのビルドアクションは「コンテンツ」となるようです。

     

    2010年9月11日 16:58
  • > 「暗黙的なローカリゼーション」ではなく、どちらかというと、「明示的
    > なローカリゼーション」についてコメントいただいている

    暗黙的だからとか、明示的だからどうのこうのと言っているのではなく、エ
    ラーの原因は「厳密に型指定されたリソース クラス」が定義されていること
    であろうと言っています。

    先のレスで「xxxxx.resx の下の xxxxx.Designer.cs というファイルが自動
    生成されていて」と書きましたが、そこがポイントです。チェックしてもら
    えましたか?

    最初にルート直下にリソースファイルを作って、それを App_LocalResources
    に移動したのではないかと想像しています。自分が試した限りでは、それ以外
    に問題を再現できる方法はなかったので。


    > 再度、aspx と リソースファイルを作り直すことで、解決いたしました。

    ご自分はそれでよかったのでしょうが、ここはフォーラムですので、私を含め
    た他の方の参考になるような情報(例えば何が原因だったのかなど)を提供で
    きませんか?

    2010年9月12日 6:53