【发布时间】:2019-04-30 06:58:14
【问题描述】:
当我在资源内的项目中添加一个新属性文件并将其命名为例如“lang1”时,BUNDLE_NAME 被正确识别。
但是,如果我添加一个包含 lang2_de 和 lang2_en 的 ResourceBundle 并尝试将其基本名称用作 BUNDLE_NAME,它会向我显示以下错误“无效的资源包引用 'lang2'。
所以我基本上有 3 个文件。
- lang1_de.properties
- lang2_de.properties
- lang2_en.properties
lang2 与“'base name' = lang2”捆绑到一个资源包中
这适用于 kotlin:
private const val BUNDLE_NAME = "lang1"
fun foo(@PropertyKey(resourceBundle = BUNDLE_NAME) key: String): String {
return key
}
这不是:
private const val BUNDLE_NAME = "lang2"
fun foo(@PropertyKey(resourceBundle = BUNDLE_NAME) key: String): String {
return key
}
但是如果我用 java 做同样的事情,它就可以工作......
private static final String BUNDLE_NAME = "lang2";
public static void foo(@PropertyKey(resourceBundle = BUNDLE_NAME) String key) {
return key;
}
我这样做是为了获取有关在我的代码中使用的属性的信息。
两个示例的属性文件中的属性均已正确标记。
但是对于 lang2,代码中使用的字符串都显示有检查错误“字符串文字'testprop'似乎不是有效的属性键......”
我还在 JetBrains/java-annotations 中为此创建了一个问题:
https://github.com/JetBrains/java-annotations/issues/13
【问题讨论】:
标签: java intellij-idea kotlin annotations