Лучший способ динамически перечислять доступные файлы перевода, расположенные в JAR - PullRequest
0 голосов
/ 25 октября 2018

Я новый сопровождающий Java-приложения с открытым исходным кодом, которое было "заброшено".Изначально приложение было только для пользователей Windows, я пытаюсь создать порт OSX, но у меня возникает проблема

Существует папка, содержащая файлы перевода (свойств).При первом запуске приложение перечисляет все файлы свойств в папке ресурсов и составляет из нее список.Затем пользователь может выбрать язык приложения из этого списка.

До сих пор приложение поддерживалось только для Windows, и оно работало хорошо, поскольку папка ресурсов не была включена в Jar.Приложение OSx связывает всю папку ресурсов в jar приложения, и существующий код не работает.Я не могу найти способ сканирования папки ресурсов, расположенной в банке.

Мне интересно, может ли кто-нибудь помочь мне найти исправление или сориентировать меня на другой подход:

  1. возможно сохранитьсписок доступных языков во время сборки в отдельном файле.Я думаю, это можно автоматизировать с помощью Gradle.
  2. жестко закодировать список доступных языков (не совсем чистый и подверженный сбоям, если я забыл обновить список, когда файлы свойств добавляются или удаляются)
  3. найти способ восстановить сканирование или папку, входящую в комплект jar

Я использую Gradle в качестве системы сборки

1 Ответ

0 голосов
/ 01 ноября 2018

Я наконец-то выбрал вариант 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}
           }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...