Merge remote-tracking branch 'kawaiiyuyu/lang' into general-devel

This commit is contained in:
Lucas Nicodemus 2022-10-28 17:34:38 -07:00
commit 9f7a8aa05b
No known key found for this signature in database
2 changed files with 23 additions and 2 deletions

View file

@ -21,7 +21,10 @@ global using static TShockAPI.I18n;
using System;
using System.Globalization;
using System.IO;
using System.Linq;
using GetText;
using Terraria.Initializers;
using Terraria.Localization;
namespace TShockAPI
{
@ -29,8 +32,7 @@ namespace TShockAPI
static string TranslationsDirectory => Path.Combine(AppContext.BaseDirectory, "i18n");
static CultureInfo TranslationCultureInfo
{
get
{
get {
// cross-platform mapping of cultureinfos can be a bit screwy, so give our users
// the chance to explicitly spell out which translation they would like to use.
// this is an environment variable instead of a flag because this needs to be
@ -39,6 +41,24 @@ namespace TShockAPI
{
return new CultureInfo(overrideLang);
}
static CultureInfo Redirect(CultureInfo cultureInfo)
=> cultureInfo.Name == "zh-Hans" ? new CultureInfo("zh-CN") : cultureInfo;
if (Terraria.Program.LaunchParameters.TryGetValue("-lang", out var langArg)
&& int.TryParse(langArg, out var langId)) {
if (GameCulture._legacyCultures.TryGetValue(langId, out var culture)) {
return Redirect(culture.CultureInfo);
}
}
if (Terraria.Program.LaunchParameters.TryGetValue("-language", out var languageArg)) {
var culture = GameCulture._legacyCultures.Values.SingleOrDefault(c => c.Name == languageArg);
if (culture != null) {
return Redirect(culture.CultureInfo);
}
}
return CultureInfo.CurrentUICulture;
}
}

View file

@ -73,6 +73,7 @@ Use past tense when adding new entries; sign your name off when you add or chang
* Dockerize TShock (@PotatoCider)
* Add ability for items given to players to be inserted directly into their inventory instead of spawned as an item drop (@pontaoski)
* Added support of `-lang` and `-language` flags for our i18n system. (@KawaiiYuyu)
## TShock 4.5.18
* Fixed `TSPlayer.GiveItem` not working if the player is in lava. (@PotatoCider)