CN1-激活CSS后无法使用本地化

时间:2019-04-02 01:10:12

标签: localization codenameone

最近,我通过“ CN1首选项”对话框从传统的CSS集成切换为使用当前的CSS支持方法。从那时起,我就反复遇到从本地化资源文件访问字符串的问题。

一些要点:

  • 我有两个主题文件,但是即使将字符串作为csv文件导入到css生成的主题中也没用
  • 我尝试了将主题初始化与两个主题文件进行所有可能的组合,包括仅对其中一个进行初始化,但未获得一致的成功(有时会奏效,但是如果我修改CSS并重新生成主题文件,它将停止再次工作)
  • 我创建了一个全新的项目,并将我的代码复制到其中,导入了字符串文件,然后它开始工作-直到我启用CSS支持。然后我回到了第一广场
  • 当它无法正常工作时,方法UIManager.getL10NResourceNames()返回一个空数组

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

CSS控制文件,因此您不能再通过其他方式更改theme.res文件。您需要保留一个单独的localization.res文件,并严格按照应用程序的本地化功能对其进行加载。您可以使用Resources.open("/localization.res")加载任意资源文件。

答案 1 :(得分:0)

经过一番摸索,我找到了解决方案。事实证明,我的情况是我所做的一些非标准操作的结果。首先,我有一个theme.res文件,我使用IntelliJ的Refactor >> Rename函数对其进行了重命名,该函数将build.xml文件中的硬编码的CSS主题名称重命名为我的新名称。我需要手动还原该字符串,以防止css编译任务覆盖主题文件。我注意到的第二件事是,有时(我不清楚是什么原因造成的)在本地运行应用程序时,主题文件没有在/out目录中刷新。例如,当我在主题文件中添加图像时,这种情况就会显现出来,但是在运行代码时,它将无法在Resources哈希表中找到它。每次发生这种情况时,我现在都知道只删除/out的内容,从而迫使IDE重建/重新复制主题文件(我可以将其手动复制到/out目录中,但是我认为删除它是最安全的。)