Skip to content

Commit 384f53f

Browse files
committed
Add more i18n entries
1 parent 237be41 commit 384f53f

File tree

10 files changed

+230
-53
lines changed

10 files changed

+230
-53
lines changed

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ val distJarOutput by configurations.creating {
3636
dependencies {
3737
implementation("commons-cli:commons-cli:1.5.0")
3838
implementation("com.google.code.gson:gson:2.9.0")
39-
implementation("com.squareup.okio:okio:3.1.0")
39+
implementation("com.squareup.okio:okio:3.4.0")
4040
implementation(kotlin("stdlib-jdk8"))
4141
implementation("com.squareup.okhttp3:okhttp:4.10.0")
4242
implementation("cc.ekblad:4koma:1.1.0")

src/main/i18n/link/infra/packwiz/installer/Msgs_en.properties

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
ok = OK
22
cancel = Cancel
3-
continue = Continue
3+
continueText = Continue
44
continueAnyway = Continue Anyway
55
quit = Quit
66
ignore = Ignore
@@ -12,6 +12,52 @@ countdown = {0} ({1})
1212
loading = Loading
1313
notFound = Not Found
1414

15+
umLoadingManifest = Loading manifest file...
16+
umInvalidManifestSyntax = Invalid local manifest file, try deleting {0}
17+
umInvalidManifestIO = Failed to read local manifest file, try deleting {0}
18+
umLoadingPack = Loading pack file...
19+
umFailedDownloadPack = Failed to download pack.toml
20+
umFailedParsePack = Failed to parse pack.toml
21+
umLoadingMultiMC = Loading MultiMC pack file...
22+
umNoMultiMC = MultiMC not detected
23+
umInvalidMultiMCSyntax = Invalid MultiMC pack file
24+
umInvalidMultiMCIO = Failed to read MultiMC pack file
25+
umLoadedMultiMC = Loaded MultiMC config
26+
umUnsupportedMultiMCVersion = Unsupported MultiMC format version {0}
27+
umInvalidMultiMCNoComponent = Invalid mmc-pack.json: no components key
28+
umUpdatedMultiMC = Successfully updated mmc-pack.json based on version metadata
29+
umCheckingLocalFiles = Checking local files...
30+
umInvalidateLocalFile = File {0} invalidated, marked for re-downloading
31+
umModpackUpToDate = Modpack is already up-to-date!
32+
umModpackName = Modpack name: {0}
33+
umInvalidIndex = Failed to process index file
34+
umFailedSaveLocalManifest = Failed to save local manifest file
35+
umModpackFilesUpToDate = Modpack files are already up-to-date!
36+
umFailedDownloadIndex = Failed to download index file
37+
umFailedParseIndex = Failed to parse index file
38+
umInvalidIndexHash = Your index file hash is invalid! The pack developer should packwiz refresh on the pack again
39+
umFailedDeleteFile = Failed to delete file removed from index
40+
umDeletedFile = Deleted {0} (removed from pack)
41+
umComparingNewFiles = Comparing new files...
42+
umIndexEmpty = Index is empty!
43+
umSideChanged = Side changed, invalidating all mods
44+
umReconfigureOptionalQuestion = Reconfigure optional mods?
45+
umInterruptedDownloadTask = Interrupted when consuming download tasks
46+
umFailedDownloadTask = Failed to execute download task
47+
umFailedDownload = Failed to download {0}: {1}
48+
umTaskStatePending = {0} pending (you should never see this...)
49+
umTaskStateDownloaded = Downloaded {0}
50+
unTaskStateAlreadyExistsCached = {0} already exists (cached)
51+
umTaskStateAlreadyExistsValidated = {0} already exists (validated)
52+
umTaskStateSkippedDisabled = Skipped {0} (disabled)
53+
umTaskStateSkippedWrongSide = Skipped {0} (wrong side)
54+
umTaskStateDeletedDisabled = Deleted {0} (disabled)
55+
umTaskStateDeletedWrongSide = Deleted {0} (wrong side)
56+
umValidatingExistingFiles = Validating existing files...
57+
umResolvingCurseforgeMetadata = Resolving CurseForge metadata...
58+
umUpdateCancelledUser = Update cancelled by user!
59+
umUpdateCancelledUserStartGame = Update cancelled by user! Continuing to start game...
60+
1561
continueNoInstall = Continue without installing
1662
continueNoUpdate = Continue without updating
1763
noOptionalModsDesc = This modpack has no optional mods!

src/main/i18n/link/infra/packwiz/installer/Msgs_zh.properties

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
ok = 確定
22
cancel = 取消
3-
continue = 繼續
3+
continueText = 繼續
44
continueAnyway = 仍然繼續
55
quit = 退出
66
ignore = 忽略
@@ -12,6 +12,52 @@ countdown = {0} ({1})
1212
loading = 載入中
1313
notFound = 未找到
1414

15+
umLoadingManifest = 載入清單文件...
16+
umInvalidManifestSyntax = 無效的本地清單文件,請嘗試刪除 {0}
17+
umInvalidManifestIO = 無法讀取本地清單文件,請嘗試刪除 {0}
18+
umLoadingPack = 載入模組包文件...
19+
umFailedDownloadPack = 下載 pack.toml 失敗
20+
umFailedParsePack = 解析 pack.toml 失敗
21+
umLoadingMultiMC = 載入 MultiMC 模組包配置文件...
22+
umNoMultiMC = 未檢測到 MultiMC
23+
umInvalidMultiMCSyntax = 無效的 MultiMC 模組包配置文件
24+
umInvalidMultiMCIO = 無法讀取 MultiMC 模組包配置文件
25+
umLoadedMultiMC = 已載入 MultiMC 配置
26+
umUnsupportedMultiMCVersion = 不支持的 MultiMC 格式版本 {0}
27+
umInvalidMultiMCNoComponent = 無效的 mmc-pack.json:沒有 components 鍵
28+
umUpdatedMultiMC = 根據版本元數據成功更新了 mmc-pack.json
29+
umCheckingLocalFiles = 檢查本地文件...
30+
umInvalidateLocalFile = 文件 {0} 失效,已標記待重新下載
31+
umModpackUpToDate = 模組包已是最新版本!
32+
umModpackName = 模組包名稱:{0}
33+
umInvalidIndex = 處理索引文件失敗
34+
umFailedSaveLocalManifest = 保存本地清單文件失敗
35+
umModpackFilesUpToDate = 模組包各文件已是最新版本!
36+
umFailedDownloadIndex = 下載索引文件失敗
37+
umFailedParseIndex = 解析索引文件失敗
38+
umInvalidIndexHash = 索引文件哈希值無效!模組包作者應該再次運行 packwiz refresh
39+
umFailedDeleteFile = 無法刪除從索引中移除的文件
40+
umDeletedFile = 已刪除 {0}(從模組包中移除)
41+
umComparingNewFiles = 比較新文件...
42+
umIndexEmpty = 索引是空的!
43+
umSideChanged = 伺服器/客戶端側已更改,重新處理所有模組
44+
umReconfigureOptionalQuestion = 重新配置可選模組?
45+
umInterruptedDownloadTask = 接受下載任務時發生中斷
46+
umFailedDownloadTask = 執行下載任務失敗
47+
umFailedDownload = 下載 {0} 失敗:{1}
48+
umTaskStatePending = {0} 待處理(您不應該看到此消息...)
49+
umTaskStateDownloaded = 已下載 {0}
50+
unTaskStateAlreadyExistsCached = {0} 已存在(內容已緩存)
51+
umTaskStateAlreadyExistsValidated = {0} 已存在(內容有效)
52+
umTaskStateSkippedDisabled = 跳過 {0}(被禁用)
53+
umTaskStateSkippedWrongSide = 跳過 {0}(伺服器/客戶端側不對應)
54+
umTaskStateDeletedDisabled = 刪除 {0}(被禁用)
55+
umTaskStateDeletedWrongSide = 刪除 {0}(伺服器/客戶端側不對應)
56+
umValidatingExistingFiles = 驗證現有文件...
57+
umResolvingCurseforgeMetadata = 解析 CurseForge 元數據...
58+
umUpdateCancelledUser = 用戶取消更新!
59+
umUpdateCancelledUserStartGame = 用戶取消更新!繼續啟動遊戲...
60+
1561
continueNoInstall = 在不安裝的情況下繼續
1662
continueNoUpdate = 在不更新的情況下繼續
1763
noOptionalModsDesc = 此模組包沒有可選模組!

src/main/i18n/link/infra/packwiz/installer/Msgs_zh_CN.properties

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
ok = 确定
22
cancel = 取消
3-
continue = 继续
3+
continueText = 继续
44
continueAnyway = 仍然继续
55
quit = 退出
66
ignore = 忽略
@@ -12,6 +12,52 @@ countdown = {0} ({1})
1212
loading = 载入中
1313
notFound = 未找到
1414

15+
umLoadingManifest = 载入清单文件...
16+
umInvalidManifestSyntax = 无效的本地清单文件,请尝试删除 {0}
17+
umInvalidManifestIO = 无法读取本地清单文件,请尝试删除 {0}
18+
umLoadingPack = 载入模组包文件...
19+
umFailedDownloadPack = 下载 pack.toml 失败
20+
umFailedParsePack = 解析 pack.toml 失败
21+
umLoadingMultiMC = 载入 MultiMC 模组包配置文件...
22+
umNoMultiMC = 未检测到 MultiMC
23+
umInvalidMultiMCSyntax = 无效的 MultiMC 模组包配置文件
24+
umInvalidMultiMCIO = 无法读取 MultiMC 模组包配置文件
25+
umLoadedMultiMC = 已载入 MultiMC 配置
26+
umUnsupportedMultiMCVersion = 不支持的 MultiMC 格式版本 {0}
27+
umInvalidMultiMCNoComponent = 无效的 mmc-pack.json:没有 components 键
28+
umUpdatedMultiMC = 根据版本元数据成功更新了 mmc-pack.json
29+
umCheckingLocalFiles = 检查本地文件...
30+
umInvalidateLocalFile = 文件 {0} 失效,已标记待重新下载
31+
umModpackUpToDate = 模组包已是最新版本!
32+
umModpackName = 模组包名称:{0}
33+
umInvalidIndex = 处理索引文件失败
34+
umFailedSaveLocalManifest = 保存本地清单文件失败
35+
umModpackFilesUpToDate = 模组包各文件已是最新版本!
36+
umFailedDownloadIndex = 下载索引文件失败
37+
umFailedParseIndex = 解析索引文件失败
38+
umInvalidIndexHash = 索引文件哈希值无效!模组包作者应该再次运行 packwiz refresh
39+
umFailedDeleteFile = 无法删除从索引中移除的文件
40+
umDeletedFile = 已删除 {0}(从模组包中移除)
41+
umComparingNewFiles = 比较新文件...
42+
umIndexEmpty = 索引是空的!
43+
umSideChanged = 服务器/客户端侧已更改,重新处理所有模组
44+
umReconfigureOptionalQuestion = 重新配置可选模组?
45+
umInterruptedDownloadTask = 接受下载任务时发生中断
46+
umFailedDownloadTask = 执行下载任务失败
47+
umFailedDownload = 下载 {0} 失败:{1}
48+
umTaskStatePending = {0} 待处理(您不应该看到此消息...)
49+
umTaskStateDownloaded = 已下载 {0}
50+
unTaskStateAlreadyExistsCached = {0} 已存在(内容已缓存)
51+
umTaskStateAlreadyExistsValidated = {0} 已存在(内容有效)
52+
umTaskStateSkippedDisabled = 跳过 {0}(被禁用)
53+
umTaskStateSkippedWrongSide = 跳过 {0}(服务器/客户端侧不对应)
54+
umTaskStateDeletedDisabled = 删除 {0}(被禁用)
55+
umTaskStateDeletedWrongSide = 删除 {0}(服务器/客户端侧不对应)
56+
umValidatingExistingFiles = 验证现有文件...
57+
umResolvingCurseforgeMetadata = 解析 CurseForge 元数据...
58+
umUpdateCancelledUser = 用户取消更新!
59+
umUpdateCancelledUserStartGame = 用户取消更新!继续启动游戏...
60+
1561
continueNoInstall = 在不安装的情况下继续
1662
continueNoUpdate = 在不更新的情况下继续
1763
noOptionalModsDesc = 此模组包没有可选模组!

src/main/java/link/infra/packwiz/installer/RequiresBootstrap.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,31 @@
11
package link.infra.packwiz.installer;
22

3+
import de.comahe.i18n4k.I18n4kKt;
4+
import de.comahe.i18n4k.config.I18n4kConfigDefault;
5+
36
import javax.swing.*;
47
import java.util.Arrays;
8+
import java.util.Locale;
9+
import java.util.Map;
10+
import java.util.stream.Collectors;
511

612
public class RequiresBootstrap {
713

814
public static void main(String[] args) {
915
// Very small CLI implementation, because Commons CLI complains on unexpected
1016
// options
17+
18+
// Set up i18n4k
19+
I18n4kConfigDefault i18nConfig = new I18n4kConfigDefault();
20+
I18n4kKt.setI18n4k(i18nConfig);
21+
Map<String, Locale> availLanguages = Msgs.INSTANCE.getLocales()
22+
.stream().collect(Collectors.toMap(Locale::toString, locale -> locale));
23+
String preferLanguage = Locale.getDefault().toString();
24+
while (!availLanguages.containsKey(preferLanguage) && preferLanguage.contains("_")) {
25+
preferLanguage = preferLanguage.substring(0, preferLanguage.lastIndexOf('_'));
26+
}
27+
i18nConfig.setLocale(availLanguages.getOrDefault(preferLanguage, Locale.ENGLISH));
28+
1129
if (Arrays.stream(args).map(str -> {
1230
if (str == null) return "";
1331
if (str.startsWith("--")) {

src/main/kotlin/link/infra/packwiz/installer/LauncherUtils.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,18 @@ class LauncherUtils internal constructor(private val opts: UpdateManager.Options
3030
try {
3131
JsonParser.parseReader(it)
3232
} catch (e: JsonIOException) {
33-
throw Exception("Cannot read the MultiMC pack file", e)
33+
throw Exception(Msgs.umInvalidMultiMCIO(), e)
3434
} catch (e: JsonSyntaxException) {
35-
throw Exception("Invalid MultiMC pack file", e)
35+
throw Exception(Msgs.umInvalidMultiMCSyntax(), e)
3636
}.asJsonObject
3737
}
3838

39-
Log.info("Loaded MultiMC config")
39+
Log.info(Msgs.umLoadedMultiMC())
4040

4141
// We only support format 1, if it gets updated in the future we'll have to handle that
4242
// There's only version 1 for now tho, so that's good
4343
if (multimcManifest["formatVersion"]?.asInt != 1) {
44-
throw Exception("Unsupported MultiMC format version ${multimcManifest["formatVersion"]}")
44+
throw Exception(Msgs.umUnsupportedMultiMCVersion(multimcManifest["formatVersion"]))
4545
}
4646

4747
var manifestModified = false
@@ -67,7 +67,7 @@ class LauncherUtils internal constructor(private val opts: UpdateManager.Options
6767
val modLoadersClasses = modLoaders.entries.associate{(k,v)-> v to k}
6868
val loaderVersionsFound = HashMap<String, String?>()
6969
val outdatedLoaders = mutableSetOf<String>()
70-
val components = multimcManifest["components"]?.asJsonArray ?: throw Exception("Invalid mmc-pack.json: no components key")
70+
val components = multimcManifest["components"]?.asJsonArray ?: throw Exception(Msgs.umInvalidMultiMCNoComponent())
7171
components.removeAll {
7272
val component = it.asJsonObject
7373

@@ -130,7 +130,7 @@ class LauncherUtils internal constructor(private val opts: UpdateManager.Options
130130
}
131131

132132
manifestPath.nioPath.writeText(gson.toJson(multimcManifest))
133-
Log.info("Successfully updated mmc-pack.json based on version metadata")
133+
Log.info(Msgs.umUpdatedMultiMC())
134134

135135
return LauncherStatus.SUCCESSFUL
136136
}

src/main/kotlin/link/infra/packwiz/installer/Main.kt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
package link.infra.packwiz.installer
44

5+
import de.comahe.i18n4k.config.I18n4kConfigDefault
6+
import de.comahe.i18n4k.i18n4k
57
import link.infra.packwiz.installer.target.Side
68
import link.infra.packwiz.installer.target.path.HttpUrlPath
79
import link.infra.packwiz.installer.target.path.PackwizFilePath
@@ -19,6 +21,9 @@ import java.awt.EventQueue
1921
import java.awt.GraphicsEnvironment
2022
import java.net.URI
2123
import java.nio.file.Paths
24+
import java.util.*
25+
import java.util.function.Function
26+
import java.util.stream.Collectors
2227
import javax.swing.JOptionPane
2328
import javax.swing.UIManager
2429
import kotlin.system.exitProcess
@@ -29,6 +34,22 @@ class Main(args: Array<String>) {
2934
private var guiEnabled = !GraphicsEnvironment.isHeadless()
3035

3136
private fun startup(args: Array<String>) {
37+
38+
39+
// Very small CLI implementation, because Commons CLI complains on unexpected
40+
// options
41+
42+
// Set up i18n4k
43+
val i18nConfig = I18n4kConfigDefault()
44+
i18n4k = i18nConfig
45+
val availLanguages = Msgs.locales
46+
.stream().collect(Collectors.toMap({ obj: Locale -> obj.toString() }, { locale: Locale? -> locale }))
47+
var preferLanguage = Locale.getDefault().toString()
48+
while (!availLanguages.containsKey(preferLanguage) && preferLanguage.contains("_")) {
49+
preferLanguage = preferLanguage.substring(0, preferLanguage.lastIndexOf('_'))
50+
}
51+
i18nConfig.locale = availLanguages.getOrDefault(preferLanguage, Locale.ENGLISH)!!
52+
3253
val options = Options()
3354
addNonBootstrapOptions(options)
3455
addBootstrapOptions(options)

0 commit comments

Comments
 (0)