From 69cd3455beef272ba0999f82cf617b65b62ba3be Mon Sep 17 00:00:00 2001 From: abcboy101 <16735361+abcboy101@users.noreply.github.com> Date: Mon, 18 Dec 2023 08:39:15 +0800 Subject: [PATCH] Add Chatter Editor (#4101) * Add Chatter accessors * Add Chatter Editor * Update translations --- PKHeX.Core/Saves/Access/ISaveBlock5BW.cs | 3 +- .../Saves/Access/SaveBlockAccessor5B2W2.cs | 1 + .../Saves/Access/SaveBlockAccessor5BW.cs | 1 + PKHeX.Core/Saves/SAV4.cs | 3 +- PKHeX.Core/Saves/SAV4DP.cs | 1 + PKHeX.Core/Saves/SAV4HGSS.cs | 1 + PKHeX.Core/Saves/SAV4Pt.cs | 1 + PKHeX.Core/Saves/SAV5.cs | 1 + PKHeX.Core/Saves/SAV5B2W2.cs | 1 + PKHeX.Core/Saves/SAV5BW.cs | 1 + .../Saves/Substructures/Gen4/Chatter4.cs | 37 ++++ .../Saves/Substructures/Gen5/Chatter5.cs | 29 +++ .../Saves/Substructures/Misc/IChatter.cs | 15 ++ .../Controls/SAV Editor/SAVEditor.Designer.cs | 14 ++ .../Controls/SAV Editor/SAVEditor.cs | 2 + PKHeX.WinForms/Resources/text/lang_de.txt | 49 ++++- PKHeX.WinForms/Resources/text/lang_en.txt | 49 ++++- PKHeX.WinForms/Resources/text/lang_es.txt | 49 ++++- PKHeX.WinForms/Resources/text/lang_fr.txt | 49 ++++- PKHeX.WinForms/Resources/text/lang_it.txt | 49 ++++- PKHeX.WinForms/Resources/text/lang_ja.txt | 51 ++++- PKHeX.WinForms/Resources/text/lang_ko.txt | 49 ++++- PKHeX.WinForms/Resources/text/lang_zh.txt | 55 +++++- PKHeX.WinForms/Resources/text/lang_zh2.txt | 49 ++++- .../Save Editors/SAV_Chatter.Designer.cs | 183 ++++++++++++++++++ .../Subforms/Save Editors/SAV_Chatter.cs | 156 +++++++++++++++ 26 files changed, 879 insertions(+), 20 deletions(-) create mode 100644 PKHeX.Core/Saves/Substructures/Gen4/Chatter4.cs create mode 100644 PKHeX.Core/Saves/Substructures/Gen5/Chatter5.cs create mode 100644 PKHeX.Core/Saves/Substructures/Misc/IChatter.cs create mode 100644 PKHeX.WinForms/Subforms/Save Editors/SAV_Chatter.Designer.cs create mode 100644 PKHeX.WinForms/Subforms/Save Editors/SAV_Chatter.cs diff --git a/PKHeX.Core/Saves/Access/ISaveBlock5BW.cs b/PKHeX.Core/Saves/Access/ISaveBlock5BW.cs index 1f50370825d..f728ab9c4fe 100644 --- a/PKHeX.Core/Saves/Access/ISaveBlock5BW.cs +++ b/PKHeX.Core/Saves/Access/ISaveBlock5BW.cs @@ -1,4 +1,4 @@ -namespace PKHeX.Core; +namespace PKHeX.Core; /// /// Interface for Accessing named blocks within a Generation 5 save file. @@ -9,6 +9,7 @@ public interface ISaveBlock5BW Zukan5 Zukan { get; } Misc5 Misc { get; } MysteryBlock5 Mystery { get; } + Chatter5 Chatter { get; } Daycare5 Daycare { get; } BoxLayout5 BoxLayout { get; } PlayerData5 PlayerData { get; } diff --git a/PKHeX.Core/Saves/Access/SaveBlockAccessor5B2W2.cs b/PKHeX.Core/Saves/Access/SaveBlockAccessor5B2W2.cs index 91e6086afea..aaa5f22d200 100644 --- a/PKHeX.Core/Saves/Access/SaveBlockAccessor5B2W2.cs +++ b/PKHeX.Core/Saves/Access/SaveBlockAccessor5B2W2.cs @@ -92,6 +92,7 @@ public sealed class SaveBlockAccessor5B2W2(SAV5B2W2 sav) public MyItem Items { get; } = new MyItem5B2W2(sav, 0x18400); public UnityTower5 UnityTower { get; } = new(sav, 0x19600); public MysteryBlock5 Mystery { get; } = new(sav, 0x1C800); + public Chatter5 Chatter { get; } = new(sav, 0x1D500); public Musical5 Musical { get; } = new(sav, 0x1F700); public Daycare5 Daycare { get; } = new(sav, 0x20D00); public Misc5 Misc { get; } = new Misc5B2W2(sav, 0x21100); diff --git a/PKHeX.Core/Saves/Access/SaveBlockAccessor5BW.cs b/PKHeX.Core/Saves/Access/SaveBlockAccessor5BW.cs index 5f8be37685f..50c7432c655 100644 --- a/PKHeX.Core/Saves/Access/SaveBlockAccessor5BW.cs +++ b/PKHeX.Core/Saves/Access/SaveBlockAccessor5BW.cs @@ -87,6 +87,7 @@ public sealed class SaveBlockAccessor5BW(SAV5BW sav) : ISaveBlockAccessor Blocks.Zukan; public override Misc5 Misc => Blocks.Misc; public override MysteryBlock5 Mystery => Blocks.Mystery; + public override Chatter5 Chatter => Blocks.Chatter; public override Daycare5 Daycare => Blocks.Daycare; public override BoxLayout5 BoxLayout => Blocks.BoxLayout; public override PlayerData5 PlayerData => Blocks.PlayerData; diff --git a/PKHeX.Core/Saves/SAV5BW.cs b/PKHeX.Core/Saves/SAV5BW.cs index f6763de837e..06fc6a11dea 100644 --- a/PKHeX.Core/Saves/SAV5BW.cs +++ b/PKHeX.Core/Saves/SAV5BW.cs @@ -45,6 +45,7 @@ private void Initialize() public override Zukan5 Zukan => Blocks.Zukan; public override Misc5 Misc => Blocks.Misc; public override MysteryBlock5 Mystery => Blocks.Mystery; + public override Chatter5 Chatter => Blocks.Chatter; public override Daycare5 Daycare => Blocks.Daycare; public override BoxLayout5 BoxLayout => Blocks.BoxLayout; public override PlayerData5 PlayerData => Blocks.PlayerData; diff --git a/PKHeX.Core/Saves/Substructures/Gen4/Chatter4.cs b/PKHeX.Core/Saves/Substructures/Gen4/Chatter4.cs new file mode 100644 index 00000000000..336ac0da163 --- /dev/null +++ b/PKHeX.Core/Saves/Substructures/Gen4/Chatter4.cs @@ -0,0 +1,37 @@ +using System; +using static System.Buffers.Binary.BinaryPrimitives; + +namespace PKHeX.Core; + +/// +/// Generation 4 Chatter Recording +/// +public sealed class Chatter4: IChatter +{ + private readonly SAV4 SAV; + private readonly int Offset; + + public Chatter4(SaveFile sav) + { + SAV = (SAV4)sav; + Offset = SAV.Chatter; + } + + public bool Initialized + { + get => ReadUInt32LittleEndian(SAV.General[Offset..]) == 1u; + set => WriteUInt32LittleEndian(SAV.General[Offset..], value ? 1u : 0u); + } + + public Span Recording => SAV.General.Slice(Offset + sizeof(uint), IChatter.SIZE_PCM); + + public int ConfusionChance + { + get => !Initialized ? 1 : (sbyte)Recording[15] switch + { + < -30 => 11, + >= 30 => 31, + _ => 1, + }; + } +} diff --git a/PKHeX.Core/Saves/Substructures/Gen5/Chatter5.cs b/PKHeX.Core/Saves/Substructures/Gen5/Chatter5.cs new file mode 100644 index 00000000000..9356879f0c8 --- /dev/null +++ b/PKHeX.Core/Saves/Substructures/Gen5/Chatter5.cs @@ -0,0 +1,29 @@ +using System; +using static System.Buffers.Binary.BinaryPrimitives; + +namespace PKHeX.Core; + +/// +/// Generation 5 Chatter Recording +/// +public sealed class Chatter5 : SaveBlock, IChatter +{ + public Chatter5(SAV5 SAV, int offset) : base(SAV) => Offset = offset; + + public bool Initialized + { + get => ReadUInt32LittleEndian(Data.AsSpan(Offset)) == 1u; + set => WriteUInt32LittleEndian(Data.AsSpan(Offset), value ? 1u : 0u); + } + + public Span Recording => Data.AsSpan(Offset + sizeof(uint), IChatter.SIZE_PCM); + + public int ConfusionChance + { + get => !Initialized ? 0 : (Recording[99] ^ Recording[499] ^ Recording[699]) switch + { + < 100 or >= 150 => 10, + _ => 0, + }; + } +} diff --git a/PKHeX.Core/Saves/Substructures/Misc/IChatter.cs b/PKHeX.Core/Saves/Substructures/Misc/IChatter.cs new file mode 100644 index 00000000000..b05b1c3e7f3 --- /dev/null +++ b/PKHeX.Core/Saves/Substructures/Misc/IChatter.cs @@ -0,0 +1,15 @@ +using System; +using System.Reflection.Metadata; + +namespace PKHeX.Core; + +/// +/// Generation 4/5 Chatter Recording +/// +public interface IChatter +{ + public const int SIZE_PCM = 1000; // 0x3E8 + public bool Initialized { get; set; } + public Span Recording { get; } + public int ConfusionChance { get; } +} diff --git a/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.Designer.cs b/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.Designer.cs index efb8e58db1b..d64e7dab2ed 100644 --- a/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.Designer.cs +++ b/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.Designer.cs @@ -79,6 +79,7 @@ private void InitializeComponent() B_OpenUGSEditor = new System.Windows.Forms.Button(); B_OpenGeonetEditor = new System.Windows.Forms.Button(); B_OpenUnityTowerEditor = new System.Windows.Forms.Button(); + B_OpenChatterEditor = new System.Windows.Forms.Button(); B_Roamer = new System.Windows.Forms.Button(); B_FestivalPlaza = new System.Windows.Forms.Button(); B_MailBox = new System.Windows.Forms.Button(); @@ -389,6 +390,7 @@ private void InitializeComponent() FLP_SAVtools.Controls.Add(B_OpenUGSEditor); FLP_SAVtools.Controls.Add(B_OpenGeonetEditor); FLP_SAVtools.Controls.Add(B_OpenUnityTowerEditor); + FLP_SAVtools.Controls.Add(B_OpenChatterEditor); FLP_SAVtools.Controls.Add(B_Roamer); FLP_SAVtools.Controls.Add(B_FestivalPlaza); FLP_SAVtools.Controls.Add(B_MailBox); @@ -687,6 +689,17 @@ private void InitializeComponent() B_OpenUnityTowerEditor.UseVisualStyleBackColor = true; B_OpenUnityTowerEditor.Click += B_OpenUnityTowerEditor_Click; // + // B_OpenChatterEditor + // + B_OpenChatterEditor.Location = new System.Drawing.Point(212, 204); + B_OpenChatterEditor.Margin = new System.Windows.Forms.Padding(4); + B_OpenChatterEditor.Name = "B_OpenChatterEditor"; + B_OpenChatterEditor.Size = new System.Drawing.Size(96, 32); + B_OpenChatterEditor.TabIndex = 1; + B_OpenChatterEditor.Text = "Chatter"; + B_OpenChatterEditor.UseVisualStyleBackColor = true; + B_OpenChatterEditor.Click += B_OpenChatterEditor_Click; + // // B_Roamer // B_Roamer.Location = new System.Drawing.Point(316, 204); @@ -1076,6 +1089,7 @@ private void InitializeComponent() private System.Windows.Forms.Button B_OpenUGSEditor; private System.Windows.Forms.Button B_OpenGeonetEditor; private System.Windows.Forms.Button B_OpenUnityTowerEditor; + private System.Windows.Forms.Button B_OpenChatterEditor; private System.Windows.Forms.Button B_Roamer; private System.Windows.Forms.Button B_FestivalPlaza; private System.Windows.Forms.Button B_MailBox; diff --git a/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs b/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs index cfdd4146454..954aa0dad68 100644 --- a/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs +++ b/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs @@ -517,6 +517,7 @@ private static void OpenDialog(Form f) private void B_OpenHoneyTreeEditor_Click(object sender, EventArgs e) => OpenDialog(new SAV_HoneyTree((SAV4Sinnoh)SAV)); private void B_OpenGeonetEditor_Click(object sender, EventArgs e) => OpenDialog(new SAV_Geonet4((SAV4)SAV)); private void B_OpenUnityTowerEditor_Click(object sender, EventArgs e) => OpenDialog(new SAV_UnityTower((SAV5)SAV)); + private void B_OpenChatterEditor_Click(object sender, EventArgs e) => OpenDialog(new SAV_Chatter(SAV)); private void B_Roamer_Click(object sender, EventArgs e) { @@ -1157,6 +1158,7 @@ private void ToggleViewSubEditors(SaveFile sav) B_OpenUGSEditor.Visible = sav is SAV4Sinnoh or SAV8BS; B_OpenGeonetEditor.Visible = sav is SAV4; B_OpenUnityTowerEditor.Visible = sav is SAV5; + B_OpenChatterEditor.Visible = sav is SAV4 or SAV5; B_OpenSealStickers.Visible = B_Poffins.Visible = sav is SAV8BS; B_OpenApricorn.Visible = sav is SAV4HGSS; B_OpenRTCEditor.Visible = sav.Generation == 2 || sav is IGen3Hoenn; diff --git a/PKHeX.WinForms/Resources/text/lang_de.txt b/PKHeX.WinForms/Resources/text/lang_de.txt index c3bd64c372e..5dca8cd2e6f 100644 --- a/PKHeX.WinForms/Resources/text/lang_de.txt +++ b/PKHeX.WinForms/Resources/text/lang_de.txt @@ -13,6 +13,7 @@ SAV_BoxLayout=Box Layout Editor SAV_BoxList=PC Ansicht SAV_Capture7GG=Fang Statistik Editor SAV_CGearSkin=C-Gear Skin +SAV_Chatter=Chatter Editor SAV_Database=Datenbank SAV_Encounters=Begegnungen SAV_EventFlags=Event Flag Editor @@ -54,6 +55,7 @@ SAV_Raid8=Raid Parameter Editor SAV_Raid9=Raid Parameter Editor SAV_RaidSevenStar9=7 Stern Raid Parameter Editor SAV_Roamer3=Wanderpokémon Editor +SAV_Roamer6=Roamer Editor SAV_RTC3=Uhr (RTC) Editor SAV_SealStickers8b=Sticker SAV_SecretBase=Geheimbasen Editor @@ -120,6 +122,8 @@ LocalizedDescription.HideSAVDetails=Verstecke Spielstand Details in Programmtite LocalizedDescription.HideSecretDetails=Verstecke persönliche Details im Editor LocalizedDescription.HoverSlotGlowEdges=Zeige Glanz bei Berührung LocalizedDescription.HoverSlotPlayCry=Spiele PKM Ruf bei Berührung +LocalizedDescription.HoverSlotShowEncounter=Show Encounter Info in on Hover +LocalizedDescription.HoverSlotShowPreview=Show PKM Slot Preview on Hover LocalizedDescription.HoverSlotShowText=Zeige PKM ToolTip bei Berührung LocalizedDescription.IgnoreLegalPopup=Zeige kein Pop-Up wenn legal LocalizedDescription.InitialSortMode=Wenn die PKM Datenbank geladen wird, wird sie nach dieser Option sortiert. @@ -138,6 +142,8 @@ LocalizedDescription.PathBlockKeyList=Ordner, welcher Dateien mit Block Hash-Nam LocalizedDescription.PlaySoundLegalityCheck=Ton beim Pop-Up der Legalitäts Analyse abspielen. LocalizedDescription.PlaySoundSAVLoad=Ton beim Öffnen eines Spielstands abspielen. LocalizedDescription.PluginLoadMethod=Läd Plugins aus dem "plugins" Ordner, falls dieser existiert. Versuche LoadFile um Fehler beim Laden zu reduzieren. +LocalizedDescription.PreviewCursorShift=Show a Glow effect around the PKM on Hover +LocalizedDescription.PreviewShowPaste=Show Showdown Paste in special Preview on Hover LocalizedDescription.ReturnNoneIfEmptySearch=Überspringt die Suche, wenn vergessen wurde ein Pokémon / Attacken in die Suchkriterien einzugeben. LocalizedDescription.RNGFrameNotFound=Zeigt in der Legalitäts Analyse an, wenn der RNG Frame Check keine Übereinstimmung findet. LocalizedDescription.SearchBackups=Suche beim Laden der PKM Datenbank auch in den Backup Spielständen. @@ -175,14 +181,15 @@ Main.B_Blocks=Block Daten Main.B_CellsStickers=Zellen/Stickers Main.B_CGearSkin=C-Gear Skin Main.B_Clear=Löschen +Main.B_ConvertKorean=Korean Save Conversion Main.B_FestivalPlaza=Festival-Plaza Main.B_JPEG=Speichere PGL .JPEG -Main.B_ConvertKorean=Korean Save Conversion Main.B_MailBox=Briefbox Main.B_MoveShop=Attacken Tutor Main.B_OpenApricorn=Aprikokos Main.B_OpenBerryField=Beerenfeld Main.B_OpenBoxLayout=Boxlayout +Main.B_OpenChatterEditor=Geschwätz Main.B_OpenEventFlags=Event Flags Main.B_OpenFriendSafari=Kontaktsafari Main.B_OpenGeonetEditor=Geonet @@ -532,6 +539,14 @@ SAV_CGearSkin.B_ExportPNG=Speichere .png SAV_CGearSkin.B_ImportCGB=Öffne .cgb/.psk SAV_CGearSkin.B_ImportPNG=Öffne .png SAV_CGearSkin.B_Save=Speichern +SAV_Chatter.B_Cancel=Abbrechen +SAV_Chatter.B_ExportPCM=Speichere .pcm +SAV_Chatter.B_ExportWAV=Speichere .wav +SAV_Chatter.B_ImportPCM=Öffne .pcm +SAV_Chatter.B_PlayRecording=Play Recording +SAV_Chatter.B_Save=Speichern +SAV_Chatter.CHK_Initialized=Initialized +SAV_Chatter.L_Confusion=Confusion %: SAV_Database.B_Add=Add SAV_Database.B_Reset=Filter zurücksetzen SAV_Database.B_Search=Suchen! @@ -865,13 +880,17 @@ SAV_Misc5.B_Cancel=Abbrechen SAV_Misc5.B_DumpFC=Dump Data SAV_Misc5.B_FunfestMissions=Alle freischalten SAV_Misc5.B_ImportFC=Import Data +SAV_Misc5.B_ObtainAllMedals=Obtain All Medals SAV_Misc5.B_RandForest=Alle Areale zufällig SAV_Misc5.B_Save=Speichern SAV_Misc5.B_UnlockAllMusicalProps=Alle Musical Accessoires +SAV_Misc5.B_UnlockAllProps=Unlock All Props SAV_Misc5.CHK_Area9=Areal 9 erreichbar: SAV_Misc5.CHK_FMNew=NEU SAV_Misc5.CHK_Invisible=Unsichtbar SAV_Misc5.CHK_LibertyPass=Aktiviere Gartenpass +SAV_Misc5.CHK_MedalUnread=Unread +SAV_Misc5.CHK_PropObtained=Obtained SAV_Misc5.CHK_Subway0=Flag0 SAV_Misc5.CHK_Subway1=Flag1 SAV_Misc5.CHK_Subway2=Flag2 @@ -937,6 +956,8 @@ SAV_Misc5.TAB_BWCityForest=WhiteForest/BlackCity SAV_Misc5.TAB_Entralink=Kontaktebene SAV_Misc5.TAB_Forest=Wald SAV_Misc5.TAB_Main=Verschiedenes +SAV_Misc5.TAB_Medals=Medals +SAV_Misc5.TAB_Muscial=Musical SAV_Misc5.TAB_Subway=Metro SAV_Misc8b.B_Arceus=Arceus Event freischalten SAV_Misc8b.B_Cancel=Abbr. @@ -1376,6 +1397,11 @@ SAV_Roamer3.Label_SPA=SpA: SAV_Roamer3.Label_SPD=SpV: SAV_Roamer3.Label_SPE=Init: SAV_Roamer3.Label_Species=Spezies: +SAV_Roamer6.B_Cancel=Cancel +SAV_Roamer6.B_Save=Save +SAV_Roamer6.L_RoamState=Roam State +SAV_Roamer6.L_Species=Roamer +SAV_Roamer6.L_TimesEncountered=Times Encountered SAV_RTC3.B_BerryFix=Berry Fix. SAV_RTC3.B_Cancel=Abbrechen SAV_RTC3.B_Reset=Uhr zurücksetzen @@ -1628,17 +1654,27 @@ SAV_Trainer7GG.B_ImportGoFiles=Importiere aus Ordner (starte beim aktuellen Slot SAV_Trainer7GG.B_MaxCash=+ SAV_Trainer7GG.B_Save=Speichern SAV_Trainer7GG.GB_Adventure=Abenteuer Info +SAV_Trainer7GG.GB_Map=Map Position +SAV_Trainer7GG.L_CurrentMap=Current Map: SAV_Trainer7GG.L_GoSlot=Slot: SAV_Trainer7GG.L_GoSlotSummary=Zusammenfassung SAV_Trainer7GG.L_Hours=Std: SAV_Trainer7GG.L_Language=Sprache: SAV_Trainer7GG.L_Minutes=Min: SAV_Trainer7GG.L_Money=$: +SAV_Trainer7GG.L_R=Rotation: SAV_Trainer7GG.L_RivalName=Rivalen Name: SAV_Trainer7GG.L_Seconds=Sek: +SAV_Trainer7GG.L_SX=X Scale: +SAV_Trainer7GG.L_SY=Y Scale: +SAV_Trainer7GG.L_SZ=Z Scale: SAV_Trainer7GG.L_TrainerName=Trainer Name: +SAV_Trainer7GG.L_X=X Coordinate: +SAV_Trainer7GG.L_Y=Y Coordinate: +SAV_Trainer7GG.L_Z=Z Coordinate: SAV_Trainer7GG.Label_SID=SID: SAV_Trainer7GG.Label_TID=TID: +SAV_Trainer7GG.Tab_BadgeMap=Map SAV_Trainer7GG.Tab_Complex=GO Komplex SAV_Trainer7GG.Tab_Overview=Übersicht SAV_Trainer8.B_Cancel=Abbrechen @@ -1671,6 +1707,9 @@ SAV_Trainer8.L_ShowTitleScreen=Im Titelbildschirm: SAV_Trainer8.L_ShowTrainerCard=Auf Trainerkarte: SAV_Trainer8.L_Singles=Einzel: SAV_Trainer8.L_Started=Spiel gestartet: +SAV_Trainer8.L_SX=X Scale: +SAV_Trainer8.L_SY=Y Scale: +SAV_Trainer8.L_SZ=Z Scale: SAV_Trainer8.L_TrainerName=Trainer Name: SAV_Trainer8.L_TRCardID=Liga Trainer ID: SAV_Trainer8.L_TRCardName=Liga Karten Name: @@ -1690,7 +1729,9 @@ SAV_Trainer8a.B_Cancel=Abbrechen SAV_Trainer8a.B_MaxCash=+ SAV_Trainer8a.B_Save=Speichern SAV_Trainer8a.GB_Adventure=Abenteuer Info +SAV_Trainer8a.GB_Map=Map Position SAV_Trainer8a.GB_Stats=Werte +SAV_Trainer8a.L_CurrentMap=Current Map: SAV_Trainer8a.L_GalaxyRank=Galaktik Rang: SAV_Trainer8a.L_Hours=Std: SAV_Trainer8a.L_Language=Sprache: @@ -1699,12 +1740,17 @@ SAV_Trainer8a.L_MeritCurrent=Aktuelle DP: SAV_Trainer8a.L_MeritEarned=Verdiente DP: SAV_Trainer8a.L_Minutes=Min: SAV_Trainer8a.L_Money=$: +SAV_Trainer8a.L_R=Rotation: SAV_Trainer8a.L_SatchelUpgrades=Fundsachen Upgrades: SAV_Trainer8a.L_Seconds=Sek: SAV_Trainer8a.L_Started=Spiel gestartet:: SAV_Trainer8a.L_TrainerName=Trainer Name: +SAV_Trainer8a.L_X=X Coordinate: +SAV_Trainer8a.L_Y=Y Coordinate: +SAV_Trainer8a.L_Z=Z Coordinate: SAV_Trainer8a.Label_SID=SID: SAV_Trainer8a.Label_TID=TID: +SAV_Trainer8a.Tab_BadgeMap=Map SAV_Trainer8a.Tab_Overview=Übersicht SAV_Trainer8b.B_Cancel=Abbrechen SAV_Trainer8b.B_MaxCash=+ @@ -1757,6 +1803,7 @@ SAV_Trainer9.L_Language=Sprache: SAV_Trainer9.L_LP=LP: SAV_Trainer9.L_Minutes=Min: SAV_Trainer9.L_Money=$: +SAV_Trainer9.L_R=Rotation: SAV_Trainer9.L_Seconds=Sek: SAV_Trainer9.L_Started=Game Started: SAV_Trainer9.L_TrainerName=Trainer Name: diff --git a/PKHeX.WinForms/Resources/text/lang_en.txt b/PKHeX.WinForms/Resources/text/lang_en.txt index e533f59de83..7d8ef08a5ba 100644 --- a/PKHeX.WinForms/Resources/text/lang_en.txt +++ b/PKHeX.WinForms/Resources/text/lang_en.txt @@ -13,6 +13,7 @@ SAV_BoxLayout=Box Layout Editor SAV_BoxList=Storage Viewer SAV_Capture7GG=Capture Record Editor SAV_CGearSkin=C-Gear Skin +SAV_Chatter=Chatter Editor SAV_Database=Database SAV_Encounters=Database SAV_EventFlags=Event Flag Editor @@ -54,6 +55,7 @@ SAV_Raid8=Raid Parameter Editor SAV_Raid9=Raid Parameter Editor SAV_RaidSevenStar9=7 Star Raid Parameter Editor SAV_Roamer3=Roamer Editor +SAV_Roamer6=Roamer Editor SAV_RTC3=Real Time Clock Editor SAV_SealStickers8b=Seal Sticker List SAV_SecretBase=Secret Base Editor @@ -120,6 +122,8 @@ LocalizedDescription.HideSAVDetails=Hide Save File Details in Program Title LocalizedDescription.HideSecretDetails=Hide Secret Details in Editors LocalizedDescription.HoverSlotGlowEdges=Show PKM Glow on Hover LocalizedDescription.HoverSlotPlayCry=Play PKM Slot Cry on Hover +LocalizedDescription.HoverSlotShowEncounter=Show Encounter Info in on Hover +LocalizedDescription.HoverSlotShowPreview=Show PKM Slot Preview on Hover LocalizedDescription.HoverSlotShowText=Show PKM Slot ToolTip on Hover LocalizedDescription.IgnoreLegalPopup=Don't show popup if Legal! LocalizedDescription.InitialSortMode=When loading content for the PKM database, the list will be ordered by this option. @@ -138,6 +142,8 @@ LocalizedDescription.PathBlockKeyList=Folder path that contains dump(s) of block LocalizedDescription.PlaySoundLegalityCheck=Play Sound when popping up Legality Report LocalizedDescription.PlaySoundSAVLoad=Play Sound when loading a new Save File LocalizedDescription.PluginLoadMethod=Loads plugins from the plugins folder, assuming the folder exists. Try LoadFile to mitigate intermittent load failures. +LocalizedDescription.PreviewCursorShift=Show a Glow effect around the PKM on Hover +LocalizedDescription.PreviewShowPaste=Show Showdown Paste in special Preview on Hover LocalizedDescription.ReturnNoneIfEmptySearch=Skips searching if the user forgot to enter Species / Move(s) into the search criteria. LocalizedDescription.RNGFrameNotFound=Severity to flag a Legality Check if the RNG Frame Checking logic does not find a match. LocalizedDescription.SearchBackups=When loading content for the PKM Database, search within backup save files. @@ -175,14 +181,15 @@ Main.B_Blocks=Block Data Main.B_CellsStickers=Cells/Stickers Main.B_CGearSkin=C-Gear Skin Main.B_Clear=Clear +Main.B_ConvertKorean=Korean Save Conversion Main.B_FestivalPlaza=Festival Plaza Main.B_JPEG=Save PGL .JPEG -Main.B_ConvertKorean=Korean Save Conversion Main.B_MailBox=Mail Box Main.B_MoveShop=Move Shop Main.B_OpenApricorn=Apricorns Main.B_OpenBerryField=Berry Field Main.B_OpenBoxLayout=Box Layout +Main.B_OpenChatterEditor=Chatter Main.B_OpenEventFlags=Event Flags Main.B_OpenFriendSafari=Friend Safari Main.B_OpenGeonetEditor=Geonet @@ -532,6 +539,14 @@ SAV_CGearSkin.B_ExportPNG=Export .png SAV_CGearSkin.B_ImportCGB=Import .cgb/.psk SAV_CGearSkin.B_ImportPNG=Import .png SAV_CGearSkin.B_Save=Save +SAV_Chatter.B_Cancel=Cancel +SAV_Chatter.B_ExportPCM=Export .pcm +SAV_Chatter.B_ExportWAV=Export .wav +SAV_Chatter.B_ImportPCM=Import .pcm +SAV_Chatter.B_PlayRecording=Play Recording +SAV_Chatter.B_Save=Save +SAV_Chatter.CHK_Initialized=Initialized +SAV_Chatter.L_Confusion=Confusion %: SAV_Database.B_Add=Add SAV_Database.B_Reset=Reset Filters SAV_Database.B_Search=Search! @@ -865,13 +880,17 @@ SAV_Misc5.B_Cancel=Cancel SAV_Misc5.B_DumpFC=Dump Data SAV_Misc5.B_FunfestMissions=Unlock All (w/o No.0) SAV_Misc5.B_ImportFC=Import Data +SAV_Misc5.B_ObtainAllMedals=Obtain All Medals SAV_Misc5.B_RandForest=Randomize All Areas SAV_Misc5.B_Save=Save SAV_Misc5.B_UnlockAllMusicalProps=Unlock All Musical Props +SAV_Misc5.B_UnlockAllProps=Unlock All Props SAV_Misc5.CHK_Area9=Area 9 Unlocked: SAV_Misc5.CHK_FMNew=NEW SAV_Misc5.CHK_Invisible=Invisible SAV_Misc5.CHK_LibertyPass=Activate LibertyPass +SAV_Misc5.CHK_MedalUnread=Unread +SAV_Misc5.CHK_PropObtained=Obtained SAV_Misc5.CHK_Subway0=Flag0 SAV_Misc5.CHK_Subway1=Flag1 SAV_Misc5.CHK_Subway2=Flag2 @@ -937,6 +956,8 @@ SAV_Misc5.TAB_BWCityForest=WhiteForest/BlackCity SAV_Misc5.TAB_Entralink=Entralink SAV_Misc5.TAB_Forest=Forest SAV_Misc5.TAB_Main=Main +SAV_Misc5.TAB_Medals=Medals +SAV_Misc5.TAB_Muscial=Musical SAV_Misc5.TAB_Subway=Subway SAV_Misc8b.B_Arceus=Unlock Arceus Event SAV_Misc8b.B_Cancel=Cancel @@ -1376,6 +1397,11 @@ SAV_Roamer3.Label_SPA=SpA: SAV_Roamer3.Label_SPD=SpD: SAV_Roamer3.Label_SPE=Spe: SAV_Roamer3.Label_Species=Species: +SAV_Roamer6.B_Cancel=Cancel +SAV_Roamer6.B_Save=Save +SAV_Roamer6.L_RoamState=Roam State +SAV_Roamer6.L_Species=Roamer +SAV_Roamer6.L_TimesEncountered=Times Encountered SAV_RTC3.B_BerryFix=Berry Fix SAV_RTC3.B_Cancel=Cancel SAV_RTC3.B_Reset=Reset RTC @@ -1628,17 +1654,27 @@ SAV_Trainer7GG.B_ImportGoFiles=Import from Folder (start at current slot) SAV_Trainer7GG.B_MaxCash=+ SAV_Trainer7GG.B_Save=Save SAV_Trainer7GG.GB_Adventure=Adventure Info +SAV_Trainer7GG.GB_Map=Map Position +SAV_Trainer7GG.L_CurrentMap=Current Map: SAV_Trainer7GG.L_GoSlot=Slot: SAV_Trainer7GG.L_GoSlotSummary=Summary SAV_Trainer7GG.L_Hours=Hrs: SAV_Trainer7GG.L_Language=Language: SAV_Trainer7GG.L_Minutes=Min: SAV_Trainer7GG.L_Money=$: +SAV_Trainer7GG.L_R=Rotation: SAV_Trainer7GG.L_RivalName=Rival Name: SAV_Trainer7GG.L_Seconds=Sec: +SAV_Trainer7GG.L_SX=X Scale: +SAV_Trainer7GG.L_SY=Y Scale: +SAV_Trainer7GG.L_SZ=Z Scale: SAV_Trainer7GG.L_TrainerName=Trainer Name: +SAV_Trainer7GG.L_X=X Coordinate: +SAV_Trainer7GG.L_Y=Y Coordinate: +SAV_Trainer7GG.L_Z=Z Coordinate: SAV_Trainer7GG.Label_SID=SID: SAV_Trainer7GG.Label_TID=TID: +SAV_Trainer7GG.Tab_BadgeMap=Map SAV_Trainer7GG.Tab_Complex=GO Complex SAV_Trainer7GG.Tab_Overview=Overview SAV_Trainer8.B_Cancel=Cancel @@ -1671,6 +1707,9 @@ SAV_Trainer8.L_ShowTitleScreen=Shown on Title Screen: SAV_Trainer8.L_ShowTrainerCard=Shown on Trainer Card: SAV_Trainer8.L_Singles=Singles: SAV_Trainer8.L_Started=Game Started: +SAV_Trainer8.L_SX=X Scale: +SAV_Trainer8.L_SY=Y Scale: +SAV_Trainer8.L_SZ=Z Scale: SAV_Trainer8.L_TrainerName=Trainer Name: SAV_Trainer8.L_TRCardID=League TrainerID: SAV_Trainer8.L_TRCardName=League Card Name: @@ -1690,7 +1729,9 @@ SAV_Trainer8a.B_Cancel=Cancel SAV_Trainer8a.B_MaxCash=+ SAV_Trainer8a.B_Save=Save SAV_Trainer8a.GB_Adventure=Adventure Info +SAV_Trainer8a.GB_Map=Map Position SAV_Trainer8a.GB_Stats=Stats +SAV_Trainer8a.L_CurrentMap=Current Map: SAV_Trainer8a.L_GalaxyRank=Galaxy Rank: SAV_Trainer8a.L_Hours=Hrs: SAV_Trainer8a.L_Language=Language: @@ -1699,12 +1740,17 @@ SAV_Trainer8a.L_MeritCurrent=Current Merit Points: SAV_Trainer8a.L_MeritEarned=Earned Merit Points: SAV_Trainer8a.L_Minutes=Min: SAV_Trainer8a.L_Money=$: +SAV_Trainer8a.L_R=Rotation: SAV_Trainer8a.L_SatchelUpgrades=Satchel Upgrades: SAV_Trainer8a.L_Seconds=Sec: SAV_Trainer8a.L_Started=Game Started: SAV_Trainer8a.L_TrainerName=Trainer Name: +SAV_Trainer8a.L_X=X Coordinate: +SAV_Trainer8a.L_Y=Y Coordinate: +SAV_Trainer8a.L_Z=Z Coordinate: SAV_Trainer8a.Label_SID=SID: SAV_Trainer8a.Label_TID=TID: +SAV_Trainer8a.Tab_BadgeMap=Map SAV_Trainer8a.Tab_Overview=Overview SAV_Trainer8b.B_Cancel=Cancel SAV_Trainer8b.B_MaxCash=+ @@ -1757,6 +1803,7 @@ SAV_Trainer9.L_Language=Language: SAV_Trainer9.L_LP=LP: SAV_Trainer9.L_Minutes=Min: SAV_Trainer9.L_Money=$: +SAV_Trainer9.L_R=Rotation: SAV_Trainer9.L_Seconds=Sec: SAV_Trainer9.L_Started=Game Started: SAV_Trainer9.L_TrainerName=Trainer Name: diff --git a/PKHeX.WinForms/Resources/text/lang_es.txt b/PKHeX.WinForms/Resources/text/lang_es.txt index e431a6352f4..80259f9b51b 100644 --- a/PKHeX.WinForms/Resources/text/lang_es.txt +++ b/PKHeX.WinForms/Resources/text/lang_es.txt @@ -13,6 +13,7 @@ SAV_BoxLayout=Editor de fondos de Cajas SAV_BoxList=Visor de Almacenamiento SAV_Capture7GG=Editor de Récord de Captura SAV_CGearSkin=Editor de la apariencia C-Gear +SAV_Chatter=Chatter Editor SAV_Database=Base de Datos SAV_Encounters=Base de Datos SAV_EventFlags=Editor de marca de eventos @@ -54,6 +55,7 @@ SAV_Raid8=Editor de parámetros de Incursión SAV_Raid9=Editor de parámetros de Incursión SAV_RaidSevenStar9=7 Star Raid Parameter Editor SAV_Roamer3=Editor de Pokémon Errante +SAV_Roamer6=Roamer Editor SAV_RTC3=Editor de Reloj de Tiempo Real SAV_SealStickers8b=Lista de Sellos SAV_SecretBase=Editor de Bases Secretas @@ -120,6 +122,8 @@ LocalizedDescription.HideSAVDetails=Ocultar detalles de partidas guardadas en el LocalizedDescription.HideSecretDetails=Ocultar detalles secretos en los editores LocalizedDescription.HoverSlotGlowEdges=Mostrar brillo PKM al pasar el ratón LocalizedDescription.HoverSlotPlayCry=Reproducir grito PKM al pasar el ratón +LocalizedDescription.HoverSlotShowEncounter=Show Encounter Info in on Hover +LocalizedDescription.HoverSlotShowPreview=Show PKM Slot Preview on Hover LocalizedDescription.HoverSlotShowText=Mostrar info. PKM al pasar el ratón LocalizedDescription.IgnoreLegalPopup=¡No mostrar ventana si es Legal! LocalizedDescription.InitialSortMode=Cuando se cargue contenido para la base de datos PKM, esta lista será ordenada por esta opción- @@ -138,6 +142,8 @@ LocalizedDescription.PathBlockKeyList=Ruta de la carpeta que contiene los volcad LocalizedDescription.PlaySoundLegalityCheck=Reproducir sonido en la validación de legalidad LocalizedDescription.PlaySoundSAVLoad=Reproducir sonido al cargar archivo de guardado LocalizedDescription.PluginLoadMethod=Carga plugins desde la carpeta de plugins, asumiendo que esa carpeta existe. Intentar LoadFile para mitigar los fallos de carga intermitentes. +LocalizedDescription.PreviewCursorShift=Show a Glow effect around the PKM on Hover +LocalizedDescription.PreviewShowPaste=Show Showdown Paste in special Preview on Hover LocalizedDescription.ReturnNoneIfEmptySearch=Salta la búsqueda si el usuario olvidó ingresar la especie/movimiento(s) en el criterio de búsqueda. LocalizedDescription.RNGFrameNotFound=En la validación de legalidad, marcar Severidad si se detecta que la lógica de verificación de tramas RNG no encuentra una coincidencia. LocalizedDescription.SearchBackups=Cuando se carga contenido para la base de datos PKM, buscar entre los archivos de guardado de respaldo. @@ -175,14 +181,15 @@ Main.B_Blocks=Datos Bloque Main.B_CellsStickers=Células/Dominsignias Main.B_CGearSkin=C-Gear Main.B_Clear=Limpiar +Main.B_ConvertKorean=Korean Save Conversion Main.B_FestivalPlaza=Festi Plaza Main.B_JPEG=Guardar PGL .JPEG -Main.B_ConvertKorean=Korean Save Conversion Main.B_MailBox=Correo Main.B_MoveShop=Tienda Movs. Main.B_OpenApricorn=Bonguri Main.B_OpenBerryField=C. de Bayas Main.B_OpenBoxLayout=Fondo de Cajas +Main.B_OpenChatterEditor=Cháchara Main.B_OpenEventFlags=Eventos Main.B_OpenFriendSafari=Safari Amistad Main.B_OpenGeonetEditor=Geonet @@ -532,6 +539,14 @@ SAV_CGearSkin.B_ExportPNG=Exportar .png SAV_CGearSkin.B_ImportCGB=Importar .cgb/.psk SAV_CGearSkin.B_ImportPNG=Importar .png SAV_CGearSkin.B_Save=Guardar +SAV_Chatter.B_Cancel=Cancelar +SAV_Chatter.B_ExportPCM=Exportar .pcm +SAV_Chatter.B_ExportWAV=Exportar .wav +SAV_Chatter.B_ImportPCM=Importar .pcm +SAV_Chatter.B_PlayRecording=Play Recording +SAV_Chatter.B_Save=Guardar +SAV_Chatter.CHK_Initialized=Initialized +SAV_Chatter.L_Confusion=Confusion %: SAV_Database.B_Add=Add SAV_Database.B_Reset=Borrar filtros SAV_Database.B_Search=¡Buscar! @@ -865,13 +880,17 @@ SAV_Misc5.B_Cancel=Cancelar SAV_Misc5.B_DumpFC=Dump Data SAV_Misc5.B_FunfestMissions=Desbloquear todo (sin n.º0) SAV_Misc5.B_ImportFC=Import Data +SAV_Misc5.B_ObtainAllMedals=Obtain All Medals SAV_Misc5.B_RandForest=Aleatorizar todas las áreas SAV_Misc5.B_Save=Guardar SAV_Misc5.B_UnlockAllMusicalProps=Desbloq. complementos +SAV_Misc5.B_UnlockAllProps=Unlock All Props SAV_Misc5.CHK_Area9=Área 9 desbloqueada: SAV_Misc5.CHK_FMNew=NUEVO SAV_Misc5.CHK_Invisible=Invisible SAV_Misc5.CHK_LibertyPass=Activar Ticket Libertad +SAV_Misc5.CHK_MedalUnread=Unread +SAV_Misc5.CHK_PropObtained=Obtained SAV_Misc5.CHK_Subway0=Flag0 SAV_Misc5.CHK_Subway1=Flag1 SAV_Misc5.CHK_Subway2=Flag2 @@ -937,6 +956,8 @@ SAV_Misc5.TAB_BWCityForest=WhiteForest/BlackCity SAV_Misc5.TAB_Entralink=Zona Nexo SAV_Misc5.TAB_Forest=Bosque SAV_Misc5.TAB_Main=General +SAV_Misc5.TAB_Medals=Medals +SAV_Misc5.TAB_Muscial=Musical SAV_Misc5.TAB_Subway=Metro SAV_Misc8b.B_Arceus=Desbloq. evento de Arceus SAV_Misc8b.B_Cancel=Cancelar @@ -1376,6 +1397,11 @@ SAV_Roamer3.Label_SPA=Atq. E: SAV_Roamer3.Label_SPD=Def. E: SAV_Roamer3.Label_SPE=Vel: SAV_Roamer3.Label_Species=Especies: +SAV_Roamer6.B_Cancel=Cancel +SAV_Roamer6.B_Save=Save +SAV_Roamer6.L_RoamState=Roam State +SAV_Roamer6.L_Species=Roamer +SAV_Roamer6.L_TimesEncountered=Times Encountered SAV_RTC3.B_BerryFix=Arreglo baya SAV_RTC3.B_Cancel=Cancelar SAV_RTC3.B_Reset=Reiniciar RTR @@ -1628,17 +1654,27 @@ SAV_Trainer7GG.B_ImportGoFiles=Importar de una carpeta (comenzando de la casilla SAV_Trainer7GG.B_MaxCash=+ SAV_Trainer7GG.B_Save=Guardar SAV_Trainer7GG.GB_Adventure=Información de la aventura +SAV_Trainer7GG.GB_Map=Map Position +SAV_Trainer7GG.L_CurrentMap=Current Map: SAV_Trainer7GG.L_GoSlot=Casilla: SAV_Trainer7GG.L_GoSlotSummary=Detalles SAV_Trainer7GG.L_Hours=Hrs.: SAV_Trainer7GG.L_Language=Idioma: SAV_Trainer7GG.L_Minutes=Min.: SAV_Trainer7GG.L_Money=$: +SAV_Trainer7GG.L_R=Rotation: SAV_Trainer7GG.L_RivalName=Nombre del Rival: SAV_Trainer7GG.L_Seconds=Seg.: +SAV_Trainer7GG.L_SX=X Scale: +SAV_Trainer7GG.L_SY=Y Scale: +SAV_Trainer7GG.L_SZ=Z Scale: SAV_Trainer7GG.L_TrainerName=Nombre del Entrenador: +SAV_Trainer7GG.L_X=X Coordinate: +SAV_Trainer7GG.L_Y=Y Coordinate: +SAV_Trainer7GG.L_Z=Z Coordinate: SAV_Trainer7GG.Label_SID=IDS: SAV_Trainer7GG.Label_TID=ID: +SAV_Trainer7GG.Tab_BadgeMap=Map SAV_Trainer7GG.Tab_Complex=Complejo GO SAV_Trainer7GG.Tab_Overview=General SAV_Trainer8.B_Cancel=Cancelar @@ -1671,6 +1707,9 @@ SAV_Trainer8.L_ShowTitleScreen=Mostrado en el título: SAV_Trainer8.L_ShowTrainerCard=Mostrado en la Tarjeta Entrenador: SAV_Trainer8.L_Singles=Indiv.: SAV_Trainer8.L_Started=Inicio: +SAV_Trainer8.L_SX=X Scale: +SAV_Trainer8.L_SY=Y Scale: +SAV_Trainer8.L_SZ=Z Scale: SAV_Trainer8.L_TrainerName=Nombre: SAV_Trainer8.L_TRCardID=ID Entr. en Tarjeta Liga: SAV_Trainer8.L_TRCardName=Nombre Entr. en Tarj. de Liga: @@ -1690,7 +1729,9 @@ SAV_Trainer8a.B_Cancel=Cancelar SAV_Trainer8a.B_MaxCash=+ SAV_Trainer8a.B_Save=Save SAV_Trainer8a.GB_Adventure=Información de la aventura +SAV_Trainer8a.GB_Map=Map Position SAV_Trainer8a.GB_Stats=Estadísticas +SAV_Trainer8a.L_CurrentMap=Current Map: SAV_Trainer8a.L_GalaxyRank=Rango Galaxia: SAV_Trainer8a.L_Hours=Hrs.: SAV_Trainer8a.L_Language=Idioma: @@ -1699,12 +1740,17 @@ SAV_Trainer8a.L_MeritCurrent=Puntos de Gratitud actuales: SAV_Trainer8a.L_MeritEarned=Puntos de Gratitud conseguidos: SAV_Trainer8a.L_Minutes=Min.: SAV_Trainer8a.L_Money=$: +SAV_Trainer8a.L_R=Rotation: SAV_Trainer8a.L_SatchelUpgrades=Aumentos Zurrón: SAV_Trainer8a.L_Seconds=Seg.: SAV_Trainer8a.L_Started=Inicio partida: SAV_Trainer8a.L_TrainerName=Nombre del Entrenador: +SAV_Trainer8a.L_X=X Coordinate: +SAV_Trainer8a.L_Y=Y Coordinate: +SAV_Trainer8a.L_Z=Z Coordinate: SAV_Trainer8a.Label_SID=SID: SAV_Trainer8a.Label_TID=TID: +SAV_Trainer8a.Tab_BadgeMap=Map SAV_Trainer8a.Tab_Overview=General SAV_Trainer8b.B_Cancel=Cancelar SAV_Trainer8b.B_MaxCash=+ @@ -1757,6 +1803,7 @@ SAV_Trainer9.L_Language=Idioma: SAV_Trainer9.L_LP=PL: SAV_Trainer9.L_Minutes=Min.: SAV_Trainer9.L_Money=$: +SAV_Trainer9.L_R=Rotation: SAV_Trainer9.L_Seconds=Seg.: SAV_Trainer9.L_Started=Game Started: SAV_Trainer9.L_TrainerName=Nombre del Entrenador: diff --git a/PKHeX.WinForms/Resources/text/lang_fr.txt b/PKHeX.WinForms/Resources/text/lang_fr.txt index 691489dce22..9c04db4d07f 100644 --- a/PKHeX.WinForms/Resources/text/lang_fr.txt +++ b/PKHeX.WinForms/Resources/text/lang_fr.txt @@ -13,6 +13,7 @@ SAV_BoxLayout=Fonds de Boîtes SAV_BoxList=Visualiseur de stockage SAV_Capture7GG=Capture Éditeur d'enregistrement SAV_CGearSkin=Fonds C-Gear +SAV_Chatter=Chatter Editor SAV_Database=Base de Données SAV_Encounters=Base de données SAV_EventFlags=Événements dans le Jeu @@ -54,6 +55,7 @@ SAV_Raid8=Éditeur de paramètres de raid SAV_Raid9=Éditeur de paramètres de raid SAV_RaidSevenStar9=7 Star Raid Parameter Editor SAV_Roamer3=Éditeur itinérant +SAV_Roamer6=Roamer Editor SAV_RTC3=Éditeur d'horloge en temps réel SAV_SealStickers8b=Liste des sceaux SAV_SecretBase=Éditeur de base secrète @@ -120,6 +122,8 @@ LocalizedDescription.HideSAVDetails=Cacher les détails de la sauvegarde LocalizedDescription.HideSecretDetails=Cacher les détails secrets dans les éditeurs LocalizedDescription.HoverSlotGlowEdges=Faire briller le Pokémon au survol LocalizedDescription.HoverSlotPlayCry=Jouer le cri du Pokémon au survol +LocalizedDescription.HoverSlotShowEncounter=Show Encounter Info in on Hover +LocalizedDescription.HoverSlotShowPreview=Show PKM Slot Preview on Hover LocalizedDescription.HoverSlotShowText=Montrer le résumé du Pokémon au survol LocalizedDescription.IgnoreLegalPopup=Ne pas montrer de popup si le PKM est légal ! LocalizedDescription.InitialSortMode=Lors du chargement du contenu de la base de données PKM, la liste sera ordonnée selon cette option. @@ -138,6 +142,8 @@ LocalizedDescription.PathBlockKeyList=Folder path that contains dump(s) of block LocalizedDescription.PlaySoundLegalityCheck=PlaySoundLegalityCheck LocalizedDescription.PlaySoundSAVLoad=PlaySoundSAVLoad LocalizedDescription.PluginLoadMethod=Charge les plugins depuis le dossier plugins, en supposant que ce dossier existe. Essayez "LoadFile" pour atténuer les échecs de chargement intermittents. +LocalizedDescription.PreviewCursorShift=Show a Glow effect around the PKM on Hover +LocalizedDescription.PreviewShowPaste=Show Showdown Paste in special Preview on Hover LocalizedDescription.ReturnNoneIfEmptySearch=Saute la recherche si l'utilisateur a oublié de saisir Espèce / Capacité(s) dans les critères de recherche. LocalizedDescription.RNGFrameNotFound=Severity to flag a Legality Check if the RNG Frame Checking logic does not find a match. LocalizedDescription.SearchBackups=When loading content for the PKM Database, search within backup save files. @@ -175,14 +181,15 @@ Main.B_Blocks=Bloquer les données Main.B_CellsStickers=Cells/Stickers Main.B_CGearSkin=Fonds C-Gear Main.B_Clear=Effacer +Main.B_ConvertKorean=Korean Save Conversion Main.B_FestivalPlaza=Place Festival Main.B_JPEG=Sauver image PGL -Main.B_ConvertKorean=Korean Save Conversion Main.B_MailBox=Boîte aux lettres Main.B_MoveShop=Move Shop Main.B_OpenApricorn=Noigrumes Main.B_OpenBerryField=Baies Main.B_OpenBoxLayout=Fonds Boîte +Main.B_OpenChatterEditor=Babil Main.B_OpenEventFlags=Évènements Main.B_OpenFriendSafari=Safari Amis Main.B_OpenGeonetEditor=Géonet @@ -532,6 +539,14 @@ SAV_CGearSkin.B_ExportPNG=Exporter .png SAV_CGearSkin.B_ImportCGB=Importer .cgb/.psk SAV_CGearSkin.B_ImportPNG=Importer .png SAV_CGearSkin.B_Save=Sauvegarder +SAV_Chatter.B_Cancel=Annuler +SAV_Chatter.B_ExportPCM=Exporter .pcm +SAV_Chatter.B_ExportWAV=Exporter .wav +SAV_Chatter.B_ImportPCM=Importer .pcm +SAV_Chatter.B_PlayRecording=Play Recording +SAV_Chatter.B_Save=Sauvegarder +SAV_Chatter.CHK_Initialized=Initialized +SAV_Chatter.L_Confusion=Confusion %: SAV_Database.B_Add=Ajouter SAV_Database.B_Reset=Réinit. Filtres SAV_Database.B_Search=Rechercher @@ -865,13 +880,17 @@ SAV_Misc5.B_Cancel=Annuler SAV_Misc5.B_DumpFC=Dump Data SAV_Misc5.B_FunfestMissions=Tout débloquer (w/o No.0) SAV_Misc5.B_ImportFC=Import Data +SAV_Misc5.B_ObtainAllMedals=Obtain All Medals SAV_Misc5.B_RandForest=Randomiser toutes les zones SAV_Misc5.B_Save=Sauvegarder SAV_Misc5.B_UnlockAllMusicalProps=Débloquez tous les accessoires musicaux +SAV_Misc5.B_UnlockAllProps=Unlock All Props SAV_Misc5.CHK_Area9=Zone 9 déverrouillée : SAV_Misc5.CHK_FMNew=NOUVEAU SAV_Misc5.CHK_Invisible=Invisible SAV_Misc5.CHK_LibertyPass=Activate LibertyPass +SAV_Misc5.CHK_MedalUnread=Unread +SAV_Misc5.CHK_PropObtained=Obtained SAV_Misc5.CHK_Subway0=Flag0 SAV_Misc5.CHK_Subway1=Flag1 SAV_Misc5.CHK_Subway2=Flag2 @@ -937,6 +956,8 @@ SAV_Misc5.TAB_BWCityForest=WhiteForest/BlackCity SAV_Misc5.TAB_Entralink=Entralink SAV_Misc5.TAB_Forest=Forest SAV_Misc5.TAB_Main=Main +SAV_Misc5.TAB_Medals=Medals +SAV_Misc5.TAB_Muscial=Musical SAV_Misc5.TAB_Subway=Subway SAV_Misc8b.B_Arceus=Débloquer l'événement Arceus SAV_Misc8b.B_Cancel=Annuler @@ -1376,6 +1397,11 @@ SAV_Roamer3.Label_SPA=SpA: SAV_Roamer3.Label_SPD=SpD: SAV_Roamer3.Label_SPE=Spe: SAV_Roamer3.Label_Species=Espèce: +SAV_Roamer6.B_Cancel=Cancel +SAV_Roamer6.B_Save=Save +SAV_Roamer6.L_RoamState=Roam State +SAV_Roamer6.L_Species=Roamer +SAV_Roamer6.L_TimesEncountered=Times Encountered SAV_RTC3.B_BerryFix=Correction des Baies SAV_RTC3.B_Cancel=Annuler SAV_RTC3.B_Reset=Réinitialiser RTC @@ -1628,17 +1654,27 @@ SAV_Trainer7GG.B_ImportGoFiles=Import from Folder (start at current slot) SAV_Trainer7GG.B_MaxCash=+ SAV_Trainer7GG.B_Save=Sauvegarder SAV_Trainer7GG.GB_Adventure=Infos Aventure +SAV_Trainer7GG.GB_Map=Map Position +SAV_Trainer7GG.L_CurrentMap=Current Map: SAV_Trainer7GG.L_GoSlot=Slot: SAV_Trainer7GG.L_GoSlotSummary=Summary SAV_Trainer7GG.L_Hours=Hrs. SAV_Trainer7GG.L_Language=Langue : SAV_Trainer7GG.L_Minutes=Min. SAV_Trainer7GG.L_Money=$ +SAV_Trainer7GG.L_R=Rotation: SAV_Trainer7GG.L_RivalName=Nom du Rival : SAV_Trainer7GG.L_Seconds=Sec. +SAV_Trainer7GG.L_SX=X Scale: +SAV_Trainer7GG.L_SY=Y Scale: +SAV_Trainer7GG.L_SZ=Z Scale: SAV_Trainer7GG.L_TrainerName=Nom de dresseur: +SAV_Trainer7GG.L_X=X Coordinate: +SAV_Trainer7GG.L_Y=Y Coordinate: +SAV_Trainer7GG.L_Z=Z Coordinate: SAV_Trainer7GG.Label_SID=SID: SAV_Trainer7GG.Label_TID=TID: +SAV_Trainer7GG.Tab_BadgeMap=Map SAV_Trainer7GG.Tab_Complex=GO Complex SAV_Trainer7GG.Tab_Overview=Vue d'ensemble SAV_Trainer8.B_Cancel=Annuler @@ -1671,6 +1707,9 @@ SAV_Trainer8.L_ShowTitleScreen=Shown on Title Screen: SAV_Trainer8.L_ShowTrainerCard=Shown on Trainer Card: SAV_Trainer8.L_Singles=Singles: SAV_Trainer8.L_Started=Début du jeu : +SAV_Trainer8.L_SX=X Scale: +SAV_Trainer8.L_SY=Y Scale: +SAV_Trainer8.L_SZ=Z Scale: SAV_Trainer8.L_TrainerName=Nom de dresseur: SAV_Trainer8.L_TRCardID=League TrainerID: SAV_Trainer8.L_TRCardName=League Card Name: @@ -1690,7 +1729,9 @@ SAV_Trainer8a.B_Cancel=Annuler SAV_Trainer8a.B_MaxCash=+ SAV_Trainer8a.B_Save=Sauvegarder SAV_Trainer8a.GB_Adventure=Adventure Info +SAV_Trainer8a.GB_Map=Map Position SAV_Trainer8a.GB_Stats=Stats +SAV_Trainer8a.L_CurrentMap=Current Map: SAV_Trainer8a.L_GalaxyRank=Galaxy Rank: SAV_Trainer8a.L_Hours=Heures: SAV_Trainer8a.L_Language=Langue : @@ -1699,12 +1740,17 @@ SAV_Trainer8a.L_MeritCurrent=Current Merit Points: SAV_Trainer8a.L_MeritEarned=Earned Merit Points: SAV_Trainer8a.L_Minutes=Minutes : SAV_Trainer8a.L_Money=$ : +SAV_Trainer8a.L_R=Rotation: SAV_Trainer8a.L_SatchelUpgrades=Satchel Upgrades: SAV_Trainer8a.L_Seconds=Secondes : SAV_Trainer8a.L_Started=Début du jeu : SAV_Trainer8a.L_TrainerName=Nom de dresseur : +SAV_Trainer8a.L_X=X Coordinate: +SAV_Trainer8a.L_Y=Y Coordinate: +SAV_Trainer8a.L_Z=Z Coordinate: SAV_Trainer8a.Label_SID=SID: SAV_Trainer8a.Label_TID=TID: +SAV_Trainer8a.Tab_BadgeMap=Map SAV_Trainer8a.Tab_Overview=Vue d'ensemble SAV_Trainer8b.B_Cancel=Annuler SAV_Trainer8b.B_MaxCash=+ @@ -1757,6 +1803,7 @@ SAV_Trainer9.L_Language=Langue : SAV_Trainer9.L_LP=LP : SAV_Trainer9.L_Minutes=Min : SAV_Trainer9.L_Money=$ : +SAV_Trainer9.L_R=Rotation: SAV_Trainer9.L_Seconds=S : SAV_Trainer9.L_Started=Début de l'aventure : SAV_Trainer9.L_TrainerName=Nom de dresseur : diff --git a/PKHeX.WinForms/Resources/text/lang_it.txt b/PKHeX.WinForms/Resources/text/lang_it.txt index 74222fbd99d..df1c4a16503 100644 --- a/PKHeX.WinForms/Resources/text/lang_it.txt +++ b/PKHeX.WinForms/Resources/text/lang_it.txt @@ -13,6 +13,7 @@ SAV_BoxLayout=Editor Disposizione Box SAV_BoxList=Visualizzatore Storage SAV_Capture7GG=Editor Record di Catture SAV_CGearSkin=C-Gear Skin +SAV_Chatter=Chatter Editor SAV_Database=Database SAV_Encounters=Database SAV_EventFlags=Editor Segnali Evento @@ -54,6 +55,7 @@ SAV_Raid8=Editor Parametri Raid SAV_Raid9=Editor Parametri Raid SAV_RaidSevenStar9=Editor di Parametri per Raid a 7 Stelle SAV_Roamer3=Editor Vaganti +SAV_Roamer6=Roamer Editor SAV_RTC3=Editor Orologio in tempo reale SAV_SealStickers8b=Lista Bolli SAV_SecretBase=Editor Base Segreta @@ -120,6 +122,8 @@ LocalizedDescription.HideSAVDetails=Nascondi i dettagli del File di Salvataggio LocalizedDescription.HideSecretDetails=Nascondi i Dettagli Segreti dagli Editor. LocalizedDescription.HoverSlotGlowEdges=Mostra l'evidenziatura del Pokémon al passaggio del Mouse LocalizedDescription.HoverSlotPlayCry=Ascolta il verso del Pokémon al passaggio del Mouse +LocalizedDescription.HoverSlotShowEncounter=Show Encounter Info in on Hover +LocalizedDescription.HoverSlotShowPreview=Show PKM Slot Preview on Hover LocalizedDescription.HoverSlotShowText=Mostra la descrizione dello Slot Pokémon al passaggio del Mouse LocalizedDescription.IgnoreLegalPopup=Non mostrare avviso se il Pokémon è Legale LocalizedDescription.InitialSortMode=Durante il caricamento del Database Pokémon, la lista verrà ordinata in base a questa opzione. @@ -138,6 +142,8 @@ LocalizedDescription.PathBlockKeyList=Percorso che contiene i Dump dei blocchi d LocalizedDescription.PlaySoundLegalityCheck=AvviaSuoniPerControlliLegalità LocalizedDescription.PlaySoundSAVLoad=AvviaSuoniAlCaricamentoDelSAV LocalizedDescription.PluginLoadMethod=Carica Plugins dlla cartella plugins, se esiste. Prova LoadFile per mitigare eventuali fallimenti. +LocalizedDescription.PreviewCursorShift=Show a Glow effect around the PKM on Hover +LocalizedDescription.PreviewShowPaste=Show Showdown Paste in special Preview on Hover LocalizedDescription.ReturnNoneIfEmptySearch=Salta il processo di ricerca se l'utente non ha inserito la Specie o le Mosse nei filtri di ricerca. LocalizedDescription.RNGFrameNotFound=Forza una segnalazione di Legalità se la logica di controllo RNG non trova una corrispondenza. LocalizedDescription.SearchBackups=Cerca nei backup dei salvataggi quando carica il contenuto per il Database Pokémon. @@ -175,14 +181,15 @@ Main.B_Blocks=Blocchi di Dati Main.B_CellsStickers=Cellule e Adesivi Main.B_CGearSkin=C-Gear Skin Main.B_Clear=Pulisci +Main.B_ConvertKorean=Korean Save Conversion Main.B_FestivalPlaza=Festiplaza Main.B_JPEG=Salva PGL .JPEG -Main.B_ConvertKorean=Korean Save Conversion Main.B_MailBox=Messaggi Main.B_MoveShop=Negozio Mosse Main.B_OpenApricorn=Ghicocche Main.B_OpenBerryField=Campi di Bacche Main.B_OpenBoxLayout=Disposiz. Box +Main.B_OpenChatterEditor=Schiamazzo Main.B_OpenEventFlags=Segnali Evento Main.B_OpenFriendSafari=Safari Amici Main.B_OpenGeonetEditor=Geonet @@ -532,6 +539,14 @@ SAV_CGearSkin.B_ExportPNG=Esporta .png SAV_CGearSkin.B_ImportCGB=Importa .cgb/.psk SAV_CGearSkin.B_ImportPNG=Importa .png SAV_CGearSkin.B_Save=Salva +SAV_Chatter.B_Cancel=Annulla +SAV_Chatter.B_ExportPCM=Esporta .pcm +SAV_Chatter.B_ExportWAV=Esporta .wav +SAV_Chatter.B_ImportPCM=Importa .pcm +SAV_Chatter.B_PlayRecording=Play Recording +SAV_Chatter.B_Save=Salva +SAV_Chatter.CHK_Initialized=Initialized +SAV_Chatter.L_Confusion=Confusion %: SAV_Database.B_Add=Add SAV_Database.B_Reset=Reset Filtri SAV_Database.B_Search=Cerca! @@ -865,13 +880,17 @@ SAV_Misc5.B_Cancel=Annulla SAV_Misc5.B_DumpFC=Dump Data SAV_Misc5.B_FunfestMissions=Sblocca Tutto (w/o No.0) SAV_Misc5.B_ImportFC=Import Data +SAV_Misc5.B_ObtainAllMedals=Obtain All Medals SAV_Misc5.B_RandForest=Casualizza Tutti gli Alberi SAV_Misc5.B_Save=Salva SAV_Misc5.B_UnlockAllMusicalProps=Sblocca tutti gli accessori per Musical +SAV_Misc5.B_UnlockAllProps=Unlock All Props SAV_Misc5.CHK_Area9=Area 9 Sbloccata: SAV_Misc5.CHK_FMNew=Nuovo SAV_Misc5.CHK_Invisible=Invisibile SAV_Misc5.CHK_LibertyPass=Attiva LiberTicket +SAV_Misc5.CHK_MedalUnread=Unread +SAV_Misc5.CHK_PropObtained=Obtained SAV_Misc5.CHK_Subway0=Flag0 SAV_Misc5.CHK_Subway1=Flag1 SAV_Misc5.CHK_Subway2=Flag2 @@ -937,6 +956,8 @@ SAV_Misc5.TAB_BWCityForest=WhiteForest/BlackCity SAV_Misc5.TAB_Entralink=Intramondo SAV_Misc5.TAB_Forest=Foresta SAV_Misc5.TAB_Main=Main +SAV_Misc5.TAB_Medals=Medals +SAV_Misc5.TAB_Muscial=Musical SAV_Misc5.TAB_Subway=Metrò SAV_Misc8b.B_Arceus=Unlock Arceus Event SAV_Misc8b.B_Cancel=Annulla @@ -1376,6 +1397,11 @@ SAV_Roamer3.Label_SPA=Att. Sp.: SAV_Roamer3.Label_SPD=Dif. Sp.: SAV_Roamer3.Label_SPE=Velocità: SAV_Roamer3.Label_Species=Specie: +SAV_Roamer6.B_Cancel=Cancel +SAV_Roamer6.B_Save=Save +SAV_Roamer6.L_RoamState=Roam State +SAV_Roamer6.L_Species=Roamer +SAV_Roamer6.L_TimesEncountered=Times Encountered SAV_RTC3.B_BerryFix=Fix delle Bacche SAV_RTC3.B_Cancel=Annulla SAV_RTC3.B_Reset=Reset Orologio @@ -1628,17 +1654,27 @@ SAV_Trainer7GG.B_ImportGoFiles=Importa da Cartella (partendo dallo slot attuale) SAV_Trainer7GG.B_MaxCash=+ SAV_Trainer7GG.B_Save=Salva SAV_Trainer7GG.GB_Adventure=Info Avventura +SAV_Trainer7GG.GB_Map=Map Position +SAV_Trainer7GG.L_CurrentMap=Current Map: SAV_Trainer7GG.L_GoSlot=Slot: SAV_Trainer7GG.L_GoSlotSummary=Sommario SAV_Trainer7GG.L_Hours=Ore: SAV_Trainer7GG.L_Language=Lingua: SAV_Trainer7GG.L_Minutes=Min: SAV_Trainer7GG.L_Money=$: +SAV_Trainer7GG.L_R=Rotation: SAV_Trainer7GG.L_RivalName=Nome Rivale SAV_Trainer7GG.L_Seconds=Sec: +SAV_Trainer7GG.L_SX=X Scale: +SAV_Trainer7GG.L_SY=Y Scale: +SAV_Trainer7GG.L_SZ=Z Scale: SAV_Trainer7GG.L_TrainerName=Nome Allenatore: +SAV_Trainer7GG.L_X=X Coordinate: +SAV_Trainer7GG.L_Y=Y Coordinate: +SAV_Trainer7GG.L_Z=Z Coordinate: SAV_Trainer7GG.Label_SID=SID: SAV_Trainer7GG.Label_TID=TID: +SAV_Trainer7GG.Tab_BadgeMap=Map SAV_Trainer7GG.Tab_Complex=GO Park SAV_Trainer7GG.Tab_Overview=Panoramica SAV_Trainer8.B_Cancel=Annulla @@ -1671,6 +1707,9 @@ SAV_Trainer8.L_ShowTitleScreen=Pokémon Schermo del Titolo: SAV_Trainer8.L_ShowTrainerCard=Pokémon Scheda Allenatore: SAV_Trainer8.L_Singles=Singole: SAV_Trainer8.L_Started=Gioco iniziato: +SAV_Trainer8.L_SX=X Scale: +SAV_Trainer8.L_SY=Y Scale: +SAV_Trainer8.L_SZ=Z Scale: SAV_Trainer8.L_TrainerName=Nome Allenatore: SAV_Trainer8.L_TRCardID=ID Allenatore della Lega: SAV_Trainer8.L_TRCardName=Nome Scheda della Lega: @@ -1690,7 +1729,9 @@ SAV_Trainer8a.B_Cancel=Annulla SAV_Trainer8a.B_MaxCash=+ SAV_Trainer8a.B_Save=Salva SAV_Trainer8a.GB_Adventure=Info Avventura +SAV_Trainer8a.GB_Map=Map Position SAV_Trainer8a.GB_Stats=Statistiche +SAV_Trainer8a.L_CurrentMap=Current Map: SAV_Trainer8a.L_GalaxyRank=Rango Galassia: SAV_Trainer8a.L_Hours=Ore: SAV_Trainer8a.L_Language=Lingua: @@ -1699,12 +1740,17 @@ SAV_Trainer8a.L_MeritCurrent=Punti di Merito Attuali: SAV_Trainer8a.L_MeritEarned=Punti di Merito Ottenuti: SAV_Trainer8a.L_Minutes=Min: SAV_Trainer8a.L_Money=$: +SAV_Trainer8a.L_R=Rotation: SAV_Trainer8a.L_SatchelUpgrades=Ampliamenti di Crescenzo: SAV_Trainer8a.L_Seconds=Sec: SAV_Trainer8a.L_Started=Gioco iniziato: SAV_Trainer8a.L_TrainerName=Nome Allenatore: +SAV_Trainer8a.L_X=X Coordinate: +SAV_Trainer8a.L_Y=Y Coordinate: +SAV_Trainer8a.L_Z=Z Coordinate: SAV_Trainer8a.Label_SID=SID: SAV_Trainer8a.Label_TID=TID: +SAV_Trainer8a.Tab_BadgeMap=Map SAV_Trainer8a.Tab_Overview=Panoramica SAV_Trainer8b.B_Cancel=Annulla SAV_Trainer8b.B_MaxCash=+ @@ -1757,6 +1803,7 @@ SAV_Trainer9.L_Language=Lingua: SAV_Trainer9.L_LP=CL: SAV_Trainer9.L_Minutes=Min: SAV_Trainer9.L_Money=$: +SAV_Trainer9.L_R=Rotation: SAV_Trainer9.L_Seconds=Sec: SAV_Trainer9.L_Started=Game Started: SAV_Trainer9.L_TrainerName=Nome Allenatore: diff --git a/PKHeX.WinForms/Resources/text/lang_ja.txt b/PKHeX.WinForms/Resources/text/lang_ja.txt index 4e3e98e1f4f..3068787029a 100644 --- a/PKHeX.WinForms/Resources/text/lang_ja.txt +++ b/PKHeX.WinForms/Resources/text/lang_ja.txt @@ -13,6 +13,7 @@ SAV_BoxLayout=ボックスレイアウト SAV_BoxList=ボックスリスト SAV_Capture7GG=Capture Record Editor SAV_CGearSkin=Cギア スキン +SAV_Chatter=Chatter Editor SAV_Database=データベース SAV_Encounters=Database SAV_EventFlags=イベントフラグ @@ -54,6 +55,7 @@ SAV_Raid8=Raid Parameter Editor SAV_Raid9=Raid Parameter Editor SAV_RaidSevenStar9=星7レイドバトル・パラメータ・エディタ SAV_Roamer3=徘徊ポケモン +SAV_Roamer6=Roamer Editor SAV_RTC3=Real Time Clock SAV_SealStickers8b=Seal Sticker List SAV_SecretBase=ひみつきち @@ -120,6 +122,8 @@ LocalizedDescription.HideSAVDetails=Hide Save File Details in Program Title LocalizedDescription.HideSecretDetails=Hide Secret Details in Editors LocalizedDescription.HoverSlotGlowEdges=Show PKM Glow on Hover LocalizedDescription.HoverSlotPlayCry=Play PKM Slot Cry on Hover +LocalizedDescription.HoverSlotShowEncounter=Show Encounter Info in on Hover +LocalizedDescription.HoverSlotShowPreview=Show PKM Slot Preview on Hover LocalizedDescription.HoverSlotShowText=Show PKM Slot ToolTip on Hover LocalizedDescription.IgnoreLegalPopup=Don't show popup if Legal! LocalizedDescription.InitialSortMode=When loading content for the PKM database, the list will be ordered by this option. @@ -138,6 +142,8 @@ LocalizedDescription.PathBlockKeyList=Folder path that contains dump(s) of block LocalizedDescription.PlaySoundLegalityCheck=PlaySoundLegalityCheck LocalizedDescription.PlaySoundSAVLoad=PlaySoundSAVLoad LocalizedDescription.PluginLoadMethod=Loads plugins from the plugins folder, assuming the folder exists. Try LoadFile to mitigate intermittent load failures. +LocalizedDescription.PreviewCursorShift=Show a Glow effect around the PKM on Hover +LocalizedDescription.PreviewShowPaste=Show Showdown Paste in special Preview on Hover LocalizedDescription.ReturnNoneIfEmptySearch=Skips searching if the user forgot to enter Species / Move(s) into the search criteria. LocalizedDescription.RNGFrameNotFound=Severity to flag a Legality Check if the RNG Frame Checking logic does not find a match. LocalizedDescription.SearchBackups=When loading content for the PKM Database, search within backup save files. @@ -175,14 +181,15 @@ Main.B_Blocks=ブロック・データ Main.B_CellsStickers=ヌシール/セル Main.B_CGearSkin=Cギア スキン Main.B_Clear=Clear +Main.B_ConvertKorean=Korean Save Conversion Main.B_FestivalPlaza=フェスサークル Main.B_JPEG=PGL 画像保存 -Main.B_ConvertKorean=Korean Save Conversion Main.B_MailBox=メールボックス Main.B_MoveShop=Move Shop Main.B_OpenApricorn=ぼんぐりのみ Main.B_OpenBerryField=きのみ畑 Main.B_OpenBoxLayout=ボックス +Main.B_OpenChatterEditor=おしゃべり Main.B_OpenEventFlags=イベントフラグ Main.B_OpenFriendSafari=フレンドサファリ Main.B_OpenGeonetEditor=ジオネット @@ -526,12 +533,20 @@ SAV_Capture7GG.L_SpeciesCaptured=Captured SAV_Capture7GG.L_SpeciesTransferred=Transferred SAV_Capture7GG.L_TotalCaptured=Captured SAV_Capture7GG.L_TotalTransferred=Transferred -SAV_CGearSkin.B_Cancel=Cancel +SAV_CGearSkin.B_Cancel=キャンセル SAV_CGearSkin.B_ExportCGB=.cgbの書き出し SAV_CGearSkin.B_ExportPNG=.pngの書き出し SAV_CGearSkin.B_ImportCGB=.cgb/.pskの読み込み SAV_CGearSkin.B_ImportPNG=.pngの読み込み SAV_CGearSkin.B_Save=保存 +SAV_Chatter.B_Cancel=キャンセル +SAV_Chatter.B_ExportPCM=.pcmの書き出し +SAV_Chatter.B_ExportWAV=.wavの書き出し +SAV_Chatter.B_ImportPCM=.pcmの読み込み +SAV_Chatter.B_PlayRecording=Play Recording +SAV_Chatter.B_Save=保存 +SAV_Chatter.CHK_Initialized=Initialized +SAV_Chatter.L_Confusion=Confusion %: SAV_Database.B_Add=Add SAV_Database.B_Reset=フィルターリセット SAV_Database.B_Search=検索 @@ -865,13 +880,17 @@ SAV_Misc5.B_Cancel=キャンセル SAV_Misc5.B_DumpFC=Dump Data SAV_Misc5.B_FunfestMissions=全て解除 SAV_Misc5.B_ImportFC=Import Data +SAV_Misc5.B_ObtainAllMedals=Obtain All Medals SAV_Misc5.B_RandForest=Randomize All Areas SAV_Misc5.B_Save=保存 SAV_Misc5.B_UnlockAllMusicalProps=Unlock All Musical Props +SAV_Misc5.B_UnlockAllProps=Unlock All Props SAV_Misc5.CHK_Area9=Area 9 Unlocked: SAV_Misc5.CHK_FMNew=NEW SAV_Misc5.CHK_Invisible=Invisible SAV_Misc5.CHK_LibertyPass=リバティチケット 有効化 +SAV_Misc5.CHK_MedalUnread=Unread +SAV_Misc5.CHK_PropObtained=Obtained SAV_Misc5.CHK_Subway0=Flag0 SAV_Misc5.CHK_Subway1=Flag1 SAV_Misc5.CHK_Subway2=Flag2 @@ -937,6 +956,8 @@ SAV_Misc5.TAB_BWCityForest=WhiteForest/BlackCity SAV_Misc5.TAB_Entralink=ハイリンク SAV_Misc5.TAB_Forest=Forest SAV_Misc5.TAB_Main=メイン +SAV_Misc5.TAB_Medals=Medals +SAV_Misc5.TAB_Muscial=Musical SAV_Misc5.TAB_Subway=Subway SAV_Misc8b.B_Arceus=Unlock Arceus Event SAV_Misc8b.B_Cancel=Cancel @@ -1376,6 +1397,11 @@ SAV_Roamer3.Label_SPA=特攻 SAV_Roamer3.Label_SPD=特防 SAV_Roamer3.Label_SPE=素早 SAV_Roamer3.Label_Species=ポケモン +SAV_Roamer6.B_Cancel=Cancel +SAV_Roamer6.B_Save=Save +SAV_Roamer6.L_RoamState=Roam State +SAV_Roamer6.L_Species=Roamer +SAV_Roamer6.L_TimesEncountered=Times Encountered SAV_RTC3.B_BerryFix=きのみ SAV_RTC3.B_Cancel=キャンセル SAV_RTC3.B_Reset=時計リセット @@ -1628,17 +1654,27 @@ SAV_Trainer7GG.B_ImportGoFiles=Import from Folder (start at current slot) SAV_Trainer7GG.B_MaxCash=+ SAV_Trainer7GG.B_Save=Save SAV_Trainer7GG.GB_Adventure=Adventure Info +SAV_Trainer7GG.GB_Map=Map Position +SAV_Trainer7GG.L_CurrentMap=Current Map: SAV_Trainer7GG.L_GoSlot=Slot: SAV_Trainer7GG.L_GoSlotSummary=Summary SAV_Trainer7GG.L_Hours=Hrs: SAV_Trainer7GG.L_Language=言語: SAV_Trainer7GG.L_Minutes=Min: SAV_Trainer7GG.L_Money=$: +SAV_Trainer7GG.L_R=Rotation: SAV_Trainer7GG.L_RivalName=Rival Name: SAV_Trainer7GG.L_Seconds=Sec: +SAV_Trainer7GG.L_SX=X Scale: +SAV_Trainer7GG.L_SY=Y Scale: +SAV_Trainer7GG.L_SZ=Z Scale: SAV_Trainer7GG.L_TrainerName=Trainer Name: +SAV_Trainer7GG.L_X=X Coordinate: +SAV_Trainer7GG.L_Y=Y Coordinate: +SAV_Trainer7GG.L_Z=Z Coordinate: SAV_Trainer7GG.Label_SID=SID: SAV_Trainer7GG.Label_TID=TID: +SAV_Trainer7GG.Tab_BadgeMap=Map SAV_Trainer7GG.Tab_Complex=Go Complex SAV_Trainer7GG.Tab_Overview=Overview SAV_Trainer8.B_Cancel=Cancel @@ -1671,6 +1707,9 @@ SAV_Trainer8.L_ShowTitleScreen=Shown on Title Screen: SAV_Trainer8.L_ShowTrainerCard=Shown on Trainer Card: SAV_Trainer8.L_Singles=Singles: SAV_Trainer8.L_Started=Game Started: +SAV_Trainer8.L_SX=X Scale: +SAV_Trainer8.L_SY=Y Scale: +SAV_Trainer8.L_SZ=Z Scale: SAV_Trainer8.L_TrainerName=Trainer Name: SAV_Trainer8.L_TRCardID=League TrainerID: SAV_Trainer8.L_TRCardName=League Card Name: @@ -1690,7 +1729,9 @@ SAV_Trainer8a.B_Cancel=Cancel SAV_Trainer8a.B_MaxCash=+ SAV_Trainer8a.B_Save=Save SAV_Trainer8a.GB_Adventure=Adventure Info +SAV_Trainer8a.GB_Map=Map Position SAV_Trainer8a.GB_Stats=Stats +SAV_Trainer8a.L_CurrentMap=Current Map: SAV_Trainer8a.L_GalaxyRank=Galaxy Rank: SAV_Trainer8a.L_Hours=Hrs: SAV_Trainer8a.L_Language=言語: @@ -1699,12 +1740,17 @@ SAV_Trainer8a.L_MeritCurrent=Current Merit Points: SAV_Trainer8a.L_MeritEarned=Earned Merit Points: SAV_Trainer8a.L_Minutes=Min: SAV_Trainer8a.L_Money=$: +SAV_Trainer8a.L_R=Rotation: SAV_Trainer8a.L_SatchelUpgrades=Satchel Upgrades: SAV_Trainer8a.L_Seconds=Sec: SAV_Trainer8a.L_Started=Game Started: SAV_Trainer8a.L_TrainerName=Trainer Name: +SAV_Trainer8a.L_X=X Coordinate: +SAV_Trainer8a.L_Y=Y Coordinate: +SAV_Trainer8a.L_Z=Z Coordinate: SAV_Trainer8a.Label_SID=SID: SAV_Trainer8a.Label_TID=TID: +SAV_Trainer8a.Tab_BadgeMap=Map SAV_Trainer8a.Tab_Overview=Overview SAV_Trainer8b.B_Cancel=Cancel SAV_Trainer8b.B_MaxCash=+ @@ -1757,6 +1803,7 @@ SAV_Trainer9.L_Language=言語: SAV_Trainer9.L_LP=LP: SAV_Trainer9.L_Minutes=Min: SAV_Trainer9.L_Money=$: +SAV_Trainer9.L_R=Rotation: SAV_Trainer9.L_Seconds=Sec: SAV_Trainer9.L_Started=Game Started: SAV_Trainer9.L_TrainerName=Trainer Name: diff --git a/PKHeX.WinForms/Resources/text/lang_ko.txt b/PKHeX.WinForms/Resources/text/lang_ko.txt index aea72dfd169..f5beebe9f3b 100644 --- a/PKHeX.WinForms/Resources/text/lang_ko.txt +++ b/PKHeX.WinForms/Resources/text/lang_ko.txt @@ -13,6 +13,7 @@ SAV_BoxLayout=박스 레이아웃 편집 도구 SAV_BoxList=소지 공간 뷰어 SAV_Capture7GG=Capture Record Editor SAV_CGearSkin=C기어 스킨 +SAV_Chatter=Chatter Editor SAV_Database=데이터베이스 SAV_Encounters=데이터베이스 SAV_EventFlags=이벤트 플래그 편집 도구 @@ -54,6 +55,7 @@ SAV_Raid8=레이드 매개변수 편집 도구 SAV_Raid9=Raid Parameter Editor SAV_RaidSevenStar9=7 Star Raid Parameter Editor SAV_Roamer3=배회 편집 도구 +SAV_Roamer6=Roamer Editor SAV_RTC3=RTC 편집 도구 SAV_SealStickers8b=Seal Sticker List SAV_SecretBase=비밀기지 편집 도구 @@ -120,6 +122,8 @@ LocalizedDescription.HideSAVDetails=프로그램 제목에서 세이브 파일 LocalizedDescription.HideSecretDetails=편집 시 비밀 정보 숨기기 LocalizedDescription.HoverSlotGlowEdges=마우스 오버 시 포켓몬 빛내기 LocalizedDescription.HoverSlotPlayCry=마우스 오버 시 포켓몬 울음소리 재생 +LocalizedDescription.HoverSlotShowEncounter=Show Encounter Info in on Hover +LocalizedDescription.HoverSlotShowPreview=Show PKM Slot Preview on Hover LocalizedDescription.HoverSlotShowText=마우스 오버 시 포켓몬 툴팁 표시 LocalizedDescription.IgnoreLegalPopup=적법한 포켓몬일 경우 팝업 표시 안 함 LocalizedDescription.InitialSortMode=When loading content for the PKM database, the list will be ordered by this option. @@ -138,6 +142,8 @@ LocalizedDescription.PathBlockKeyList=Folder path that contains dump(s) of block LocalizedDescription.PlaySoundLegalityCheck=적법성 검사 창을 띄울 때 소리로 알림 LocalizedDescription.PlaySoundSAVLoad=새 세이브 파일을 불러올 때 소리로 알림 LocalizedDescription.PluginLoadMethod=Loads plugins from the plugins folder, assuming the folder exists. Try LoadFile to mitigate intermittent load failures. +LocalizedDescription.PreviewCursorShift=Show a Glow effect around the PKM on Hover +LocalizedDescription.PreviewShowPaste=Show Showdown Paste in special Preview on Hover LocalizedDescription.ReturnNoneIfEmptySearch=Skips searching if the user forgot to enter Species / Move(s) into the search criteria. LocalizedDescription.RNGFrameNotFound=Severity to flag a Legality Check if the RNG Frame Checking logic does not find a match. LocalizedDescription.SearchBackups=When loading content for the PKM Database, search within backup save files. @@ -175,14 +181,15 @@ Main.B_Blocks=블록 데이터 Main.B_CellsStickers=셀/스티커 Main.B_CGearSkin=C기어 스킨 Main.B_Clear=지우기 +Main.B_ConvertKorean=Korean Save Conversion Main.B_FestivalPlaza=페스서클 Main.B_JPEG=PGL .JPEG 저장 -Main.B_ConvertKorean=Korean Save Conversion Main.B_MailBox=메일박스 Main.B_MoveShop=Move Shop Main.B_OpenApricorn=규토리 Main.B_OpenBerryField=나무열매 농장 Main.B_OpenBoxLayout=박스 배열 +Main.B_OpenChatterEditor=수다 Main.B_OpenEventFlags=이벤트 플래그 Main.B_OpenFriendSafari=프렌드사파리 Main.B_OpenGeonetEditor=지오넷 @@ -532,6 +539,14 @@ SAV_CGearSkin.B_ExportPNG=.png 파일 내보내기 SAV_CGearSkin.B_ImportCGB=.cgb/.psk 파일 가져오기 SAV_CGearSkin.B_ImportPNG=.png 파일 가져오기 SAV_CGearSkin.B_Save=저장 +SAV_Chatter.B_Cancel=취소 +SAV_Chatter.B_ExportPCM=.pcm 파일 내보내기 +SAV_Chatter.B_ExportWAV=.wav 파일 내보내기 +SAV_Chatter.B_ImportPCM=.pcm 파일 가져오기 +SAV_Chatter.B_PlayRecording=Play Recording +SAV_Chatter.B_Save=저장 +SAV_Chatter.CHK_Initialized=Initialized +SAV_Chatter.L_Confusion=Confusion %: SAV_Database.B_Add=Add SAV_Database.B_Reset=필터 초기화 SAV_Database.B_Search=검색! @@ -865,13 +880,17 @@ SAV_Misc5.B_Cancel=취소 SAV_Misc5.B_DumpFC=Dump Data SAV_Misc5.B_FunfestMissions=모두 해금 (No.0 제외) SAV_Misc5.B_ImportFC=Import Data +SAV_Misc5.B_ObtainAllMedals=Obtain All Medals SAV_Misc5.B_RandForest=Randomize All Areas SAV_Misc5.B_Save=저장 SAV_Misc5.B_UnlockAllMusicalProps=Unlock All Musical Props +SAV_Misc5.B_UnlockAllProps=Unlock All Props SAV_Misc5.CHK_Area9=Area 9 Unlocked: SAV_Misc5.CHK_FMNew=신규 SAV_Misc5.CHK_Invisible=Invisible SAV_Misc5.CHK_LibertyPass=리버티티켓 활성화 +SAV_Misc5.CHK_MedalUnread=Unread +SAV_Misc5.CHK_PropObtained=Obtained SAV_Misc5.CHK_Subway0=Flag0 SAV_Misc5.CHK_Subway1=Flag1 SAV_Misc5.CHK_Subway2=Flag2 @@ -937,6 +956,8 @@ SAV_Misc5.TAB_BWCityForest=WhiteForest/BlackCity SAV_Misc5.TAB_Entralink=하일링크 SAV_Misc5.TAB_Forest=숲 SAV_Misc5.TAB_Main=Main +SAV_Misc5.TAB_Medals=Medals +SAV_Misc5.TAB_Muscial=Musical SAV_Misc5.TAB_Subway=Subway SAV_Misc8b.B_Arceus=Unlock Arceus Event SAV_Misc8b.B_Cancel=Cancel @@ -1376,6 +1397,11 @@ SAV_Roamer3.Label_SPA=특공: SAV_Roamer3.Label_SPD=특방: SAV_Roamer3.Label_SPE=스피드: SAV_Roamer3.Label_Species=종류: +SAV_Roamer6.B_Cancel=Cancel +SAV_Roamer6.B_Save=Save +SAV_Roamer6.L_RoamState=Roam State +SAV_Roamer6.L_Species=Roamer +SAV_Roamer6.L_TimesEncountered=Times Encountered SAV_RTC3.B_BerryFix=Berry Fix SAV_RTC3.B_Cancel=취소 SAV_RTC3.B_Reset=RTC 초기화 @@ -1628,17 +1654,27 @@ SAV_Trainer7GG.B_ImportGoFiles=폴더에서 가져오기 (현재 슬롯에서 SAV_Trainer7GG.B_MaxCash=+ SAV_Trainer7GG.B_Save=저장 SAV_Trainer7GG.GB_Adventure=모험 정보 +SAV_Trainer7GG.GB_Map=Map Position +SAV_Trainer7GG.L_CurrentMap=Current Map: SAV_Trainer7GG.L_GoSlot=슬롯: SAV_Trainer7GG.L_GoSlotSummary=요약 SAV_Trainer7GG.L_Hours=시간: SAV_Trainer7GG.L_Language=언어: SAV_Trainer7GG.L_Minutes=분: SAV_Trainer7GG.L_Money=$: +SAV_Trainer7GG.L_R=Rotation: SAV_Trainer7GG.L_RivalName=라이벌 이름: SAV_Trainer7GG.L_Seconds=초: +SAV_Trainer7GG.L_SX=X Scale: +SAV_Trainer7GG.L_SY=Y Scale: +SAV_Trainer7GG.L_SZ=Z Scale: SAV_Trainer7GG.L_TrainerName=트레이너 이름: +SAV_Trainer7GG.L_X=X Coordinate: +SAV_Trainer7GG.L_Y=Y Coordinate: +SAV_Trainer7GG.L_Z=Z Coordinate: SAV_Trainer7GG.Label_SID=SID: SAV_Trainer7GG.Label_TID=TID: +SAV_Trainer7GG.Tab_BadgeMap=Map SAV_Trainer7GG.Tab_Complex=자세히 SAV_Trainer7GG.Tab_Overview=개요 SAV_Trainer8.B_Cancel=취소 @@ -1671,6 +1707,9 @@ SAV_Trainer8.L_ShowTitleScreen=타이틀 화면: SAV_Trainer8.L_ShowTrainerCard=트레이너 카드: SAV_Trainer8.L_Singles=싱글배틀: SAV_Trainer8.L_Started=게임 시작: +SAV_Trainer8.L_SX=X Scale: +SAV_Trainer8.L_SY=Y Scale: +SAV_Trainer8.L_SZ=Z Scale: SAV_Trainer8.L_TrainerName=트레이너 이름: SAV_Trainer8.L_TRCardID=리그 카드 트레이너 ID: SAV_Trainer8.L_TRCardName=리그 카드 이름: @@ -1690,7 +1729,9 @@ SAV_Trainer8a.B_Cancel=Cancel SAV_Trainer8a.B_MaxCash=+ SAV_Trainer8a.B_Save=Save SAV_Trainer8a.GB_Adventure=Adventure Info +SAV_Trainer8a.GB_Map=Map Position SAV_Trainer8a.GB_Stats=Stats +SAV_Trainer8a.L_CurrentMap=Current Map: SAV_Trainer8a.L_GalaxyRank=Galaxy Rank: SAV_Trainer8a.L_Hours=Hrs: SAV_Trainer8a.L_Language=Language: @@ -1699,12 +1740,17 @@ SAV_Trainer8a.L_MeritCurrent=Current Merit Points: SAV_Trainer8a.L_MeritEarned=Earned Merit Points: SAV_Trainer8a.L_Minutes=Min: SAV_Trainer8a.L_Money=$: +SAV_Trainer8a.L_R=Rotation: SAV_Trainer8a.L_SatchelUpgrades=Satchel Upgrades: SAV_Trainer8a.L_Seconds=Sec: SAV_Trainer8a.L_Started=Game Started: SAV_Trainer8a.L_TrainerName=Trainer Name: +SAV_Trainer8a.L_X=X Coordinate: +SAV_Trainer8a.L_Y=Y Coordinate: +SAV_Trainer8a.L_Z=Z Coordinate: SAV_Trainer8a.Label_SID=SID: SAV_Trainer8a.Label_TID=TID: +SAV_Trainer8a.Tab_BadgeMap=Map SAV_Trainer8a.Tab_Overview=Overview SAV_Trainer8b.B_Cancel=Cancel SAV_Trainer8b.B_MaxCash=+ @@ -1757,6 +1803,7 @@ SAV_Trainer9.L_Language=Language: SAV_Trainer9.L_LP=LP: SAV_Trainer9.L_Minutes=Min: SAV_Trainer9.L_Money=$: +SAV_Trainer9.L_R=Rotation: SAV_Trainer9.L_Seconds=Sec: SAV_Trainer9.L_Started=Game Started: SAV_Trainer9.L_TrainerName=Trainer Name: diff --git a/PKHeX.WinForms/Resources/text/lang_zh.txt b/PKHeX.WinForms/Resources/text/lang_zh.txt index 3278cf7f3bd..57a787518f1 100644 --- a/PKHeX.WinForms/Resources/text/lang_zh.txt +++ b/PKHeX.WinForms/Resources/text/lang_zh.txt @@ -13,6 +13,7 @@ SAV_BoxLayout=盒子外观 SAV_BoxList=寄放系统 SAV_Capture7GG=捕获记录编辑 SAV_CGearSkin=C装置皮肤 +SAV_Chatter=Chatter Editor SAV_Database=数据库 SAV_Encounters=数据库 SAV_EventFlags=事件旗标编辑 @@ -54,6 +55,7 @@ SAV_Raid8=极巨巢穴参数编辑器 SAV_Raid9=太晶洞窟参数编辑器 SAV_RaidSevenStar9=7星太晶洞窟参数编辑器 SAV_Roamer3=游走传说 +SAV_Roamer6=Roamer Editor SAV_RTC3=时钟编辑 SAV_SealStickers8b=球壳装饰列表 SAV_SecretBase=秘密基地 @@ -120,6 +122,8 @@ LocalizedDescription.HideSAVDetails=隐藏程序标题中的保存文件详细 LocalizedDescription.HideSecretDetails=在编辑器中隐藏秘密细节。 LocalizedDescription.HoverSlotGlowEdges=在悬停时显示PKM闪烁。 LocalizedDescription.HoverSlotPlayCry=在悬停时播放槽位PKM叫声。 +LocalizedDescription.HoverSlotShowEncounter=Show Encounter Info in on Hover +LocalizedDescription.HoverSlotShowPreview=Show PKM Slot Preview on Hover LocalizedDescription.HoverSlotShowText=在悬停上显示槽位PKM提示。 LocalizedDescription.IgnoreLegalPopup=如果合法不显示弹窗! LocalizedDescription.InitialSortMode=加载 PKM 数据库的内容时,列表将按此选项排序。 @@ -138,6 +142,8 @@ LocalizedDescription.PathBlockKeyList=包含特定长度名称保存的文件夹 LocalizedDescription.PlaySoundLegalityCheck=弹窗合法性报告时播放声音。 LocalizedDescription.PlaySoundSAVLoad=读取新档时播放声音。 LocalizedDescription.PluginLoadMethod=从plugins文件夹加载插件,假设该文件夹存在。尝试加载文件以减少间歇性加载失败。 +LocalizedDescription.PreviewCursorShift=Show a Glow effect around the PKM on Hover +LocalizedDescription.PreviewShowPaste=Show Showdown Paste in special Preview on Hover LocalizedDescription.ReturnNoneIfEmptySearch=如果用户忘记在搜索条件中输入种类/招式,则跳过搜索。 LocalizedDescription.RNGFrameNotFound=RNG帧匹配合法性检查等级。 LocalizedDescription.SearchBackups=当加载 PKM 数据库内容时,包含其他备份储存资料档案。 @@ -175,14 +181,15 @@ Main.B_Blocks=数据块 Main.B_CellsStickers=细胞/贴纸 Main.B_CGearSkin=C装置皮肤 Main.B_Clear=清理 -Main.B_FestivalPlaza=圆庆广场 Main.B_ConvertKorean=韩语保存转换 +Main.B_FestivalPlaza=圆庆广场 Main.B_JPEG=保存PGL.JPEG Main.B_MailBox=邮箱 Main.B_MoveShop=招式商店 Main.B_OpenApricorn=球果 Main.B_OpenBerryField=树果农场 Main.B_OpenBoxLayout=盒子布局 +Main.B_OpenChatterEditor=喋喋不休‎ Main.B_OpenEventFlags=事件旗标 Main.B_OpenFriendSafari=朋友狩猎 Main.B_OpenGeonetEditor=地理网 @@ -532,6 +539,14 @@ SAV_CGearSkin.B_ExportPNG=导出.png SAV_CGearSkin.B_ImportCGB=导入.cgb/.psk SAV_CGearSkin.B_ImportPNG=导入.png SAV_CGearSkin.B_Save=保存 +SAV_Chatter.B_Cancel=取消 +SAV_Chatter.B_ExportPCM=导出.pcm +SAV_Chatter.B_ExportWAV=导出.wav +SAV_Chatter.B_ImportPCM=导入.pcm +SAV_Chatter.B_PlayRecording=Play Recording +SAV_Chatter.B_Save=保存 +SAV_Chatter.CHK_Initialized=Initialized +SAV_Chatter.L_Confusion=Confusion %: SAV_Database.B_Add=Add SAV_Database.B_Reset=重置筛选 SAV_Database.B_Search=检索! @@ -865,15 +880,17 @@ SAV_Misc5.B_Cancel=取消 SAV_Misc5.B_DumpFC=导出数据 SAV_Misc5.B_FunfestMissions=解锁所有 (除了 No.0) SAV_Misc5.B_ImportFC=导入数据 +SAV_Misc5.B_ObtainAllMedals=获得所有奖章 SAV_Misc5.B_RandForest=随机所有区域 SAV_Misc5.B_Save=保存 SAV_Misc5.B_UnlockAllMusicalProps=解锁全部音乐物品 SAV_Misc5.B_UnlockAllProps=解锁所有道具 -SAV_Misc5.B_ObtainAllMedals=获得所有奖章 SAV_Misc5.CHK_Area9=区域 9 解锁: SAV_Misc5.CHK_FMNew=NEW SAV_Misc5.CHK_Invisible=隐性 SAV_Misc5.CHK_LibertyPass=激活自由船票 +SAV_Misc5.CHK_MedalUnread=未读 +SAV_Misc5.CHK_PropObtained=获得 SAV_Misc5.CHK_Subway0=旗帜0 SAV_Misc5.CHK_Subway1=旗帜1 SAV_Misc5.CHK_Subway2=旗帜2 @@ -882,8 +899,6 @@ SAV_Misc5.CHK_Subway7=旗帜7 SAV_Misc5.CHK_SuperDouble=超级双打? SAV_Misc5.CHK_SuperMulti=超级多人? SAV_Misc5.CHK_SuperSingle=超级单打? -SAV_Misc5.CHK_MedalUnread=未读 -SAV_Misc5.CHK_PropObtained=获得 SAV_Misc5.GB_Doubles=双打 SAV_Misc5.GB_EntreeLevel=连入等级 SAV_Misc5.GB_FlyDest=飞翔目的地 @@ -941,9 +956,9 @@ SAV_Misc5.TAB_BWCityForest=白森林/黑色市 SAV_Misc5.TAB_Entralink=连入 SAV_Misc5.TAB_Forest=森林 SAV_Misc5.TAB_Main=主界面 -SAV_Misc5.TAB_Subway=地铁 SAV_Misc5.TAB_Medals=奖章 SAV_Misc5.TAB_Muscial=音乐剧 +SAV_Misc5.TAB_Subway=地铁 SAV_Misc8b.B_Arceus=解锁阿尔宙斯事件 SAV_Misc8b.B_Cancel=取消 SAV_Misc8b.B_Darkrai=解锁达克莱伊事件 @@ -1383,6 +1398,11 @@ SAV_Roamer3.Label_SPA=特攻: SAV_Roamer3.Label_SPD=特防: SAV_Roamer3.Label_SPE=速度: SAV_Roamer3.Label_Species=种类: +SAV_Roamer6.B_Cancel=Cancel +SAV_Roamer6.B_Save=Save +SAV_Roamer6.L_RoamState=Roam State +SAV_Roamer6.L_Species=Roamer +SAV_Roamer6.L_TimesEncountered=Times Encountered SAV_RTC3.B_BerryFix=树果修复 SAV_RTC3.B_Cancel=取消 SAV_RTC3.B_Reset=重设时间 @@ -1635,17 +1655,27 @@ SAV_Trainer7GG.B_ImportGoFiles=从文件夹导入(从当前位置开始) SAV_Trainer7GG.B_MaxCash=+ SAV_Trainer7GG.B_Save=保存 SAV_Trainer7GG.GB_Adventure=冒险信息 +SAV_Trainer7GG.GB_Map=Map Position +SAV_Trainer7GG.L_CurrentMap=Current Map: SAV_Trainer7GG.L_GoSlot=槽: SAV_Trainer7GG.L_GoSlotSummary=摘要 SAV_Trainer7GG.L_Hours=时: SAV_Trainer7GG.L_Language=语言: SAV_Trainer7GG.L_Minutes=分: SAV_Trainer7GG.L_Money=$: +SAV_Trainer7GG.L_R=Rotation: SAV_Trainer7GG.L_RivalName=对手名称: SAV_Trainer7GG.L_Seconds=秒: +SAV_Trainer7GG.L_SX=X Scale: +SAV_Trainer7GG.L_SY=Y Scale: +SAV_Trainer7GG.L_SZ=Z Scale: SAV_Trainer7GG.L_TrainerName=训练家名字: +SAV_Trainer7GG.L_X=X Coordinate: +SAV_Trainer7GG.L_Y=Y Coordinate: +SAV_Trainer7GG.L_Z=Z Coordinate: SAV_Trainer7GG.Label_SID=里ID: SAV_Trainer7GG.Label_TID=表ID: +SAV_Trainer7GG.Tab_BadgeMap=Map SAV_Trainer7GG.Tab_Complex=GO游乐区 SAV_Trainer7GG.Tab_Overview=概览 SAV_Trainer8.B_Cancel=取消 @@ -1678,6 +1708,9 @@ SAV_Trainer8.L_ShowTitleScreen=标题上显示: SAV_Trainer8.L_ShowTrainerCard=训练家卡片上显示: SAV_Trainer8.L_Singles=单打: SAV_Trainer8.L_Started=游戏已进行: +SAV_Trainer8.L_SX=X比例: +SAV_Trainer8.L_SY=Y比例: +SAV_Trainer8.L_SZ=Z比例: SAV_Trainer8.L_TrainerName=训练家名字: SAV_Trainer8.L_TRCardID=联盟卡训练家ID: SAV_Trainer8.L_TRCardName=联盟卡名称: @@ -1687,9 +1720,6 @@ SAV_Trainer8.L_Watt=瓦特: SAV_Trainer8.L_X=X坐标: SAV_Trainer8.L_Y=Y坐标: SAV_Trainer8.L_Z=Z坐标: -SAV_Trainer8.L_SX=X比例: -SAV_Trainer8.L_SZ=Z比例: -SAV_Trainer8.L_SY=Y比例: SAV_Trainer8.Label_SID=里ID: SAV_Trainer8.Label_TID=表ID: SAV_Trainer8.Tab_BadgeMap=地图 @@ -1700,7 +1730,9 @@ SAV_Trainer8a.B_Cancel=取消 SAV_Trainer8a.B_MaxCash=+ SAV_Trainer8a.B_Save=保存 SAV_Trainer8a.GB_Adventure=冒险信息 +SAV_Trainer8a.GB_Map=Map Position SAV_Trainer8a.GB_Stats=统计 +SAV_Trainer8a.L_CurrentMap=Current Map: SAV_Trainer8a.L_GalaxyRank=银河队星级: SAV_Trainer8a.L_Hours=时: SAV_Trainer8a.L_Language=语言: @@ -1709,12 +1741,17 @@ SAV_Trainer8a.L_MeritCurrent=当前友好点数: SAV_Trainer8a.L_MeritEarned=以获得的友好点数: SAV_Trainer8a.L_Minutes=分: SAV_Trainer8a.L_Money=$: +SAV_Trainer8a.L_R=Rotation: SAV_Trainer8a.L_SatchelUpgrades=腰包升级次数: SAV_Trainer8a.L_Seconds=秒: SAV_Trainer8a.L_Started=游戏开始: SAV_Trainer8a.L_TrainerName=训练家名字: +SAV_Trainer8a.L_X=X Coordinate: +SAV_Trainer8a.L_Y=Y Coordinate: +SAV_Trainer8a.L_Z=Z Coordinate: SAV_Trainer8a.Label_SID=SID: SAV_Trainer8a.Label_TID=TID: +SAV_Trainer8a.Tab_BadgeMap=Map SAV_Trainer8a.Tab_Overview=概览 SAV_Trainer8b.B_Cancel=取消 SAV_Trainer8b.B_MaxCash=+ @@ -1767,13 +1804,13 @@ SAV_Trainer9.L_Language=语言: SAV_Trainer9.L_LP=LP: SAV_Trainer9.L_Minutes=分: SAV_Trainer9.L_Money=$: +SAV_Trainer9.L_R=旋转角度: SAV_Trainer9.L_Seconds=秒: SAV_Trainer9.L_Started=游戏开始: SAV_Trainer9.L_TrainerName=训练家名字: SAV_Trainer9.L_X=X坐标: SAV_Trainer9.L_Y=Y坐标: SAV_Trainer9.L_Z=Z坐标: -SAV_Trainer9.L_R=旋转角度: SAV_Trainer9.Label_SID=里ID: SAV_Trainer9.Label_TID=表ID: SAV_Trainer9.Tab_Images=图片 diff --git a/PKHeX.WinForms/Resources/text/lang_zh2.txt b/PKHeX.WinForms/Resources/text/lang_zh2.txt index 4676d459e4f..af97f6a0e8b 100644 --- a/PKHeX.WinForms/Resources/text/lang_zh2.txt +++ b/PKHeX.WinForms/Resources/text/lang_zh2.txt @@ -13,6 +13,7 @@ SAV_BoxLayout=盒子外觀 SAV_BoxList=寄放系統 SAV_Capture7GG=捕獲記錄編輯 SAV_CGearSkin=C裝置皮膚 +SAV_Chatter=Chatter Editor SAV_Database=資料庫 SAV_Encounters=遇見資料庫 SAV_EventFlags=事件旗標編輯 @@ -54,6 +55,7 @@ SAV_Raid8=極巨巢穴參數編輯器 SAV_Raid9=太晶洞窟參數編輯器 SAV_RaidSevenStar9=7星參數編輯器 SAV_Roamer3=遊走傳說編輯器 +SAV_Roamer6=Roamer Editor SAV_RTC3=時鐘編輯器 SAV_SealStickers8b=球殼裝飾列表 SAV_SecretBase=秘密基地 @@ -120,6 +122,8 @@ LocalizedDescription.HideSAVDetails=隱藏程式標題中的儲存資料檔詳 LocalizedDescription.HideSecretDetails=在編輯器中隱藏秘密細節 LocalizedDescription.HoverSlotGlowEdges=在懸停時顯示PKM Glow LocalizedDescription.HoverSlotPlayCry=在懸停時播放PKM Slot Cry +LocalizedDescription.HoverSlotShowEncounter=Show Encounter Info in on Hover +LocalizedDescription.HoverSlotShowPreview=Show PKM Slot Preview on Hover LocalizedDescription.HoverSlotShowText=在懸停上顯示PKM Slot ToolTip LocalizedDescription.IgnoreLegalPopup=合法時不顯示彈窗! LocalizedDescription.InitialSortMode=當加載 PKM 數據庫内容時,依照此選項進行排序 @@ -138,6 +142,8 @@ LocalizedDescription.PathBlockKeyList=Folder path that contains dump(s) of block LocalizedDescription.PlaySoundLegalityCheck=彈窗合法性報告時播放聲音 LocalizedDescription.PlaySoundSAVLoad=讀取新檔時播放聲音 LocalizedDescription.PluginLoadMethod=Loads plugins from the plugins folder, assuming the folder exists. Try LoadFile to mitigate intermittent load failures. +LocalizedDescription.PreviewCursorShift=Show a Glow effect around the PKM on Hover +LocalizedDescription.PreviewShowPaste=Show Showdown Paste in special Preview on Hover LocalizedDescription.ReturnNoneIfEmptySearch=Skips searching if the user forgot to enter Species / Move(s) into the search criteria. LocalizedDescription.RNGFrameNotFound=RNG幀匹配度合法性檢查等級。 LocalizedDescription.SearchBackups=當加載 PKM 數據庫内容時,包含其他備份儲存資料檔案 @@ -175,14 +181,15 @@ Main.B_Blocks=資料塊 Main.B_CellsStickers=細胞/貼紙 Main.B_CGearSkin=C裝置皮膚 Main.B_Clear=清理 +Main.B_ConvertKorean=Korean Save Conversion Main.B_FestivalPlaza=圓慶廣場 Main.B_JPEG=儲存PGL.JPEG -Main.B_ConvertKorean=Korean Save Conversion Main.B_MailBox=郵箱 Main.B_MoveShop=招式商店 Main.B_OpenApricorn=果球 Main.B_OpenBerryField=樹果農場 Main.B_OpenBoxLayout=盒子佈局 +Main.B_OpenChatterEditor=喋喋不休‎ Main.B_OpenEventFlags=事件旗標 Main.B_OpenFriendSafari=朋友狩獵 Main.B_OpenGeonetEditor=寰宇網 @@ -532,6 +539,14 @@ SAV_CGearSkin.B_ExportPNG=匯出.png SAV_CGearSkin.B_ImportCGB=導入.cgb/.psk SAV_CGearSkin.B_ImportPNG=導入.png SAV_CGearSkin.B_Save=儲存 +SAV_Chatter.B_Cancel=取消 +SAV_Chatter.B_ExportPCM=匯出.pcm +SAV_Chatter.B_ExportWAV=匯出.wav +SAV_Chatter.B_ImportPCM=導入.pcm +SAV_Chatter.B_PlayRecording=Play Recording +SAV_Chatter.B_Save=儲存 +SAV_Chatter.CHK_Initialized=Initialized +SAV_Chatter.L_Confusion=Confusion %: SAV_Database.B_Add=添加 SAV_Database.B_Reset=重置篩選 SAV_Database.B_Search=檢索! @@ -865,13 +880,17 @@ SAV_Misc5.B_Cancel=取消 SAV_Misc5.B_DumpFC=Dump Data SAV_Misc5.B_FunfestMissions=解鎖所有 (除了 No.0) SAV_Misc5.B_ImportFC=Import Data +SAV_Misc5.B_ObtainAllMedals=Obtain All Medals SAV_Misc5.B_RandForest=隨機所有區域 SAV_Misc5.B_Save=儲存 SAV_Misc5.B_UnlockAllMusicalProps=解鎖全部音樂物品 +SAV_Misc5.B_UnlockAllProps=Unlock All Props SAV_Misc5.CHK_Area9=區域 9 解鎖: SAV_Misc5.CHK_FMNew=NEW SAV_Misc5.CHK_Invisible=隱性 SAV_Misc5.CHK_LibertyPass=啟動自由船票 +SAV_Misc5.CHK_MedalUnread=Unread +SAV_Misc5.CHK_PropObtained=Obtained SAV_Misc5.CHK_Subway0=Flag0 SAV_Misc5.CHK_Subway1=Flag1 SAV_Misc5.CHK_Subway2=Flag2 @@ -937,6 +956,8 @@ SAV_Misc5.TAB_BWCityForest=WhiteForest/BlackCity SAV_Misc5.TAB_Entralink=連入 SAV_Misc5.TAB_Forest=森林 SAV_Misc5.TAB_Main=主介面 +SAV_Misc5.TAB_Medals=Medals +SAV_Misc5.TAB_Muscial=Musical SAV_Misc5.TAB_Subway=地鐵 SAV_Misc8b.B_Arceus=解鎖阿爾宙斯事件 SAV_Misc8b.B_Cancel=取消 @@ -1376,6 +1397,11 @@ SAV_Roamer3.Label_SPA=特攻: SAV_Roamer3.Label_SPD=特防: SAV_Roamer3.Label_SPE=速度: SAV_Roamer3.Label_Species=種類: +SAV_Roamer6.B_Cancel=Cancel +SAV_Roamer6.B_Save=Save +SAV_Roamer6.L_RoamState=Roam State +SAV_Roamer6.L_Species=Roamer +SAV_Roamer6.L_TimesEncountered=Times Encountered SAV_RTC3.B_BerryFix=樹果修復 SAV_RTC3.B_Cancel=取消 SAV_RTC3.B_Reset=重設時間 @@ -1628,17 +1654,27 @@ SAV_Trainer7GG.B_ImportGoFiles=從資料夾導入(從當前位置開始) SAV_Trainer7GG.B_MaxCash=+ SAV_Trainer7GG.B_Save=儲存 SAV_Trainer7GG.GB_Adventure=冒險信息 +SAV_Trainer7GG.GB_Map=Map Position +SAV_Trainer7GG.L_CurrentMap=Current Map: SAV_Trainer7GG.L_GoSlot=槽: SAV_Trainer7GG.L_GoSlotSummary=摘要 SAV_Trainer7GG.L_Hours=時: SAV_Trainer7GG.L_Language=語言: SAV_Trainer7GG.L_Minutes=分: SAV_Trainer7GG.L_Money=$: +SAV_Trainer7GG.L_R=Rotation: SAV_Trainer7GG.L_RivalName=對手名稱: SAV_Trainer7GG.L_Seconds=秒: +SAV_Trainer7GG.L_SX=X Scale: +SAV_Trainer7GG.L_SY=Y Scale: +SAV_Trainer7GG.L_SZ=Z Scale: SAV_Trainer7GG.L_TrainerName=訓練家名字: +SAV_Trainer7GG.L_X=X Coordinate: +SAV_Trainer7GG.L_Y=Y Coordinate: +SAV_Trainer7GG.L_Z=Z Coordinate: SAV_Trainer7GG.Label_SID=隱ID: SAV_Trainer7GG.Label_TID=表ID: +SAV_Trainer7GG.Tab_BadgeMap=Map SAV_Trainer7GG.Tab_Complex=GO遊樂區 SAV_Trainer7GG.Tab_Overview=概覽 SAV_Trainer8.B_Cancel=取消 @@ -1671,6 +1707,9 @@ SAV_Trainer8.L_ShowTitleScreen=標題上顯示: SAV_Trainer8.L_ShowTrainerCard=訓練家卡片上顯示: SAV_Trainer8.L_Singles=單打: SAV_Trainer8.L_Started=遊戲已進行: +SAV_Trainer8.L_SX=X Scale: +SAV_Trainer8.L_SY=Y Scale: +SAV_Trainer8.L_SZ=Z Scale: SAV_Trainer8.L_TrainerName=訓練家名字: SAV_Trainer8.L_TRCardID=聯盟卡訓練家ID: SAV_Trainer8.L_TRCardName=聯盟卡名稱: @@ -1690,7 +1729,9 @@ SAV_Trainer8a.B_Cancel=取消 SAV_Trainer8a.B_MaxCash=+ SAV_Trainer8a.B_Save=儲存 SAV_Trainer8a.GB_Adventure=冒險信息 +SAV_Trainer8a.GB_Map=Map Position SAV_Trainer8a.GB_Stats=統計 +SAV_Trainer8a.L_CurrentMap=Current Map: SAV_Trainer8a.L_GalaxyRank=銀河隊星級: SAV_Trainer8a.L_Hours=時: SAV_Trainer8a.L_Language=語言: @@ -1699,12 +1740,17 @@ SAV_Trainer8a.L_MeritCurrent=當前友好點數: SAV_Trainer8a.L_MeritEarned=已獲得友好點數: SAV_Trainer8a.L_Minutes=分: SAV_Trainer8a.L_Money=$: +SAV_Trainer8a.L_R=Rotation: SAV_Trainer8a.L_SatchelUpgrades=腰包升級次數: SAV_Trainer8a.L_Seconds=秒: SAV_Trainer8a.L_Started=遊戲開始: SAV_Trainer8a.L_TrainerName=訓練家名字: +SAV_Trainer8a.L_X=X Coordinate: +SAV_Trainer8a.L_Y=Y Coordinate: +SAV_Trainer8a.L_Z=Z Coordinate: SAV_Trainer8a.Label_SID=隱ID: SAV_Trainer8a.Label_TID=表ID: +SAV_Trainer8a.Tab_BadgeMap=Map SAV_Trainer8a.Tab_Overview=概覽 SAV_Trainer8b.B_Cancel=取消 SAV_Trainer8b.B_MaxCash=+ @@ -1757,6 +1803,7 @@ SAV_Trainer9.L_Language=語言: SAV_Trainer9.L_LP=LP: SAV_Trainer9.L_Minutes=分鐘: SAV_Trainer9.L_Money=$: +SAV_Trainer9.L_R=Rotation: SAV_Trainer9.L_Seconds=秒: SAV_Trainer9.L_Started=Game Started: SAV_Trainer9.L_TrainerName=訓練家名字: diff --git a/PKHeX.WinForms/Subforms/Save Editors/SAV_Chatter.Designer.cs b/PKHeX.WinForms/Subforms/Save Editors/SAV_Chatter.Designer.cs new file mode 100644 index 00000000000..0153100c293 --- /dev/null +++ b/PKHeX.WinForms/Subforms/Save Editors/SAV_Chatter.Designer.cs @@ -0,0 +1,183 @@ +namespace PKHeX.WinForms +{ + partial class SAV_Chatter + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + B_Save = new System.Windows.Forms.Button(); + B_Cancel = new System.Windows.Forms.Button(); + B_ImportPCM = new System.Windows.Forms.Button(); + B_ExportPCM = new System.Windows.Forms.Button(); + MT_Confusion = new System.Windows.Forms.MaskedTextBox(); + L_Confusion = new System.Windows.Forms.Label(); + CHK_Initialized = new System.Windows.Forms.CheckBox(); + B_ExportWAV = new System.Windows.Forms.Button(); + B_PlayRecording = new System.Windows.Forms.Button(); + SuspendLayout(); + // + // B_Save + // + B_Save.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + B_Save.Location = new System.Drawing.Point(29, 135); + B_Save.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + B_Save.Name = "B_Save"; + B_Save.Size = new System.Drawing.Size(120, 27); + B_Save.TabIndex = 26; + B_Save.Text = "Save"; + B_Save.UseVisualStyleBackColor = true; + B_Save.Click += B_Save_Click; + // + // B_Cancel + // + B_Cancel.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + B_Cancel.Location = new System.Drawing.Point(157, 135); + B_Cancel.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + B_Cancel.Name = "B_Cancel"; + B_Cancel.Size = new System.Drawing.Size(120, 27); + B_Cancel.TabIndex = 25; + B_Cancel.Text = "Cancel"; + B_Cancel.UseVisualStyleBackColor = true; + B_Cancel.Click += B_Cancel_Click; + // + // B_ImportPCM + // + B_ImportPCM.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + B_ImportPCM.Location = new System.Drawing.Point(157, 12); + B_ImportPCM.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + B_ImportPCM.Name = "B_ImportPCM"; + B_ImportPCM.Size = new System.Drawing.Size(120, 27); + B_ImportPCM.TabIndex = 27; + B_ImportPCM.Text = "Import .pcm"; + B_ImportPCM.UseVisualStyleBackColor = true; + B_ImportPCM.Click += B_ImportPCM_Click; + // + // B_ExportPCM + // + B_ExportPCM.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + B_ExportPCM.Location = new System.Drawing.Point(157, 45); + B_ExportPCM.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + B_ExportPCM.Name = "B_ExportPCM"; + B_ExportPCM.Size = new System.Drawing.Size(120, 27); + B_ExportPCM.TabIndex = 28; + B_ExportPCM.Text = "Export .pcm"; + B_ExportPCM.UseVisualStyleBackColor = true; + B_ExportPCM.Click += B_ExportPCM_Click; + // + // MT_Confusion + // + MT_Confusion.Enabled = false; + MT_Confusion.Location = new System.Drawing.Point(104, 79); + MT_Confusion.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + MT_Confusion.Mask = "000"; + MT_Confusion.Name = "MT_Confusion"; + MT_Confusion.Size = new System.Drawing.Size(29, 23); + MT_Confusion.TabIndex = 65; + MT_Confusion.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // L_Confusion + // + L_Confusion.Location = new System.Drawing.Point(13, 79); + L_Confusion.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + L_Confusion.Name = "L_Confusion"; + L_Confusion.Size = new System.Drawing.Size(83, 23); + L_Confusion.TabIndex = 64; + L_Confusion.Text = "Confusion %:"; + L_Confusion.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // CHK_Initialized + // + CHK_Initialized.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + CHK_Initialized.AutoSize = true; + CHK_Initialized.Location = new System.Drawing.Point(20, 50); + CHK_Initialized.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + CHK_Initialized.Name = "CHK_Initialized"; + CHK_Initialized.Size = new System.Drawing.Size(76, 19); + CHK_Initialized.TabIndex = 66; + CHK_Initialized.Text = "Initialized"; + CHK_Initialized.UseVisualStyleBackColor = true; + CHK_Initialized.CheckedChanged += CHK_Initialized_CheckedChanged; + // + // B_ExportWAV + // + B_ExportWAV.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + B_ExportWAV.Location = new System.Drawing.Point(157, 79); + B_ExportWAV.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + B_ExportWAV.Name = "B_ExportWAV"; + B_ExportWAV.Size = new System.Drawing.Size(120, 27); + B_ExportWAV.TabIndex = 67; + B_ExportWAV.Text = "Export .wav"; + B_ExportWAV.UseVisualStyleBackColor = true; + B_ExportWAV.Click += B_ExportWAV_Click; + // + // B_PlayRecording + // + B_PlayRecording.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + B_PlayRecording.Location = new System.Drawing.Point(13, 12); + B_PlayRecording.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + B_PlayRecording.Name = "B_PlayRecording"; + B_PlayRecording.Size = new System.Drawing.Size(120, 27); + B_PlayRecording.TabIndex = 68; + B_PlayRecording.Text = "Play Recording"; + B_PlayRecording.UseVisualStyleBackColor = true; + B_PlayRecording.Click += B_PlayRecording_Click; + // + // SAV_Chatter + // + AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; + ClientSize = new System.Drawing.Size(290, 173); + Controls.Add(B_PlayRecording); + Controls.Add(B_ExportWAV); + Controls.Add(CHK_Initialized); + Controls.Add(MT_Confusion); + Controls.Add(L_Confusion); + Controls.Add(B_ExportPCM); + Controls.Add(B_ImportPCM); + Controls.Add(B_Cancel); + Controls.Add(B_Save); + Icon = Properties.Resources.Icon; + Margin = new System.Windows.Forms.Padding(2); + MaximizeBox = false; + MinimumSize = new System.Drawing.Size(306, 212); + Name = "SAV_Chatter"; + StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + Text = "Chatter Editor"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + private System.Windows.Forms.Button B_Save; + private System.Windows.Forms.Button B_Cancel; + private System.Windows.Forms.Button B_ImportPCM; + private System.Windows.Forms.Button B_ExportPCM; + private System.Windows.Forms.MaskedTextBox MT_Confusion; + private System.Windows.Forms.Label L_Confusion; + private System.Windows.Forms.CheckBox CHK_Initialized; + private System.Windows.Forms.Button B_ExportWAV; + private System.Windows.Forms.Button B_PlayRecording; + } +} diff --git a/PKHeX.WinForms/Subforms/Save Editors/SAV_Chatter.cs b/PKHeX.WinForms/Subforms/Save Editors/SAV_Chatter.cs new file mode 100644 index 00000000000..174961b1e26 --- /dev/null +++ b/PKHeX.WinForms/Subforms/Save Editors/SAV_Chatter.cs @@ -0,0 +1,156 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Media; +using System.Windows.Forms; +using PKHeX.Core; + +namespace PKHeX.WinForms; +public partial class SAV_Chatter : Form +{ + private readonly SaveFile Origin; + private readonly SaveFile SAV; + private readonly IChatter Chatter; + + private readonly string TempPath = Path.Combine(Path.GetTempPath(), "Recording.wav"); + private readonly SoundPlayer Sounds = new(); + + public SAV_Chatter(SaveFile sav) + { + InitializeComponent(); + WinFormsUtil.TranslateInterface(this, Main.CurrentLanguage); + SAV = (Origin = sav).Clone(); + Chatter = SAV is SAV5 s5 ? s5.Chatter : new Chatter4(SAV); + + DeleteTempFile(); + CHK_Initialized.Checked = Chatter.Initialized; + MT_Confusion.Text = Chatter.ConfusionChance.ToString(); + } + + private void CHK_Initialized_CheckedChanged(object sender, EventArgs e) + { + Chatter.Initialized = CHK_Initialized.Checked; + MT_Confusion.Text = Chatter.ConfusionChance.ToString(); + } + + private void B_ImportPCM_Click(object sender, EventArgs e) + { + using var ofd = new OpenFileDialog(); + ofd.Filter = "PCM File|*.pcm"; + + if (ofd.ShowDialog() != DialogResult.OK) + return; + + var path = ofd.FileName; + var len = new FileInfo(path).Length; + if (len != IChatter.SIZE_PCM) + { + WinFormsUtil.Error($"Incorrect size, got {len} bytes, expected {IChatter.SIZE_PCM} bytes."); + return; + } + + byte[] data = File.ReadAllBytes(path); + data.CopyTo(Chatter.Recording); + DeleteTempFile(); + CHK_Initialized.Checked = Chatter.Initialized = true; + MT_Confusion.Text = Chatter.ConfusionChance.ToString(); + } + + private void B_ExportPCM_Click(object sender, EventArgs e) + { + using var sfd = new SaveFileDialog(); + sfd.Filter = "PCM File|*.pcm"; + sfd.FileName = "Recording.pcm"; + if (sfd.ShowDialog() != DialogResult.OK) + return; + + File.WriteAllBytes(sfd.FileName, Chatter.Recording.ToArray()); + } + + private void B_ExportWAV_Click(object sender, EventArgs e) + { + using var sfd = new SaveFileDialog(); + sfd.Filter = "WAV File|*.wav"; + sfd.FileName = "Recording.wav"; + if (sfd.ShowDialog() != DialogResult.OK) + return; + + File.WriteAllBytes(sfd.FileName, ConvertPCMToWAV(Chatter.Recording)); + } + + private async void B_PlayRecording_Click(object sender, EventArgs e) + { + if (!Chatter.Initialized && !Chatter.Recording.ContainsAnyExcept((byte)0x00)) + return; + if (!File.Exists(TempPath)) + await File.WriteAllBytesAsync(TempPath, ConvertPCMToWAV(Chatter.Recording)).ConfigureAwait(true); + Sounds.SoundLocation = TempPath; + try { + Sounds.Play(); + } + catch { Debug.WriteLine("Failed to play sound."); } + } + + private void B_Save_Click(object sender, EventArgs e) + { + Origin.CopyChangesFrom(SAV); + Sounds.Stop(); + DeleteTempFile(); + Close(); + } + + private void B_Cancel_Click(object sender, EventArgs e) + { + Sounds.Stop(); + DeleteTempFile(); + Close(); + } + + private void DeleteTempFile() + { + if (!File.Exists(TempPath)) + return; + + try { File.Delete(TempPath); } + catch (Exception ex) { Debug.WriteLine(ex.Message); } + } + + private static readonly byte[] WAVHeader = [ + // RIFF chunk + 0x52, 0x49, 0x46, 0x46, // chunk name: "RIFF" + 0xF4, 0x07, 0x00, 0x00, // chunk size: 2036 + 0x57, 0x41, 0x56, 0x45, // format: "WAVE" + + // fmt subchunk + 0x66, 0x6D, 0x74, 0x20, // subchunk name: "fmt " + 0x10, 0x00, 0x00, 0x00, // subchunk size: 16 + 0x01, 0x00, // wFormatTag: WAVE_FORMAT_PCM (1) + 0x01, 0x00, // nChannels: mono (1) + 0xD0, 0x07, 0x00, 0x00, // nSamplesPerSec: 2000 + 0xD0, 0x07, 0x00, 0x00, // nAvgBytesPerSec: 2000 + 0x01, 0x00, // nBlockAlign: 1 + 0x08, 0x00, // wBitsPerSample: 8 + + // data subchunk + 0x64, 0x61, 0x74, 0x61, // subchunk name: "data" + 0xD0, 0x07, 0x00, 0x00, // subchunk size: 2000 + ]; + + /// + /// Convert 4-bit PCM to 8-bit PCM and adds the WAV file header. + /// + /// Unsigned 4-bit PCM data + /// WAV file with unsigned 8-bit PCM data + private static byte[] ConvertPCMToWAV(ReadOnlySpan pcm) + { + byte[] data = new byte[WAVHeader.Length + pcm.Length * 2]; + WAVHeader.CopyTo(data, 0); + var i = WAVHeader.Length; + foreach (byte b in pcm) + { + data[i++] = (byte)((b & 0x0F) << 4); + data[i++] = (byte)(b & 0xF0); + } + return data; + } +}