diff --git a/PKHeX.Core/PKM/PK1.cs b/PKHeX.Core/PKM/PK1.cs index cece5e2ed..13649a4d7 100644 --- a/PKHeX.Core/PKM/PK1.cs +++ b/PKHeX.Core/PKM/PK1.cs @@ -164,7 +164,7 @@ public PK7 ConvertToPK7() Geo1_Country = PKMConverter.Country, Geo1_Region = PKMConverter.Region }; - pk7.Language = GuessedLanguage(PKMConverter.Language); + pk7.Language = TransferLanguage(PKMConverter.Language); pk7.Nickname = PKX.GetSpeciesNameGeneration(pk7.Species, pk7.Language, pk7.Format); if (otname[0] == StringConverter12.G1TradeOTCode) // Ingame Trade pk7.OT_Name = Encounters1.TradeOTG1[pk7.Language]; diff --git a/PKHeX.Core/PKM/PK2.cs b/PKHeX.Core/PKM/PK2.cs index 7e2dec021..f5dd1f1a8 100644 --- a/PKHeX.Core/PKM/PK2.cs +++ b/PKHeX.Core/PKM/PK2.cs @@ -163,7 +163,7 @@ public PK7 ConvertToPK7() Geo1_Country = PKMConverter.Country, Geo1_Region = PKMConverter.Region }; - pk7.Language = GuessedLanguage(PKMConverter.Language); + pk7.Language = TransferLanguage(PKMConverter.Language); pk7.Nickname = PKX.GetSpeciesNameGeneration(pk7.Species, pk7.Language, pk7.Format); if (otname[0] == StringConverter12.G1TradeOTCode) // Ingame Trade pk7.OT_Name = Encounters1.TradeOTG1[pk7.Language]; diff --git a/PKHeX.Core/PKM/Shared/_K12.cs b/PKHeX.Core/PKM/Shared/_K12.cs index 46c3157f2..8e7a68cd2 100644 --- a/PKHeX.Core/PKM/Shared/_K12.cs +++ b/PKHeX.Core/PKM/Shared/_K12.cs @@ -241,6 +241,20 @@ protected int GuessedLanguage(int fallback = (int)LanguageID.English) return (int)LanguageID.English; } + /// + /// Tries to guess the source language ID when transferred to future generations (7+) + /// + /// Destination language ID + /// Source language ID + protected int TransferLanguage(int destLanguage) + { + // if the Species name of the destination language matches the current nickname, transfer with that language. + var expect = PKX.GetSpeciesNameGeneration(Species, destLanguage, 2); + if (Nickname == expect) + return destLanguage; + return GuessedLanguage(destLanguage); + } + public override ushort[] GetStats(PersonalInfo p) { var lv = Stat_Level;