質問するログイン新規登録

質問編集履歴

4

質問内容の見直し。

2019/06/15 01:25

投稿

nonki03
nonki03

スコア11

title CHANGED
File without changes
body CHANGED
@@ -1,17 +1,9 @@
1
- すみません…疲れてて寝ぼけながら書いていたので、書いてることがメチャクチャでした…
2
-
3
-
4
1
  現在3つのアプリを開発中で、それらは全て画面に表示する文言をjson形式にて管理する予定です。
5
2
  他国でも使用されるアプリのため、その文言管理用jsonファイルは各国の文言を記載したものがそれぞれ用意されることとなります。
6
3
  バージョンアップにて新しく文言が追加される度、英語を基準に各国の方が翻訳し、その国ごとの文言管理用jsonファイルを作成するための、技術者でない人でも扱えるような文言変更ツールが必要となります。
7
4
  今回はその文言変更ツールの作成です。
8
5
 
9
-
10
6
  ツールの開発環境はVS2008、Frameworkは3.5で作成しています。
11
-
12
- やりたいこととしては、jsonファイルを読み込んでレコード形式でメモリに保持し、
13
- 画面にて書き換えた後、保存ボタン押下時にjsonファイルを排出する感じです。
14
-
15
7
  その読み込むjsonファイルの中身が以下のような内容です。
16
8
 
17
9
  ------------------------------------------------------------
@@ -41,71 +33,59 @@
41
33
  }
42
34
      ←(更に他画面が増える)
43
35
  }
36
+
44
37
  ------------------------------------------------------------
45
-
46
- 画面ごとに区切られていて、その中にkeyとvalueといった形になってます。
38
+ 画面ごとに区切られていて、その中にメッセージのkeyとvalue といった形になってます。
47
- 今後文言が増えることもありますし、画面が増えることもあります。
39
+ 画面名・メッセージのkey・valueはそれぞれ全て動的な上、今後文言が増えることもありますし、画面が増えることもあります。
48
40
  その度にツールを修正するようなことはしたくありません。
49
41
 
42
+ やりたいこととしては、
43
+ 1.jsonファイルを読み込み、データをメモリに保持。
50
- 現在、JObject.Parse使って画面ごと切り出すことには成功しいますが、切り出した後の左側の部分が邪魔、JsonConverter.DeserialiseObjectで{}の部分の文言を切り分けられていないと言うような状況です。
44
+ 2.フォームのDataGridViewに値セット、画面にて編集きるよう
45
+   (その際、変更された文言・追加された文言・既存文言が分かるようにする。)
46
+ 3.保存ボタン押下時に、編集した新しいjsonファイルを排出。
47
+ といった内容です。
51
48
 
52
49
 
53
50
 
51
+ 現在jsonファイルの読み込みの段階で、読み込むには別クラスによる型宣言が必要だと認識しているのですが、キーが動的なゆえに別クラスによる型宣言がうまくできず、どう読み込めばいいのか分からなくて詰まっています。
52
+ →なんとか読み込み、切り分け、画面に表示までできました。
53
+ ただ、やり方が少し強引というか…
54
+ ```C#
55
+ private void EditScreen_Load(object sender, EventArgs e)
56
+ {
54
57
 
55
58
 
56
- 前)
59
+ try
57
- 開発中のソフトが多言語化対応のため、文言の変更(修正)ツールを作成することになりました。
60
+ {
58
- 英語を基準として、このツールを使って現地の方が翻訳することで文言を変更し、現地の言語に合わせる。というものです。
59
- VS2008、Frameworkは3.5、文言はjson形式で管理する方式で決まっています。
61
+ var jScreen = JObject.Parse(File.ReadAllText("D:\MessageWork\En_Old\risou.json", Encoding.Default));
60
62
 
63
+ foreach (var MenuMsg in jScreen.Properties())
64
+ {
65
+ MessageBox.Show(Regex.Replace(MenuMsg.ToString(), ".*{", "{"));
66
+ var dic = JsonConvert.DeserializeObject<Dictionary<string, string>>(Regex.Replace(MenuMsg.ToString(), ".*{", "{"));
67
+ string sss = "";
61
- そのため、jsonファイルを読み込んでレコード形式でメモリに保持し、
68
+ foreach (var ScreenMsg in dic.Keys)
69
+ {
70
+ sss += ScreenMsg.ToString() + " : " + dic[ScreenMsg].ToString() + "\r\n";
71
+ }
62
- 画面にて書き換えて排出するツールを考案・開発しようとしています。
72
+ MessageBox.Show(sss);
73
+
74
+ }
63
75
 
76
+ }
77
+ catch (Exception ex)
78
+ {
64
- しかし、C#は初めて扱う言語(尚、VB.NETは経験済み)であり、jsonの読み込みすらうまくできていません。
79
+ string msg = string.Format("Error Occurred! \r\n\r\n{0}", ex.ToString());
80
+ MessageBox.Show(msg);
81
+ }
82
+ }
83
+ ```
65
84
 
66
- というのも、下記の通りに "画面ごとに表示する文言が変わる" ため
85
+ JObject.Parseを使って画面ごとに切り出し
86
+ 切り出した後の左側の部分を無理やりReplaceでカット
67
- キー項目が定まっおらず、ネットであらかた調べて出てくる読み込み方法ではうまくいっていない状況です
87
+ JsonConverter.DeserialiseObjectを通し{}の部分を読み込み。
68
- (自分の理解力の無さもありまが)
88
+ 画面に表示…といった感じで
69
89
 
70
- ------------------------------------------------------------
71
- {
72
- LoginScreen{
73
- "label_title":"Login Screen",
74
- "label_userId","User ID",
75
- "label_password","Password",
76
- "button_login","LOGIN"
77
-        ←(増える可能性あり)
78
- },
79
- UserLIstScreen{
80
- "label_title":"User List",
81
- "label_userId","User ID",
82
- "label_userName","User Name",
83
- "label_userTell","TEL",
84
- "label_phone","Phone",
85
- "label_save"
86
-        ←(増える可能性あり)
87
- },
88
- SettingListScreen{
89
- "label_title":"Setting",
90
- "label_storeName","Store Name",
91
- "label_language","Language",
92
- "button_save","Save"
93
-        ←(増える可能性あり)
94
- }
95
-     ←(更に他画面が増える)
96
- }
97
- ------------------------------------------------------------
98
-
99
- 現時点では標準で備わっているアセンブリ、System.Runtime.Serialization.Jsonのライブラリ、
100
- DataContractJsonSerializerを使用しての読み込みを試みてみていましたが、
101
- しいのでは?と判断しjson.NETのライブラリを突っ込ん試行錯誤している状態です。
90
+ 出来た、とてものですがあまり綺麗はないかな…と感じていす。
102
- json.NETのJsonConverterを使用して、各画面ごと(Screenと付いている部分)に切り分けることには成功しましたが、
103
- 文言ごとに切り分けるまでには至っていません。
104
-
105
- どのようにすれば、
106
- 画面┳キー━文言
107
-   ┳キー━文言
108
-   ┗キー━文言
109
- のよう切り分け、メモリ上で編集する可能にでしょうか
91
+ これ以外の方法の方良い」といったよう方法は無いでしょうか
110
-
111
- ご助力ください、お願いします。

3

2019/06/15 01:25

投稿

nonki03
nonki03

スコア11

title CHANGED
File without changes
body CHANGED
@@ -16,14 +16,14 @@
16
16
 
17
17
  ------------------------------------------------------------
18
18
  {
19
- LoginScreen{
19
+ "LoginScreen":{
20
20
  "label_title":"Login Screen",
21
21
  "label_userId":"User ID",
22
22
  "label_password":"Password",
23
23
  "button_login":"LOGIN"
24
24
         ←(増える可能性あり)
25
25
  },
26
- UserLIstScreen{
26
+ "UserLIstScreen":{
27
27
  "label_title":"User List",
28
28
  "label_userId":"User ID",
29
29
  "label_userName":"User Name",
@@ -32,7 +32,7 @@
32
32
  "label_save":"SAVE"
33
33
         ←(増える可能性あり)
34
34
  },
35
- SettingListScreen{
35
+ "SettingListScreen":{
36
36
  "label_title":"Setting",
37
37
  "label_storeName":"Store Name",
38
38
  "label_language":"Language",

2

2019/06/13 04:44

投稿

nonki03
nonki03

スコア11

title CHANGED
File without changes
body CHANGED
@@ -48,9 +48,12 @@
48
48
  その度にツールを修正するようなことはしたくありません。
49
49
 
50
50
  現在、JObject.Parseを使って画面ごとに切り出すことには成功していますが、切り出した後の左側の部分が邪魔で、JsonConverter.DeserialiseObjectで{}の部分の文言を切り分けられていないと言うような状況です。
51
- =====================================
52
51
 
53
52
 
53
+
54
+
55
+
56
+ 前)
54
57
  開発中のソフトが多言語化対応のため、文言の変更(修正)ツールを作成することになりました。
55
58
  英語を基準として、このツールを使って現地の方が翻訳することで文言を変更し、現地の言語に合わせる。というものです。
56
59
  VS2008、Frameworkは3.5、文言はjson形式で管理する方式で決まっています。

1

2019/06/13 04:14

投稿

nonki03
nonki03

スコア11

title CHANGED
File without changes
body CHANGED
@@ -1,3 +1,56 @@
1
+ すみません…疲れてて寝ぼけながら書いていたので、書いてることがメチャクチャでした…
2
+
3
+
4
+ 現在3つのアプリを開発中で、それらは全て画面に表示する文言をjson形式にて管理する予定です。
5
+ 他国でも使用されるアプリのため、その文言管理用jsonファイルは各国の文言を記載したものがそれぞれ用意されることとなります。
6
+ バージョンアップにて新しく文言が追加される度、英語を基準に各国の方が翻訳し、その国ごとの文言管理用jsonファイルを作成するための、技術者でない人でも扱えるような文言変更ツールが必要となります。
7
+ 今回はその文言変更ツールの作成です。
8
+
9
+
10
+ ツールの開発環境はVS2008、Frameworkは3.5で作成しています。
11
+
12
+ やりたいこととしては、jsonファイルを読み込んでレコード形式でメモリに保持し、
13
+ 画面にて書き換えた後、保存ボタン押下時にjsonファイルを排出する感じです。
14
+
15
+ その読み込むjsonファイルの中身が以下のような内容です。
16
+
17
+ ------------------------------------------------------------
18
+ {
19
+ LoginScreen{
20
+ "label_title":"Login Screen",
21
+ "label_userId":"User ID",
22
+ "label_password":"Password",
23
+ "button_login":"LOGIN"
24
+        ←(増える可能性あり)
25
+ },
26
+ UserLIstScreen{
27
+ "label_title":"User List",
28
+ "label_userId":"User ID",
29
+ "label_userName":"User Name",
30
+ "label_userTell":"TEL",
31
+ "label_phone":"Phone",
32
+ "label_save":"SAVE"
33
+        ←(増える可能性あり)
34
+ },
35
+ SettingListScreen{
36
+ "label_title":"Setting",
37
+ "label_storeName":"Store Name",
38
+ "label_language":"Language",
39
+ "button_save":"SAVE"
40
+        ←(増える可能性あり)
41
+ }
42
+     ←(更に他画面が増える)
43
+ }
44
+ ------------------------------------------------------------
45
+
46
+ 画面ごとに区切られていて、その中にkeyとvalueといった形になってます。
47
+ 今後文言が増えることもありますし、画面が増えることもあります。
48
+ その度にツールを修正するようなことはしたくありません。
49
+
50
+ 現在、JObject.Parseを使って画面ごとに切り出すことには成功していますが、切り出した後の左側の部分が邪魔で、JsonConverter.DeserialiseObjectで{}の部分の文言を切り分けられていないと言うような状況です。
51
+ =====================================
52
+
53
+
1
54
  開発中のソフトが多言語化対応のため、文言の変更(修正)ツールを作成することになりました。
2
55
  英語を基準として、このツールを使って現地の方が翻訳することで文言を変更し、現地の言語に合わせる。というものです。
3
56
  VS2008、Frameworkは3.5、文言はjson形式で管理する方式で決まっています。