aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-11-18 00:31:09 +0800
committershedaniel <daniel@shedaniel.me>2021-11-18 00:31:09 +0800
commit0ad79cc5f5460cda2184d7be22e19fda187d07ba (patch)
tree30669519686853c208a157dc343c66659979faa4
parent57f59e7da8ae83f1ad952e410601409eecf2e1c4 (diff)
downloadRoughlyEnoughItems-0ad79cc5f5460cda2184d7be22e19fda187d07ba.tar.gz
RoughlyEnoughItems-0ad79cc5f5460cda2184d7be22e19fda187d07ba.tar.bz2
RoughlyEnoughItems-0ad79cc5f5460cda2184d7be22e19fda187d07ba.zip
Properly credit translators
-rw-r--r--fabric/src/main/java/me/shedaniel/rei/impl/client/gui/credits/fabric/CreditsScreenImpl.java69
-rw-r--r--fabric/src/main/resources/fabric.mod.json83
-rw-r--r--forge/src/main/java/me/shedaniel/rei/impl/client/gui/credits/forge/CreditsScreenImpl.java34
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsScreen.java63
-rwxr-xr-xruntime/src/main/resources/assets/roughlyenoughitems/lang/en_us.json11
-rw-r--r--runtime/src/main/resources/assets/roughlyenoughitems/lang/fr_fr.json15
-rw-r--r--runtime/src/main/resources/assets/roughlyenoughitems/lang/he_il.json6
-rw-r--r--runtime/src/main/resources/assets/roughlyenoughitems/lang/pt_br.json13
-rw-r--r--runtime/src/main/resources/assets/roughlyenoughitems/lang/pt_pt.json114
-rw-r--r--runtime/src/main/resources/assets/roughlyenoughitems/lang/zh_cn.json11
-rw-r--r--runtime/src/main/resources/assets/roughlyenoughitems/lang/zh_hk.json25
-rw-r--r--runtime/src/main/resources/assets/roughlyenoughitems/lang/zh_tw.json11
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