diff options
| author | shedaniel <daniel@shedaniel.me> | 2021-11-18 00:31:09 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2021-11-18 00:31:09 +0800 |
| commit | 0ad79cc5f5460cda2184d7be22e19fda187d07ba (patch) | |
| tree | 30669519686853c208a157dc343c66659979faa4 | |
| parent | 57f59e7da8ae83f1ad952e410601409eecf2e1c4 (diff) | |
| download | RoughlyEnoughItems-0ad79cc5f5460cda2184d7be22e19fda187d07ba.tar.gz RoughlyEnoughItems-0ad79cc5f5460cda2184d7be22e19fda187d07ba.tar.bz2 RoughlyEnoughItems-0ad79cc5f5460cda2184d7be22e19fda187d07ba.zip | |
Properly credit translators
12 files changed, 407 insertions, 48 deletions
diff --git a/fabric/src/main/java/me/shedaniel/rei/impl/client/gui/credits/fabric/CreditsScreenImpl.java b/fabric/src/main/java/me/shedaniel/rei/impl/client/gui/credits/fabric/CreditsScreenImpl.java new file mode 100644 index 000000000..b392bb04c --- /dev/null +++ b/fabric/src/main/java/me/shedaniel/rei/impl/client/gui/credits/fabric/CreditsScreenImpl.java @@ -0,0 +1,69 @@ +/* + * This file is licensed under the MIT License, part of Roughly Enough Items. + * Copyright (c) 2018, 2019, 2020, 2021 shedaniel + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package me.shedaniel.rei.impl.client.gui.credits.fabric; + +import com.google.common.collect.Lists; +import me.shedaniel.rei.impl.client.gui.credits.CreditsScreen; +import net.fabricmc.loader.api.FabricLoader; +import net.fabricmc.loader.api.metadata.CustomValue; +import net.minecraft.util.Tuple; + +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; + +public class CreditsScreenImpl { + public static void fillTranslators(Exception[] exception, List<Tuple<String, List<CreditsScreen.TranslatorEntry>>> translators) { + FabricLoader.getInstance().getModContainer("roughlyenoughitems").ifPresent(rei -> { + try { + if (rei.getMetadata().containsCustomValue("rei:translators")) { + CustomValue.CvObject jsonObject = rei.getMetadata().getCustomValue("rei:translators").getAsObject(); + jsonObject.forEach(entry -> { + CustomValue value = entry.getValue(); + List<CreditsScreen.TranslatorEntry> behind = value.getType() == CustomValue.CvType.ARRAY ? Lists.newArrayList(value.getAsArray().iterator()).stream() + .map(customValue -> { + if (customValue.getType() == CustomValue.CvType.OBJECT) { + CustomValue.CvObject object = customValue.getAsObject(); + // name and proofreader + String name = object.get("name").getAsString(); + boolean proofreader = object.containsKey("proofreader") && object.get("proofreader").getAsBoolean(); + return new CreditsScreen.TranslatorEntry(name, proofreader); + } else { + return new CreditsScreen.TranslatorEntry(customValue.getAsString(), false); + } + }) + .sorted(Comparator.comparing(CreditsScreen.TranslatorEntry::getName, String::compareToIgnoreCase)) + .collect(Collectors.toList()) + : Lists.newArrayList(new CreditsScreen.TranslatorEntry(value.getAsString())); + translators.add(new Tuple<>(entry.getKey(), behind)); + }); + } + translators.sort(Comparator.comparing(Tuple::getA, String::compareToIgnoreCase)); + } catch (Exception e) { + exception[0] = e; + e.printStackTrace(); + } + }); + } +} diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 75b337f06..a3dfb1fcf 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -35,28 +35,81 @@ ], "custom": { "rei:translators": { - "English": ["shedaniel"], - "Japanese": ["swordglowsblue", "hinataaki"], + "English": [ + { + "name": "shedaniel", + "proofreader": true + } + ], + "Japanese": ["swordglowsblue", "hinataaki", "LiuTed", "wolf0023"], "Chinese Simplified": [ "XuyuEre", "shedaniel", "SciUniv_Moring", "Takakura-Anri", "liushuyu", "lkxian17084", "MynameisTT", "detiam", "Snapshot_light", "JerryHan", "WarrenWN", - "Lograthmic" - ], - "Chinese Traditional": ["hugoalh", "gxy17886", "shedaniel", "961111ray"], - "French": ["Yanis48", "Koockies", "dagdar", "samnamstyle123"], - "German": ["MelanX", "guntram7", "tabmeier12", "Siphalor", "M-S-72", "SirClaver", "bugginggg", "wohlhabend", "Eiim", "valoeghese", "luro02"], - "Estonian": ["Madis0"], - "Portuguese": ["thiagokenis", "KewaiiGamer"], - "Portuguese Brazilian": ["thiagokenis", "joaoh1", "yuriob262", "Pinkstyles", "felipemk67", "Stevolaff", "stann0x"], - "LOLCAT": ["shedaniel", "RaxedMC", "lkxian17084"], - "Upside Down English": ["shedaniel", "magnusk28", "scarzdz"], + "Lograthmic", "LiuTed", "judema", "SmallMAZ", "ChengBing", "HCIO", "WeiHengYi" + ], + "Chinese Traditional": [ + "hugoalh", "gxy17886", { + "name": "shedaniel", + "proofreader": true + }, "961111ray", "s36845283", "sileence114" + ], + "Chinese Traditional Hong Kong": [ + { + "name": "shedaniel", + "proofreader": true + }, "timo301105", "Limeboy0603" + ], + "French": [ + "Yanis48", "Koockies", "dagdar", "samnamstyle123", "Hugman76", "AdriaAyl", "schlaft", "YanisBft", "jean.jarno", "Juknum", + "JustSky", "Myuui" + ], + "German": [ + "MelanX", "guntram7", "tabmeier12", "Siphalor", "M-S-72", "SirClaver", "bugginggg", "wohlhabend", "Eiim", "valoeghese", "luro02", "MrPiggo", + "firippukun", "ProManu09", "HeikoHDE", "Slav_Anime_Blin", "maunben", "Mari_023", "cctitan53", "Jummit" + ], + "Estonian": [ + { + "name": "MadisO", + "proofreader": true + } + ], + "Portuguese": ["thiagokenis", "KewaiiGamer", "manuel.canhoto"], + "Portuguese Brazilian": [ + "thiagokenis", "joaoh1", "yuriob262", "Pinkstyles", "felipemk67", "Stevolaff", "stann0x", "_ImKing", "filipesn1512", { + "name": "Maneschy", + "proofreader": true + }, + "zLuket", "MathrusRibeiro0770" + ], + "LOLCAT": [ + { + "name": "shedaniel", + "proofreader": true + }, "RaxedMC", "lkxian17084" + ], + "Upside Down English": [ + { + "name": "shedaniel", + "proofreader": true + }, "magnusk28", "scarzdz" + ], "Bulgarian": ["geniiii", "Dremski"], "Russian": [ + { + "name": "alicecarroll", + "proofreader": true + }, "MrYonter", "kwmika1girl", "LimyChitou", "Great_Manalal", "s3rbug", "TheByKotik", "ebogish", "xqr.", "scarzdz", "JCat", "map788", "kyrtion", "CanslerW", - "MinerChAI", "nef1k" + "MinerChAI", "nef1k", "Romz24", "zhesnyovskyy", "FormerlyAndying", "aiexz", "parkurnic", "axelBaher", "Martden", "CherryBloom" ], - "Polish": ["mikolajkazmierczak", "Piteriuz", "BeetMacol"], + "Polish": ["mikolajkazmierczak", "Piteriuz", "BeetMacol", "Sebuniasty", "agarman12345", "ArtSnail", "K0RR"], "Norwegian": ["CanslerW"], - "Turkish": ["NOYB"] + "Turkish": ["NOYB", "ege_e", "Winnerxl", "MrEnoX"], + "Ukrainian": ["bilchuk.radomyr"], + "Spanish": ["jeremysolis33", "acookienot", "The_Biome", "itzsara200707", "Ekain06", "DEStruyyec", "holakasecabra"], + "Italian": ["luciobortoletto", "b.carmelo.92"], + "Czech": ["stanik123"], + "Danish": ["ChristianLW"], + "Hebrew": ["avivyona", "OddedC"] } } } diff --git a/forge/src/main/java/me/shedaniel/rei/impl/client/gui/credits/forge/CreditsScreenImpl.java b/forge/src/main/java/me/shedaniel/rei/impl/client/gui/credits/forge/CreditsScreenImpl.java new file mode 100644 index 000000000..51a16b539 --- /dev/null +++ b/forge/src/main/java/me/shedaniel/rei/impl/client/gui/credits/forge/CreditsScreenImpl.java @@ -0,0 +1,34 @@ +/* + * This file is licensed under the MIT License, part of Roughly Enough Items. + * Copyright (c) 2018, 2019, 2020, 2021 shedaniel + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package me.shedaniel.rei.impl.client.gui.credits.forge; + +import me.shedaniel.rei.impl.client.gui.credits.CreditsScreen; +import net.minecraft.util.Tuple; + +import java.util.List; + +public class CreditsScreenImpl { + public static void fillTranslators(Exception[] exception, List<Tuple<String, List<CreditsScreen.TranslatorEntry>>> translators) { + } +} diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsScreen.java index 841641c75..7f3d8c77d 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsScreen.java @@ -25,16 +25,19 @@ package me.shedaniel.rei.impl.client.gui.credits; import com.google.common.collect.Lists; import com.mojang.blaze3d.vertex.PoseStack; +import dev.architectury.injectables.annotations.ExpectPlatform; import dev.architectury.platform.Platform; import me.shedaniel.rei.api.common.util.ImmutableTextComponent; import me.shedaniel.rei.impl.client.gui.credits.CreditsEntryListWidget.TextCreditsItem; import me.shedaniel.rei.impl.client.gui.credits.CreditsEntryListWidget.TranslationCreditsItem; +import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.chat.NarratorChatListener; import net.minecraft.client.gui.components.AbstractButton; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.resources.language.I18n; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.util.Tuple; @@ -65,29 +68,32 @@ public class CreditsScreen extends Screen { return super.keyPressed(int_1, int_2, int_3); } + public static class TranslatorEntry { + private final String name; + private final boolean proofreader; + + public TranslatorEntry(String name) { + this(name, false); + } + + public TranslatorEntry(String name, boolean proofreader) { + this.name = name; + this.proofreader = proofreader; + } + + public String getName() { + return name; + } + } + @Override public void init() { addWidget(entryListWidget = new CreditsEntryListWidget(minecraft, width, height, 32, height - 32)); entryListWidget.creditsClearEntries(); - List<Tuple<String, String>> translators = Lists.newArrayList(); + List<Tuple<String, List<TranslatorEntry>>> translators = Lists.newArrayList(); Exception[] exception = {null}; - /*FabricLoader.getInstance().getModContainer("roughlyenoughitems").ifPresent(rei -> { - try { - if (rei.getMetadata().containsCustomValue("rei:translators")) { - CustomValue.CvObject jsonObject = rei.getMetadata().getCustomValue("rei:translators").getAsObject(); - jsonObject.forEach(entry -> { - CustomValue value = entry.getValue(); - String behind = value.getType() == CustomValue.CvType.ARRAY ? Lists.newArrayList(value.getAsArray().iterator()).stream().map(CustomValue::getAsString).sorted(String::compareToIgnoreCase).collect(Collectors.joining(", ")) : value.getAsString(); - translators.add(new Tuple<>(entry.getKey(), behind)); - }); - } - translators.sort(Comparator.comparing(Tuple::getA, String::compareToIgnoreCase)); - } catch (Exception e) { - exception[0] = e; - e.printStackTrace(); - } - });*/ - List<Tuple<String, String>> translatorsMapped = translators.stream().map(pair -> { + fillTranslators(exception, translators); + List<Tuple<String, List<TranslatorEntry>>> translatorsMapped = translators.stream().map(pair -> { return new Tuple<>( " " + (I18n.exists("language.roughlyenoughitems." + pair.getA().toLowerCase(Locale.ROOT).replace(' ', '_')) ? I18n.get("language.roughlyenoughitems." + pair.getA().toLowerCase(Locale.ROOT).replace(' ', '_')) : pair.getA()), pair.getB() @@ -102,8 +108,20 @@ public class CreditsScreen extends Screen { entryListWidget.creditsAddEntry(new TextCreditsItem(new ImmutableTextComponent(" at " + traceElement))); } else { int maxWidth = translatorsMapped.stream().mapToInt(pair -> font.width(pair.getA())).max().orElse(0) + 5; - for (Tuple<String, String> pair : translatorsMapped) { - entryListWidget.creditsAddEntry(new TranslationCreditsItem(new TranslatableComponent(pair.getA()), new TranslatableComponent(pair.getB()), i - maxWidth - 10, maxWidth)); + for (Tuple<String, List<TranslatorEntry>> pair : translatorsMapped) { + MutableComponent text = new TextComponent(""); + boolean isFirst = true; + for (TranslatorEntry entry : pair.getB()) { + if (!isFirst) { + text = text.append(new TextComponent(", ")); + } + isFirst = false; + MutableComponent component = new TextComponent(entry.getName()); + if (entry.proofreader) + component = component.withStyle(ChatFormatting.GOLD); + text = text.append(component); + } + entryListWidget.creditsAddEntry(new TranslationCreditsItem(new TranslatableComponent(pair.getA()), text, i - maxWidth - 10, maxWidth)); } } } else entryListWidget.creditsAddEntry(new TextCreditsItem(new ImmutableTextComponent(line))); @@ -115,6 +133,11 @@ public class CreditsScreen extends Screen { addRenderableWidget(buttonDone = new Button(width / 2 - 100, height - 26, 200, 20, new TranslatableComponent("gui.done"), button -> openPrevious())); } + @ExpectPlatform + private static void fillTranslators(Exception[] exception, List<Tuple<String, List<TranslatorEntry>>> translators) { + throw new AssertionError(); + } + private void openPrevious() { Minecraft.getInstance().setScreen(parent); } diff --git a/runtime/src/main/resources/assets/roughlyenoughitems/lang/en_us.json b/runtime/src/main/resources/assets/roughlyenoughitems/lang/en_us.json index 386f336be..990b82aa0 100755 --- a/runtime/src/main/resources/assets/roughlyenoughitems/lang/en_us.json +++ b/runtime/src/main/resources/assets/roughlyenoughitems/lang/en_us.json @@ -265,6 +265,7 @@ "language.roughlyenoughitems.japanese": "Japanese", "language.roughlyenoughitems.chinese_simplified": "Chinese Simplified", "language.roughlyenoughitems.chinese_traditional": "Chinese Traditional", + "language.roughlyenoughitems.chinese_traditional_hong_kong": "Chinese Traditional, Hong Kong", "language.roughlyenoughitems.french": "French", "language.roughlyenoughitems.german": "German", "language.roughlyenoughitems.estonian": "Estonian", @@ -274,5 +275,13 @@ "language.roughlyenoughitems.upside_down_english": "Upside Down English", "language.roughlyenoughitems.bulgarian": "Bulgarian", "language.roughlyenoughitems.russian": "Russian", - "language.roughlyenoughitems.polish": "Polish" + "language.roughlyenoughitems.polish": "Polish", + "language.roughlyenoughitems.norwegian": "Norwegian", + "language.roughlyenoughitems.turkish": "Turkish", + "language.roughlyenoughitems.ukrainian": "Ukrainian", + "language.roughlyenoughitems.spanish": "Spanish", + "language.roughlyenoughitems.italian": "Italian", + "language.roughlyenoughitems.czech": "Czech", + "language.roughlyenoughitems.danish": "Danish", + "language.roughlyenoughitems.hebrew": "Hebrew" } diff --git a/runtime/src/main/resources/assets/roughlyenoughitems/lang/fr_fr.json b/runtime/src/main/resources/assets/roughlyenoughitems/lang/fr_fr.json index a3e5b974c..5df42f0d9 100644 --- a/runtime/src/main/resources/assets/roughlyenoughitems/lang/fr_fr.json +++ b/runtime/src/main/resources/assets/roughlyenoughitems/lang/fr_fr.json @@ -47,6 +47,8 @@ "text.rei.cheat_items": "Don de {item_count} [{item_name}§f] à {player_name}", "text.rei.failed_cheat_items": "§cImpossible de donner les objets.", "text.rei.too_long_nbt": "§cL'objet NBT est trop long pour être affiché en multijoueur", + "text.rei.tag_match": "Étiquette: %s", + "text.rei.performance": "Analyse des Performances", "ordering.rei.ascending": "Croissant", "ordering.rei.descending": "Décroissant", "ordering.rei.registry": "Registre", @@ -71,6 +73,7 @@ "text.rei.view_all_categories": "Voir toutes les catégories", "text.rei.go_back_first_page": "Retour à la page 1", "text.rei.choose_page": "Choisir une page", + "text.rei.shift_click_to": "Tappez Maj pour %s", "text.rei.gamemode_button.tooltip.dropdown": "Changer de Mode de Jeu : liste déroulante", "text.rei.gamemode_button.tooltip.entry": "Basculer vers %s", "text.rei.weather_button.tooltip.dropdown": "Changer la météo : liste déroulante", @@ -165,6 +168,7 @@ "config.roughlyenoughitems.layout.configButtonLocation": "Position du bouton de configuration :", "config.roughlyenoughitems.layout.configButtonLocation.upper": "Plus haut", "config.roughlyenoughitems.layout.configButtonLocation.lower": "Bas", + "config.roughlyenoughitems.layout.mergeDisplayUnderOne": "Fusionner les Affichages avec des Contenus Equivalents:", "config.roughlyenoughitems.filteredEntries.selectAll": "Tout sélectionner", "config.roughlyenoughitems.filteredEntries.selectNone": "Tout désélectionner", "config.roughlyenoughitems.filteredEntries.hide": "Masquer", @@ -182,13 +186,14 @@ "config.roughlyenoughitems.recipeBorder.default": "Par défaut", "config.roughlyenoughitems.recipeBorder.none": "Aucune", "config.roughlyenoughitems.layout.maxRecipesPerPage": "Maximum de recettes par page :", + "config.roughlyenoughitems.layout.maxRecipesPageHeight": "Hauteur maximale de la page des recettes:", "config.roughlyenoughitems.accessibility.displayPanelLocation": "Position du panneau d'entrée:", "config.roughlyenoughitems.accessibility.displayPanelLocation.left": "Côté gauche", "config.roughlyenoughitems.accessibility.displayPanelLocation.right": "Côté droit", - "config.roughlyenoughitems.search.tooltipSearch": "Recherche par infobulle (#) :", - "config.roughlyenoughitems.search.tagSearch": "Recherche par tag ($) :", + "config.roughlyenoughitems.search.tooltipSearch": "Recherche d'Infobulles (#) :", + "config.roughlyenoughitems.search.tagSearch": "Recherche de Tags ($) :", "config.roughlyenoughitems.search.identifierSearch": "Recherche par identifiant (*) :", - "config.roughlyenoughitems.search.modSearch": "Recherche par mod (@) :", + "config.roughlyenoughitems.search.modSearch": "Recherche de Mods (@) :", "config.roughlyenoughitems.search_mode.always": "Toujours activé", "config.roughlyenoughitems.search_mode.prefix": "En utilisant un préfix", "config.roughlyenoughitems.search_mode.never": "Toujours désactivé", @@ -233,6 +238,10 @@ "config.roughlyenoughitems.scrollingEntryListWidget.boolean.false": "Pagination", "config.roughlyenoughitems.horizontalEntriesBoundaries": "Bordures d'entrées horizontales", "config.roughlyenoughitems.verticalEntriesBoundaries": "Bordures d'entrée verticales", + "config.roughlyenoughitems.horizontalEntriesBoundariesColumns": "Limite de Colonnes des entrées:", + "config.roughlyenoughitems.verticalEntriesBoundariesRows": "Limite de Lignes d'Entrées:", + "config.roughlyenoughitems.favoritesHorizontalEntriesBoundaries": "Frontières Horizontales Favorites:", + "config.roughlyenoughitems.favoritesHorizontalEntriesBoundariesColumns": "Limite des Colonnes Favorites:", "config.roughlyenoughitems.syntaxHighlightingMode": "Mode de coloration syntaxique :", "config.roughlyenoughitems.syntaxHighlightingMode.config": "%s", "config.roughlyenoughitems.syntaxHighlightingMode.plain": "Texte brut", diff --git a/runtime/src/main/resources/assets/roughlyenoughitems/lang/he_il.json b/runtime/src/main/resources/assets/roughlyenoughitems/lang/he_il.json index 7a0ad52c7..d2109ed41 100644 --- a/runtime/src/main/resources/assets/roughlyenoughitems/lang/he_il.json +++ b/runtime/src/main/resources/assets/roughlyenoughitems/lang/he_il.json @@ -39,11 +39,13 @@ "text.rei.config_tooltip": "פתח מסך קונפיגורציה\n§7תחזיק Shift או Ctrl ותלחץ כדי להפעיל / לכבות מצב רמאות", "text.rei.cheat_items": "ניתן [{item_name}§f] x{item_count} ל {player_name}.", "text.rei.failed_cheat_items": "§cנכשל לתת פריטים.", + "text.rei.tag_match": "טאג: %s", "ordering.rei.ascending": "עולה", "ordering.rei.descending": "יורד", "ordering.rei.name": "שם", "ordering.rei.item_groups": "קבוצות פריטים", "text.auto_craft.move_items": "הזז פריטים", + "text.auto_craft.move_items.yog": "צור NullPointerExeption!!", "error.rei.transfer.too_small": "לא אפשרי להזיז פריטים ל משטח %dx%d.", "error.rei.not.on.server": "REI לא מותקן על השרת.", "error.rei.not.enough.materials": "לא מספיק חומרים.", @@ -60,7 +62,10 @@ "text.rei.view_all_categories": "הצג את כל הקטגוריות", "text.rei.go_back_first_page": "חזור לעמוד 1", "text.rei.choose_page": "בחר עמוד", + "text.rei.shift_click_to": "תחזיק שיפט ותלחץ בשביל %s", + "text.rei.gamemode_button.tooltip.dropdown": "החלף מצב משחק: תפריט", "text.rei.gamemode_button.tooltip.entry": "העבר ל%s", + "text.rei.weather_button.tooltip.dropdown": "החלף מזג אוויר: תפריט", "text.rei.weather_button.tooltip.entry": "העבר ל%s", "text.rei.reload_config": "טען מחדש פלאגינים", "text.rei.config.is.reloading": "פלאגינים נטענים מחדש!", @@ -83,6 +88,7 @@ "text.rei.favorites_tooltip": "§7תלחץ על %s כדי להוסיף את זה לרשימת הפריטים השמורים.", "text.rei.remove_favorites_tooltip": "§7תלחץ על %s כדי להסיר את זה מרשימת הפריטים השמורים.", "text.rei.working_station": "שולחן עבודה", + "text.rei.release_export": "תעזוב %s כדי להוציא", "text.rei.recipe_id": "%sזהות מתכון: %s", "text.rei.recipe_screen_type.selection": "בחירת סוג מסך מתכון", "text.rei.recipe_screen_type.selection.sub": "אתה יכול תמיד לשנות את ההגדרה הזאת ממסך הקונפיגורציה.", diff --git a/runtime/src/main/resources/assets/roughlyenoughitems/lang/pt_br.json b/runtime/src/main/resources/assets/roughlyenoughitems/lang/pt_br.json index 313b7ff36..730240531 100644 --- a/runtime/src/main/resources/assets/roughlyenoughitems/lang/pt_br.json +++ b/runtime/src/main/resources/assets/roughlyenoughitems/lang/pt_br.json @@ -47,6 +47,8 @@ "text.rei.cheat_items": "{player_name} recebeu {item_count} unidade(s) de [{item_name}§f].", "text.rei.failed_cheat_items": "§cFalha ao obter itens.", "text.rei.too_long_nbt": "§cO NBT do item é longo demais para ser aplicado ao modo multijogador.", + "text.rei.tag_match": "Marcação: %s", + "text.rei.performance": "Análise de desempenho", "ordering.rei.ascending": "Crescente", "ordering.rei.descending": "Descrescente", "ordering.rei.registry": "Registro", @@ -71,6 +73,7 @@ "text.rei.view_all_categories": "Ver todas as categorias", "text.rei.go_back_first_page": "Voltar ao começo", "text.rei.choose_page": "Escolher página", + "text.rei.shift_click_to": "Clique + Shift para %s", "text.rei.gamemode_button.tooltip.dropdown": "Alterar modo de jogo: Dropdown", "text.rei.gamemode_button.tooltip.entry": "Mudar para %s", "text.rei.weather_button.tooltip.dropdown": "Alterar tempo: Dropdown", @@ -165,6 +168,7 @@ "config.roughlyenoughitems.layout.configButtonLocation": "Posição dos botões de definições:", "config.roughlyenoughitems.layout.configButtonLocation.upper": "Superior", "config.roughlyenoughitems.layout.configButtonLocation.lower": "Inferior", + "config.roughlyenoughitems.layout.mergeDisplayUnderOne": "Unir visores de conteúdo idêntico:", "config.roughlyenoughitems.filteredEntries.selectAll": "Selecionar tudo", "config.roughlyenoughitems.filteredEntries.selectNone": "Desmarcar todos", "config.roughlyenoughitems.filteredEntries.hide": "Ocultar selecionados", @@ -182,6 +186,7 @@ "config.roughlyenoughitems.recipeBorder.default": "Padrão", "config.roughlyenoughitems.recipeBorder.none": "Nenhum", "config.roughlyenoughitems.layout.maxRecipesPerPage": "Máximo de receitas por página:", + "config.roughlyenoughitems.layout.maxRecipesPageHeight": "Altura máxima da página de receitas:", "config.roughlyenoughitems.accessibility.displayPanelLocation": "Posição do painel de entradas", "config.roughlyenoughitems.accessibility.displayPanelLocation.left": "Esquerdo", "config.roughlyenoughitems.accessibility.displayPanelLocation.right": "Direito", @@ -193,6 +198,7 @@ "config.roughlyenoughitems.search_mode.prefix": "Ao usar prefixo", "config.roughlyenoughitems.search_mode.never": "Sempre desativado", "config.roughlyenoughitems.layout.debugRenderTimeRequired": "Depuração do painel de entradas:", + "config.roughlyenoughitems.search.debugSearchTimeRequired": "Modo de busca por depuração:", "config.roughlyenoughitems.accessibility.resizeDynamically": "Escala dinâmica:", "config.roughlyenoughitems.layout.searchFieldLocation": "Posição do campo de busca:", "config.roughlyenoughitems.layout.searchFieldLocation.bottom_side": "Inferior esq./Direita", @@ -205,12 +211,14 @@ "config.roughlyenoughitems.disableRecipeBook.boolean.true": "§cNão", "config.roughlyenoughitems.disableRecipeBook.boolean.false": "§aSim", "config.roughlyenoughitems.fixTabCloseContainer": "Corrigir o contêiner de guias padrão (livro de receitas desativado):", + "config.roughlyenoughitems.lighterButtonHover": "Cursor mínimo do botão:", "config.roughlyenoughitems.layout.enableCraftableOnlyButton": "Filtro (fabricáveis):", "config.roughlyenoughitems.layout.showUtilsButtons": "Botões utilitários:", "config.roughlyenoughitems.commands.gamemodeCommand": "Comando do modo de jogo:", "config.roughlyenoughitems.commands.giveCommand": "Comando Give:", "config.roughlyenoughitems.miscellaneous.loadDefaultPlugin": "Carregar plug-in padrão:", "config.roughlyenoughitems.miscellaneous.loadDefaultPlugin.boolean.false": "§cNão (perigoso)", + "config.roughlyenoughitems.miscellaneous.registerRecipesInAnotherThread": "Thread de recarga:", "config.roughlyenoughitems.miscellaneous.registerRecipesInAnotherThread.boolean.true": "Thread do REI", "config.roughlyenoughitems.miscellaneous.registerRecipesInAnotherThread.boolean.false": "§cThread de pacote", "config.roughlyenoughitems.commands.weatherCommand": "Comando do tempo:", @@ -223,12 +231,17 @@ "config.roughlyenoughitems.search.searchFavorites": "Filtro de busca nos favoritos:", "config.roughlyenoughitems.tooltips.appendModNames": "Incluir nomes de mods:", "config.roughlyenoughitems.tooltips.displayFavoritesTooltip": "Incluir dicas aos favoritos:", + "config.roughlyenoughitems.accessibility.snapToRows": "Linhas de troca de entradas:", "config.roughlyenoughitems.accessibility.toastDisplayedOnCopyIdentifier": "Copiar toast:", "config.roughlyenoughitems.scrollingEntryListWidget": "Formato da lista de entradas:", "config.roughlyenoughitems.scrollingEntryListWidget.boolean.true": "Rolagem", "config.roughlyenoughitems.scrollingEntryListWidget.boolean.false": "Páginas", "config.roughlyenoughitems.horizontalEntriesBoundaries": "Limites de entradas horizontais:", "config.roughlyenoughitems.verticalEntriesBoundaries": "Limites das entradas verticais:", + "config.roughlyenoughitems.horizontalEntriesBoundariesColumns": "Limite de colunas de entradas:", + "config.roughlyenoughitems.verticalEntriesBoundariesRows": "Limite de linhas de entradas:", + "config.roughlyenoughitems.favoritesHorizontalEntriesBoundaries": "Limites horizontais dos favoritos:", + "config.roughlyenoughitems.favoritesHorizontalEntriesBoundariesColumns": "Limite de colunas dos favoritos:", "config.roughlyenoughitems.syntaxHighlightingMode": "Modo de destaque da sintaxe:", "config.roughlyenoughitems.syntaxHighlightingMode.config": "%s", "config.roughlyenoughitems.syntaxHighlightingMode.plain": "Simples", diff --git a/runtime/src/main/resources/assets/roughlyenoughitems/lang/pt_pt.json b/runtime/src/main/resources/assets/roughlyenoughitems/lang/pt_pt.json index 95f15cc57..d5a8a6403 100644 --- a/runtime/src/main/resources/assets/roughlyenoughitems/lang/pt_pt.json +++ b/runtime/src/main/resources/assets/roughlyenoughitems/lang/pt_pt.json @@ -1,11 +1,18 @@ { - "text.rei.cheating": "Trapaça", - "text.rei.cheating_disabled": "§7Trapaças desativada", - "text.rei.cheating_enabled": "§cTrapaças ativada", - "text.rei.cheating_limited_enabled": "§bTrapaças ativada (usando comandos)", - "text.rei.cheating_enabled_no_perms": "§7Trapaças §cativada §7(sem permissão)", + "text.rei.cheating": "Batotas", + "text.rei.cheating_disabled": "§7Batotas desativadas", + "text.rei.cheating_enabled": "§cBatotas ativadas", + "text.rei.cheating_limited_enabled": "§bBatotas ativada (usando comandos)", + "text.rei.cheating_enabled_no_perms": "§7Batotas §cativada §7(sem permissão)", + "text.rei.cheating_limited_creative_enabled": "§bBatotas ativada (usando comandos)", "text.rei.no_permission_cheat": "Permissões de operador são necessárias para obter itens", "text.rei.search.field.suggestion": "Pesquisar...", + "text.rei.feedback": "Algum comentário que você gostaria de dar ao desenvolvedor do REI? %s para enviar seu feedback!", + "text.rei.feedback.link": "Clique aqui para visitar o Formulário Google", + "text.rei.not.fully.initialized": "REI ainda não foi totalmente inicializado!", + "text.rei.not.fully.initialized.tooltip": "Estágios ausentes: %s\nSe isso não acabar,\ntente procurar suporte com os logs!", + "text.rei.inventory.highlighting.enabled": "Destaque do inventário Ligado", + "text.rei.inventory.highlighting.enabled.tooltip": "Isso torna os slots que não correspondem ao filtro de pesquisa em cinza.\nClique duas vezes na barra de pesquisa para alternar este modo.", "category.rei.crafting": "Fabricação", "category.rei.smelting": "Fundição", "category.rei.smelting.fuel": "Combustível", @@ -35,6 +42,7 @@ "text.rei.config_tooltip": "Abrir menu de configuração\n§7Shift-Clique para alternar modo trapaça", "text.rei.cheat_items": "Entregado [{item_name}§f] x{item_count} para {player_name}.", "text.rei.failed_cheat_items": "§cFalha ao obter itens.", + "text.rei.performance": "Análise de Performance", "ordering.rei.ascending": "Crescente", "ordering.rei.descending": "Descrescente", "ordering.rei.registry": "Registro", @@ -59,6 +67,9 @@ "text.rei.view_all_categories": "Visualizar todas as categorias", "text.rei.go_back_first_page": "Retornar para página 1", "text.rei.choose_page": "Escolhar página", + "text.rei.gamemode_button.tooltip.entry": "Mudar para %s", + "text.rei.weather_button.tooltip.dropdown": "Alternar Tempo: Dropdown", + "text.rei.weather_button.tooltip.entry": "Mudar para %s", "text.rei.reload_config": "Recarregar Plugins", "text.rei.config.is.reloading": "Os plugins estão recarregando!", "text.rei.enabled": "Sim", @@ -80,17 +91,36 @@ "text.rei.favorites_tooltip": "§7Pressione %s para adicionar aos favoritos.", "text.rei.remove_favorites_tooltip": " \n§7Pressione %s para remover dos favoritos.", "text.rei.working_station": "Estação de trabalho", + "text.rei.release_export": "Solte %s para exportar", "text.rei.recipe_id": "\n%sID de receita: %s", "text.rei.recipe_screen_type.selection": "Seleção do tipo do menu de receitas", "text.rei.recipe_screen_type.selection.sub": "Você sempre pode editar essa opção denovo através do menu de configuração.", + "text.rei.jei_compat": "Camada de Compatibilidade JEI", + "text.rei.jei_compat.false": "Camada de Compatibilidade JEI: Desativada", + "text.rei.jei_compat.true": "Camada de Compatibilidade JEI: Ativada", + "text.rei.jei_compat.sub": "Deseja ativar a camada de compatibilidade JEI %s§7?\n§7Isso permitiria carregar plugins JEI a partir destas fontes:\n%s\n\n§7No entanto, REI não é perfeita, e as questões podem prevalecer.\n§cUSE EM SEU PRÓPRIO RISCO!", "text.rei.view_recipes_for": "Ver receitas para %s", + "text.rei.subsets": "Sub-conjuntos", + "text.rei.add_favorite_widget": "Adicionar...", + "favorite.section.gamemode": "Modo de jogo", + "favorite.section.weather": "Clima", "tooltip.rei.fluid_amount": "§7%d Unidade(s)", + "tooltip.rei.drag_to_add_favorites": "§7Arraste isso para cima para adicionar aos seus favoritos!", "msg.rei.copied_recipe_id": "Copiado Identificador de Receita", "msg.rei.recipe_i |
