diff --git a/resources/lang/az-AZ.yml b/resources/lang/az-AZ.yml index b583f218b2..dce91c43e7 100644 --- a/resources/lang/az-AZ.yml +++ b/resources/lang/az-AZ.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: english author: ElgarL website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/bg-BG.yml b/resources/lang/bg-BG.yml index 0b4ff58e75..743cb26e1e 100644 --- a/resources/lang/bg-BG.yml +++ b/resources/lang/bg-BG.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: english author: ElgarL website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/cs-CZ.yml b/resources/lang/cs-CZ.yml index af0b90c519..6373dbb64d 100644 --- a/resources/lang/cs-CZ.yml +++ b/resources/lang/cs-CZ.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: english author: ElgarL website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/da-DK.yml b/resources/lang/da-DK.yml index 7b496b63e9..29154a6a0d 100644 --- a/resources/lang/da-DK.yml +++ b/resources/lang/da-DK.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: dansk author: LifeOnEarth website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/de-DE.yml b/resources/lang/de-DE.yml index 9bd18b3c35..a560ab888d 100644 --- a/resources/lang/de-DE.yml +++ b/resources/lang/de-DE.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: german author: ElgarL, translated by Articdive, Wolf2323, BlocK, Yasu-San and enterih website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/en-US.yml b/resources/lang/en-US.yml index 490e9ba3b0..a08d15b718 100644 --- a/resources/lang/en-US.yml +++ b/resources/lang/en-US.yml @@ -1,5 +1,4 @@ name: Towny -version: 0.155 language: english author: ElgarL website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/es-419.yml b/resources/lang/es-419.yml index 36f9d22072..c9a64e1463 100644 --- a/resources/lang/es-419.yml +++ b/resources/lang/es-419.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.150 language: es-419 author: VreyaViress, EuGNosii website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/es-AR.yml b/resources/lang/es-AR.yml index e405c0c2e7..5b2092b5c4 100644 --- a/resources/lang/es-AR.yml +++ b/resources/lang/es-AR.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: spanish author: Seruhio, Alvarote1998, Beelzebu, ElMoha943, Ngzhiwei website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/es-CL.yml b/resources/lang/es-CL.yml index 2374ed6641..2b138478ca 100644 --- a/resources/lang/es-CL.yml +++ b/resources/lang/es-CL.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: es-cl author: GNosii website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/es-EC.yml b/resources/lang/es-EC.yml index 24d8d4680e..fbc525ab5b 100644 --- a/resources/lang/es-EC.yml +++ b/resources/lang/es-EC.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: spanish author: Seruhio, Alvarote1998, Beelzebu, ElMoha943, Ngzhiwei website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/es-ES.yml b/resources/lang/es-ES.yml index 89b7e83930..035af8f812 100644 --- a/resources/lang/es-ES.yml +++ b/resources/lang/es-ES.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: spanish author: Seruhio, Alvarote1998, Beelzebu, ElMoha943, Ngzhiwei website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/es-MX.yml b/resources/lang/es-MX.yml index 24d8d4680e..fbc525ab5b 100644 --- a/resources/lang/es-MX.yml +++ b/resources/lang/es-MX.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: spanish author: Seruhio, Alvarote1998, Beelzebu, ElMoha943, Ngzhiwei website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/es-UY.yml b/resources/lang/es-UY.yml index 24d8d4680e..fbc525ab5b 100644 --- a/resources/lang/es-UY.yml +++ b/resources/lang/es-UY.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: spanish author: Seruhio, Alvarote1998, Beelzebu, ElMoha943, Ngzhiwei website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/es-VE.yml b/resources/lang/es-VE.yml index 24d8d4680e..fbc525ab5b 100644 --- a/resources/lang/es-VE.yml +++ b/resources/lang/es-VE.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: spanish author: Seruhio, Alvarote1998, Beelzebu, ElMoha943, Ngzhiwei website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/fr-FR.yml b/resources/lang/fr-FR.yml index f24a12d015..fb075ca588 100644 --- a/resources/lang/fr-FR.yml +++ b/resources/lang/fr-FR.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: french author: Noiknez,TheCalypso,Cidalex,Mitsu,ARNPIK,Dzious,PainOchoco website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/he-IL.yml b/resources/lang/he-IL.yml index 681bc75f03..f20b3cb356 100644 --- a/resources/lang/he-IL.yml +++ b/resources/lang/he-IL.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: english author: ElgarL website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/id-ID.yml b/resources/lang/id-ID.yml index 0fba212e1f..98ee2a4c5a 100644 --- a/resources/lang/id-ID.yml +++ b/resources/lang/id-ID.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: Indonesian author: ElgarL website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/it-IT.yml b/resources/lang/it-IT.yml index 28ebecc3d9..8de3bf027b 100644 --- a/resources/lang/it-IT.yml +++ b/resources/lang/it-IT.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: italian author: Leonardo_DGS website: 'https://townyadvanced.github.io/' diff --git a/resources/lang/ja-JP.yml b/resources/lang/ja-JP.yml index e619f56392..b280895f5e 100644 --- a/resources/lang/ja-JP.yml +++ b/resources/lang/ja-JP.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: english author: ElgarL website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/ko-KR.yml b/resources/lang/ko-KR.yml index 4018be5e4b..2b052cf421 100644 --- a/resources/lang/ko-KR.yml +++ b/resources/lang/ko-KR.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: 한국어 author: Daybreak 새벽 website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/nl-NL.yml b/resources/lang/nl-NL.yml index f54d681ae4..140570a180 100644 --- a/resources/lang/nl-NL.yml +++ b/resources/lang/nl-NL.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: Dutch author: ElgarL website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/no-NO.yml b/resources/lang/no-NO.yml index 897e180554..10092ff32b 100644 --- a/resources/lang/no-NO.yml +++ b/resources/lang/no-NO.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: norwegian author: Nectuz, Walbern website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/pl-PL.yml b/resources/lang/pl-PL.yml index 6af3bf3feb..226e3800cf 100644 --- a/resources/lang/pl-PL.yml +++ b/resources/lang/pl-PL.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: polish author: ElgarL website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/pt-BR.yml b/resources/lang/pt-BR.yml index 03043e83fd..41c115e7fb 100644 --- a/resources/lang/pt-BR.yml +++ b/resources/lang/pt-BR.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: português (Brasil) author: BannerGames, Plugner website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/pt-PT.yml b/resources/lang/pt-PT.yml index 49d9caf5fd..2a939b697d 100644 --- a/resources/lang/pt-PT.yml +++ b/resources/lang/pt-PT.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: english author: ElgarL website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/ro-RO.yml b/resources/lang/ro-RO.yml index 37b501c2d1..aad7d11312 100644 --- a/resources/lang/ro-RO.yml +++ b/resources/lang/ro-RO.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: Romanian author: ElgarL website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/ru-RU.yml b/resources/lang/ru-RU.yml index 2d39c226e1..62396d8a27 100644 --- a/resources/lang/ru-RU.yml +++ b/resources/lang/ru-RU.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: русский author: ElgarL (Plugin developer), Communar, Egor33345 (Russian Translation) website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/sr-CS.yml b/resources/lang/sr-CS.yml index c653ac20ba..8081aee8ff 100644 --- a/resources/lang/sr-CS.yml +++ b/resources/lang/sr-CS.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: english author: ElgarL website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/sv-SE.yml b/resources/lang/sv-SE.yml index 8f884bcea6..c15795b3fc 100644 --- a/resources/lang/sv-SE.yml +++ b/resources/lang/sv-SE.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: swedish author: ElgarL website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/th-TH.yml b/resources/lang/th-TH.yml index 08e9f2e79d..2dd72702f8 100644 --- a/resources/lang/th-TH.yml +++ b/resources/lang/th-TH.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: english author: ElgarL website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/tl-PH.yml b/resources/lang/tl-PH.yml index 98f8ce743f..46bfd0e870 100644 --- a/resources/lang/tl-PH.yml +++ b/resources/lang/tl-PH.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: english author: ElgarL website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/tr-TR.yml b/resources/lang/tr-TR.yml index 95e7d4ef48..f1a4eb529e 100644 --- a/resources/lang/tr-TR.yml +++ b/resources/lang/tr-TR.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: Turkish author: ElgarL website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/uk-UA.yml b/resources/lang/uk-UA.yml index 904397b01e..42877bf510 100644 --- a/resources/lang/uk-UA.yml +++ b/resources/lang/uk-UA.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: english author: ElgarL website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/vi-VN.yml b/resources/lang/vi-VN.yml index ea69d22184..cc3d4efb31 100644 --- a/resources/lang/vi-VN.yml +++ b/resources/lang/vi-VN.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: english author: ElgarL website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/zh-CN.yml b/resources/lang/zh-CN.yml index f90cf8b2b3..bc08178c5e 100644 --- a/resources/lang/zh-CN.yml +++ b/resources/lang/zh-CN.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: Chinese author: ElgarL website: 'http://townyadvanced.github.io/' diff --git a/resources/lang/zh-TW.yml b/resources/lang/zh-TW.yml index 3ea3f91d7a..6291933804 100644 --- a/resources/lang/zh-TW.yml +++ b/resources/lang/zh-TW.yml @@ -1,6 +1,5 @@ --- name: Towny -version: 0.155 language: zh-TW author: ElgarL website: 'http://townyadvanced.github.io/' diff --git a/src/com/palmergames/bukkit/towny/object/TranslationLoader.java b/src/com/palmergames/bukkit/towny/object/TranslationLoader.java index 3a6c6cbb10..9086c6864d 100644 --- a/src/com/palmergames/bukkit/towny/object/TranslationLoader.java +++ b/src/com/palmergames/bukkit/towny/object/TranslationLoader.java @@ -1,16 +1,17 @@ package com.palmergames.bukkit.towny.object; +import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; import java.net.URI; import java.net.URISyntaxException; import java.nio.file.FileAlreadyExistsException; import java.nio.file.FileSystem; import java.nio.file.FileSystems; import java.nio.file.Files; -import java.nio.file.NoSuchFileException; import java.nio.file.Path; import java.nio.file.StandardCopyOption; import java.util.Collections; @@ -20,10 +21,11 @@ import java.util.Map; import java.util.Set; import java.util.logging.Level; +import java.util.stream.Collectors; +import java.util.stream.Stream; import org.apache.commons.compress.utils.FileNameUtils; import org.bukkit.plugin.Plugin; -import org.jetbrains.annotations.Nullable; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.SafeConstructor; @@ -125,12 +127,12 @@ void loadTranslationsIntoMemory() { // Load bundled language files for (String lang : getLangFileNamesFromPlugin()) { try (InputStream is = clazz.getResourceAsStream("/lang/" + lang + ".yml")) { - if (is == null) { + if (is == null) throw new TownyInitException("Could not find " + "'/lang/" + lang + ".yml'" + " in the JAR", TownyInitException.TownyError.LOCALIZATION); - } + Map values = new Yaml(new SafeConstructor()).load(is); - saveReferenceFile(values.get("version"), lang); + saveReferenceFile(lang); lang = lang.replace("-", "_"); // Locale#toString uses underscores instead of dashes if (!newTranslations.containsKey(lang)) @@ -153,11 +155,11 @@ private Set getLangFileNamesFromPlugin() { final URI uri; try { uri = clazz.getResource("").toURI(); - final FileSystem fs = FileSystems.newFileSystem(uri, Collections.emptyMap()); - Files.list(fs.getRootDirectories().iterator().next().resolve("/lang")) - .filter(p -> TownySettings.isLanguageEnabled(FileNameUtils.getBaseName(p.toString().replace("-", "_")))) - .forEach(p -> lang.add(FileNameUtils.getBaseName(p.toString()))); - fs.close(); + + try (final FileSystem fs = FileSystems.newFileSystem(uri, Collections.emptyMap()); Stream stream = Files.list(fs.getRootDirectories().iterator().next().resolve("/lang"))) { + stream.filter(p -> TownySettings.isLanguageEnabled(FileNameUtils.getBaseName(p.toString().replace("-", "_")))) + .forEach(p -> lang.add(FileNameUtils.getBaseName(p.toString()))); + } } catch (URISyntaxException | IOException e) { e.printStackTrace(); } @@ -167,13 +169,9 @@ private Set getLangFileNamesFromPlugin() { /** * Saves a copy of the language file for admin reference. * - * @param currentVersion Object what will be the version number of the lang file. * @param lang String locale and file name to be used for the reference file. */ - private void saveReferenceFile(@Nullable Object currentVersion, String lang) { - if (currentVersion == null) - return; - + private void saveReferenceFile(String lang) { // Resolves langfolder/reference/whatever_language.yml Path langPath = langFolderPath.resolve("reference").resolve(lang + ".yml"); // Files.copy takes care of the creation of lang.yml AS LONG AS the parent directory exists @@ -181,28 +179,18 @@ private void saveReferenceFile(@Nullable Object currentVersion, String lang) { // Get the resource try (InputStream resource = clazz.getResourceAsStream("/lang/" + lang + ".yml")) { + if (resource == null) + return; - if (resource == null) { - throw new TownyInitException("Could not find " + "'/lang/" + lang + ".yml'" + " in the JAR.", TownyInitException.TownyError.LOCALIZATION); - } + try (BufferedReader br = new BufferedReader(new InputStreamReader(resource)); Stream lines = Files.lines(langPath)) { + String string = br.lines().collect(Collectors.joining("\n")); - // Check the existing lang file for the version, and if necessary, replace it. - try (InputStream is = Files.newInputStream(langPath)) { - Map values = new Yaml(new SafeConstructor()).load(is); - if (values == null || (double) currentVersion != (double) values.get("version")) { - is.close(); - // Remove the old reference file. - langPath.toFile().delete(); - // Copy resource to location. - Files.copy(resource, langPath); - } - } catch (NoSuchFileException e) { - // We haven't got this file in the reference folder yet. - Files.copy(resource, langPath); + // If the contents of the jar's lang file don't match the saved reference file's contents, replace the contents. + if (!string.equals(lines.collect(Collectors.joining("\n")))) + FileMgmt.writeString(langPath, string); } - resource.close(); } catch (IOException e) { - throw new TownyInitException("Failed to copy " + "'/lang/" + lang + ".yml'" + " from the JAR to '" + langPath + " during a langauge file update.'", TownyInitException.TownyError.LOCALIZATION, e); + plugin.getLogger().warning("Failed to copy " + "'/lang/" + lang + ".yml'" + " from the JAR to '" + langPath.toAbsolutePath() + " during a language file update.'"); } } diff --git a/src/com/palmergames/util/FileMgmt.java b/src/com/palmergames/util/FileMgmt.java index 0a51f64a62..ccf27f538f 100644 --- a/src/com/palmergames/util/FileMgmt.java +++ b/src/com/palmergames/util/FileMgmt.java @@ -19,6 +19,7 @@ import java.io.OutputStreamWriter; import java.nio.charset.StandardCharsets; import java.nio.file.Files; +import java.nio.file.Path; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; @@ -460,4 +461,9 @@ public static void savePlotData(PlotBlockData data, File file, String path) { } } + public static void writeString(Path path, String string) throws IOException { + try (FileOutputStream fos = new FileOutputStream(path.toFile())) { + fos.write(string.getBytes(StandardCharsets.UTF_8)); + } + } }