modpack_localizer 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3cafef6f707a0fd987dc803597657ff94a27500fd5249d84cde9373c138e1258
4
- data.tar.gz: f9a1065a77d4963a387f2cd517cd57ae614b635f0c8c1cf92179b84967b4dab9
3
+ metadata.gz: 48bcad07e0c02e06435107cc2b8a39a37a3179eb7bcef64e7ac5db367c74f8da
4
+ data.tar.gz: d542c0869963484c4e394f399f04a762f4fc4cef47698f4b64d8157f74941eb6
5
5
  SHA512:
6
- metadata.gz: 866d8449995556f189b2229ae34b648fa2870f0b126308edd45fab9f5e9920051ee1a354628370a747deca177cf844906da5df494ab659f8a5c99e5b8ab1a1d6
7
- data.tar.gz: b007267965376a36a548c015ff16761c3808ae9782321bd5e4a0536646af4efe48937918406061383892840532a79d6eeb9f9c4990a51242a72f2d64defe857b
6
+ metadata.gz: e5a340bc8dcdd0619c0eb98e85d2cbd3354dbd99d77496ca4780594329fd9ac5c865c08f4aeec4ea3e12820e91b2362251c44859b4b01f0d15edc4bb1e196b78
7
+ data.tar.gz: 2315ad6a15de36bbc55a9941008c2a94b51725962e8c75878ba74e1bf912a51c44ae4ca3c366b2437dedbaba0b1df2b8a619b5e06cf080287ad0292126a8abe4
data/CHANGELOG.md CHANGED
@@ -48,4 +48,8 @@
48
48
 
49
49
  ## [0.1.2] -2024-11/9
50
50
 
51
- - 言語ファイルが既に存在する場合のメッセージが出力されない問題を修正
51
+ - 言語ファイルが既に存在する場合のメッセージが出力されない問題を修正
52
+
53
+ ## [0.1.3] -2024-11/11
54
+
55
+ - BOM付きの言語ファイルでJSON.parseに失敗する問題を修正
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ## ModpackLocalizer
2
2
 
3
- Translator for FTBQuest. (title, subtitle, description)
3
+ Localizer for Minecraft Modpack.
4
4
  If you want to translate to other languages than Japanese,
5
5
  please add the `language` option during initialization.
6
6
  Can always get help with `ModpackLocalizer.help`
@@ -8,6 +8,7 @@ Can always get help with `ModpackLocalizer.help`
8
8
  #### Example
9
9
 
10
10
  `ModpackLocalizer::SNBT::Performer.new(language: "English")`
11
+ `ModpackLocalizer::JAR::Performer.new(language: "English")`
11
12
  or if no specific configs required
12
13
  `ModpackLocalizer.omakase(language: "English")`
13
14
 
@@ -18,62 +19,64 @@ or if no specific configs required
18
19
  3. Add `OPENAI_API_KEY=your_api_key` to `.env`
19
20
  4. Optional: Add `OPENAI_MODEL=some_openai_model` to `.env` **(default: gpt-4o-mini)**
20
21
  5. Add `some.snbt` or `quests` directory contents to `quests` directory
21
- 6. Check `output` directory
22
+ 6. Add `some.jar` files to `mods` directory
23
+ 7. Double click `start.bat` file
24
+ 8. Check `output` directory
22
25
 
23
- ## ModpackLocalizer.omakase Options
26
+ ## Options for omakase method
24
27
 
25
28
  #### language
26
29
 
27
- Which language do you want to translate to?
30
+ Which language do you want to translate to?
28
31
  **(default: Japanese)**
29
32
 
30
33
  #### country
31
34
 
32
- Your country name
35
+ Your country name
33
36
  **(default: Japan)**
34
37
 
35
38
  #### locale_code
36
39
 
37
40
  Which locale code do you want to use?
38
- If you specified this, you don't need to specify the country.
41
+ If you specified this, you don't need to specify the country.
39
42
  **(default: nil)**
40
43
 
41
44
  #### threadable
42
45
 
43
- Do you want to exec in parallel?
46
+ Do you want to exec in parallel?
44
47
  **(default: false)**
45
48
 
46
- ## Initialize Options
49
+ ## Initialize options
47
50
 
48
51
  #### output_logs
49
52
 
50
- Want to output OpenAI usage logs?
53
+ Want to output OpenAI usage logs?
51
54
  **(default: true)**
52
55
 
53
56
  #### except_words
54
57
 
55
- Words that you don't want to translate
58
+ Words that you don't want to translate
56
59
  **(default: empty array)**
57
60
 
58
61
  #### language
59
62
 
60
- Which language do you want to translate to?
63
+ Which language do you want to translate to?
61
64
  **(default: Japanese)**
62
65
 
63
66
  #### display_help
64
67
 
65
- Want to display help?
68
+ Want to display help?
66
69
  **(default: true)**
67
70
 
68
- ## Only for jar performer
71
+ ## Only for jar performer initialize options
69
72
 
70
73
  #### country
71
74
 
72
- Your country name
75
+ Your country name
73
76
  **(default: Japan)**
74
77
 
75
78
  #### locale_code
76
79
 
77
80
  Which locale code do you want to use?
78
- If you specified this, you don't need to specify the country.
79
- **(default: nil)**
81
+ If you specified this, you don't need to specify the country.
82
+ **(default: nil)**
@@ -9,6 +9,8 @@ module ModpackLocalizer
9
9
  class Reader
10
10
  # 例: ja_jp
11
11
  LOCALE_CODE_REGEX = /\A[a-z]{2,3}_[a-z]{2,3}\z/
12
+ # BOM付きだとJSON.parseでエラーが出る
13
+ BOM_REGEX = /\A\xEF\xBB\xBF/
12
14
 
13
15
  # performerに渡すレスポンス
14
16
  #
@@ -60,7 +62,7 @@ module ModpackLocalizer
60
62
  )
61
63
  end
62
64
 
63
- raw_json = JSON.parse(lang_file.get_input_stream.read)
65
+ raw_json = parse_json(lang_file)
64
66
 
65
67
  LangData.new(
66
68
  true, except_comment(raw_json), lang_file, @locale_code, extract_mod_name(lang_file), nil
@@ -99,6 +101,42 @@ module ModpackLocalizer
99
101
  lang_files.find { |entry| target_locale_file?(entry, locale_code) }
100
102
  end
101
103
 
104
+ # JSONを解析する
105
+ # BOMを削除し、UTF-8に変換する
106
+ #
107
+ # @param [Zip::Entry] zip_entry ファイル
108
+ # @return [Hash] JSONのハッシュ
109
+ def parse_json(zip_entry)
110
+ content = read_inner_zip(zip_entry)
111
+ content = change_to_utf8(content)
112
+ content = remove_bom(content)
113
+ JSON.parse(content)
114
+ end
115
+
116
+ # zip内のファイルの内容を読み込む
117
+ #
118
+ # @param [Zip::Entry] zip_entry ファイル
119
+ # @return [String] ファイルの内容
120
+ def read_inner_zip(zip_entry)
121
+ zip_entry.get_input_stream.read
122
+ end
123
+
124
+ # BOMを削除する
125
+ #
126
+ # @param [String] str 文字列
127
+ # @return [String] BOMを削除した文字列
128
+ def remove_bom(str)
129
+ str.gsub(BOM_REGEX, "")
130
+ end
131
+
132
+ # UTF-8に変換する
133
+ #
134
+ # @param [String] str 文字列
135
+ # @return [String] UTF-8に変換した文字列
136
+ def change_to_utf8(str)
137
+ str.force_encoding("UTF-8")
138
+ end
139
+
102
140
  # JSONからコメントを除外する
103
141
  #
104
142
  # @param [Hash] hash JSONのハッシュ
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ModpackLocalizer
4
- VERSION = "0.1.2"
4
+ VERSION = "0.1.3"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: modpack_localizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - milkeclair
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-11-09 00:00:00.000000000 Z
11
+ date: 2024-11-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport