Rework translations

instead of:
controls on form->dict of names, look up line to find control
now:
dict of names->look up control to find name

faster overall, simpler, and updates the dictionary with new control
entries. browse thru forms that call translateinterface with one
language (english), then updateall(en) and dump to get the updated
translation files.

#1864
This commit is contained in:
Kurt 2018-03-20 22:34:44 -07:00
parent bf1b685705
commit aedc0092b4
12 changed files with 5981 additions and 6108 deletions

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,273 +1,643 @@
! PKHeX Interface Customization File
! Languages: Save this file accordingly and put it in the same folder as PKHeX's executable.
! lang_en.txt = English
! lang_jp.txt = Japanese
! lang_fr.txt = French
! lang_de.txt = German
! lang_es.txt = Spanish
! lang_it.txt = Italian
! lang_ko.txt = Korean
! lang_zh.txt = Chinese
! lang_pt.txt = Portuguese
! Make sure that each edit has a ' = ' between Control name and new Text!
!
! -----------------------------------------------------
- DO NOT CHANGE THIS SECTION. Main Form (PKHeX window) below.
! Main = PKHeX
- Change stuff below this line, not above.
---------------------Menu Strip------------------------
Menu_File = File
Menu_Open = Ouvrir...
Menu_Save = Enregistrer PKM...
Menu_ExportSAV = Enregistrer SAV...
Menu_ExportMAIN = Enregistrer main
Menu_ExportBAK = Enregistrer BAK
Menu_Exit = Quitter
--
Menu_Tools = Outils
Menu_Showdown = Showdown
Menu_ShowdownImportPKM = Importer set Showdown
Menu_ShowdownExportPKM = Exporter set Showdown
Menu_ShowdownExportParty = Exporter équipe
Menu_ShowdownExportBattleBox = Exporter la Boîte de Combat
Menu_ApplyMarkings = Appliquer des marques de l'importation
Menu_Data = Données
Menu_LoadBoxes = Charger Boîtes
Menu_DumpBoxes = Dumper Boîtes
Menu_Report = Rapport de données Box
Menu_Database = Base de données PKM
Menu_MGDatabase = Base de données de cadeaux de mystère
Menu_BatchEditor = Éditeur en vrac
Menu_Folder = Ouvrir le dossier
--
Menu_Options = Options
Menu_Language = Langue
Menu_Modify = Réglez SAV
Menu_ModifyDex = Modifier Infos Pokédex
Menu_ModifyPKM = Modifier Infos Pokémon
Menu_Unicode = Unicode
Menu_About = À propos de PKHeX
--------------------Context Menus----------------------
mnuView = Voir
mnuSet = Appliquer
mnuDelete = Effacer
mnu2View = Voir
--------------------Main Tab Data----------------------
Tab_Main = Général
Label_PID = PID:
BTN_RerollPID = Modif.
Label_Species = Espèce :
CHK_Nicknamed = Surnom :
Label_EXP = Expérience :
Label_CurLevel = Niveau :
Label_Nature = Nature :
Label_HeldItem = Objet :
Label_Friendship = Bonheur :
Label_Form = Forme
Label_Ability = Talent :
Label_Language = Langue :
CHK_IsEgg = Œuf
CHK_Infected = Infecté
CHK_Cured = Guéri
Label_PKRS = Pokérus :
Label_PKRSdays = Jr.
Label_Country = Pays :
Label_SubRegion = Région :
Label_3DSRegion = Région 3DS :
---------------------Met Tab Data-----------------------
Tab_Met = Origine
Label_OriginGame = Jeu de base :
Label_MetLocation = Lieu :
Label_Ball = Pokéball :
Label_MetLevel = Niveau :
Label_MetDate = Rencontré le :
Label_EncounterType = Zone :
CHK_Fateful = Rencontre Fatidique
---------------------Egg Met Data-----------------------
CHK_AsEgg = Œuf Pokémon
GB_EggConditions = Éclosion
Label_EggLocation = Lieu :
Label_EggDate = Date :
--------------------Stats Tab Data----------------------
Tab_Stats = Stats
Label_IVs = IV
Label_EVs = EV
Label_Stats = Stats
Label_HP = PV :
Label_ATK = Attaque :
Label_DEF = Défense :
Label_SPA = Att. Spé. :
Label_SPD = Déf. Spé. :
Label_SPE = Vitesse :
Label_Total = Total :
Label_HiddenPowerPrefix = Type Puissance Cachée :
Label_CharacteristicPrefix = Caractéristiques :
BTN_RandomIVs = IV aléatoires
BTN_RandomEVs = EV aléatoires
Label_ContestStats = Stats de Concours
Label_Cool = S-F.
Label_Beauty = Beauté
Label_Cute = Grâce
Label_Smart = Intell.
Label_Clever = Intell.
Label_Tough = Robus.
Label_Sheen = Lustre
-------------------Attacks Tab Data---------------------
Tab_Attacks = Capacités
GB_CurrentMoves = Capacités actuelles
Label_CurPP = PP
Label_PPups = PP Max
GB_RelearnMoves = Capacités réapprises
-------------------OT/Misc Tab Data---------------------
Tab_OTMisc = Divers
GB_OT = Infos Dresseur
Label_TID = ID :
Label_SID = SID :
Label_OT = DO :
GB_nOT = Dernier Dresseur connu
Label_PrevOT = DO :
GB_ExtraBytes = Octets supplémentaires
GB_Markings = Marquages
BTN_Ribbons = Rubans
BTN_Medals = Médailles
BTN_History = Souvenirs
Label_EncryptionConstant = Valeur de cryptage :
BTN_RerollEC = Edit.
-----------------Save Data Interface--------------------
Tab_Box = Boîtes PC
Tab_PartyBattle = Équipe
Tab_Other = Autres
Tab_SAV = SAV
B_OpenPokePuffs = Pofiteroles
B_OpenItemPouch = Objets
B_OpenTrainerInfo = Infos Dress.
B_OpenBoxLayout = Fonds Boîte
B_OpenWondercards = CarteMiracle
B_OpenBerryField = Baies
B_OpenOPowers = O-Auras
B_OpenEventFlags = Évènements
B_OpenPokedex = Pokédex
--
B_OpenSecretBase = Secret Base
--------------------Tab Internals-----------------------
L_Party = Équipe :
L_ReadOnlyPBB = Cet onglet est en lecture seule.
L_BattleBox = Boîte de Combat :
GB_Daycare = Pension
GB_GTS = GTS
GB_Fused = Fusion
GB_SUBE = Vieil H.
DayCare_HasEgg = Œuf disponible
L_DaycareSeed = Seed
L_ReadOnlyOther = Cet onglet est en lecture seule.
B_JPEG = Sauver image PGL
B_OpenHallofFame = Panthéon
B_OUTPasserby = PSS
B_VerifyCHK = Checksums
B_SaveBoxBin = Save Box Data++
L_GameSync = Game Sync ID:
L_Secure1 = Secure Value 1:
L_Secure2 = Secure Value 2:
! End
! -----------------------------------------------------
- DO NOT CHANGE THIS SECTION.
! RibbonEditor = Ribbon Editor
- Change stuff below this line, not above.
----------------------Buttons--------------------------
BTN_All = Donner tout
BTN_None = Retirer tout
BTN_Cancel = Annuler
BTN_Save = Sauvegarder
! -----------------------------------------------------
- DO NOT CHANGE THIS SECTION.
! SuperTrainingEditor = Medal Editor
- Change stuff below this line, not above.
----------------------Buttons--------------------------
B_All = Give All
B_None = Remove All
B_Cancel = Cancel
B_Save = Save
------------------Super Training-----------------------
CHK_SuperTrain1_HP = Rang 1: PV
CHK_SuperTrain1_ATK = Rang 1: Attq.
CHK_SuperTrain1_DEF = Rang 1: Déf.
CHK_SuperTrain1_SPA = Rang 1: A. Spé.
CHK_SuperTrain1_SPD = Rang 1: D. Spé.
CHK_SuperTrain1_SPE = Rang 1: Vit.
CHK_SuperTrain2_HP = Rang 2: PV
CHK_SuperTrain2_ATK = Rang 2: Attq.
CHK_SuperTrain2_DEF = Rang 2: Déf.
CHK_SuperTrain2_SPA = Rang 2: A. Spé.
CHK_SuperTrain2_SPD = Rang 2: D. Spé.
CHK_SuperTrain2_SPE = Rang 2: Vit.
CHK_SuperTrain3_HP = Rang 3: PV
CHK_SuperTrain3_ATK = Rang 3: Attq.
CHK_SuperTrain3_DEF = Rang 3: Déf.
CHK_SuperTrain3_SPA = Rang 3: A. Spé.
CHK_SuperTrain3_SPD = Rang 3: D. Spé.
CHK_SuperTrain3_SPE = Rang 3: Vit.
CHK_SecretUnlocked = Entraînement Secret Activé
CHK_SecretComplete = Entraînement Secret Formazione
CHK_SuperTrain4_1 = Rang 4: Troubles
CHK_SuperTrain5_1 = Rang 5: Plante
CHK_SuperTrain5_2 = Rang 5: Feu
CHK_SuperTrain5_3 = Rang 5: Eau
CHK_SuperTrain5_4 = Rang 5: Cibles Fuyantes
CHK_SuperTrain6_1 = Rang 6: Riposte
CHK_SuperTrain6_2 = Rang 6: Rapide
CHK_SuperTrain6_3 = Rang 6: Longue
CHK_SuperTrain7_1 = Rang 7: Lépidonille
CHK_SuperTrain7_2 = Rang 7: Ballon Pixel
CHK_SuperTrain7_3 = Rang 7: Trioxhydre
CHK_SuperTrain8_1 = Rang 8: X / Y
---
L_Bag = Last Used Bag:
L_Hits = Hits Remaining:
! End
! -----------------------------------------------------
- DO NOT CHANGE THIS SECTION. Memories / Amie UI Below
! MemoryAmie
- Change stuff below this line, not above.
---------------------Bottom UI-------------------------
BTN_Cancel = Annuler
BTN_Save = Sauver
L_Handler = Dresseur actuel :
L_Fullness = Satiété :
L_Enjoyment = Gaieté :
-
Tab_OTMemory = Souvenirs avec : DO
L_OT_Friendship = Bonheur :
L_OT_Affection = Affection :
L_OT_TextLine = Type souvenir :
L_OT_Quality = Intensité :
L_OT_Feeling = Feeling :
Tab_CTMemory = Autres souvenirs
L_CT_Friendship = Bonheur :
L_CT_Affection = Affection :
L_CT_TextLine = Type souvenir :
L_CT_Quality = Intensité :
L_CT_Feeling = Feeling :
Tab_Residence = Résidence
GB_Residence = Ce Pokémon a résidé (en) (à) :
L_Geo0 = Emplacement 0
L_Geo1 = Emplacement 1
L_Geo2 = Emplacement 2
L_Geo3 = Emplacement 3
L_Geo4 = Emplacement 4
L_Region = Région
L_Country = Pays
--
- **Please leave the {0} in your line. The OT name will show instead.
--
L_Arguments = Onglet désactivé ; Toujours avec ; DO ; Génération précédente - ; Souvenirs avec ; Pokémon ; Zone ; Objet(s) ; Attaque ; Emplacement
! End
! -----------------------------------------------------
- DO NOT CHANGE THIS SECTION.
! ErrorWindow = Erreur
- Change stuff below this line, not above.
-------------------------------------------------------
L_ProvideInfo = Veuillez fournir les informations suivantes dans votre rapport d'erreur :
B_CopyToClipboard = Copier dans le presse-papier
B_Continue = Continuer
B_Abort = Abandonner
! End
ErrorWindow=Erreur
f2_Text=Special Characters
Main=PKHeX
MemoryAmie=Memory / Amie Editor
RibbonEditor=Ribbon Editor
SAV_BerryField=Berry Field Viewer
SAV_BoxLayout=Box Layout Editor
SAV_EventFlagsORAS=Event Flag Editor (ORAS)
SAV_EventFlagsXY=Event Flag Editor (XY)
SAV_HallOfFame=Hall of Fame Editor
SAV_Inventory=Inventory Editor
SAV_Link6=Pokémon Link Tool
SAV_OPower=O-Power Editor
SAV_PokeBlockORAS=Pokéblock Editor
SAV_PokedexORAS=Pokédex Editor (ORAS)
SAV_PokedexXY=Pokédex Editor (XY)
SAV_Pokepuff=Poké Puffs Editor
SAV_SecretBase=Secret Base Editor
SAV_Trainer=Trainer Data Editor
SAV_Wondercard=Mystery Gift I/O
SuperTrain=Super Training Records
SuperTrainingEditor=Medal Editor
ErrorWindow.B_Abort=Abandonner
ErrorWindow.B_Continue=Continuer
ErrorWindow.B_CopyToClipboard=Copier dans le presse-papier
ErrorWindow.L_ProvideInfo=Veuillez fournir les informations suivantes dans votre rapport d'erreur :
Main.B_CGearSkin=C-Gear Skin
Main.B_JPEG=Sauver image PGL
Main.B_OpenBerryField=Baies
Main.B_OpenBoxLayout=Fonds Boîte
Main.B_OpenEventFlags=Évènements
Main.B_OpenHallofFame=Panthéon
Main.B_OpenItemPouch=Objets
Main.B_OpenLinkInfo=Link Data
Main.B_OpenOPowers=O-Auras
Main.B_OpenPokeBeans=Poké Beans
Main.B_OpenPokeBlocks=Pokéblocks
Main.B_OpenPokedex=Pokédex
Main.B_OpenPokePuffs=Pofiteroles
Main.B_OpenSecretBase=Secret Base
Main.B_OpenSuperTraining=Super Train
Main.B_OpenTrainerInfo=Infos Dress.
Main.B_OpenWondercards=CarteMiracle
Main.B_OUTPasserby=PSS
Main.B_SaveBoxBin=Save Box Data++
Main.B_VerifyCHK=Checksums
Main.BTN_History=Souvenirs
Main.BTN_Medals=Médailles
Main.BTN_RandomEVs=EV aléatoires
Main.BTN_RandomIVs=IV aléatoires
Main.BTN_RerollEC=Edit.
Main.BTN_RerollPID=Modif.
Main.BTN_Ribbons=Rubans
Main.CHK_AsEgg=Œuf Pokémon
Main.CHK_Cured=Guéri
Main.CHK_Fateful=Rencontre Fatidique
Main.CHK_HackedStats=Hacked Stats
Main.CHK_Infected=Infecté
Main.CHK_IsEgg=Œuf
Main.CHK_Nicknamed=Surnom :
Main.DayCare_HasEgg=Œuf disponible
Main.GB_CurrentMoves=Capacités actuelles
Main.GB_Daycare=Pension
Main.GB_EggConditions=Éclosion
Main.GB_ExtraBytes=Octets supplémentaires
Main.GB_Fused=Fusion
Main.GB_GTS=GTS
Main.GB_Markings=Marquages
Main.GB_nOT=Dernier Dresseur connu
Main.GB_OT=Infos Dresseur
Main.GB_RelearnMoves=Capacités réapprises
Main.GB_SUBE=Vieil H.
Main.L_BattleBox=Boîte de Combat :
Main.L_DaycareSeed=Seed
Main.L_GameSync=Game Sync ID:
Main.L_Party=Équipe :
Main.L_ReadOnlyOther=Cet onglet est en lecture seule.
Main.L_ReadOnlyPBB=Cet onglet est en lecture seule.
Main.L_Secure1=Secure Value 1:
Main.L_Secure2=Secure Value 2:
Main.Label_3DSRegion=Région 3DS :
Main.Label_Ability=Talent :
Main.Label_ATK=Attaque :
Main.Label_Ball=Pokéball :
Main.Label_Beauty=Beauté
Main.Label_CharacteristicPrefix=Caractéristiques :
Main.Label_Clever=Intell.
Main.Label_ContestStats=Stats de Concours
Main.Label_Cool=S-F.
Main.Label_Country=Pays :
Main.Label_CurLevel=Niveau :
Main.Label_CurPP=PP
Main.Label_Cute=Grâce
Main.Label_DEF=Défense :
Main.Label_EggDate=Date :
Main.Label_EggLocation=Lieu :
Main.Label_EncounterType=Zone :
Main.Label_EncryptionConstant=Valeur de cryptage :
Main.Label_EVs=EV
Main.Label_EXP=Expérience :
Main.Label_Form=Forme
Main.Label_Friendship=Bonheur :
Main.Label_HeldItem=Objet :
Main.Label_HiddenPowerPrefix=Type Puissance Cachée :
Main.Label_HP=PV :
Main.Label_IVs=IV
Main.Label_Language=Langue :
Main.Label_MetDate=Rencontré le :
Main.Label_MetLevel=Niveau :
Main.Label_MetLocation=Lieu :
Main.Label_Nature=Nature :
Main.Label_OriginGame=Jeu de base :
Main.Label_OT=DO :
Main.Label_PID=PID:
Main.Label_PKRS=Pokérus :
Main.Label_PKRSdays=Jr.
Main.Label_PPups=PP Max
Main.Label_PrevOT=DO :
Main.Label_Sheen=Lustre
Main.Label_SID=SID :
Main.Label_Smart=Intell.
Main.Label_SPA=Att. Spé. :
Main.Label_SPC=SpC:
Main.Label_SPD=Déf. Spé. :
Main.Label_SPE=Vitesse :
Main.Label_Species=Espèce :
Main.Label_Stats=Stats
Main.Label_SubRegion=Région :
Main.Label_TID=ID :
Main.Label_Total=Total :
Main.Label_Tough=Robus.
Main.Menu_About=À propos de PKHeX
Main.Menu_ApplyMarkings=Appliquer des marques de l'importation
Main.Menu_BatchEditor=Éditeur en vrac
Main.Menu_Data=Données
Main.Menu_Database=Base de données PKM
Main.Menu_DumpBoxes=Dumper Boîtes
Main.Menu_Exit=Quitter
Main.Menu_ExportBAK=Enregistrer BAK
Main.Menu_ExportMAIN=Enregistrer main
Main.Menu_ExportSAV=Enregistrer SAV...
Main.Menu_File=File
Main.Menu_Folder=Ouvrir le dossier
Main.Menu_Language=Langue
Main.Menu_LoadBoxes=Charger Boîtes
Main.Menu_MGDatabase=Base de données de cadeaux de mystère
Main.Menu_Modify=Réglez SAV
Main.Menu_ModifyDex=Modifier Infos Pokédex
Main.Menu_ModifyPKM=Modifier Infos Pokémon
Main.Menu_Open=Ouvrir...
Main.Menu_Options=Options
Main.Menu_Report=Rapport de données Box
Main.Menu_Save=Enregistrer PKM...
Main.Menu_Showdown=Showdown
Main.Menu_ShowdownExportBattleBox=Exporter la Boîte de Combat
Main.Menu_ShowdownExportParty=Exporter équipe
Main.Menu_ShowdownExportPKM=Exporter set Showdown
Main.Menu_ShowdownImportPKM=Importer set Showdown
Main.Menu_Tools=Outils
Main.Menu_Unicode=Unicode
Main.mnu2View=Voir
Main.mnuDelete=Effacer
Main.mnuSet=Appliquer
Main.mnuView=Voir
Main.Tab_Attacks=Capacités
Main.Tab_Box=Boîtes PC
Main.Tab_Main=Général
Main.Tab_Met=Origine
Main.Tab_Other=Autres
Main.Tab_OTMisc=Divers
Main.Tab_PartyBattle=Équipe
Main.Tab_SAV=SAV
Main.Tab_Stats=Stats
MemoryAmie.BTN_Cancel=Annuler
MemoryAmie.BTN_Save=Sauver
MemoryAmie.GB_Residence=Ce Pokémon a résidé (en) (à) :
MemoryAmie.L_Arguments=Onglet désactivé ; Toujours avec ; DO ; Génération précédente - ; Souvenirs avec ; Pokémon ; Zone ; Objet(s) ; Attaque ; Emplacement
MemoryAmie.L_Country=Pays
MemoryAmie.L_CT_Affection=Affection :
MemoryAmie.L_cT_Affection=Affection:
MemoryAmie.L_CT_Feeling=Feeling :
MemoryAmie.L_CT_Friendship=Bonheur :
MemoryAmie.L_CT_Quality=Intensité :
MemoryAmie.L_CT_TextLine=Type souvenir :
MemoryAmie.L_Enjoyment=Gaieté :
MemoryAmie.L_Fullness=Satiété :
MemoryAmie.L_Geo0=Emplacement 0
MemoryAmie.L_Geo1=Emplacement 1
MemoryAmie.L_Geo2=Emplacement 2
MemoryAmie.L_Geo3=Emplacement 3
MemoryAmie.L_Geo4=Emplacement 4
MemoryAmie.L_Handler=Dresseur actuel :
MemoryAmie.L_OT_Affection=Affection :
MemoryAmie.L_OT_Feeling=Feeling :
MemoryAmie.L_OT_Friendship=Bonheur :
MemoryAmie.L_OT_Quality=Intensité :
MemoryAmie.L_OT_TextLine=Type souvenir :
MemoryAmie.L_Region=Région
MemoryAmie.Tab_CTMemory=Autres souvenirs
MemoryAmie.Tab_OTMemory=Souvenirs avec : DO
MemoryAmie.Tab_Residence=Résidence
RibbonEditor.B_All=Give All
RibbonEditor.B_Cancel=Cancel
RibbonEditor.B_None=Remove All
RibbonEditor.B_Save=Save
RibbonEditor.BTN_All=Donner tout
RibbonEditor.BTN_Cancel=Annuler
RibbonEditor.BTN_None=Retirer tout
RibbonEditor.BTN_Save=Sauvegarder
SAV_BerryField.B_Cancel=Cancel
SAV_BerryField.B_Save=Save
SAV_BerryField.L_Berry=Berry:
SAV_BerryField.L_Field=Field:
SAV_BerryField.L_u1=1
SAV_BerryField.L_u2=2
SAV_BerryField.L_u3=3
SAV_BerryField.L_u4=4
SAV_BerryField.L_u5=5
SAV_BerryField.L_u6=6
SAV_BerryField.L_u7=7
SAV_BerryField.L_Unfinished=Unfinished: Needs More Research
SAV_BoxLayout.B_Cancel=Cancel
SAV_BoxLayout.B_Save=Save
SAV_BoxLayout.L_BG=BG:
SAV_BoxLayout.L_BoxName=Box Name:
SAV_BoxLayout.L_Flags=Unlocked BG Flags:
SAV_BoxLayout.L_Unlocked=Unlocked:
SAV_EventFlagsORAS.B_Cancel=Cancel
SAV_EventFlagsORAS.B_LoadNew=Load New
SAV_EventFlagsORAS.B_LoadOld=Load Old
SAV_EventFlagsORAS.B_Save=Save
SAV_EventFlagsORAS.CHK_CustomFlag=Status:
SAV_EventFlagsORAS.flag_0172=Cresselia Defeated
SAV_EventFlagsORAS.flag_0173=Raikou Defeated
SAV_EventFlagsORAS.flag_0174=Entei Defeated
SAV_EventFlagsORAS.flag_0175=Suicune Defeated
SAV_EventFlagsORAS.flag_0176=Cobalion Defeated
SAV_EventFlagsORAS.flag_0177=Terrakion Defeated
SAV_EventFlagsORAS.flag_0178=Virizion Defeated
SAV_EventFlagsORAS.flag_0179=Uxie Defeated
SAV_EventFlagsORAS.flag_0180=Mesprit Defeated
SAV_EventFlagsORAS.flag_0181=Azelf Defeated
SAV_EventFlagsORAS.flag_0182=(OR) Reshiram Defeated
SAV_EventFlagsORAS.flag_0183=(AS) Zekrom Defeated
SAV_EventFlagsORAS.flag_0184=Kyurem Defeated
SAV_EventFlagsORAS.flag_0208=(OR) Ho-Oh Defeated
SAV_EventFlagsORAS.flag_0209=(AS) Lugia Defeated
SAV_EventFlagsORAS.flag_0252=Regigigas Defeated
SAV_EventFlagsORAS.flag_0260=Heatran Defeated
SAV_EventFlagsORAS.flag_0284=Singles Statuette
SAV_EventFlagsORAS.flag_0285=Doubles Statuette
SAV_EventFlagsORAS.flag_0286=Triples Statuette
SAV_EventFlagsORAS.flag_0287=Rotation Statuette
SAV_EventFlagsORAS.flag_0288=Multi Statuette
SAV_EventFlagsORAS.flag_0289=Super Singles Unlocked
SAV_EventFlagsORAS.flag_0290=Super Doubles Unlocked
SAV_EventFlagsORAS.flag_0291=Super Triples Unlocked
SAV_EventFlagsORAS.flag_0292=Super Rotation Unlocked
SAV_EventFlagsORAS.flag_0293=Super Multi Unlocked
SAV_EventFlagsORAS.flag_0419=(OR) Latias Defeated
SAV_EventFlagsORAS.flag_0420=(AS) Latios Defeated
SAV_EventFlagsORAS.flag_0647=(AS) Kyogre Defeated
SAV_EventFlagsORAS.flag_0648=(OR) Groudon Defeated
SAV_EventFlagsORAS.flag_0945=Deoxys Defeated
SAV_EventFlagsORAS.flag_0956=Regirock Defeated
SAV_EventFlagsORAS.flag_0957=Regice Defeated
SAV_EventFlagsORAS.flag_0958=Registeel Defeated
SAV_EventFlagsORAS.flag_2811=Raikou Captured
SAV_EventFlagsORAS.flag_2812=Entei Captured
SAV_EventFlagsORAS.flag_2813=Suicune Captured
SAV_EventFlagsORAS.flag_2814=(AS) Lugia Captured
SAV_EventFlagsORAS.flag_2815=(OR) Ho-Oh Captured
SAV_EventFlagsORAS.flag_2816=Uxie Captured
SAV_EventFlagsORAS.flag_2817=Mesprit Captured
SAV_EventFlagsORAS.flag_2818=Azelf Captured
SAV_EventFlagsORAS.flag_2819=(AS) Dialga Captured
SAV_EventFlagsORAS.flag_2820=(OR) Palkia Captured
SAV_EventFlagsORAS.flag_2821=Heatran Captured
SAV_EventFlagsORAS.flag_2822=Regigigas Captured
SAV_EventFlagsORAS.flag_2823=Giratina Captured
SAV_EventFlagsORAS.flag_2824=Cresselia Captured
SAV_EventFlagsORAS.flag_2825=Cobalion Captured
SAV_EventFlagsORAS.flag_2826=Terrakion Captured
SAV_EventFlagsORAS.flag_2827=Virizion Captured
SAV_EventFlagsORAS.flag_2828=(OR) Tornadus Captured
SAV_EventFlagsORAS.flag_2829=(AS) Thundurus Captured
SAV_EventFlagsORAS.flag_2830=(OR) Reshiram Captured
SAV_EventFlagsORAS.flag_2831=(AS) Zekrom Captured
SAV_EventFlagsORAS.flag_2832=Landorus Captured
SAV_EventFlagsORAS.flag_2833=Kyurem Captured
SAV_EventFlagsORAS.flag_2834=(OR) Latias Captured
SAV_EventFlagsORAS.flag_2835=(AS) Latios Captured
SAV_EventFlagsORAS.flag_2836=Regirock Captured
SAV_EventFlagsORAS.flag_2837=Regice Captured
SAV_EventFlagsORAS.flag_2838=Registeel Captured
SAV_EventFlagsORAS.flag_2839=(OR) Groudon Captured
SAV_EventFlagsORAS.flag_2840=(AS) Kyogre Captured
SAV_EventFlagsORAS.flag_2842=Deoxys Captured
SAV_EventFlagsORAS.GB_FlagStatus=Check Flag Status
SAV_EventFlagsORAS.GB_Misc=Misc
SAV_EventFlagsORAS.GB_Rebattle=Rebattle
SAV_EventFlagsORAS.GB_Researcher=FlagDiff Researcher
SAV_EventFlagsORAS.L_Ash=Volcanic Ash:
SAV_EventFlagsORAS.L_Flag=Flag:
SAV_EventFlagsORAS.L_IsSet=IsSet
SAV_EventFlagsORAS.L_SkyTower=*Sky Tower
SAV_EventFlagsORAS.L_UnSet=UnSet
SAV_EventFlagsXY.B_Cancel=Cancel
SAV_EventFlagsXY.B_LoadNew=Load New
SAV_EventFlagsXY.B_LoadOld=Load Old
SAV_EventFlagsXY.B_Save=Save
SAV_EventFlagsXY.CHK_CustomFlag=Status:
SAV_EventFlagsXY.flag_0001=Flag1
SAV_EventFlagsXY.flag_0002=Flag2
SAV_EventFlagsXY.flag_0003=Flag3
SAV_EventFlagsXY.flag_0004=Flag4
SAV_EventFlagsXY.flag_0005=Flag5
SAV_EventFlagsXY.flag_0114=Zygarde Captured
SAV_EventFlagsXY.flag_0115=Mewtwo Captured
SAV_EventFlagsXY.flag_0285=Singles Statuette
SAV_EventFlagsXY.flag_0286=Doubles Statuette
SAV_EventFlagsXY.flag_0287=Triples Statuette
SAV_EventFlagsXY.flag_0288=Rotation Statuette
SAV_EventFlagsXY.flag_0289=Multi Statuette
SAV_EventFlagsXY.flag_0290=Super Singles Unlocked
SAV_EventFlagsXY.flag_0291=Super Doubles Unlocked
SAV_EventFlagsXY.flag_0292=Super Triples Unlocked
SAV_EventFlagsXY.flag_0293=Super Rotation Unlocked
SAV_EventFlagsXY.flag_0294=Super Multi Unlocked
SAV_EventFlagsXY.flag_0675=50: Beat Chatelaine
SAV_EventFlagsXY.flag_0790=Zygarde Defeated
SAV_EventFlagsXY.flag_0963=Mewtwo Defeated
SAV_EventFlagsXY.flag_2237=2237
SAV_EventFlagsXY.flag_2238=2238
SAV_EventFlagsXY.flag_2239=2239
SAV_EventFlagsXY.flag_2546=Pokédex Obtained
SAV_EventFlagsXY.GB_FlagStatus=Check Flag Status
SAV_EventFlagsXY.GB_Misc=Misc
SAV_EventFlagsXY.GB_Rebattle=Rebattle
SAV_EventFlagsXY.GB_Researcher=FlagDiff Researcher
SAV_EventFlagsXY.L_Flag=Flag:
SAV_EventFlagsXY.L_IsSet=IsSet
SAV_EventFlagsXY.L_UnSet=UnSet
SAV_HallOfFame.B_Cancel=Cancel
SAV_HallOfFame.B_Close=Save
SAV_HallOfFame.B_CopyText=Copy txt
SAV_HallOfFame.B_Delete=Delete
SAV_HallOfFame.CHK_Nicknamed=Nickname:
SAV_HallOfFame.GB_CurrentMoves=Current Moves
SAV_HallOfFame.GB_OT=Trainer Information
SAV_HallOfFame.L_Level=Level:
SAV_HallOfFame.L_PartyNum=Party Index:
SAV_HallOfFame.L_Shiny=Shiny:
SAV_HallOfFame.L_Victory=Victory Number:
SAV_HallOfFame.Label_EncryptionConstant=Encryption Constant:
SAV_HallOfFame.Label_Form=Form:
SAV_HallOfFame.Label_HeldItem=Held Item:
SAV_HallOfFame.Label_MetDate=Date:
SAV_HallOfFame.Label_OT=OT:
SAV_HallOfFame.Label_SID=SID:
SAV_HallOfFame.Label_Species=Species:
SAV_HallOfFame.Label_TID=TID:
SAV_Inventory.B_Cancel=Cancel
SAV_Inventory.B_GiveAll=Give All
SAV_Inventory.B_Save=Save
SAV_Link6.B_Cancel=Cancel
SAV_Link6.B_Export=Export
SAV_Link6.B_Import=Import
SAV_Link6.B_Save=Save
SAV_Link6.CHK_LinkAvailable=Pokémon Link Enabled
SAV_Link6.L_BP=Battle Points:
SAV_Link6.L_Item1=Item 1:
SAV_Link6.L_Item2=Item 2:
SAV_Link6.L_Item3=Item 3:
SAV_Link6.L_Item4=Item 4:
SAV_Link6.L_Item5=Item 5:
SAV_Link6.L_Item6=Item 6:
SAV_Link6.L_Pokemiles= PokéMiles
SAV_Link6.TAB_Items=Items
SAV_Link6.TAB_Main=Main
SAV_Link6.TAB_PKM=Pokémon
SAV_OPower.B_AllMax=Give All
SAV_OPower.B_Cancel=Cancel
SAV_OPower.B_MaxP=Give All
SAV_OPower.B_Save=Save
SAV_OPower.CHK_1=?Bargain MAX
SAV_OPower.CHK_2=?EXP MAX
SAV_OPower.CHK_3=?Prize MAX
SAV_OPower.CHK_4=?Hatch MAX
SAV_OPower.CHK_5=?Capture MAX
SAV_OPower.CHK_6=?Restore MAX
SAV_OPower.CHK_7=?Befriend MAX
SAV_OPower.CHK_8=?Unused
SAV_OPower.GB_Event=Event
SAV_OPower.GB_Regular=Regular
SAV_OPower.L_1=Hatching:
SAV_OPower.L_10=?Befriend:
SAV_OPower.L_11=?Attack:
SAV_OPower.L_12=?Defense:
SAV_OPower.L_13=?Sp. Atk:
SAV_OPower.L_14=?Sp. Def:
SAV_OPower.L_15=?Speed:
SAV_OPower.L_16=?Critical Hit:
SAV_OPower.L_17=?Accuracy:
SAV_OPower.L_2=Bargain:
SAV_OPower.L_3=?Prize:
SAV_OPower.L_4=EXP:
SAV_OPower.L_5=Capture:
SAV_OPower.L_6=?Encounter
SAV_OPower.L_7=?Stealth:
SAV_OPower.L_8=HP Restore:
SAV_OPower.L_9=?PP:
SAV_PokeBlockORAS.B_Cancel=Cancel
SAV_PokeBlockORAS.B_GiveAllBlocks=Give All Blocks
SAV_PokeBlockORAS.B_RandomizeBerries=Randomize Berries
SAV_PokeBlockORAS.B_Save=Save
SAV_PokeBlockORAS.L_Blue=Blue Pokéblocks:
SAV_PokeBlockORAS.L_Green=Green Pokéblocks:
SAV_PokeBlockORAS.L_Pink=Pink Pokéblocks:
SAV_PokeBlockORAS.L_Rainbow=Rainbow Pokéblocks:
SAV_PokeBlockORAS.L_Red=Red Pokéblocks:
SAV_PokeBlockORAS.L_Yellow=Yellow Pokéblocks:
SAV_PokedexORAS.B_Cancel=Cancel
SAV_PokedexORAS.B_GiveAll=Check All
SAV_PokedexORAS.B_Modify=Modify...
SAV_PokedexORAS.B_Save=Save
SAV_PokedexORAS.CHK_L1=Japanese
SAV_PokedexORAS.CHK_L2=English
SAV_PokedexORAS.CHK_L3=French
SAV_PokedexORAS.CHK_L4=Italian
SAV_PokedexORAS.CHK_L5=German
SAV_PokedexORAS.CHK_L6=Spanish
SAV_PokedexORAS.CHK_L7=Korean
SAV_PokedexORAS.CHK_P1=Obtained
SAV_PokedexORAS.CHK_P2=Male
SAV_PokedexORAS.CHK_P3=Female
SAV_PokedexORAS.CHK_P4=Shiny Male
SAV_PokedexORAS.CHK_P5=Shiny Female
SAV_PokedexORAS.CHK_P6=Male
SAV_PokedexORAS.CHK_P7=Female
SAV_PokedexORAS.CHK_P8=Shiny Male
SAV_PokedexORAS.CHK_P9=Shiny Female
SAV_PokedexORAS.GB_Displayed=Displayed
SAV_PokedexORAS.GB_Encountered=Seen
SAV_PokedexORAS.GB_Language=Languages
SAV_PokedexORAS.GB_Owned=Owned
SAV_PokedexORAS.L_DexNav=DexNav Lv:
SAV_PokedexORAS.L_goto=goto:
SAV_PokedexORAS.L_Spinda=Spinda:
SAV_PokedexXY.B_Cancel=Cancel
SAV_PokedexXY.B_GiveAll=Check All
SAV_PokedexXY.B_Modify=Modify...
SAV_PokedexXY.B_Save=Save
SAV_PokedexXY.CHK_F1=Foreign (Pre)
SAV_PokedexXY.CHK_L1=Japanese
SAV_PokedexXY.CHK_L2=English
SAV_PokedexXY.CHK_L3=French
SAV_PokedexXY.CHK_L4=Italian
SAV_PokedexXY.CHK_L5=German
SAV_PokedexXY.CHK_L6=Spanish
SAV_PokedexXY.CHK_L7=Korean
SAV_PokedexXY.CHK_P1=Native (Kalos)
SAV_PokedexXY.CHK_P2=Male
SAV_PokedexXY.CHK_P3=Female
SAV_PokedexXY.CHK_P4=Shiny Male
SAV_PokedexXY.CHK_P5=Shiny Female
SAV_PokedexXY.CHK_P6=Male
SAV_PokedexXY.CHK_P7=Female
SAV_PokedexXY.CHK_P8=Shiny Male
SAV_PokedexXY.CHK_P9=Shiny Female
SAV_PokedexXY.GB_Displayed=Displayed
SAV_PokedexXY.GB_Encountered=Seen
SAV_PokedexXY.GB_Language=Languages
SAV_PokedexXY.GB_Owned=Owned
SAV_PokedexXY.L_goto=goto:
SAV_PokedexXY.L_Spinda=Spinda:
SAV_Pokepuff.B_All=All
SAV_Pokepuff.B_Cancel=Cancel
SAV_Pokepuff.B_None=None
SAV_Pokepuff.B_Save=Save
SAV_Pokepuff.B_Sort=Sort
SAV_Pokepuff.L_Count=CNT:
SAV_SecretBase.B_Cancel=Cancel
SAV_SecretBase.B_FDisplay=>
SAV_SecretBase.B_FSave=<
SAV_SecretBase.B_GiveDecor=Give All Decorations
SAV_SecretBase.B_Save=Save
SAV_SecretBase.f_MAIN=Main
SAV_SecretBase.f_PKM=Trainer Pokémon
SAV_SecretBase.GB_Object=Object Layout
SAV_SecretBase.GB_PKM=PKM
SAV_SecretBase.L_ATK=ATK
SAV_SecretBase.L_BaseLocation=Secret Base Location:
SAV_SecretBase.L_Blackboard=Blackboard:
SAV_SecretBase.L_Confetti=Confetti:
SAV_SecretBase.L_Decoration=Decoration:
SAV_SecretBase.L_DEF=DEF
SAV_SecretBase.L_Encourage=Encourage:
SAV_SecretBase.L_EncryptionConstant=ENC:
SAV_SecretBase.L_EVs=EVs
SAV_SecretBase.L_Favorite=Favorites:
SAV_SecretBase.L_FlagsCaptured=Flags Captured:
SAV_SecretBase.L_Happy=Happy:
SAV_SecretBase.L_HP=HP
SAV_SecretBase.L_Index=Index:
SAV_SecretBase.L_IVs=IVs
SAV_SecretBase.L_Participant=Participant:
SAV_SecretBase.L_PKFriendship=Friendship:
SAV_SecretBase.L_PPUps=PPUps
SAV_SecretBase.L_Rotation=Rotation Val:
SAV_SecretBase.L_SpA=SpA
SAV_SecretBase.L_SpD=SpD
SAV_SecretBase.L_SPE=SPE
SAV_SecretBase.L_TeamName=Team Name:
SAV_SecretBase.L_TeamSlogan=Team Slogan:
SAV_SecretBase.L_TrName=Trainer Name:
SAV_SecretBase.L_X=X Coordinate:
SAV_SecretBase.L_Y=Y Coordinate:
SAV_Trainer.B_Cancel=Cancel
SAV_Trainer.B_GiveAccessories=Give All Accessories
SAV_Trainer.B_MaxCash=+
SAV_Trainer.B_Save=Save
SAV_Trainer.GB_Adventure=Adventure Info
SAV_Trainer.GB_MaisonBest=Maison Streaks (Best)
SAV_Trainer.GB_MaisonCurrent=Maison Streaks (Current)
SAV_Trainer.GB_Map=Map Position
SAV_Trainer.GB_Sayings=Saved Sayings
SAV_Trainer.L_3DSReg=3DS Region:
SAV_Trainer.L_Accessory=Accessory:
SAV_Trainer.L_Bag=Bag:
SAV_Trainer.L_BP=BP:
SAV_Trainer.L_Country=Country:
SAV_Trainer.L_CurrentMap=Current Map:
SAV_Trainer.L_DoublesB=Doubles:
SAV_Trainer.L_DoublesC=Doubles:
SAV_Trainer.L_Dress=Dress:
SAV_Trainer.L_FacialHair=Facial Hair:
SAV_Trainer.L_Fame=HoF Entered:
SAV_Trainer.L_HairColor=Hair Color:
SAV_Trainer.L_Hairstyle=Hairstyle:
SAV_Trainer.L_Hat=Hat:
SAV_Trainer.L_Hours=Hrs:
SAV_Trainer.L_Language=Language:
SAV_Trainer.L_LastSaved=Last Saved:
SAV_Trainer.L_Minutes=Min:
SAV_Trainer.L_Money=$:
SAV_Trainer.L_MultiB=Multi:
SAV_Trainer.L_MultiC=Multi:
SAV_Trainer.L_MultiplayerSprite=Multiplayer Sprite:
SAV_Trainer.L_NormalB=Normal
SAV_Trainer.L_NormalC=Normal
SAV_Trainer.L_Offset=(offset)
SAV_Trainer.L_Outfit=Outfit Vals
SAV_Trainer.L_Pants=Pants:
SAV_Trainer.L_PM=PokéMiles:
SAV_Trainer.L_Region=Region:
SAV_Trainer.L_RotationB=Rotation:
SAV_Trainer.L_RotationC=Rotation:
SAV_Trainer.L_Saying1=1:
SAV_Trainer.L_Saying2=2:
SAV_Trainer.L_Saying3=3:
SAV_Trainer.L_Saying4=4:
SAV_Trainer.L_Saying5=5:
SAV_Trainer.L_Seconds=Sec:
SAV_Trainer.L_Shirt=Shirt:
SAV_Trainer.L_SID=SID:
SAV_Trainer.L_SinglesB=Singles:
SAV_Trainer.L_SinglesC=Singles:
SAV_Trainer.L_SkinColor=Skin Color:
SAV_Trainer.L_Socks=Socks:
SAV_Trainer.L_Started=Game Started:
SAV_Trainer.L_Stats=Stats
SAV_Trainer.L_Style=Style:
SAV_Trainer.L_SuperB=Super
SAV_Trainer.L_SuperC=Super
SAV_Trainer.L_TID=TID:
SAV_Trainer.L_TrainerName=Trainer Name:
SAV_Trainer.L_TriplesB=Triples:
SAV_Trainer.L_TriplesC=Triples:
SAV_Trainer.L_Value=Value
SAV_Trainer.L_X=X Coordinate:
SAV_Trainer.L_Y=Y Coordinate:
SAV_Trainer.L_Z=Z Coordinate:
SAV_Trainer.Tab_Appearance=Current Appearance (X/Y)
SAV_Trainer.Tab_BadgeMap=Badges/Map
SAV_Trainer.Tab_Maison=Maison
SAV_Trainer.Tab_Multiplayer=Multiplayer
SAV_Trainer.Tab_Overview=Overview
SAV_Wondercard.B_Cancel=Cancel
SAV_Wondercard.B_Import=Import
SAV_Wondercard.B_Output=Export
SAV_Wondercard.B_Save=Save
SAV_Wondercard.L_Details=Details:
SAV_Wondercard.L_Received=Received List:
SuperTrain.B_Cancel=Cancel
SuperTrain.B_Save=Save
SuperTrain.L_Bags=Training Bags
SuperTrain.L_Records=Records
SuperTrain.L_Species=Species:
SuperTrain.L_Species2=Species
SuperTrain.L_Time0=Time:
SuperTrain.L_Time1=Time1
SuperTrain.L_Time2=Time2
SuperTrain.L_Unk=L_Unk
SuperTrain.L_UNKNOWN=UNKNOWN
SuperTrainingEditor.B_All=Give All
SuperTrainingEditor.B_Cancel=Cancel
SuperTrainingEditor.B_None=Remove All
SuperTrainingEditor.B_Save=Save
SuperTrainingEditor.CHK_SecretComplete=Entraînement Secret Formazione
SuperTrainingEditor.CHK_SecretUnlocked=Entraînement Secret Activé
SuperTrainingEditor.CHK_SuperTrain1_ATK=Rang 1: Attq.
SuperTrainingEditor.CHK_SuperTrain1_DEF=Rang 1: Déf.
SuperTrainingEditor.CHK_SuperTrain1_HP=Rang 1: PV
SuperTrainingEditor.CHK_SuperTrain1_SPA=Rang 1: A. Spé.
SuperTrainingEditor.CHK_SuperTrain1_SPD=Rang 1: D. Spé.
SuperTrainingEditor.CHK_SuperTrain1_SPE=Rang 1: Vit.
SuperTrainingEditor.CHK_SuperTrain2_ATK=Rang 2: Attq.
SuperTrainingEditor.CHK_SuperTrain2_DEF=Rang 2: Déf.
SuperTrainingEditor.CHK_SuperTrain2_HP=Rang 2: PV
SuperTrainingEditor.CHK_SuperTrain2_SPA=Rang 2: A. Spé.
SuperTrainingEditor.CHK_SuperTrain2_SPD=Rang 2: D. Spé.
SuperTrainingEditor.CHK_SuperTrain2_SPE=Rang 2: Vit.
SuperTrainingEditor.CHK_SuperTrain3_ATK=Rang 3: Attq.
SuperTrainingEditor.CHK_SuperTrain3_DEF=Rang 3: Déf.
SuperTrainingEditor.CHK_SuperTrain3_HP=Rang 3: PV
SuperTrainingEditor.CHK_SuperTrain3_SPA=Rang 3: A. Spé.
SuperTrainingEditor.CHK_SuperTrain3_SPD=Rang 3: D. Spé.
SuperTrainingEditor.CHK_SuperTrain3_SPE=Rang 3: Vit.
SuperTrainingEditor.CHK_SuperTrain4_1=Rang 4: Troubles
SuperTrainingEditor.CHK_SuperTrain5_1=Rang 5: Plante
SuperTrainingEditor.CHK_SuperTrain5_2=Rang 5: Feu
SuperTrainingEditor.CHK_SuperTrain5_3=Rang 5: Eau
SuperTrainingEditor.CHK_SuperTrain5_4=Rang 5: Cibles Fuyantes
SuperTrainingEditor.CHK_SuperTrain6_1=Rang 6: Riposte
SuperTrainingEditor.CHK_SuperTrain6_2=Rang 6: Rapide
SuperTrainingEditor.CHK_SuperTrain6_3=Rang 6: Longue
SuperTrainingEditor.CHK_SuperTrain7_1=Rang 7: Lépidonille
SuperTrainingEditor.CHK_SuperTrain7_2=Rang 7: Ballon Pixel
SuperTrainingEditor.CHK_SuperTrain7_3=Rang 7: Trioxhydre
SuperTrainingEditor.CHK_SuperTrain8_1=Rang 8: X / Y
SuperTrainingEditor.L_Bag=Last Used Bag:
SuperTrainingEditor.L_Hits=Hits Remaining:

File diff suppressed because it is too large Load diff

View file

@ -1,287 +1,654 @@
! PKHeX Interface Customization File
! Languages: Save this file accordingly and put it in the same folder as PKHeX's executable.
! lang_en.txt = English
! lang_jp.txt = Japanese
! lang_fr.txt = French
! lang_de.txt = German
! lang_es.txt = Spanish
! lang_it.txt = Italian
! lang_ko.txt = Korean
! lang_zh.txt = Chinese
! lang_pt.txt = Portuguese
! Make sure that each edit has a ' = ' between Control name and new Text!
!
! -----------------------------------------------------
- DO NOT CHANGE THIS SECTION. Main Form (PKHeX window) below.
! Main = PKHeX
- Change stuff below this line, not above.
---------------------Menu Strip------------------------
Menu_File = ファイル
Menu_Open = 読み込み...
Menu_Save = 保存 PKM...
Menu_ExportSAV = 保存 SAV...
Menu_ExportMAIN = 保存 main
Menu_ExportBAK = 保存 BAK
Menu_Exit = 閉じる
--
Menu_Tools = ツール
Menu_Showdown = Showdown
Menu_ShowdownImportPKM = クリップボードから読み込む
Menu_ShowdownExportPKM = Export Set to Clipboard
Menu_ShowdownExportParty = Export Party to Clipboard
Menu_ShowdownExportBattleBox = Export Battle Box to Clipboard
Menu_ApplyMarkings = Apply Markings on Import
Menu_Data = データ
Menu_LoadBoxes = ロードボックス
Menu_DumpBoxes = ダンプボックス
Menu_Report = ボックスデータレポート
Menu_Database = PKMデータベース
Menu_MGDatabase = ふしぎなおくりものデータベース
Menu_BatchEditor = バルクエディタ
Menu_Folder = オープンフォルダ
--
Menu_Options = 設定
Menu_Language = 言語
Menu_Modify = SAVに設定
Menu_ModifyDex = ポケモン図鑑に反映
Menu_ModifyPKM = PKM情報の変更
Menu_Unicode = Unicode
Menu_About = PKHeXについて
--------------------Context Menus----------------------
mnuView = 見る
mnuSet = セット
mnuDelete = 消去
mnu2View = 見る
--------------------Main Tab Data----------------------
Tab_Main = メイン
Label_PID = 性格値
BTN_RerollPID = 新規
Label_Species = 種類
CHK_Nicknamed = ニックネーム
Label_EXP = 経験値
Label_CurLevel = Lv
Label_Nature = 性格
Label_HeldItem = 持ち物
Label_Friendship = なつき度
Label_Form = フォルム
Label_Ability = 特性
Label_Language = 言語
CHK_IsEgg = タマゴ
CHK_Infected = 感染状態
CHK_Cured = 抗体状態
Label_PKRS = ポケルス
Label_PKRSdays = 日:
Label_Country = 国:
Label_SubRegion = 地域:
Label_3DSRegion = 3DS地域:
---------------------Met Tab Data-----------------------
Tab_Met = 出会い
Label_OriginGame = バージョン
Label_MetLocation = 場所
Label_Ball = ボール
Label_MetLevel = レベル
Label_MetDate = 出会った日
Label_EncounterType = 出会いの種類
CHK_Fateful = うんめいてきなであい
---------------------Egg Met Data-----------------------
CHK_AsEgg = タマゴとして孵った
GB_EggConditions = タマゴのデータ
Label_EggLocation = 貰った場所
Label_EggDate = 貰った日
--------------------Stats Tab Data----------------------
Tab_Stats = 統計
Label_IVs = 個体値
Label_EVs = 努力値
Label_Stats = 実数値
Label_HP = HP
Label_ATK = 攻撃
Label_DEF = 防御
Label_SPA = 特攻
Label_SPD = 特防
Label_SPE = 素早さ
Label_Total = 合計
Label_HiddenPowerPrefix = めざめるパワーのタイプ:
Label_CharacteristicPrefix = 個性:
BTN_RandomIVs = ランダム 個体値
BTN_RandomEVs = ランダム 努力値
Label_ContestStats = コンディション
Label_Cool = かっこよさ
Label_Beauty = うつくしさ
Label_Cute = かわいさ
Label_Smart = かしこさ
Label_Clever = かしこさ
Label_Tough = たくましさ
Label_Sheen = けづや
-------------------Attacks Tab Data---------------------
Tab_Attacks = わざ
GB_CurrentMoves = 覚えているわざ
Label_CurPP = PP
Label_PPups = PU回数
GB_RelearnMoves = 遺伝わざ
-------------------OT/Misc Tab Data---------------------
Tab_OTMisc = 親など
GB_OT = トレーナー情報
Label_TID = ID
Label_SID = 裏ID
Label_OT = おや
GB_nOT = 現在のトレーナー
Label_PrevOT = おや
GB_ExtraBytes = 余分なバイト
GB_Markings = マーキング
BTN_Ribbons = リボン
BTN_Medals = スーパートレーニング
BTN_History = メモリー
Label_EncryptionConstant = 暗号化定数
BTN_RerollEC = 新規
-----------------Save Data Interface--------------------
Tab_Box = ボックス
Tab_PartyBattle = 手持ちポケモン
Tab_Other = その他
Tab_SAV = SAV
B_OpenPokePuffs = ‎ポフレ
B_OpenPokeBeans = ポケマメ
B_OpenItemPouch = アイテム
B_OpenTrainerInfo = トレーナー情報
B_OpenBoxLayout = ボックス
B_OpenWondercards = ふしぎなカード
B_OpenBerryField = きのみ畑
B_OpenOPowers = Oパワー
B_OpenEventFlags = イベントフラグ
B_OpenPokedex = ポケモン図鑑
B_OpenSuperTraining = スパトレ
B_OpenPokeBlocks = ポロック
B_OpenLinkInfo = ポケモンリンク
B_FestivalPlaza = フェスサークル
B_CellsStickers = ヌシール/セル
B_MailBox = メールボックス
--
B_OpenSecretBase = ひみつきち
B_CGearSkin = Cギア スキン
B_OpenFriendSafari = フレンドサファリ
B_OpenHoneyTreeEditor = ミツの木
B_OpenRTCEditor = 時刻
B_Roamer = 徘徊ポケモン
--
L_ShinyLeaf = かがやくはっぱ
L_MetTimeOfDay = 出会った時間
B_OpenMiscEditor = その他
--------------------Tab Internals-----------------------
L_Party = 手持ちポケモン
L_BattleBox = バトルボックス
L_ReadOnlyPBB = 読み取り専用
GB_Daycare = 育て屋
GB_GTS = GTS
GB_Fused = Fused
GB_SUBE = OldMan
DayCare_HasEgg = タマゴがある状態
L_DaycareSeed = シード値
L_ReadOnlyOther = このタブは読み取り専用です
B_JPEG = PGL 画像保存
B_OpenHallofFame = 殿堂入り
B_OUTPasserby = すれちがい
B_VerifyCHK = チェックサム
B_SaveBoxBin = ボックスの書き出し
L_GameSync = ゲームシンク ID:
L_Secure1 = Secure Value 1:
L_Secure2 = Secure Value 2:
! End
! -----------------------------------------------------
- DO NOT CHANGE THIS SECTION.
! RibbonEditor = Ribbon Editor
- Change stuff below this line, not above.
----------------------Buttons--------------------------
BTN_All = 全て取得
BTN_None = 全て消去
BTN_Cancel = キャンセル
BTN_Save = 保存
! -----------------------------------------------------
- DO NOT CHANGE THIS SECTION.
! SuperTrainingEditor = Medal Editor
- Change stuff below this line, not above.
----------------------Buttons--------------------------
B_All = 全て取得
B_None = 全て消去
B_Cancel = キャンセル
B_Save = 保存
------------------Super Training-----------------------
CHK_SuperTrain1_HP = ランク1: HP
CHK_SuperTrain1_ATK = ランク1: 攻撃
CHK_SuperTrain1_DEF = ランク1: 防御
CHK_SuperTrain1_SPA = ランク1: 特攻
CHK_SuperTrain1_SPD = ランク1: 特防
CHK_SuperTrain1_SPE = ランク1: 素早さ
CHK_SuperTrain2_HP = ランク2: HP
CHK_SuperTrain2_ATK = ランク2: 攻撃
CHK_SuperTrain2_DEF = ランク2: 防御
CHK_SuperTrain2_SPA = ランク2: 特攻
CHK_SuperTrain2_SPD = ランク2: 特防
CHK_SuperTrain2_SPE = ランク2: 素早さ
CHK_SuperTrain3_HP = ランク3: HP
CHK_SuperTrain3_ATK = ランク3: 攻撃
CHK_SuperTrain3_DEF = ランク3: 防御
CHK_SuperTrain3_SPA = ランク3: 特攻
CHK_SuperTrain3_SPD = ランク3: 特防
CHK_SuperTrain3_SPE = ランク3: 素早さ
CHK_SecretUnlocked = 秘密の訓練ロック解除
CHK_SecretComplete = 秘密の訓練を完了
CHK_SuperTrain4_1 = ランク4: 一難去ってまた一難!?
CHK_SuperTrain5_1 = ランク5: 一等商品リーフのいし!
CHK_SuperTrain5_2 = ランク5: 一等商品ほのおのいし!
CHK_SuperTrain5_3 = ランク5: 一等商品みずのいし!
CHK_SuperTrain5_4 = ランク5: 逃げるゴールを追え!
CHK_SuperTrain6_1 = ランク6: 反撃の後半戦!
CHK_SuperTrain6_2 = ランク6: 速攻の前半戦!
CHK_SuperTrain6_3 = ランク6: 縦横無尽ロングシュート!
CHK_SuperTrain7_1 = ランク7: 逆襲のコフキムシ!
CHK_SuperTrain7_2 = ランク7: 弾幕弾幕ビットバルーン!
CHK_SuperTrain7_3 = ランク7: サドンデス サザンドラ!
CHK_SuperTrain8_1 = ランク8: 最強決定!
---
L_Bag = Last Used Bag:
L_Hits = Hits Remaining:
! End
! -----------------------------------------------------
- DO NOT CHANGE THIS SECTION. Memories / Amie UI Below
! MemoryAmie
- Change stuff below this line, not above.
---------------------Bottom UI-------------------------
BTN_Cancel = キャンセル
BTN_Save = 保存
L_Handler = 現在のおや
L_Fullness = 豊かさ
L_Enjoyment = 楽しみ
-
Tab_OTMemory = 現在の思い出
L_OT_Friendship = なつき度
L_OT_Affection = 仲の良さ
L_OT_TextLine = 思い出のタイプ
L_OT_Quality = 気持ちの強さ
L_OT_Feeling = 気持ち2
Tab_CTMemory = 以前の思い出
L_CT_Friendship = なつき度
L_CT_Affection = 愛情
L_CT_TextLine = 思い出のタイプ
L_CT_Quality = 気持ちの強さ
L_CT_Feeling = 気持ち
Tab_Residence = ロケーション
GB_Residence = ポケモンの出身地
L_Geo0 = 履歴 0
L_Geo1 = 履歴 1
L Geo2 = 履歴 2
L_Geo3 = 履歴 3
L_Geo4 = 履歴 4
L_Region = 地域
L_Country = 国
--
L_Arguments = 使用禁止 ; 左はありませんでした ; OT ; 前回のゲーム ; おもいで ; ポケモン ; エリア ; 項目 ; わざ ; 場所 ;
! End
! -----------------------------------------------------
- DO NOT CHANGE THIS SECTION.
! ErrorWindow = Error
- Change stuff below this line, not above.
-------------------------------------------------------
L_ProvideInfo = Please provide this information when reporting this error:
B_CopyToClipboard = クリップボードにコピー
B_Continue = 続ける
B_Abort = キャンセル
! End
ErrorWindow=Error
f2_Text=Special Characters
Main=PKHeX
MemoryAmie=Memory / Amie Editor
RibbonEditor=Ribbon Editor
SAV_BerryField=Berry Field Viewer
SAV_BoxLayout=Box Layout Editor
SAV_EventFlagsORAS=Event Flag Editor (ORAS)
SAV_EventFlagsXY=Event Flag Editor (XY)
SAV_HallOfFame=Hall of Fame Editor
SAV_Inventory=Inventory Editor
SAV_Link6=Pokémon Link Tool
SAV_OPower=O-Power Editor
SAV_PokeBlockORAS=Pokéblock Editor
SAV_PokedexORAS=Pokédex Editor (ORAS)
SAV_PokedexXY=Pokédex Editor (XY)
SAV_Pokepuff=Poké Puffs Editor
SAV_SecretBase=Secret Base Editor
SAV_Trainer=Trainer Data Editor
SAV_Wondercard=Mystery Gift I/O
SuperTrain=Super Training Records
SuperTrainingEditor=Medal Editor
ErrorWindow.B_Abort=キャンセル
ErrorWindow.B_Continue=続ける
ErrorWindow.B_CopyToClipboard=クリップボードにコピー
ErrorWindow.L_ProvideInfo=Please provide this information when reporting this error:
Main.B_CellsStickers=ヌシール/セル
Main.B_CGearSkin=Cギア スキン
Main.B_FestivalPlaza=フェスサークル
Main.B_JPEG=PGL 画像保存
Main.B_MailBox=メールボックス
Main.B_OpenBerryField=きのみ畑
Main.B_OpenBoxLayout=ボックス
Main.B_OpenEventFlags=イベントフラグ
Main.B_OpenFriendSafari=フレンドサファリ
Main.B_OpenHallofFame=殿堂入り
Main.B_OpenHoneyTreeEditor=ミツの木
Main.B_OpenItemPouch=アイテム
Main.B_OpenLinkInfo=ポケモンリンク
Main.B_OpenMiscEditor=その他
Main.B_OpenOPowers= Oパワー
Main.B_OpenPokeBeans=ポケマメ
Main.B_OpenPokeBlocks=ポロック
Main.B_OpenPokedex=ポケモン図鑑
Main.B_OpenPokePuffs=‎ポフレ
Main.B_OpenRTCEditor=時刻
Main.B_OpenSecretBase=ひみつきち
Main.B_OpenSuperTraining=スパトレ
Main.B_OpenTrainerInfo=トレーナー情報
Main.B_OpenWondercards=ふしぎなカード
Main.B_OUTPasserby=すれちがい
Main.B_Roamer=徘徊ポケモン
Main.B_SaveBoxBin=ボックスの書き出し
Main.B_VerifyCHK=チェックサム
Main.BTN_History=メモリー
Main.BTN_Medals=スーパートレーニング
Main.BTN_RandomEVs=ランダム 努力値
Main.BTN_RandomIVs=ランダム 個体値
Main.BTN_RerollEC=新規
Main.BTN_RerollPID=新規
Main.BTN_Ribbons=リボン
Main.CHK_AsEgg=タマゴとして孵った
Main.CHK_Cured=抗体状態
Main.CHK_Fateful=うんめいてきなであい
Main.CHK_HackedStats=Hacked Stats
Main.CHK_Infected=感染状態
Main.CHK_IsEgg=タマゴ
Main.CHK_Nicknamed=ニックネーム
Main.DayCare_HasEgg=タマゴがある状態
Main.GB_CurrentMoves=覚えているわざ
Main.GB_Daycare=育て屋
Main.GB_EggConditions=タマゴのデータ
Main.GB_ExtraBytes=余分なバイト
Main.GB_Fused=Fused
Main.GB_GTS=GTS
Main.GB_Markings=マーキング
Main.GB_nOT=現在のトレーナー
Main.GB_OT=トレーナー情報
Main.GB_RelearnMoves=遺伝わざ
Main.GB_SUBE=OldMan
Main.L_BattleBox=バトルボックス
Main.L_DaycareSeed=シード値
Main.L_GameSync=ゲームシンク ID:
Main.L_MetTimeOfDay=出会った時間
Main.L_Party=手持ちポケモン
Main.L_ReadOnlyOther=このタブは読み取り専用です
Main.L_ReadOnlyPBB=読み取り専用
Main.L_Secure1=Secure Value 1:
Main.L_Secure2=Secure Value 2:
Main.L_ShinyLeaf=かがやくはっぱ
Main.Label_3DSRegion=3DS地域:
Main.Label_Ability=特性
Main.Label_ATK=攻撃
Main.Label_Ball=ボール
Main.Label_Beauty=うつくしさ
Main.Label_CharacteristicPrefix=個性:
Main.Label_Clever=かしこさ
Main.Label_ContestStats=コンディション
Main.Label_Cool=かっこよさ
Main.Label_Country=国:
Main.Label_CurLevel=Lv
Main.Label_CurPP=PP
Main.Label_Cute=かわいさ
Main.Label_DEF=防御
Main.Label_EggDate=貰った日
Main.Label_EggLocation=貰った場所
Main.Label_EncounterType=出会いの種類
Main.Label_EncryptionConstant=暗号化定数
Main.Label_EVs=努力値
Main.Label_EXP=経験値
Main.Label_Form=フォルム
Main.Label_Friendship=なつき度
Main.Label_HeldItem=持ち物
Main.Label_HiddenPowerPrefix=めざめるパワーのタイプ:
Main.Label_HP=HP
Main.Label_IVs=個体値
Main.Label_Language=言語
Main.Label_MetDate=出会った日
Main.Label_MetLevel=レベル
Main.Label_MetLocation=場所
Main.Label_Nature=性格
Main.Label_OriginGame=バージョン
Main.Label_OT=おや
Main.Label_PID=性格値
Main.Label_PKRS=ポケルス
Main.Label_PKRSdays=日:
Main.Label_PPups=PU回数
Main.Label_PrevOT=おや
Main.Label_Sheen=けづや
Main.Label_SID=裏ID
Main.Label_Smart=かしこさ
Main.Label_SPA=特攻
Main.Label_SPC=SpC:
Main.Label_SPD=特防
Main.Label_SPE=素早さ
Main.Label_Species=種類
Main.Label_Stats=実数値
Main.Label_SubRegion=地域:
Main.Label_TID=ID
Main.Label_Total=合計
Main.Label_Tough=たくましさ
Main.Menu_About=PKHeXについて
Main.Menu_ApplyMarkings=Apply Markings on Import
Main.Menu_BatchEditor=バルクエディタ
Main.Menu_Data=データ
Main.Menu_Database=PKMデータベース
Main.Menu_DumpBoxes=ダンプボックス
Main.Menu_Exit=閉じる
Main.Menu_ExportBAK=保存 BAK
Main.Menu_ExportMAIN=保存 main
Main.Menu_ExportSAV=保存 SAV...
Main.Menu_File=ファイル
Main.Menu_Folder=オープンフォルダ
Main.Menu_Language=言語
Main.Menu_LoadBoxes=ロードボックス
Main.Menu_MGDatabase=ふしぎなおくりものデータベース
Main.Menu_Modify=SAVに設定
Main.Menu_ModifyDex=ポケモン図鑑に反映
Main.Menu_ModifyPKM=PKM情報の変更
Main.Menu_Open=読み込み...
Main.Menu_Options=設定
Main.Menu_Report=ボックスデータレポート
Main.Menu_Save=保存 PKM...
Main.Menu_Showdown=Showdown
Main.Menu_ShowdownExportBattleBox=Export Battle Box to Clipboard
Main.Menu_ShowdownExportParty=Export Party to Clipboard
Main.Menu_ShowdownExportPKM=Export Set to Clipboard
Main.Menu_ShowdownImportPKM=クリップボードから読み込む
Main.Menu_Tools=ツール
Main.Menu_Unicode=Unicode
Main.mnu2View=見る
Main.mnuDelete=消去
Main.mnuSet=セット
Main.mnuView=見る
Main.Tab_Attacks=わざ
Main.Tab_Box=ボックス
Main.Tab_Main=メイン
Main.Tab_Met=出会い
Main.Tab_Other=その他
Main.Tab_OTMisc=親など
Main.Tab_PartyBattle=手持ちポケモン
Main.Tab_SAV=SAV
Main.Tab_Stats=統計
MemoryAmie.BTN_Cancel=キャンセル
MemoryAmie.BTN_Save=保存
MemoryAmie.GB_Residence=ポケモンの出身地
MemoryAmie.L Geo2=履歴 2
MemoryAmie.L_Arguments=使用禁止 ; 左はありませんでした ; OT ; 前回のゲーム ; おもいで ; ポケモン ; エリア ; 項目 ; わざ ; 場所 ;
MemoryAmie.L_Country=国
MemoryAmie.L_cT_Affection=Affection:
MemoryAmie.L_CT_Affection=愛情
MemoryAmie.L_CT_Feeling=気持ち
MemoryAmie.L_CT_Friendship=なつき度
MemoryAmie.L_CT_Quality=気持ちの強さ
MemoryAmie.L_CT_TextLine=思い出のタイプ
MemoryAmie.L_Enjoyment=楽しみ
MemoryAmie.L_Fullness=豊かさ
MemoryAmie.L_Geo0=履歴 0
MemoryAmie.L_Geo1=履歴 1
MemoryAmie.L_Geo2=Past 2:
MemoryAmie.L_Geo3=履歴 3
MemoryAmie.L_Geo4=履歴 4
MemoryAmie.L_Handler=現在のおや
MemoryAmie.L_OT_Affection=仲の良さ
MemoryAmie.L_OT_Feeling=気持ち2
MemoryAmie.L_OT_Friendship=なつき度
MemoryAmie.L_OT_Quality=気持ちの強さ
MemoryAmie.L_OT_TextLine=思い出のタイプ
MemoryAmie.L_Region=地域
MemoryAmie.Tab_CTMemory=以前の思い出
MemoryAmie.Tab_OTMemory=現在の思い出
MemoryAmie.Tab_Residence=ロケーション
RibbonEditor.B_All=Give All
RibbonEditor.B_Cancel=Cancel
RibbonEditor.B_None=Remove All
RibbonEditor.B_Save=Save
RibbonEditor.BTN_All=全て取得
RibbonEditor.BTN_Cancel=キャンセル
RibbonEditor.BTN_None=全て消去
RibbonEditor.BTN_Save=保存
SAV_BerryField.B_Cancel=Cancel
SAV_BerryField.B_Save=Save
SAV_BerryField.L_Berry=Berry:
SAV_BerryField.L_Field=Field:
SAV_BerryField.L_u1=1
SAV_BerryField.L_u2=2
SAV_BerryField.L_u3=3
SAV_BerryField.L_u4=4
SAV_BerryField.L_u5=5
SAV_BerryField.L_u6=6
SAV_BerryField.L_u7=7
SAV_BerryField.L_Unfinished=Unfinished: Needs More Research
SAV_BoxLayout.B_Cancel=Cancel
SAV_BoxLayout.B_Save=Save
SAV_BoxLayout.L_BG=BG:
SAV_BoxLayout.L_BoxName=Box Name:
SAV_BoxLayout.L_Flags=Unlocked BG Flags:
SAV_BoxLayout.L_Unlocked=Unlocked:
SAV_EventFlagsORAS.B_Cancel=Cancel
SAV_EventFlagsORAS.B_LoadNew=Load New
SAV_EventFlagsORAS.B_LoadOld=Load Old
SAV_EventFlagsORAS.B_Save=Save
SAV_EventFlagsORAS.CHK_CustomFlag=Status:
SAV_EventFlagsORAS.flag_0172=Cresselia Defeated
SAV_EventFlagsORAS.flag_0173=Raikou Defeated
SAV_EventFlagsORAS.flag_0174=Entei Defeated
SAV_EventFlagsORAS.flag_0175=Suicune Defeated
SAV_EventFlagsORAS.flag_0176=Cobalion Defeated
SAV_EventFlagsORAS.flag_0177=Terrakion Defeated
SAV_EventFlagsORAS.flag_0178=Virizion Defeated
SAV_EventFlagsORAS.flag_0179=Uxie Defeated
SAV_EventFlagsORAS.flag_0180=Mesprit Defeated
SAV_EventFlagsORAS.flag_0181=Azelf Defeated
SAV_EventFlagsORAS.flag_0182=(OR) Reshiram Defeated
SAV_EventFlagsORAS.flag_0183=(AS) Zekrom Defeated
SAV_EventFlagsORAS.flag_0184=Kyurem Defeated
SAV_EventFlagsORAS.flag_0208=(OR) Ho-Oh Defeated
SAV_EventFlagsORAS.flag_0209=(AS) Lugia Defeated
SAV_EventFlagsORAS.flag_0252=Regigigas Defeated
SAV_EventFlagsORAS.flag_0260=Heatran Defeated
SAV_EventFlagsORAS.flag_0284=Singles Statuette
SAV_EventFlagsORAS.flag_0285=Doubles Statuette
SAV_EventFlagsORAS.flag_0286=Triples Statuette
SAV_EventFlagsORAS.flag_0287=Rotation Statuette
SAV_EventFlagsORAS.flag_0288=Multi Statuette
SAV_EventFlagsORAS.flag_0289=Super Singles Unlocked
SAV_EventFlagsORAS.flag_0290=Super Doubles Unlocked
SAV_EventFlagsORAS.flag_0291=Super Triples Unlocked
SAV_EventFlagsORAS.flag_0292=Super Rotation Unlocked
SAV_EventFlagsORAS.flag_0293=Super Multi Unlocked
SAV_EventFlagsORAS.flag_0419=(OR) Latias Defeated
SAV_EventFlagsORAS.flag_0420=(AS) Latios Defeated
SAV_EventFlagsORAS.flag_0647=(AS) Kyogre Defeated
SAV_EventFlagsORAS.flag_0648=(OR) Groudon Defeated
SAV_EventFlagsORAS.flag_0945=Deoxys Defeated
SAV_EventFlagsORAS.flag_0956=Regirock Defeated
SAV_EventFlagsORAS.flag_0957=Regice Defeated
SAV_EventFlagsORAS.flag_0958=Registeel Defeated
SAV_EventFlagsORAS.flag_2811=Raikou Captured
SAV_EventFlagsORAS.flag_2812=Entei Captured
SAV_EventFlagsORAS.flag_2813=Suicune Captured
SAV_EventFlagsORAS.flag_2814=(AS) Lugia Captured
SAV_EventFlagsORAS.flag_2815=(OR) Ho-Oh Captured
SAV_EventFlagsORAS.flag_2816=Uxie Captured
SAV_EventFlagsORAS.flag_2817=Mesprit Captured
SAV_EventFlagsORAS.flag_2818=Azelf Captured
SAV_EventFlagsORAS.flag_2819=(AS) Dialga Captured
SAV_EventFlagsORAS.flag_2820=(OR) Palkia Captured
SAV_EventFlagsORAS.flag_2821=Heatran Captured
SAV_EventFlagsORAS.flag_2822=Regigigas Captured
SAV_EventFlagsORAS.flag_2823=Giratina Captured
SAV_EventFlagsORAS.flag_2824=Cresselia Captured
SAV_EventFlagsORAS.flag_2825=Cobalion Captured
SAV_EventFlagsORAS.flag_2826=Terrakion Captured
SAV_EventFlagsORAS.flag_2827=Virizion Captured
SAV_EventFlagsORAS.flag_2828=(OR) Tornadus Captured
SAV_EventFlagsORAS.flag_2829=(AS) Thundurus Captured
SAV_EventFlagsORAS.flag_2830=(OR) Reshiram Captured
SAV_EventFlagsORAS.flag_2831=(AS) Zekrom Captured
SAV_EventFlagsORAS.flag_2832=Landorus Captured
SAV_EventFlagsORAS.flag_2833=Kyurem Captured
SAV_EventFlagsORAS.flag_2834=(OR) Latias Captured
SAV_EventFlagsORAS.flag_2835=(AS) Latios Captured
SAV_EventFlagsORAS.flag_2836=Regirock Captured
SAV_EventFlagsORAS.flag_2837=Regice Captured
SAV_EventFlagsORAS.flag_2838=Registeel Captured
SAV_EventFlagsORAS.flag_2839=(OR) Groudon Captured
SAV_EventFlagsORAS.flag_2840=(AS) Kyogre Captured
SAV_EventFlagsORAS.flag_2842=Deoxys Captured
SAV_EventFlagsORAS.GB_FlagStatus=Check Flag Status
SAV_EventFlagsORAS.GB_Misc=Misc
SAV_EventFlagsORAS.GB_Rebattle=Rebattle
SAV_EventFlagsORAS.GB_Researcher=FlagDiff Researcher
SAV_EventFlagsORAS.L_Ash=Volcanic Ash:
SAV_EventFlagsORAS.L_Flag=Flag:
SAV_EventFlagsORAS.L_IsSet=IsSet
SAV_EventFlagsORAS.L_SkyTower=*Sky Tower
SAV_EventFlagsORAS.L_UnSet=UnSet
SAV_EventFlagsXY.B_Cancel=Cancel
SAV_EventFlagsXY.B_LoadNew=Load New
SAV_EventFlagsXY.B_LoadOld=Load Old
SAV_EventFlagsXY.B_Save=Save
SAV_EventFlagsXY.CHK_CustomFlag=Status:
SAV_EventFlagsXY.flag_0001=Flag1
SAV_EventFlagsXY.flag_0002=Flag2
SAV_EventFlagsXY.flag_0003=Flag3
SAV_EventFlagsXY.flag_0004=Flag4
SAV_EventFlagsXY.flag_0005=Flag5
SAV_EventFlagsXY.flag_0114=Zygarde Captured
SAV_EventFlagsXY.flag_0115=Mewtwo Captured
SAV_EventFlagsXY.flag_0285=Singles Statuette
SAV_EventFlagsXY.flag_0286=Doubles Statuette
SAV_EventFlagsXY.flag_0287=Triples Statuette
SAV_EventFlagsXY.flag_0288=Rotation Statuette
SAV_EventFlagsXY.flag_0289=Multi Statuette
SAV_EventFlagsXY.flag_0290=Super Singles Unlocked
SAV_EventFlagsXY.flag_0291=Super Doubles Unlocked
SAV_EventFlagsXY.flag_0292=Super Triples Unlocked
SAV_EventFlagsXY.flag_0293=Super Rotation Unlocked
SAV_EventFlagsXY.flag_0294=Super Multi Unlocked
SAV_EventFlagsXY.flag_0675=50: Beat Chatelaine
SAV_EventFlagsXY.flag_0790=Zygarde Defeated
SAV_EventFlagsXY.flag_0963=Mewtwo Defeated
SAV_EventFlagsXY.flag_2237=2237
SAV_EventFlagsXY.flag_2238=2238
SAV_EventFlagsXY.flag_2239=2239
SAV_EventFlagsXY.flag_2546=Pokédex Obtained
SAV_EventFlagsXY.GB_FlagStatus=Check Flag Status
SAV_EventFlagsXY.GB_Misc=Misc
SAV_EventFlagsXY.GB_Rebattle=Rebattle
SAV_EventFlagsXY.GB_Researcher=FlagDiff Researcher
SAV_EventFlagsXY.L_Flag=Flag:
SAV_EventFlagsXY.L_IsSet=IsSet
SAV_EventFlagsXY.L_UnSet=UnSet
SAV_HallOfFame.B_Cancel=Cancel
SAV_HallOfFame.B_Close=Save
SAV_HallOfFame.B_CopyText=Copy txt
SAV_HallOfFame.B_Delete=Delete
SAV_HallOfFame.CHK_Nicknamed=Nickname:
SAV_HallOfFame.GB_CurrentMoves=Current Moves
SAV_HallOfFame.GB_OT=Trainer Information
SAV_HallOfFame.L_Level=Level:
SAV_HallOfFame.L_PartyNum=Party Index:
SAV_HallOfFame.L_Shiny=Shiny:
SAV_HallOfFame.L_Victory=Victory Number:
SAV_HallOfFame.Label_EncryptionConstant=Encryption Constant:
SAV_HallOfFame.Label_Form=Form:
SAV_HallOfFame.Label_HeldItem=Held Item:
SAV_HallOfFame.Label_MetDate=Date:
SAV_HallOfFame.Label_OT=OT:
SAV_HallOfFame.Label_SID=SID:
SAV_HallOfFame.Label_Species=Species:
SAV_HallOfFame.Label_TID=TID:
SAV_Inventory.B_Cancel=Cancel
SAV_Inventory.B_GiveAll=Give All
SAV_Inventory.B_Save=Save
SAV_Link6.B_Cancel=Cancel
SAV_Link6.B_Export=Export
SAV_Link6.B_Import=Import
SAV_Link6.B_Save=Save
SAV_Link6.CHK_LinkAvailable=Pokémon Link Enabled
SAV_Link6.L_BP=Battle Points:
SAV_Link6.L_Item1=Item 1:
SAV_Link6.L_Item2=Item 2:
SAV_Link6.L_Item3=Item 3:
SAV_Link6.L_Item4=Item 4:
SAV_Link6.L_Item5=Item 5:
SAV_Link6.L_Item6=Item 6:
SAV_Link6.L_Pokemiles= PokéMiles
SAV_Link6.TAB_Items=Items
SAV_Link6.TAB_Main=Main
SAV_Link6.TAB_PKM=Pokémon
SAV_OPower.B_AllMax=Give All
SAV_OPower.B_Cancel=Cancel
SAV_OPower.B_MaxP=Give All
SAV_OPower.B_Save=Save
SAV_OPower.CHK_1=?Bargain MAX
SAV_OPower.CHK_2=?EXP MAX
SAV_OPower.CHK_3=?Prize MAX
SAV_OPower.CHK_4=?Hatch MAX
SAV_OPower.CHK_5=?Capture MAX
SAV_OPower.CHK_6=?Restore MAX
SAV_OPower.CHK_7=?Befriend MAX
SAV_OPower.CHK_8=?Unused
SAV_OPower.GB_Event=Event
SAV_OPower.GB_Regular=Regular
SAV_OPower.L_1=Hatching:
SAV_OPower.L_10=?Befriend:
SAV_OPower.L_11=?Attack:
SAV_OPower.L_12=?Defense:
SAV_OPower.L_13=?Sp. Atk:
SAV_OPower.L_14=?Sp. Def:
SAV_OPower.L_15=?Speed:
SAV_OPower.L_16=?Critical Hit:
SAV_OPower.L_17=?Accuracy:
SAV_OPower.L_2=Bargain:
SAV_OPower.L_3=?Prize:
SAV_OPower.L_4=EXP:
SAV_OPower.L_5=Capture:
SAV_OPower.L_6=?Encounter
SAV_OPower.L_7=?Stealth:
SAV_OPower.L_8=HP Restore:
SAV_OPower.L_9=?PP:
SAV_PokeBlockORAS.B_Cancel=Cancel
SAV_PokeBlockORAS.B_GiveAllBlocks=Give All Blocks
SAV_PokeBlockORAS.B_RandomizeBerries=Randomize Berries
SAV_PokeBlockORAS.B_Save=Save
SAV_PokeBlockORAS.L_Blue=Blue Pokéblocks:
SAV_PokeBlockORAS.L_Green=Green Pokéblocks:
SAV_PokeBlockORAS.L_Pink=Pink Pokéblocks:
SAV_PokeBlockORAS.L_Rainbow=Rainbow Pokéblocks:
SAV_PokeBlockORAS.L_Red=Red Pokéblocks:
SAV_PokeBlockORAS.L_Yellow=Yellow Pokéblocks:
SAV_PokedexORAS.B_Cancel=Cancel
SAV_PokedexORAS.B_GiveAll=Check All
SAV_PokedexORAS.B_Modify=Modify...
SAV_PokedexORAS.B_Save=Save
SAV_PokedexORAS.CHK_L1=Japanese
SAV_PokedexORAS.CHK_L2=English
SAV_PokedexORAS.CHK_L3=French
SAV_PokedexORAS.CHK_L4=Italian
SAV_PokedexORAS.CHK_L5=German
SAV_PokedexORAS.CHK_L6=Spanish
SAV_PokedexORAS.CHK_L7=Korean
SAV_PokedexORAS.CHK_P1=Obtained
SAV_PokedexORAS.CHK_P2=Male
SAV_PokedexORAS.CHK_P3=Female
SAV_PokedexORAS.CHK_P4=Shiny Male
SAV_PokedexORAS.CHK_P5=Shiny Female
SAV_PokedexORAS.CHK_P6=Male
SAV_PokedexORAS.CHK_P7=Female
SAV_PokedexORAS.CHK_P8=Shiny Male
SAV_PokedexORAS.CHK_P9=Shiny Female
SAV_PokedexORAS.GB_Displayed=Displayed
SAV_PokedexORAS.GB_Encountered=Seen
SAV_PokedexORAS.GB_Language=Languages
SAV_PokedexORAS.GB_Owned=Owned
SAV_PokedexORAS.L_DexNav=DexNav Lv:
SAV_PokedexORAS.L_goto=goto:
SAV_PokedexORAS.L_Spinda=Spinda:
SAV_PokedexXY.B_Cancel=Cancel
SAV_PokedexXY.B_GiveAll=Check All
SAV_PokedexXY.B_Modify=Modify...
SAV_PokedexXY.B_Save=Save
SAV_PokedexXY.CHK_F1=Foreign (Pre)
SAV_PokedexXY.CHK_L1=Japanese
SAV_PokedexXY.CHK_L2=English
SAV_PokedexXY.CHK_L3=French
SAV_PokedexXY.CHK_L4=Italian
SAV_PokedexXY.CHK_L5=German
SAV_PokedexXY.CHK_L6=Spanish
SAV_PokedexXY.CHK_L7=Korean
SAV_PokedexXY.CHK_P1=Native (Kalos)
SAV_PokedexXY.CHK_P2=Male
SAV_PokedexXY.CHK_P3=Female
SAV_PokedexXY.CHK_P4=Shiny Male
SAV_PokedexXY.CHK_P5=Shiny Female
SAV_PokedexXY.CHK_P6=Male
SAV_PokedexXY.CHK_P7=Female
SAV_PokedexXY.CHK_P8=Shiny Male
SAV_PokedexXY.CHK_P9=Shiny Female
SAV_PokedexXY.GB_Displayed=Displayed
SAV_PokedexXY.GB_Encountered=Seen
SAV_PokedexXY.GB_Language=Languages
SAV_PokedexXY.GB_Owned=Owned
SAV_PokedexXY.L_goto=goto:
SAV_PokedexXY.L_Spinda=Spinda:
SAV_Pokepuff.B_All=All
SAV_Pokepuff.B_Cancel=Cancel
SAV_Pokepuff.B_None=None
SAV_Pokepuff.B_Save=Save
SAV_Pokepuff.B_Sort=Sort
SAV_Pokepuff.L_Count=CNT:
SAV_SecretBase.B_Cancel=Cancel
SAV_SecretBase.B_FDisplay=>
SAV_SecretBase.B_FSave=<
SAV_SecretBase.B_GiveDecor=Give All Decorations
SAV_SecretBase.B_Save=Save
SAV_SecretBase.f_MAIN=Main
SAV_SecretBase.f_PKM=Trainer Pokémon
SAV_SecretBase.GB_Object=Object Layout
SAV_SecretBase.GB_PKM=PKM
SAV_SecretBase.L_ATK=ATK
SAV_SecretBase.L_BaseLocation=Secret Base Location:
SAV_SecretBase.L_Blackboard=Blackboard:
SAV_SecretBase.L_Confetti=Confetti:
SAV_SecretBase.L_Decoration=Decoration:
SAV_SecretBase.L_DEF=DEF
SAV_SecretBase.L_Encourage=Encourage:
SAV_SecretBase.L_EncryptionConstant=ENC:
SAV_SecretBase.L_EVs=EVs
SAV_SecretBase.L_Favorite=Favorites:
SAV_SecretBase.L_FlagsCaptured=Flags Captured:
SAV_SecretBase.L_Happy=Happy:
SAV_SecretBase.L_HP=HP
SAV_SecretBase.L_Index=Index:
SAV_SecretBase.L_IVs=IVs
SAV_SecretBase.L_Participant=Participant:
SAV_SecretBase.L_PKFriendship=Friendship:
SAV_SecretBase.L_PPUps=PPUps
SAV_SecretBase.L_Rotation=Rotation Val:
SAV_SecretBase.L_SpA=SpA
SAV_SecretBase.L_SpD=SpD
SAV_SecretBase.L_SPE=SPE
SAV_SecretBase.L_TeamName=Team Name:
SAV_SecretBase.L_TeamSlogan=Team Slogan:
SAV_SecretBase.L_TrName=Trainer Name:
SAV_SecretBase.L_X=X Coordinate:
SAV_SecretBase.L_Y=Y Coordinate:
SAV_Trainer.B_Cancel=Cancel
SAV_Trainer.B_GiveAccessories=Give All Accessories
SAV_Trainer.B_MaxCash=+
SAV_Trainer.B_Save=Save
SAV_Trainer.GB_Adventure=Adventure Info
SAV_Trainer.GB_MaisonBest=Maison Streaks (Best)
SAV_Trainer.GB_MaisonCurrent=Maison Streaks (Current)
SAV_Trainer.GB_Map=Map Position
SAV_Trainer.GB_Sayings=Saved Sayings
SAV_Trainer.L_3DSReg=3DS Region:
SAV_Trainer.L_Accessory=Accessory:
SAV_Trainer.L_Bag=Bag:
SAV_Trainer.L_BP=BP:
SAV_Trainer.L_Country=Country:
SAV_Trainer.L_CurrentMap=Current Map:
SAV_Trainer.L_DoublesB=Doubles:
SAV_Trainer.L_DoublesC=Doubles:
SAV_Trainer.L_Dress=Dress:
SAV_Trainer.L_FacialHair=Facial Hair:
SAV_Trainer.L_Fame=HoF Entered:
SAV_Trainer.L_HairColor=Hair Color:
SAV_Trainer.L_Hairstyle=Hairstyle:
SAV_Trainer.L_Hat=Hat:
SAV_Trainer.L_Hours=Hrs:
SAV_Trainer.L_Language=Language:
SAV_Trainer.L_LastSaved=Last Saved:
SAV_Trainer.L_Minutes=Min:
SAV_Trainer.L_Money=$:
SAV_Trainer.L_MultiB=Multi:
SAV_Trainer.L_MultiC=Multi:
SAV_Trainer.L_MultiplayerSprite=Multiplayer Sprite:
SAV_Trainer.L_NormalB=Normal
SAV_Trainer.L_NormalC=Normal
SAV_Trainer.L_Offset=(offset)
SAV_Trainer.L_Outfit=Outfit Vals
SAV_Trainer.L_Pants=Pants:
SAV_Trainer.L_PM=PokéMiles:
SAV_Trainer.L_Region=Region:
SAV_Trainer.L_RotationB=Rotation:
SAV_Trainer.L_RotationC=Rotation:
SAV_Trainer.L_Saying1=1:
SAV_Trainer.L_Saying2=2:
SAV_Trainer.L_Saying3=3:
SAV_Trainer.L_Saying4=4:
SAV_Trainer.L_Saying5=5:
SAV_Trainer.L_Seconds=Sec:
SAV_Trainer.L_Shirt=Shirt:
SAV_Trainer.L_SID=SID:
SAV_Trainer.L_SinglesB=Singles:
SAV_Trainer.L_SinglesC=Singles:
SAV_Trainer.L_SkinColor=Skin Color:
SAV_Trainer.L_Socks=Socks:
SAV_Trainer.L_Started=Game Started:
SAV_Trainer.L_Stats=Stats
SAV_Trainer.L_Style=Style:
SAV_Trainer.L_SuperB=Super
SAV_Trainer.L_SuperC=Super
SAV_Trainer.L_TID=TID:
SAV_Trainer.L_TrainerName=Trainer Name:
SAV_Trainer.L_TriplesB=Triples:
SAV_Trainer.L_TriplesC=Triples:
SAV_Trainer.L_Value=Value
SAV_Trainer.L_X=X Coordinate:
SAV_Trainer.L_Y=Y Coordinate:
SAV_Trainer.L_Z=Z Coordinate:
SAV_Trainer.Tab_Appearance=Current Appearance (X/Y)
SAV_Trainer.Tab_BadgeMap=Badges/Map
SAV_Trainer.Tab_Maison=Maison
SAV_Trainer.Tab_Multiplayer=Multiplayer
SAV_Trainer.Tab_Overview=Overview
SAV_Wondercard.B_Cancel=Cancel
SAV_Wondercard.B_Import=Import
SAV_Wondercard.B_Output=Export
SAV_Wondercard.B_Save=Save
SAV_Wondercard.L_Details=Details:
SAV_Wondercard.L_Received=Received List:
SuperTrain.B_Cancel=Cancel
SuperTrain.B_Save=Save
SuperTrain.L_Bags=Training Bags
SuperTrain.L_Records=Records
SuperTrain.L_Species=Species:
SuperTrain.L_Species2=Species
SuperTrain.L_Time0=Time:
SuperTrain.L_Time1=Time1
SuperTrain.L_Time2=Time2
SuperTrain.L_Unk=L_Unk
SuperTrain.L_UNKNOWN=UNKNOWN
SuperTrainingEditor.B_All=全て取得
SuperTrainingEditor.B_Cancel=キャンセル
SuperTrainingEditor.B_None=全て消去
SuperTrainingEditor.B_Save=保存
SuperTrainingEditor.CHK_SecretComplete=秘密の訓練を完了
SuperTrainingEditor.CHK_SecretUnlocked=秘密の訓練ロック解除
SuperTrainingEditor.CHK_SuperTrain1_ATK=ランク1: 攻撃
SuperTrainingEditor.CHK_SuperTrain1_DEF=ランク1: 防御
SuperTrainingEditor.CHK_SuperTrain1_HP=ランク1: HP
SuperTrainingEditor.CHK_SuperTrain1_SPA=ランク1: 特攻
SuperTrainingEditor.CHK_SuperTrain1_SPD=ランク1: 特防
SuperTrainingEditor.CHK_SuperTrain1_SPE=ランク1: 素早さ
SuperTrainingEditor.CHK_SuperTrain2_ATK=ランク2: 攻撃
SuperTrainingEditor.CHK_SuperTrain2_DEF=ランク2: 防御
SuperTrainingEditor.CHK_SuperTrain2_HP=ランク2: HP
SuperTrainingEditor.CHK_SuperTrain2_SPA=ランク2: 特攻
SuperTrainingEditor.CHK_SuperTrain2_SPD=ランク2: 特防
SuperTrainingEditor.CHK_SuperTrain2_SPE=ランク2: 素早さ
SuperTrainingEditor.CHK_SuperTrain3_ATK=ランク3: 攻撃
SuperTrainingEditor.CHK_SuperTrain3_DEF=ランク3: 防御
SuperTrainingEditor.CHK_SuperTrain3_HP=ランク3: HP
SuperTrainingEditor.CHK_SuperTrain3_SPA=ランク3: 特攻
SuperTrainingEditor.CHK_SuperTrain3_SPD=ランク3: 特防
SuperTrainingEditor.CHK_SuperTrain3_SPE=ランク3: 素早さ
SuperTrainingEditor.CHK_SuperTrain4_1=ランク4: 一難去ってまた一難!?
SuperTrainingEditor.CHK_SuperTrain5_1=ランク5: 一等商品リーフのいし!
SuperTrainingEditor.CHK_SuperTrain5_2=ランク5: 一等商品ほのおのいし!
SuperTrainingEditor.CHK_SuperTrain5_3=ランク5: 一等商品みずのいし!
SuperTrainingEditor.CHK_SuperTrain5_4=ランク5: 逃げるゴールを追え!
SuperTrainingEditor.CHK_SuperTrain6_1=ランク6: 反撃の後半戦!
SuperTrainingEditor.CHK_SuperTrain6_2=ランク6: 速攻の前半戦!
SuperTrainingEditor.CHK_SuperTrain6_3=ランク6: 縦横無尽ロングシュート!
SuperTrainingEditor.CHK_SuperTrain7_1=ランク7: 逆襲のコフキムシ!
SuperTrainingEditor.CHK_SuperTrain7_2=ランク7: 弾幕弾幕ビットバルーン!
SuperTrainingEditor.CHK_SuperTrain7_3=ランク7: サドンデス サザンドラ!
SuperTrainingEditor.CHK_SuperTrain8_1=ランク8: 最強決定!
SuperTrainingEditor.L_Bag=Last Used Bag:
SuperTrainingEditor.L_Hits=Hits Remaining:

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -575,6 +575,7 @@
<Compile Include="Util\QRCoder\QRCodeData.cs" />
<Compile Include="Util\QRCoder\QRCodeGenerator.cs" />
<Compile Include="Util\SAVUtil.cs" />
<Compile Include="Util\WinFormsTranslator.cs" />
<Compile Include="Util\WinFormsUtil.cs" />
<EmbeddedResource Include="Controls\PKM Editor\StatEditor.resx">
<DependentUpon>StatEditor.cs</DependentUpon>

View file

@ -0,0 +1,183 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using PKHeX.Core;
namespace PKHeX.WinForms
{
public static class WinFormsTranslator
{
private static readonly Dictionary<string, TranslationContext> Context = new Dictionary<string, TranslationContext>();
internal static void TranslateInterface(this Control form, string lang) => TranslateForm(form, GetContext(lang));
private static string GetTranslationFileNameInternal(string lang) => $"lang_{lang}";
private static string GetTranslationFileNameExternal(string lang) => $"lang_{lang}.txt";
private static TranslationContext GetContext(string lang)
{
if (Context.TryGetValue(lang, out var context))
return context;
var lines = GetTranslationFile(lang);
Context.Add(lang, context = new TranslationContext(lines));
return context;
}
private static void TranslateForm(Control form, TranslationContext context)
{
form.SuspendLayout();
var formname = form.Name;
// Translate Title
form.Text = context.GetTranslatedText(formname, form.Text);
var translatable = GetTranslatableControls(form);
foreach (var c in translatable)
{
if (c is Control r)
r.Text = context.GetTranslatedText($"{formname}.{r.Name}", r.Text);
else if (c is ToolStripItem t)
t.Text = context.GetTranslatedText($"{formname}.{t.Name}", t.Text);
}
form.ResumeLayout();
}
private static IEnumerable<string> GetTranslationFile(string lang)
{
var file = GetTranslationFileNameInternal(lang);
// Check to see if a the translation file exists in the same folder as the executable
string externalLangPath = GetTranslationFileNameExternal(file);
if (File.Exists(externalLangPath))
{
try { return File.ReadAllLines(externalLangPath); }
catch { /* In use? Just return the internal resource. */ }
}
return Util.GetStringList(file);
}
private static IEnumerable<object> GetTranslatableControls(Control f)
{
foreach (var z in f.GetChildrenOfType<Control>())
{
switch (z)
{
case ToolStrip menu:
foreach (var obj in GetToolStripMenuItems(menu))
yield return obj;
break;
default:
if (string.IsNullOrWhiteSpace(z.Name))
break;
if (z.ContextMenuStrip != null) // control has attached menustrip
foreach (var obj in GetToolStripMenuItems(z.ContextMenuStrip))
yield return obj;
if (z is ComboBox || z is TextBox || z is MaskedTextBox || z is LinkLabel)
break; // undesirable to modify, ignore
if (!string.IsNullOrWhiteSpace(z.Text))
yield return z;
break;
}
}
}
private static IEnumerable<T> GetChildrenOfType<T>(this Control control) where T : class
{
foreach (Control child in control.Controls)
{
var childOfT = child as T;
if (childOfT != null)
yield return childOfT;
if (!child.HasChildren) continue;
foreach (var descendant in GetChildrenOfType<T>(child))
yield return descendant;
}
}
private static IEnumerable<object> GetToolStripMenuItems(ToolStrip menu)
{
foreach (var i in menu.Items.OfType<ToolStripMenuItem>())
{
if (!string.IsNullOrWhiteSpace(i.Text))
yield return i;
foreach (var sub in GetToolsStripDropDownItems(i).Where(z => !string.IsNullOrWhiteSpace(z.Text)))
yield return sub;
}
}
private static IEnumerable<ToolStripMenuItem> GetToolsStripDropDownItems(ToolStripDropDownItem item)
{
foreach (var dropDownItem in item.DropDownItems.OfType<ToolStripMenuItem>())
{
yield return dropDownItem;
if (!dropDownItem.HasDropDownItems) continue;
foreach (ToolStripMenuItem subItem in GetToolsStripDropDownItems(dropDownItem))
yield return subItem;
}
}
public static void UpdateAll(string baseLanguage, IEnumerable<string> others)
{
var basecontext = GetContext(baseLanguage);
foreach (var lang in others)
{
var c = GetContext(lang);
c.UpdateFrom(basecontext);
}
}
public static void DumpAll()
{
var results = Context.Select(z => new {Lang = z.Key, Lines = z.Value.Write()});
foreach (var c in results)
File.WriteAllLines(GetTranslationFileNameExternal(c.Lang), c.Lines);
}
}
public class TranslationContext
{
public bool AddNew { get; set; } = true;
public bool RemoveUsedKeys { get; set; } = false;
private readonly Dictionary<string, string> Translation = new Dictionary<string, string>();
public TranslationContext(IEnumerable<string> content, char separator = '=')
{
var entries = content.Select(z => z.Split(separator)).Where(z => z.Length == 2);
foreach (var r in entries.Where(z => !Translation.ContainsKey(z[0])))
Translation.Add(r[0], r[1]);
}
public string GetTranslatedText(string val, string fallback)
{
if (RemoveUsedKeys)
Translation.Remove(val);
if (Translation.TryGetValue(val, out var translated))
return translated;
if (fallback != null && AddNew)
Translation.Add(val, fallback);
return fallback;
}
public IEnumerable<string> Write(char separator = '=')
{
return Translation.Select(z => $"{z.Key}{separator}{z.Value}").OrderBy(z => z.Contains(".")).ThenBy(z => z);
}
public void UpdateFrom(TranslationContext other)
{
bool oldAdd = AddNew;
AddNew = true;
foreach (var kvp in other.Translation)
GetTranslatedText(kvp.Key, kvp.Value);
AddNew = oldAdd;
}
public void RemoveKeys(TranslationContext other)
{
foreach (var kvp in other.Translation)
Translation.Remove(kvp.Key);
}
}
}

View file

@ -10,158 +10,7 @@ namespace PKHeX.WinForms
{
public static class WinFormsUtil
{
#region Form Translation
private static readonly string[] Splitter = {" = "};
private const char Comment = '-';
private const char FormStart = '!';
internal static void TranslateInterface(Control form, string lang)
{
if (!TryGetTranslationFile(lang, out string[] rawlist))
return; // no translation data retrieved
// Find Starting Point
int start = Array.FindIndex(rawlist, z => z.StartsWith($"{FormStart} {form.Name}"));
if (start < 0) // no form info found
return;
// Rename Window Title
string[] WindowName = rawlist[start].Split(Splitter, StringSplitOptions.None);
if (WindowName.Length > 1) // window title is specified
form.Text = WindowName[1];
// Fetch controls to rename
var stringdata = GetTranslationList(rawlist, start);
if (stringdata.Count == 0) // no translation data available
return;
// Execute Translation
form.SuspendLayout();
TranslateForm(form, stringdata);
form.ResumeLayout();
}
private static bool TryGetTranslationFile(string lang, out string[] rawlist)
{
var file = $"lang_{lang}";
// Check to see if a the translation file exists in the same folder as the executable
string externalLangPath = $"{file}.txt";
if (File.Exists(externalLangPath))
{
try
{
rawlist = File.ReadAllLines(externalLangPath);
return true;
}
catch { /* In use? Just return the internal resource. */ }
}
rawlist = Util.GetStringList(file);
// If there's no strings (or null), the translation file does not exist.
// No file => abort this function and don't translate UI.
return rawlist?.Length > 0;
}
private static List<string> GetTranslationList(IReadOnlyList<string> rawlist, int start)
{
List<string> stringdata = new List<string>();
for (int i = start + 1; i < rawlist.Count; i++)
{
var line = rawlist[i];
if (line.Length == 0) continue; // Skip Over Empty Lines
if (line[0] == Comment) continue; // Keep translating if line is a comment line
if (line[0] == FormStart) // Stop if we have reached the end of translation
break;
stringdata.Add(line); // Add the entry to process later.
}
return stringdata;
}
private static void TranslateForm(Control form, IEnumerable<string> stringdata)
{
// Only fetch the list of controls once; store in dictionary for faster translation
var controls = GetControlDictionary(form);
foreach (string str in stringdata)
{
string[] SplitString = str.Split(Splitter, StringSplitOptions.None);
if (SplitString.Length != 2)
continue;
var controlName = SplitString[0];
if (!controls.TryGetValue(controlName, out object c))
continue; // control not found
string text = SplitString[1];
if (c is Control r)
r.Text = text;
else if (c is ToolStripItem t)
t.Text = text;
}
}
private static Dictionary<string, object> GetControlDictionary(Control form)
{
return GetTranslatableControls(form)
.GroupBy(p => p.Key, StringComparer.OrdinalIgnoreCase)
.ToDictionary(g => g.Key, g => g.First().Value, StringComparer.OrdinalIgnoreCase);
}
private static IEnumerable<KeyValuePair<string, object>> GetTranslatableControls(Control f)
{
foreach (var z in f.GetChildrenOfType<Control>())
{
switch (z)
{
case ToolStrip menu:
foreach (var pair in GetToolStripMenuItems(menu))
yield return pair;
break;
default:
if (string.IsNullOrWhiteSpace(z.Name))
break;
if (z.ContextMenuStrip != null) // control has attached menustrip
foreach (var pair in GetToolStripMenuItems(z.ContextMenuStrip))
yield return pair;
if (z is ComboBox || z is TextBox || z is MaskedTextBox || z is LinkLabel)
break; // undesirable to modify, ignore
if (!string.IsNullOrWhiteSpace(z.Text))
yield return new KeyValuePair<string, object>(z.Name, z);
break;
}
}
}
private static IEnumerable<T> GetChildrenOfType<T>(this Control control) where T : class
{
foreach (Control child in control.Controls)
{
T childOfT = child as T;
if (childOfT != null)
yield return childOfT;
if (!child.HasChildren) continue;
foreach (T descendant in GetChildrenOfType<T>(child))
yield return descendant;
}
}
private static IEnumerable<KeyValuePair<string, object>> GetToolStripMenuItems(ToolStrip menu)
{
foreach (var i in menu.Items.OfType<ToolStripMenuItem>())
{
if (!string.IsNullOrWhiteSpace(i.Text))
yield return new KeyValuePair<string, object>(i.Name, i);
foreach (var sub in GetToolsStripDropDownItems(i).Where(z => !string.IsNullOrWhiteSpace(z.Text)))
yield return new KeyValuePair<string, object>(sub.Name, sub);
}
}
private static IEnumerable<ToolStripMenuItem> GetToolsStripDropDownItems(ToolStripDropDownItem item)
{
foreach (var dropDownItem in item.DropDownItems.OfType<ToolStripMenuItem>())
{
yield return dropDownItem;
if (!dropDownItem.HasDropDownItems) continue;
foreach (ToolStripMenuItem subItem in GetToolsStripDropDownItems(dropDownItem))
yield return subItem;
}
}
internal static void TranslateInterface(Control form, string lang) => form.TranslateInterface(lang);
internal static void CenterToForm(this Control child, Control parent)
{
@ -169,7 +18,6 @@ namespace PKHeX.WinForms
int y = parent.Location.Y + (parent.Height - child.Height) / 2;
child.Location = new Point(Math.Max(x, 0), Math.Max(y, 0));
}
#endregion
public static Form FirstFormOfType<T>(this Form f) => f.OwnedForms.FirstOrDefault(form => form is T);
public static Control GetUnderlyingControl(object sender) => ((sender as ToolStripItem)?.Owner as ContextMenuStrip)?.SourceControl ?? sender as PictureBox;