ただ今回その英語版を作ることになりました。
基本的にhtmlレベルで日本語・英語を切り替えられればよく、切り替えもボタンやリンクなどで手動で切り替えられればいいレベルを考えています。
ただ今後の改修を考えるとプログラムが2本になってしまうのは避けたいです。
スタイルシートなどを使いhtmlレベルで表示項目だけ英語と日本語を切りかえれないものでしょうか?
当然DB内で保持している表示項目の2重化などある程度のアプリの改修はしますし、表示項目が2重管理になってしまうのは覚悟しています。
方法は色々あると思いますがこの場合の一般的な方法を知りたくて質問しました。よろしくお願いします。
JSP であれば Struts の MessageResources 見たいなのが正攻法だと思う。
MessageResources (Apache Struts API Documentation)
使い方。
org.apache.struts.taglib.bean(Apache Struts API Documentation)
先に言っておきますが,私はプログラマーではないのでもっといい方法があると思います。
最近cgiとかいじってないので文法忘れたので考え方だけ参考にしてください。
フラグとなる変数langを定義し,lang=0;日本語 lang=1;英語 とします。
全ての表示項目を2次元配列にし,
str[0][0]="はい" str[0][1]="Yes"
str[1][0]="いいえ" str[1][1]="No"
という風に定義します。
プログラム内に書いてしまうケースと別ファイルに定義して読み込むケースがありますが,これは表示項目の量とメンテナンス制を考えて決めましょう。
後は切替ボタンでlangの値が切り替わるようにし,表示部分で
str[message_number][lang] と言った風に指定すればいいでしょう。
プログラムで記述するのは考えてます。アプリはjspですので可能です。
ただかなりソースが煩雑になるのとhtmlレベルで何とかならないかなと思ったため質問しました。
最終的にはプログラムで言語のフラグを持ってやる覚悟ではいますが…。
DynamicHtmlですね。
うまく書けばキレイに出来るかな…。
1番の回答者Kotobuki_Fさんのに近いですが,元のHTMLファイルが
<html_tag>これはリンゴです。</html_tag>
だったとして,
このファイルを
<html_tag>{$ReplaceHere}</html_tag>
のような感じでHTMLテンプレートに書き換えておいて,次に(たとえばINI形式の)言語ファイルを言語別に用意します。日本語だと,lang_ja.iniみたいな感じ。
ReplaceHere = "これはリンゴです。"
あとは,プログラムから言語ファイルとテンプレートファイルを読み込んで,{$Apple}のところを元の日本語か英語かに置換する操作をするといけると思います。
※「{$」と「}」でReplaceHereを挟まなくても,何でもいいです。個人的にPHPのSmartyテンプレートエンジンを使っているので,その感じで書かせていただきました。
やはりサーバサイドが正攻法ですか。
JavaなのでResourceBundleとかを使うことになりそうですね。
JSP であれば Struts の MessageResources 見たいなのが正攻法だと思う。
MessageResources (Apache Struts API Documentation)
使い方。
org.apache.struts.taglib.bean(Apache Struts API Documentation)
フレームワークを使ってないんですよね…。
ちょっと調べたのではCommons Resourcesとかですか。あまり使うメリットがよくわからないです。ResourceBundleとの違いも。やはりサーバサイドですか。
フレームワークを使ってないんですよね…。
ちょっと調べたのではCommons Resourcesとかですか。あまり使うメリットがよくわからないです。ResourceBundleとの違いも。やはりサーバサイドですか。