-
Notifications
You must be signed in to change notification settings - Fork 37
/
LocalizationExample.cs
67 lines (59 loc) · 2.89 KB
/
LocalizationExample.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
using System.Collections.Generic;
using BepInEx;
using Nautilus.Assets;
using Nautilus.Assets.PrefabTemplates;
using Nautilus.Handlers;
namespace Nautilus.Examples;
[BepInPlugin("com.snmodding.nautilus.localization", "Nautilus Localization Example Mod", Nautilus.PluginInfo.PLUGIN_VERSION)]
[BepInDependency("com.snmodding.nautilus")]
public class LocalizationExample : BaseUnityPlugin
{
/*
* Here we have a dictionary that contains language keys and values for certain stuff.
* The language key for the display name of TechTypes is "{enumName}".
* Since our Titanium Clone's tech type is "TitaniumClone", this is what we will use for the display name.
*
* Similarly, for tooltips, the language key is "Tooltip_{enumName}", so for our Titanium Clone, it would be "Tooltip_TitaniumClone".
*/
private Dictionary<string, string> _languageEntriesEng = new()
{
{ "TitaniumClone", "Titanium Clone" }, { "Tooltip_TitaniumClone", "Titanium clone that makes me go yes." }
};
/*
* Here we have a dictionary that translates the language entries above to Spanish.
* Keep in mind that the language keys are the same for every language.
*/
private Dictionary<string, string> _languageEntriesEsp = new()
{
{ "TitaniumClone", "Clon de Titanio" }, { "Tooltip_TitaniumClone", "Clon de Titanio que me hace decir que sí" }
};
private void Awake()
{
#if LOCALIZATION_FOLDER
/*
* Registers a folder as localization folder.
* This folder must contain json files that are named after the language they translate.
* For example, English translation must be named English.json and Spanish translation must be named Spanish.json.
* Nautilus expects this folder to be located in the mod folder at ModName/Localization by default.
*/
LanguageHandler.RegisterLocalizationFolder();
#else
// Register our English language entries to the English language
LanguageHandler.RegisterLocalization("English", _languageEntriesEng);
// Register our Spanish language entries to the Spanish language
LanguageHandler.RegisterLocalization("Spanish", _languageEntriesEsp);
#endif
/*
* Create a CustomPrefab instance for our Titanium Clone. Must be set to null or empty if you registered language entries
* for them earlier like we did.
*/
var titaniumClone = new CustomPrefab("TitaniumClone", null, null, SpriteManager.Get(TechType.Titanium));
// Set our prefab's game object to a clone of the Titanium prefab
titaniumClone.SetGameObject(new CloneTemplate(titaniumClone.Info, TechType.Titanium));
/*
* Register our Titanium Clone to the game.
* After this point, do not edit the prefab or modify gadgets as they will not be applied.
*/
titaniumClone.Register();
}
}