質問編集履歴

1

具体例を追記しました。

2018/11/21 13:46

投稿

t.kusu
t.kusu

スコア21

test CHANGED
File without changes
test CHANGED
@@ -22,6 +22,8 @@
22
22
 
23
23
  ### 試したこと
24
24
 
25
+ リクエストがあったので追記します。
26
+
25
27
 
26
28
 
27
29
  1)
@@ -49,3 +51,191 @@
49
51
  この問題の一般的な対策手法などがあれば教えてください。
50
52
 
51
53
  一般的と言える手法がないようなら 2) の方法で解決してしまおうと思っています。
54
+
55
+
56
+
57
+ ### 具体例
58
+
59
+ リクエストがあったので追記します。
60
+
61
+
62
+
63
+ クラサバなので、クライアント側でも処理を行い、ケースによってはメッセージを表示することがあります。
64
+
65
+ このとき表示するメッセージも多言語対応を行います。最も単純な手段では以下のようになります。
66
+
67
+
68
+
69
+ --- client.js ---
70
+
71
+ swicth( locale ){
72
+
73
+ case 'en-EN':
74
+
75
+ alert( 'Japanese!' );
76
+
77
+ break;
78
+
79
+ default:
80
+
81
+ alert( '日本語!' );
82
+
83
+ break;
84
+
85
+ }
86
+
87
+
88
+
89
+ -----
90
+
91
+
92
+
93
+ ただしメッセージを表示する箇所は多数あるので、この方法では効率がとても悪くなります。そこで以下のようにします。
94
+
95
+
96
+
97
+ --- client.js (改1)---
98
+
99
+ var message = '日本語!';
100
+
101
+ swicth( locale ){
102
+
103
+ case 'en-EN':
104
+
105
+ message = 'Japanese!';
106
+
107
+ break;
108
+
109
+ default:
110
+
111
+ message = '日本語!';
112
+
113
+ break;
114
+
115
+ }
116
+
117
+ alert( message ); // メッセージの定義と表示の処理とを分離する
118
+
119
+
120
+
121
+ -----
122
+
123
+
124
+
125
+ これでもよいのですが、メッセージはサーバーの Resource で持たせて共用した方が効率が良さそうです。
126
+
127
+ この方法を探しています。
128
+
129
+
130
+
131
+ なお、「試したこと」では以下のようなコトしています。
132
+
133
+ ※「試したこと」の 1) にあたります。
134
+
135
+
136
+
137
+ --- client.cshtml (改2)---
138
+
139
+ <script type="text/javascript" src="client.js">
140
+
141
+ <script>
142
+
143
+ var message = '@Resource.Japanese';
144
+
145
+ </script>
146
+
147
+
148
+
149
+ -----
150
+
151
+
152
+
153
+ --- client.js (改2)---
154
+
155
+ alert( message );
156
+
157
+
158
+
159
+ -----
160
+
161
+
162
+
163
+ これで調子が良さそうなのですが、メッセージが増えてくると cshtml 内に書いていくのがめんd・・・大変になります。
164
+
165
+ なのでクライアントの js プログラムにサーバー側の C# から Resource のメッセージデータを効率よく渡す方法を探しています。
166
+
167
+
168
+
169
+ 「試したこと」の 2) は具体的には以下のようなことです。
170
+
171
+
172
+
173
+ --- resource.resx (改3)---
174
+
175
+ <data name="Japanese"><value>日本語!</value!></data>
176
+
177
+
178
+
179
+ -----
180
+
181
+ --- resource.en-EN.resx (改3)---
182
+
183
+ <data name="Japanese"><value>Japanese!</value!></data>
184
+
185
+
186
+
187
+ -----
188
+
189
+
190
+
191
+ 上の様なリソースファイルから以下のような js ファイルを作成します。
192
+
193
+
194
+
195
+ --- locale.js (改3)---
196
+
197
+ var message = '日本語!';
198
+
199
+
200
+
201
+ -----
202
+
203
+ --- locale.en-EN.js (改3)---
204
+
205
+ var message = 'Japanese!';
206
+
207
+
208
+
209
+ -----
210
+
211
+
212
+
213
+ そして以下のように利用します。
214
+
215
+
216
+
217
+ --- client.cshtml (改3)---
218
+
219
+ <script type="text/javascript" src="locale@(locale).js">
220
+
221
+ <script type="text/javascript" src="client.js">
222
+
223
+
224
+
225
+ -----
226
+
227
+
228
+
229
+ --- client.js (改3)---
230
+
231
+ alert( message );
232
+
233
+
234
+
235
+ -----
236
+
237
+
238
+
239
+ Resource ファイルから locale.js ファイルを自動で作れれば作業の誤りをなくせて作業自体も楽になります。
240
+
241
+ ただ、ここまで考えて、この自動化を自作しなくても他にすでにフレームワークがあるのではないかと思いました。