はじめに †
- AspectJ ログ で作った、おみくじアプリのソースコードに手を加えずに国際化したい
- こんなかんじ
どうするか? †
- Swingアプリの JButton#setText() や JFrame#setTitle() を AspectJ の @Around アドバイス を使って乗っ取ってやればいい
- OmikujiI18N アスペクトを作成する
- 本来 OmikujiUI 内で、?#setText( english ) や ?#setTitle( english ) しているところを乗っ取り、
- english をキーに label_ja.properties から日本語訳(japanese)を取り出し、
- ?#setText( japanese ) 、?#setTitle( japanese ) している。
- label_ja.properties は、こんな感じ
excellent_lucky=今日は大吉。 lucky=今日は小吉。 a_bit_lucky=今日は吉。 misfortune=今日は凶。 greate_misfortune=今日は大凶。 Consult_an_Oracle=おみくじを引く Fortune=おみくじ ERROR=一日に何回も引くな!
※propertiesファイルのキーにスペースは使えないので、" " は "_" に置換している
OmikujiI18Nアスペクト †
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
| - | | - | | | | | - | | | | | | | | | | | - | | | | | | | - | - | - | ! | | ! ! ! | ! | |
- @Around で乗っ取る メソッドの引数の取り出し方
Object[] ProceedingJoinPoint#getArgs()
- 乗っ取ったメソッドの実行
Object ProceedingJoinPoint#proceed(Object[] args); Object ProceedingJoinPoint#proceed();