- PR -

ASP.NETでの国際化対応(デザイン、コードの分離)について

1
投稿者投稿内容
kenji225
会議室デビュー日: 2006/02/08
投稿数: 2
投稿日時: 2006-02-08 15:34
VisualStudio2003で、Webアプリケーションを作っております。
日英など複数の言語に対応する必要があるため、画面などのリソースとコードを分けて、画面は各国語で作成し、コードは全言語で共用化したいと考えています。

そのため、プロジェクトフォルダ以下に各言語のフォルダを作成して、おのおのの言語用にWebForm1.aspxを作成し@PageディレクティブのCodebehindで、共通のコード(WebForm1.aspx.cs)を参照して利用しようと考えました。

-[enフォルダ(英語)]
+-WebForm1.aspx
-[jpフォルダ(日本語)]
+-WebForm1.aspx

-[srcフォルダ(共用コード)]
+-WebForm1.aspx.cs
+-WebForm1.aspx.resx

[@Pagディレクティブ]
<%@ Page language="c#" Codebehind="../src/WebForm1.aspx.cs" Inherits="Project.WebForm1" %>

しかし、作成したWebForm1のコントロールなどをダブルクリックして、コードを表示しようとすると、下記のようなエラーが出てWebForm1.aspx.csを開くことが出来ません。

------------
「WebForm1.aspxの分離コードとして指定されたクラスファイル、'../src/WebForm1.aspx.csを読み込めませんでした。ページまたはコントロールディレクティブの分離コード属性が、既存の分離コードファイルを正しく参照していることを確認してください。'」
------------

こういった国際化対応の方法は、VS2003ではサポートされていないのでしょうか?
それとも何か根本的な間違いをしているのでしょうか?

何かご存知の方がおられましたら、ぜひご指導のほどよろしくお願いいたします。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2006-02-08 19:29
kenji225さん、こんばんは。

いわゆる「共通の処理」は、別クラスを用意して、そちらに記述すればよいと思います。

あと、画面系をどうにかしたいなら、System.Web.UI.Page を継承するクラスを作って、それぞれのページのコードビハインドクラスは、そのクラスを継承するという手もあります(抽象クラスは使えませんけどね)。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-02-08 19:35
検索→by Google
[ASP.NET]リソース・ファイル活用で国際化対応サイトを構築するには?
国際化の概要
kenji225
会議室デビュー日: 2006/02/08
投稿数: 2
投稿日時: 2006-02-08 20:33
>きくちゃん
ご返答どうもありがとうございます。
ご記載いただいた内容は試してみたのですが(VSでフォームを作った際にデフォルトで作成されるクラスを双方のCodebehindに記載した。)動作自体は期待したとおりに動くようですが、Codebehindの指定の仕方が悪いのか、VisualStudioのフォームエディタとの連動が出来ずに、「WebForm1.aspxの分離コードとして指定されたクラスファイル、'../src/WebForm1.aspx.csを読み込めませんでした....」エラーになってしまうのです。
この状態だと、バージョンアップなどの際にフォームの修正が手動でしか行えずに、非常に不便だと思ったのです。
VisualStudioの問題のような気がしなくもありませんが、もう少し色々試して見ます。
いずれにしても、方向性に関してコメントをいただけて非常に安心しました。
どうもありがとうございました。

>Jittaさん
ご返答どうもありがとうございました。
ご記載いただいた内容は試したのですが、文字列だけの入れ替えではやはりデザイン的に自由度が低いので、フォームを分けたいと思ったのです。
Windowsアプリケーションでは、フォームを言語ごとに分けるのが簡単に出来るのですが(VSが勝手に分けてくれる)、Webではこのような機能がサポートされていないが、少し残念に思います。
いずれにしても、世の中の国際化Webアプリ開発に携わっている方の意見が聞けて大変心強く思いました。
ご返答、本当にありがとうございました。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-02-08 21:06
引用:

kenji225さんの書き込み (2006-02-08 20:33) より:

ご記載いただいた内容は試したのですが、文字列だけの入れ替えではやはりデザイン的に自由度が低いので、フォームを分けたいと思ったのです。


すみません、よく意味がわかりませんでした。

 言語によって“デザインも”変えたい、ということですか?


引用:

Windowsアプリケーションでは、フォームを言語ごとに分けるのが簡単に出来るのですが(VSが勝手に分けてくれる)、Webではこのような機能がサポートされていないが、少し残念に思います。


あれれ?そうでしたか?リソースを分けるだけで、フォームは同じだと思いましたけど???


 データバインド機能を最大限に利用して、.aspx.cs では全く処理をせず、すべてコントロール クラスに処理させる、という方法もあると思います。(わかりにくい書き方ですが、きくちゃんさんと同じことです。)

〆 posted by Jitta on 2006/02/08

[ メッセージ編集済み 編集者: Jitta 編集日時 2006-02-08 21:19 ]
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2006-02-08 21:06
kenji225さん、こんばんは。

引用:

'../src/WebForm1.aspx.csを読み込めませんでした....」エラーになってしまうのです。


いや、ややこしいのでビハインドコードファイルは共有せず、その辺りはデフォルトで作成されるものを使用して、それとは別にビジネスロジック用のクラスを用意しましょう、という極々基本的なお話です。国際化だけでなく、モバイルなんかに対応する際も、使えますしね。

で、画面系の処理もなるべく 1 つに、ということであれば、また別に(Page を継承する)クラスを用意して、それぞれのビハインドのクラスがそれを継承すれば良いのではないか、と思ったわけです。

引用:

ご記載いただいた内容は試したのですが、文字列だけの入れ替えではやはりデザイン的に自由度が低いので、フォームを分けたいと思ったのです。


デザインは外部 CSS ファイルに任せる、という手もありますけどね。
#このサイトがちょっと凄い…。
1

スキルアップ/キャリアアップ(JOB@IT)