Skip to content

Commit 149ac46

Browse files
ExaxxionNotMyWing
andauthored
Implement Localization Support for Singularities (#13)
Fixes #12 It is now possible to translate both the default Singularities and custom Singularities via lang files. Translation strings have been added for the default materials in both the en_us and ru_ru locales. Thanks to @NotMyWing for verifying the existing and supplying new Russian translations. Custom Singularity lang entries will require the use of a helper mod such as ResourceLoader. Materials without a defined translation will default to the material name converted to Title Case, e.g.: lots_of_spaghetti => Lots Of Spaghetti * Bump dependency versions * Add Resource Loader to dev runtime to support localization Co-authored-by: NotMyWing <[email protected]>
1 parent fcabe0e commit 149ac46

File tree

5 files changed

+122
-19
lines changed

5 files changed

+122
-19
lines changed

build.gradle

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,12 @@ repositories {
7373

7474
dependencies {
7575
deobfCompile "mezz.jei:jei_1.12.2:4.16.1.301:api"
76-
runtime "mezz.jei:jei_1.12.2:4.16.1.301"
77-
deobfCompile "CraftTweaker2:CraftTweaker2-MC1120-Main:1.12-4.1.20.655"
76+
runtime "mezz.jei:jei_1.12.2:4.16.1.301"
77+
runtime "curse.maven:resource-loader:2477566"
78+
deobfCompile "CraftTweaker2:CraftTweaker2-MC1120-Main:1.12-4.1.20.660"
7879
deobfCompile "curse.maven:cucumber:2645867"
7980
deobfCompile "curse.maven:hwyla:2568751"
80-
deobfCompile "curse.maven:packagedauto:3214216"
81+
deobfCompile "curse.maven:packagedauto:3418955"
8182
deobfCompile "curse.maven:pexc:3214400"
8283
deobfCompile "gregtechce:gregtech:1.12.2:1.17.0.764"
8384
deobfCompile "codechicken-lib-1-8:CodeChickenLib-1.12.2:3.2.3.358:universal"

src/main/java/com/blakebr0/extendedcrafting/item/ItemSingularity.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.blakebr0.cucumber.helper.ResourceHelper;
44
import com.blakebr0.cucumber.iface.IEnableable;
55
import com.blakebr0.cucumber.item.ItemMeta;
6-
import com.blakebr0.cucumber.util.Utils;
76
import com.blakebr0.extendedcrafting.ExtendedCrafting;
87
import com.blakebr0.extendedcrafting.config.ModConfig;
98
import com.blakebr0.extendedcrafting.crafting.CompressorRecipeManager;
@@ -13,12 +12,12 @@
1312
import net.minecraft.item.Item;
1413
import net.minecraft.item.ItemStack;
1514
import net.minecraft.item.crafting.Ingredient;
15+
import net.minecraft.util.text.translation.I18n;
1616
import net.minecraftforge.client.model.ModelLoader;
1717
import net.minecraftforge.common.config.Configuration;
1818
import net.minecraftforge.common.config.Property;
1919
import net.minecraftforge.common.crafting.CraftingHelper;
2020
import net.minecraftforge.fml.common.registry.ForgeRegistries;
21-
import org.apache.commons.lang3.text.WordUtils;
2221

2322
import java.util.Arrays;
2423
import java.util.HashMap;
@@ -37,8 +36,12 @@ public ItemSingularity() {
3736

3837
@Override
3938
public String getItemStackDisplayName(ItemStack stack) {
40-
String name = items.containsKey(stack.getMetadata()) ? items.get(stack.getMetadata()).getName().replace("_", " ") : "Dummy";
41-
return WordUtils.capitalize(name) + " " + Utils.localize("item.ec.singularity.name");
39+
String localizedMaterialName = "Invalid";
40+
if (items.containsKey(stack.getMetadata())) {
41+
String materialName = items.get(stack.getMetadata()).getName();
42+
localizedMaterialName = I18n.translateToLocal("item.ec.singularity." + materialName);
43+
}
44+
return I18n.translateToLocalFormatted("item.ec.singularity.name", localizedMaterialName);
4245
}
4346

4447
@Override

src/main/java/com/blakebr0/extendedcrafting/item/ItemSingularityCustom.java

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import com.blakebr0.cucumber.iface.IEnableable;
55
import com.blakebr0.cucumber.iface.IModelHelper;
66
import com.blakebr0.cucumber.item.ItemMeta;
7-
import com.blakebr0.cucumber.util.Utils;
87
import com.blakebr0.extendedcrafting.ExtendedCrafting;
98
import com.blakebr0.extendedcrafting.config.ModConfig;
109
import com.blakebr0.extendedcrafting.crafting.CompressorRecipeManager;
@@ -14,6 +13,7 @@
1413
import net.minecraft.item.ItemStack;
1514
import net.minecraft.item.crafting.Ingredient;
1615
import net.minecraft.util.ResourceLocation;
16+
import net.minecraft.util.text.translation.I18n;
1717
import net.minecraftforge.client.model.ModelLoader;
1818
import net.minecraftforge.common.config.ConfigCategory;
1919
import net.minecraftforge.common.config.Configuration;
@@ -39,8 +39,19 @@ public ItemSingularityCustom() {
3939

4040
@Override
4141
public String getItemStackDisplayName(ItemStack stack) {
42-
String name = items.containsKey(stack.getMetadata()) ? items.get(stack.getMetadata()).getName().replace("_", " ") : "Dummy";
43-
return WordUtils.capitalize(name) + " " + Utils.localize("item.ec.singularity.name");
42+
String localizedMaterialName = "Invalid";
43+
int meta = stack.getMetadata();
44+
if (items.containsKey(meta)) {
45+
String materialName = items.get(meta).getName();
46+
String assumedTranslationKey = "item.ec.singularity." + materialName;
47+
48+
// Try to translate it using lang files
49+
if(I18n.canTranslate(assumedTranslationKey))
50+
localizedMaterialName = I18n.translateToLocal(assumedTranslationKey);
51+
else // fallback to capitalized version of the registration name
52+
localizedMaterialName = WordUtils.capitalize(materialName.replaceAll("_"," "));
53+
}
54+
return I18n.translateToLocalFormatted("item.ec.singularity.name", localizedMaterialName);
4455
}
4556

4657
@Override
@@ -63,7 +74,11 @@ public void configure(Configuration config) {
6374
+ "\n- Note: you can also specify meta for item ids, by adding them to the end of the item id."
6475
+ "\n- Example: minecraft:stone:3 for a meta of 3. Make the meta 32767 for wildcard value."
6576
+ "\n- 'color' the color of the singularity as a hex value. http://htmlcolorcodes.com/"
66-
+ "\n- Example: 123456 would color it as whatever that color is.");
77+
+ "\n- Example: 123456 would color it as whatever that color is."
78+
+ "\n - Use the localization key \"item.ec.singularity.<name>\" to set the name of your custom Singularity."
79+
+ "\n - Example: item.ec.singularity.carrot=Carrot in your resources/extendedcrafting/lang/en_us.lang"
80+
+ "\n - and item.ec.singularity.carrot=морковь in your resources/extendedcrafting/lang/ru_ru.lang"
81+
+ "\n - Note however that you will need a way to load these resources, such as the mod ResourceLoader.");
6782

6883
for (String value : values) {
6984
String[] parts = value.split(";");

src/main/resources/assets/extendedcrafting/lang/en_us.lang

Lines changed: 48 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,6 @@ item.ec.handheld_table.name=Handheld Crafting Table
8686

8787
item.ec.recipe_maker.name=Recipe Maker
8888

89-
item.ec.singularity.name=Singularity
90-
item.ec.singularity_ultimate.name=The Ultimate Singularity
91-
9289
# CONTAINERS
9390
container.ec.crafting_core=Crafting Core
9491
container.ec.interface=Automation Interface
@@ -200,4 +197,51 @@ guide.entry.interface.page.3=The <red>Automation Interface<r> also has some auto
200197
guide.entry.interface.page.4=<b>Smart Insert:<r> the interface will not allow <red>Auto Insert<r> to insert items into the <red>input<r> slot that can't be inserted into the table.
201198

202199
guide.entry.singularity=Singularities
203-
guide.entry.singularity.page.1=<b>Singularities<r> are highly compressed materials. These are <i>usually<r> created using a <red>Quantum Compressor<r>. <n><n>Crafting all of the available singularities together in an <red>Ultimate Crafting Table<r> will reward you with <red>The Ultimate Singularity<r>.
200+
guide.entry.singularity.page.1=<b>Singularities<r> are highly compressed materials. These are <i>usually<r> created using a <red>Quantum Compressor<r>. <n><n>Crafting all of the available singularities together in an <red>Ultimate Crafting Table<r> will reward you with <red>The Ultimate Singularity<r>.
201+
202+
item.ec.singularity.name=%s Singularity
203+
item.ec.singularity_ultimate.name=The Ultimate Singularity
204+
205+
## Default Singularity Item Names
206+
207+
# Singularity Localizations - Vanilla Materials
208+
item.ec.singularity.coal=Coal
209+
item.ec.singularity.iron=Iron
210+
item.ec.singularity.lapis_lazuli=Lapis Lazuli
211+
item.ec.singularity.redstone=Redstone
212+
item.ec.singularity.glowstone=Glowstone
213+
item.ec.singularity.gold=Gold
214+
item.ec.singularity.diamond=Diamond
215+
item.ec.singularity.emerald=Emerald
216+
217+
#Default Singularities - Common Mod Materials
218+
item.ec.singularity.aluminum=Aluminum
219+
item.ec.singularity.brass=Brass
220+
item.ec.singularity.bronze=Bronze
221+
item.ec.singularity.chrome=Chrome
222+
item.ec.singularity.constantan=Constantan
223+
item.ec.singularity.copper=Copper
224+
item.ec.singularity.electrum=Electrum
225+
item.ec.singularity.invar=Invar
226+
item.ec.singularity.iridium=Iridium
227+
item.ec.singularity.lead=Lead
228+
item.ec.singularity.mithril=Mithril
229+
item.ec.singularity.nickel=Nickel
230+
item.ec.singularity.platinum=Platinum
231+
item.ec.singularity.silver=Silver
232+
item.ec.singularity.steel=Steel
233+
item.ec.singularity.tin=Tin
234+
item.ec.singularity.titanium=Titanium
235+
item.ec.singularity.tungsten=Tungsten
236+
item.ec.singularity.uranium=Uranium
237+
item.ec.singularity.zinc=Zinc
238+
239+
# Default Singularities - Thermal Expansion Alloys
240+
item.ec.singularity.enderium=Enderium
241+
item.ec.singularity.lumium=Lumium
242+
item.ec.singularity.signalum=Signalum
243+
244+
# Default Singularities - Tinkers' Construct Materials
245+
item.ec.singularity.ardite=Ardite
246+
item.ec.singularity.cobalt=Cobalt
247+
item.ec.singularity.manyullyn=Manyullyn

src/main/resources/assets/extendedcrafting/lang/ru_ru.lang

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,6 @@ item.ec.handheld_table.name=Ручной верстак
8686

8787
item.ec.recipe_maker.name=Создатель рецептов
8888

89-
item.ec.singularity.name=Сингулярность
90-
item.ec.singularity_ultimate.name=Максимальная сингулярность
91-
9289
# CONTAINERS
9390
container.ec.crafting_core=Ядро создания
9491
container.ec.interface=Автоматический интерфейс
@@ -196,4 +193,47 @@ guide.entry.interface.page.3=The <red>Automation Interface<r> also has some auto
196193
guide.entry.interface.page.4=<b>Smart Insert:<r> the interface will not allow <red>Auto Insert<r> to insert items into the <red>input<r> slot that can't be inserted into the table.
197194

198195
guide.entry.singularity=Singularities
199-
guide.entry.singularity.page.1=<b>Singularities<r> are highly compressed materials. These are <i>usually<r> created using a <red>Quantum Compressor<r>. <n><n>Crafting all of the available singularities together in an <red>Ultimate Crafting Table<r> will reward you with <red>The Ultimate Singularity<r>.
196+
guide.entry.singularity.page.1=<b>Singularities<r> are highly compressed materials. These are <i>usually<r> created using a <red>Quantum Compressor<r>. <n><n>Crafting all of the available singularities together in an <red>Ultimate Crafting Table<r> will reward you with <red>The Ultimate Singularity<r>.
197+
198+
# Singularity Localizations
199+
item.ec.singularity.name=%s сингулярность
200+
item.ec.singularity_ultimate.name=Максимальная сингулярность
201+
202+
item.ec.singularity.aluminum=Алюминиевая
203+
item.ec.singularity.brass=Латунная
204+
item.ec.singularity.bronze=Бронзовая
205+
item.ec.singularity.chrome=Хромовая
206+
item.ec.singularity.coal=Угольная
207+
item.ec.singularity.constantan=Константановая
208+
item.ec.singularity.copper=Медная
209+
item.ec.singularity.diamond=Алмазная
210+
item.ec.singularity.electrum=Электрумовая
211+
item.ec.singularity.emerald=Изумрудная
212+
item.ec.singularity.glowstone=Светокаменная
213+
item.ec.singularity.gold=Золотая
214+
item.ec.singularity.invar=Инваровая
215+
item.ec.singularity.iridium=Иридиевая
216+
item.ec.singularity.iron=Железная
217+
item.ec.singularity.lapis_lazuli=Лазуритовая
218+
item.ec.singularity.lead=Свинцовая
219+
item.ec.singularity.mithril=Мифриловая
220+
item.ec.singularity.nickel=Никелевая
221+
item.ec.singularity.platinum=Платиновая
222+
item.ec.singularity.redstone=Краснокаменная
223+
item.ec.singularity.silver=Серебряная
224+
item.ec.singularity.steel=Стальная
225+
item.ec.singularity.tin=Оловянная
226+
item.ec.singularity.titanium=Титановая
227+
item.ec.singularity.tungsten=Вольфрамовая
228+
item.ec.singularity.uranium=Урановая
229+
item.ec.singularity.zinc=Цинковая
230+
231+
# Default Singularities - Thermal Expansion Alloys
232+
item.ec.singularity.enderium=Эндериевая
233+
item.ec.singularity.lumium=Люмиевая
234+
item.ec.singularity.signalum=Сигналовая
235+
236+
# Default Singularities - Tinkers' Construct Materials
237+
item.ec.singularity.ardite=Ардитовая
238+
item.ec.singularity.cobalt=Кобальтовая
239+
item.ec.singularity.manyullyn=Манулиновая

0 commit comments

Comments
 (0)