gpt4 book ai didi

java - 设计一个可移植到多种语言的 GUI

转载 作者:行者123 更新时间:2023-12-02 12:14:20 25 4
gpt4 key购买 nike

我目前正在为一个项目开发 java swing GUI。用户界面需要采用我不知道的多种语言(英语、德语、法语等)。有人建议我使用配置文件来存储所有文本,以便翻译人员可以在项目完成后进行翻译,而无需重新编译。这样做的额外好处是能够在完成后更改文本和添加语言,而且我还可以在此处放置一些 UI 配置,以便它更易于配置。经过一番思考后,我意识到这会非常慢,因为每次 GUI 更改时我都需要执行文件 IO。我如何设计一个 GUI,以便我仍然可以让外行人在没有我的情况下翻译它,但不会减慢程序速度?

最佳答案

确实有很多方法可以做到这一点,但如果您想自己编写,这里有一种可能的实现。

遵循ISO 639 language codes ,您通常会有一个如下所示的资源目录:

resources/
languages/
en/
strings.conf
de/
strings.conf

然后,当您的应用程序首次加载时,您将 get the users default language ,然后加载相应的语言文件;文件应该只从磁盘加载一次,然后保存在内存中。您可以使用类似下面的内容,并通过保留 LanguageLoader 的实例,您可以调用 .getStringById() 并按名称加载 key 。

public class LanguageLoader() {

final HashMap<String, String> localizedStrings;

public LanguageLoader(String language) {

localizedStrings = new HashMap<String, String>();

File f = new File( "languages/" + language + "/strings.conf" );

// TODO read file line by line and add key / value pairs to hash map
}

public String getStringById( String stringId ) {

return localizedString.get(stringId);
}
}

在您的应用程序中

String languagePack = Locale.getDefault();

LanguageLoader localization = new LanguageLoader(languagePack);

String inAnyLanguage = localization.getStringById("welcome_001");

您的语言文件由以下部分组成

en/strings.conf
welcome_001=Hello World!

de/strings.conf
welcome_001=Hallo Welt!

关于java - 设计一个可移植到多种语言的 GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46306854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com