[[FrontPage]] [[Petit-Hack]] 「プチハック」。 Hackってほどでもないけれど、多少いじってみるコーナー。 #ref(starlogo-ja_0.PNG,,,50%) なかなかじっくりできませんが、ちょこちょこと調査中。 目次 ---- #contents ---- *多言語対応 [#ya4be486] *素直に日本語対応設定ファイルを作ってみる [#c8bbfaa8] OpenStarLogoを少しいじっていて気がついたのですが、実は、もともと StarLogoのインストールディレクトリにおいてあった、 StarLogo.jar は、いわゆる実行可能Jarファイルで、classファイルだけではなく、 必要な画像や、設定ファイル含まれています。 そうすれば、起動時にenとやっているところをjaとするだけで、日本語での メニューになってくれてもいい。というか、それくらい単純であって欲しい。 jarファイルはzip圧縮ファイルなので、展開するとディレクトリやや MANIFESTファイルやらが出てきます。それで、中をみてみたら、 OpenStarLogoではじめて意識した多言語対応設定ファイルらしきもの がちゃんとおいてありました。特に、GUI(メニューやボタン)の項目 のテキストが記述されている、 で、 GUIBundle_ja.properties をつくって、起動したが、うまくいきません。実行時にあるオブジェクト がnullであるためにexceptionが出ている模様。追いかけ切れていません。 GUIBundle.properties で、実際には、これだけではなく、jaのついた名前で存在したほうあよさそう なファイルを全部作ってみることに。とりあえず、 は、言語のlocaleに対応した形で、 -stalogo以下 -- GUIBundle_ja.properties -- SLCommands_ja.properties -yoyo以下 -- YoYoErors_ja.properties -- YoYoCommands_ja.properties GUIBundle_en.properties GUIBundle_es.properties あたり。 がありました。そこで、トップにあるstarlogo-windows.batの中に書いてあった もちろん、GUIBundle_ja.properties以外は当面「en」の コピーで。 java -Xmx256000000 -classpath .;.\language.jar;.\patch.jar;.\starlogo.jar starlogo.Toplevel compiler en "init 100" %1 *英語用の設定ファイルを無理やり日本語化してみる [#ve2ff2c5] のenをesに変えたら、ちゃんとスペイン語らしきGUIテキストになって起動されま した(どこかに書いてある可能性大。単に調査不足?) そもそも日本語を含んでいるのが悪いかもしれないので、最初から ちゃんと読み込まれているGUIBundle_en.propertiesの中身を 直接日本語化して、動かしてみました。 #ref(starlogo-spanish.PNG,,,50%) ちなみに、日本語打ち込んで、native2asciiで変換すればいいのです が、それも今後メンドウなので、propeditのeclipseプラグインバージョン で直接編集しました。 *日本語対応 [#yc1aceb4] #ref(starlogo-prop_ja_edit.PNG,,,50%) StarLogoの2.2からunicodeに対応しているので、「日本語が表示できる」という 意味では日本語対応しているわけですが、みたところ、 GUIBundle_ja.properties そしたら、結構ちゃんと動きました。まだ完全ではありませんが、 結構細かいところまで日本語化されています。 とかも無いようなので、現在はそもそもそういうニーズはないのかも。 しかし、構造計画研究所KK-MASとの比較で、KK-MASが「日本語ベース」をその 特徴としているところからすると、その問題はメニューを日本語化するだけ で解決してしまうのかもしれない。 #ref(starlogo-ja-newplot.PNG) そういうわけで、日本での普及ということを考えれば 多少意味もあるのかも。 さて、本来の方法でできないのはなぜだろう・・・ それをやったあとは、 *正当なやりかたで、日本語化してみる [#y22dc674] VisualBasicか、LOGOかの選択 ・・・本来の方法でできないのはやはり気持ち悪いので、やってやろうと 思って調べたら、結構いろいろと知らないこと(で、知ってて当然のこと)が たくさんあって、苦労してしまいました。 ということになりましょうか。 もっと単純にできるうまいやりかたはあるかもしれませんが、とりあえず、うまく いった方法を載せておきます。 -[[StarLogo日本語化]] -GUIBundle_ja.propertiesではなく、GUIBundle_ja_JP.propertiesのようにした。 --YoYo.languageに入っている値そのままを使った。 -シミュレーションを止めるためのボタン(基本の画像と押されたときの画像)のためのgifファイルを用意した --stop.gifとstop-pressed.gif -- ---> stop_ja_JP.gif, stop-pressed_ja_JP.gif --Application.javaの中で、YoYo.languageの値を表示したら、ja_JPが返っていたので。 -ある怪しいコードを手直しした。 ・・次の様なコードがあったのです。 if(YoYo.language.getLanguage().equals("en")){ setMyPreferredSize(new Dimension(285,500)); } else if (YoYo.language.getLanguage().equals("es")){ setMyPreferredSize(new Dimension(320,500)); } しょうがないような、しょうがなくないような・・「en」はいいけれど 「es」がハードコードされているのはちょっと。ま、それはいいのですが、 これだと、jaとかja_JPの時は、setMyPreferredSizeされないことになって しまいます。 実はこれが本当の原因かどうかはまだ検証の余地はあるのですが、これを if(YoYo.language.getLanguage().equals("en")){ setMyPreferredSize(new Dimension(285,500)); } else if (YoYo.language.getLanguage().equals("es")){ setMyPreferredSize(new Dimension(320,500)); } else { setMyPreferredSize(new Dimension(285,500)); } みたいな形に、es, en以外でもとりあえず、setMyPrefferedSizeされるように しました。そしたら、それまで出ていたImageに関するExceptionが消えました。 これで、「日本語対応」といってもいいのではないかと思います。あとは、 プロパティファイルをどう日本語化するかです。 とりあえず、何でもかんでも日本語化すればいいのでしょうけれど、逆に 日本語の用語の方がわかりにくいものもあるかもしれないし、必要以上 に文字列が長くなるようなものがあると、Swingのコンポーネントのサイズ が足りないものがでてくる可能性もあります。 とりあえず、「やりかた」はわかったということで、内容はもう少し試行錯誤 がいりそうです(fujim2/2006/06/24) *本家に提出 [#jb1f625d] とりあえず、上記の試行錯誤の過程の中で、openstarlogoの配布者(つまりは Starlogoの開発陣)に対していくつかコメントをもらい、最後には、見てもら うことにしました。現在、提出したところです。 もし、受理されれば、上記のことが、本体に組み込まれるかもしれません( もちろん却下かもしれませんが)。 実際のところ、勝手にここでパッチを当てたStarlogoを配るわけ にもいかないので、そうするしかないわけですが・・・ (fujim2/2006/06/25) *とりあえず、本家でダウンロード可能に [#ia2a896d] 提出してから2日音沙汰なかったのですが、今日見たら、Communitie Contribution ということで差分のみ(ここで公開しているのと同じもの)ダウンロードできる 様になっています。 *その後調べて [#ya36fc7d] JavaのLocaleについてその後もう少し調べましたが、やはりソフトウェア側で xx_ja_JP.propertiesがなかったら、xx_ja.properties、それも無かったらxx.propertiesを参照する、というのが正しいつくりなので、本来はその辺からの訂正が望ましい ような気がします。全体的に自分でももう少し読んで、確信できたらまた提出 しようかと思います(fujim2/2006/06/28)。 ---- #counter