【发布时间】:2015-11-06 13:58:11
【问题描述】:
我正在开发应用程序,一切正常。 应用程序假设支持英语和俄语。 英语工作正常,但是当我尝试使用俄语语言环境启动应用程序时,我看到了这个:
https://yadi.sk/i/gj8TOziskGvzf
我从包中加载语言,使用start() 方法:
Locale.setDefault(new Locale("ru", "RU"));
FXMLLoader loader = new FXMLLoader(this.getClass().getResource("view/sample.fxml"));
loader.setResources(ResourceBundle.getBundle("bundles.MyBundle"));
在控制器中:
public class SingleSiteConfiguratorController implements Initializable {
//....
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
this.languageBundle = resourceBundle;
}
//....
// And accessing
private void someMethod() {
String outputDir = languageBundle.getString("choose_output_folder");
}
}
在MyBandle_ru.properties:
#...
choose_output_folder=Выберите папку в которой сгенерируется приложение
#...
怎么了?
【问题讨论】:
-
Java 属性文件must be in the ISO-8859-1 encoding. IDE 倾向于通过将
\u转义符显示为其对应的字符来“隐藏”这一点。唯一确定的方法是在纯文本编辑器中打开它。您可能会发现 JDK 的 native2ascii 工具对创建具有正确转义符的 .properties 文件很有用。 -
@VGR 你是对的。谢谢你。 Intellij 将其保存为 UTF-8(文件->设置>文件编码),我还没有找到转换
*.properties文件的方法。所以我只是使用在线服务来转换native2ascii.net/# 并且它有效。请发布此问题的答案 -
但现在我有另一个问题,有时我会看到这个:
invalid next size (fast): 0x00007f71984bf9b0 ***(如果坚持会发布另一个问题)
标签: java javafx localization