代码之家  ›  专栏  ›  技术社区  ›  akasolace

动态列出JAR中可用翻译文件的最佳方法

  •  0
  • akasolace  · 技术社区  · 6 年前

    有一个包含翻译(属性)文件的文件夹。 首次启动时,应用程序会列出资源文件夹中的所有属性文件,并从中列出一个列表。然后用户可以从列表中选择应用程序语言。

    OSX应用程序捆绑了应用程序jar中的所有资源文件夹,而现有的代码不起作用。我找不到扫描jar中的资源文件夹的方法。

    我想知道是否有人能帮我找到一个解决方法或引导我采取另一种方法:

    1. 可能将生成时可用语言的列表保存在专用文件中。我想可以通过Gradle实现自动化。
    2. 对可用语言的列表进行硬编码(如果在添加或删除属性文件时忘记更新列表,则可能不太干净并崩溃)
    3. 找到恢复jar中绑定的扫描或文件夹的方法

    我用Gradle作为构建系统

    1 回复  |  直到 6 年前
        1
  •  0
  •   akasolace    6 年前

    我最后选择了选项1,执行下面的任务,在配置文件中列出可用的语言。 然后我的java代码在执行时简单地读取配置文件。

    task createLanguageFileList()  {
    
        def lTranslationFiles = []
        fileTree(dir: "${projectDir}\\src\\main\\resources\\translations", include: '**/*.properties').visit {
            FileVisitDetails details -> lTranslationFiles << details.file.name
        }
    
        doLast {
                lTranslationFiles = lTranslationFiles.collect { it.take(it.lastIndexOf('.'))}
                println lTranslationFiles
                File lstFile = new File("${projectDir}\\src\\main\\resources\\translations\\ListLanguages.txt")
                lstFile.withWriter{ out -> lTranslationFiles.each {out.println it}
               }
    }