Skip to content

Commit 49e773a

Browse files
author
Jia Liu
committed
feat: support Chinese in UI
1 parent 941e993 commit 49e773a

File tree

4 files changed

+204
-1
lines changed

4 files changed

+204
-1
lines changed

src/main/kotlin/cc/unitmesh/devti/AutoDevBundle.kt

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package cc.unitmesh.devti
22

3+
import cc.unitmesh.devti.settings.AutoDevSettingsState
34
import com.intellij.DynamicBundle
45
import org.jetbrains.annotations.NonNls
56
import org.jetbrains.annotations.PropertyKey
7+
import java.lang.invoke.MethodHandles
8+
import java.util.*
69

710
@NonNls
811
private const val BUNDLE = "messages.AutoDevBundle"
@@ -16,4 +19,33 @@ object AutoDevBundle : DynamicBundle(BUNDLE) {
1619
@JvmStatic
1720
fun messagePointer(@PropertyKey(resourceBundle = BUNDLE) key: String, vararg params: Any) =
1821
getLazyMessage(key, *params)
22+
23+
override fun findBundle(
24+
@NonNls pathToBundle: String,
25+
loader: ClassLoader,
26+
control: ResourceBundle.Control
27+
): ResourceBundle {
28+
val base = super.findBundle(pathToBundle, loader, control)
29+
// load your bundle from baseName_<language>.properties, e.g. "baseName_zh.properties"
30+
val localizedPath = pathToBundle + "_" + AutoDevSettingsState.language
31+
val localeBundle = super.findBundle(
32+
localizedPath,
33+
AutoDevBundle::class.java.getClassLoader(), control
34+
)
35+
if (base != localeBundle) {
36+
setParent(localeBundle, base)
37+
return localeBundle
38+
}
39+
return base
40+
}
41+
private fun setParent(localeBundle: ResourceBundle, base: ResourceBundle) {
42+
try {
43+
val method = ResourceBundle::class.java.getDeclaredMethod("setParent", ResourceBundle::class.java)
44+
method.isAccessible = true
45+
MethodHandles.lookup().unreflect(method).bindTo(localeBundle).invoke(base)
46+
} catch (e: Throwable) {
47+
// ignored, better handle this in production code
48+
}
49+
}
50+
1951
}

src/main/kotlin/cc/unitmesh/devti/settings/AutoDevSettingsState.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,12 @@ class AutoDevSettingsState : PersistentStateComponent<AutoDevSettingsState> {
5656

5757
fun fetchMaxTokenLength(): Int = maxTokenLength.toIntOrNull() ?: MAX_TOKEN_LENGTH
5858

59+
fun fetchLocalLanguage() : String {
60+
//todo: refactor, this is hardcode and magic number. Maybe it needs to match with AbstractBundle.getLocale()
61+
if (language.equals("中文")) return "zh"
62+
return "en"
63+
}
64+
5965
@Synchronized
6066
override fun getState(): AutoDevSettingsState = this
6167

@@ -64,6 +70,7 @@ class AutoDevSettingsState : PersistentStateComponent<AutoDevSettingsState> {
6470

6571
companion object {
6672
val maxTokenLength: Int get() = getInstance().fetchMaxTokenLength()
73+
val language: String get() = getInstance().fetchLocalLanguage()
6774

6875
fun getInstance(): AutoDevSettingsState {
6976
return ApplicationManager.getApplication().getService(AutoDevSettingsState::class.java).state

src/main/resources/messages/AutoDevBundle.properties renamed to src/main/resources/messages/AutoDevBundle_en.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name=AutoDev
1+
name=AutoDevEn
22

33
# chat panel
44
autodev.loading=Loading
Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
name=AutoDevZh
2+
3+
name=AutoDev英文
4+
5+
# 聊天面板
6+
autodev.loading=加载中
7+
autodev.chat=AutoDev聊天框
8+
autodev.crud=自动CRUD
9+
10+
chat.panel.send=发送
11+
chat.panel.new=新聊天
12+
chat.panel.replaceSelection=替换选择
13+
chat.panel.initial.text='输入' 开始,'Shift+Enter' 新行
14+
chat.too.long.user.message=消息长度太长,为{0}个标记
15+
16+
intention.category.llm=AutoDev
17+
intentions.write.action=生成代码
18+
intentions.assistant.name=AutoDev AI 自动操作
19+
intentions.assistant.popup.title=AutoDev AI 助手
20+
21+
intentions.chat.code.test.step.prepare-context=准备上下文
22+
intentions.chat.code.test.step.collect-context=收集提示上下文
23+
intentions.chat.code.complete.name=代码补全
24+
intentions.chat.code.complete.family.name=代码补全
25+
intentions.chat.code.test.name=测试此代码
26+
intentions.chat.code.test.family.name=测试此代码
27+
intentions.chat.new.family.name=带代码的新聊天
28+
intentions.crud.new.name=使用此生成CRUD
29+
intentions.crud.new.family.name=使用此生成CRUD
30+
intentions.chat.selected.code.name=使用此代码聊天
31+
intentions.chat.selected.fragment.name=与 {0} 片段聊天
32+
intentions.chat.selected.element.name=与 ''{0}'' {1} 聊天
33+
intentions.companion.api.name=与 API 对话
34+
intentions.companion.api.family.name=AutoDev:与 API 对话
35+
intentions.living.documentation.name=生成文档
36+
intentions.living.documentation.family.name=生成文档
37+
intentions.request.background.process.title=您的 LLM 正在处理您的请求
38+
39+
autodev.custom.response.format.placeholder=使用 JSON 路径,例如:`$.choices[0].delta.content`
40+
autodev.custom.prompt.placeholder=在此处自定义提示
41+
autodev.custom.intentions.family=自定义意图
42+
43+
tooltip.thanks=感谢您的支持,但我们不支持此项
44+
label.submit.issue=<a href="https://github.com/unit-mesh/auto-dev/issues">想要新功能?</a>
45+
46+
# 请勿删除以下行,也不要重命名它们,除非更改 [LLMSettingCompoent] 类
47+
settings.languageParam=语言
48+
settings.customOpenAIHostParam=自定义 OpenAI 主机
49+
settings.openAIKeyParam=OpenAI API 密钥
50+
settings.customEngineTokenParam=自定义引擎令牌
51+
settings.openAIModelsParam=OpenAI 模型
52+
settings.gitTypeParam=Git 类型
53+
settings.gitLabUrlParam=Gitlab 服务器 URL
54+
settings.gitLabTokenParam=Gitlab 令牌
55+
settings.gitHubTokenParam=GitHub 令牌
56+
settings.maxTokenLengthParam=最大标记长度
57+
settings.customEngineServerParam=自定义引擎服务器
58+
settings.customAIKeyParam=自定义 AI 引擎密钥
59+
settings.aiEngineParam=AI 引擎
60+
settings.xingHuoApiKeyParam=星火 API 密钥
61+
settings.xingHuoApiSecretParam=星火 API 密钥
62+
settings.xingHuoAppIDParam=星火 App ID
63+
settings.xingHuoApiVersionParam=星火 API 版本
64+
settings.customModelParam=自定义模型
65+
66+
settings.delaySecondsParam=请求延迟秒数
67+
settings.customEngineResponseFormatParam=自定义响应格式(Json 路径)
68+
settings.customEngineResponseTypeParam=自定义响应类型
69+
settings.customEngineRequestBodyFormatParam=自定义请求主体格式(Json)
70+
settings.customEngineRequestHeaderFormatParam=自定义请求头格式(Json)
71+
settings.external.counit.enable.label=启用 CoUnit(实验性)
72+
settings.external.counit.enable.label.comment=https://github.com/unit-mesh/co-unit
73+
settings.external.counit.location.label=CoUnit 位置(待办,使用 JSON RPC):
74+
settings.external.counit.server.address.label=CoUnit 服务器地址:
75+
devti.loading=加载中
76+
77+
counit.agent.name=自定义代理
78+
counit.agent.enable.label=启用自定义代理(实验性)
79+
counit.agent.location.label=自定义 RAG 位置(使用 JSON RPC,待办):
80+
counit.agent.server.address.label=自定义代理服务器
81+
counit.agent.custom.rag.label=自定义代理(实验性)
82+
counit.agent.json.placeholder=自定义代理 JSON 配置
83+
84+
group.DevOpsGenius.NewActions.text=SRE Genius (AutoDev)
85+
action.new.genius.dockerfile=生成 Dockerfile
86+
action.new.genius.cicd.github=生成 GitHub Actions
87+
88+
settings.external.team.prompts.path=团队提示路径
89+
settings.external.team.prompts.name=团队提示
90+
91+
settings.autodev.coder=AutoDev 编码器
92+
settings.autodev.coder.recordingInLocal=本地记录说明
93+
settings.autodev.coder.disableAdvanceContext=禁用高级上下文
94+
settings.autodev.coder.disableAdvanceContext.tips=如框架上下文、语言上下文等
95+
settings.autodev.coder.inEditorCompletion=编辑器中的完成
96+
settings.autodev.coder.noChatHistory=没有聊天记录
97+
settings.autodev.coder.explainCode=解释代码
98+
settings.autodev.coder.refactorCode=重构代码
99+
settings.autodev.coder.fixIssueCode=修复问题
100+
settings.autodev.coder.generateTest=生成测试
101+
settings.autodev.coder.useCustomerAgentWhenInlayCodeComplete=使用客户端代理
102+
settings.autodev.coder.delaySecondsParam=请求延迟秒数
103+
settings.autodev.coder.maxTokenLengthParam=最大标记长度
104+
settings.autodev.coder.customEngineResponseTypeParam=自定义响应类型
105+
settings.autodev.coder.customEngineResponseFormatParam=自定义响应格式(Json 路径)
106+
settings.autodev.coder.customEngineRequestBodyFormatParam=自定义请求主体格式(Json)
107+
settings.autodev.coder.customEngineServerParam=自定义引擎服务器
108+
settings.autodev.coder.customEngineTokenParam=自定义引擎令牌
109+
settings.autodev.coder.customEnginePrompt=自定义引擎提示(Json)
110+
111+
settings.welcome.message=欢迎使用 AutoDev
112+
settings.welcome.feature.context=精确的上下文感知代码生成和聊天
113+
settings.welcome.feature.lifecycle=全生命周期设计、开发和测试的 DevOps
114+
settings.welcome.feature.custom.action=自定义个人提示和团队 AI
115+
settings.welcome.feature.custom.agent=与企业 AI 平台集成 AI 代理
116+
settings.welcome.feature.features=<a href="https://ide.unitmesh.cc/">了解更多</a>
117+
118+
# 状态栏
119+
autodev.statusbar.name=AutoDev 状态栏
120+
autodev.statusbar.toolTipText=AutoDev
121+
autodev.statusbar.popup.title=AutoDev 状态栏
122+
autodev.statusbar.id=autodev.statusBarPopup
123+
autodev.directory.completion.description=AutoDev自定义提示
124+
125+
# 模板
126+
action.AutoDev.NewPromptTemplate.text=AutoDev 提示
127+
128+
# PL/SQL
129+
migration.database.plsql=PL/SQL 迁移
130+
migration.database.plsql.generate.function=生成函数
131+
migration.database.plsql.generate.unittest=生成单元测试
132+
migration.database.plsql.generate.entity=生成实体
133+
134+
# 自动 CRUD
135+
autocrud.settings.storyId=故事 ID
136+
autocrud.settings.githubRepo=GitHub 项目(所有者/仓库)
137+
autocrud.progress.creatingStory=处理故事详细信息(1/5)
138+
autocrud.generatingDtoAndEntity=创建 DTO 和实体(2/5)
139+
autocrud.progress.fetchingSuggestEndpoint=获取建议的端点(控制器)(3/5)
140+
autocrud.progress.updatingEndpointMethod=更新端点(控制器)方法(4/5)
141+
autocrud.progress.creatingServiceAndRepository=创建服务和存储库(5/5)
142+
143+
# 自动 SQL
144+
autosql.name=AutoSQL
145+
autosql.generate=生成 SQL
146+
autosql.generate.clarify=澄清要求
147+
autosql.generate.generate=生成 SQL
148+
149+
# 自动页面
150+
autopage.generate=前端生成
151+
autopage.generate.name=AutoPage 生成
152+
autopage.generate.clarify=澄清要求
153+
autopage.generate.design=设计页面
154+
155+
# AutoArkUi
156+
autoarkui.name=AutoArkUi
157+
autoarkui.generate=自动生成 ArkUI
158+
autoarkui.generate.clarify=澄清要求
159+
autoarkui.generate.design=设计页面
160+
161+
# Inlay
162+
intentions.chat.inlay.complete.name = 补全代码(建议模式)
163+
intentions.chat.inlay.complete.family.name = 补全代码(建议模式)
164+
progress.run.task=正在运行任务

0 commit comments

Comments
 (0)