LoginSignup
4
1

More than 5 years have passed since last update.

クラスブラウザに日本語翻訳機能を追加する

Last updated at Posted at 2017-03-15

やっつけ仕事だけどまあまあ便利
やったことは翻訳機能を作って、メニューへの追加の方法を調べてそこに翻訳機能を追加した。

google translate apiを使った翻訳機能

下のスクリーンショットのワークスペースにかかれてあるコードをDoItすれば翻訳された言葉が内容のワークスペースを開くようなクラスを書いた。翻訳の仕方はZnClientを使って、google translate apiを使っているだけ。
スクリーンショット 2017-03-15 20.52.40.png

クラスブラウザのメニューへの追加方法を調べる

どこにコードを追加いいかわからないので調べる。
クラスブラウザを開いて、適当な文字列を選択し右クリックでメニューを開く。とりあえずCopyの項目ののHaloを開いてインスペクトする。
Macの場合はOption+Shift+右クリックでHaloは開ける。

スクリーンショット 2017-03-15 21.04.11.png

ボタンやなんかのアクションをするオブジェクトは大体インスタンス変数でselectorを持っていて、アクションをする必要があるときは。selectorの内容を実行するのでselectorを見てみる。
スクリーンショット 2017-03-15 21.12.17.png

selectorの内容が#perform:orSendTo:となっていてあんまり役にたたなさそうなのでインスタンス変数を眺めているとarugumentsがあったので覗いてみる。

スクリーンショット 2017-03-15 21.14.56.png
多分#perform:orSendTo:と組み合わせて、RubSmalltalkEditor>>copySelectionが呼ばれるんだろうと想像して、copySelectionが呼ばれている場所を調べる。
スクリーンショット 2017-03-15 21.26.47.png

少し調べてRubSmalltalkCodeMode class>>menuOn:がクラスブラウザの右クリックで呼ばれることがわかった。
Copyのメニューを2つに増やして試してみる。
スクリーンショット 2017-03-15 21.32.43.png

ちゃんとCopyの項目が2つに増えたみたいなのでここで良いようだ。

メニューに翻訳機能を追加する

コピーの機能を参考にしてitem,keyText,selectorをそれらしく書き換える。おそらくメニューの項目が押されればselectorで指定されたメソッドが起動するはずだ。今追加したTranslateの項目を押して見る。
スクリーンショット 2017-03-15 21.42.55.png

まだここで設定したtranslateSelectionは実装していないからデバッガーが立ち上がるはずだ。
スクリーンショット 2017-03-15 21.44.31.png
デバッガーが立ち上がった。デバッガーからtranslateSelection実装しよう。
RubSmalltalkEditor>>copySelectionを見ながら下の様に実装する。
スクリーンショット 2017-03-15 21.48.16.png

適当な文字列を選択して翻訳してみよう。
スクリーンショット 2017-03-15 21.54.02.png

動いてるようだ。もう少し弄ればsmalltalkのコードを英語風に変換して翻訳するような機能も追加できると思う。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1