소스 검색

Restructure translation

Split translation file into smaller files and place them dedicated
language folders
habeebweeb 4 년 전
부모
커밋
3e7fbddf4a

+ 208 - 0
COM3D2.MeidoPhotoStudio.Plugin/Config/MeidoPhotoStudio/Translations/en/translation.bg.json

@@ -0,0 +1,208 @@
+{
+    "bgDropdown": {
+        "adultshop": "Adult Shop",
+        "aquarium": "Aquarium",
+        "aquarium_isu": "Aquarium (No Chairs)",
+        "BackStage": "Backstage",
+        "Bar": "Bar",
+        "BarLounge": "Bar Lounge",
+        "Bathroom": "Bathroom",
+        "BigSight": "Cosplay Convention",
+        "BigSight_Night": "Cosplay Convention (Night)",
+        "boutique": "Boutique",
+        "Casino": "Casino",
+        "CasinoMini": "Mini Casino",
+        "cathedral": "Cathedral",
+        "ClassRoom": "Classroom",
+        "ClassRoom_Play": "Classroom (Yotogi)",
+        "classroom_nodesk": "Classroom (No Desks)",
+        "com3d2pool": "Pool",
+        "com3d2pool_night": "Pool (Night)",
+        "DanceRoom": "Training",
+        "DressRoom_NoMirror": "Dressing Room",
+        "empireclub_elevator": "Empire Club Elevator",
+        "EmpireClub_Entrance": "Empire Club Entrance",
+        "empireclub_hallway": "Empire Club Hallway",
+        "EmpireClub_Rotary": "Empire Club Rotary",
+        "EmpireClub_Rotary_Night": "Empire Club Rotary (Night)",
+        "fantasyinn": "Fantasy Inn",
+        "fantasyinn_night": "Fantasy Inn (Night)",
+        "GameShop": "Game Shop",
+        "gelaende": "Ski Slope",
+        "gelaende_night": "Ski Slope (Night)",
+        "HeroineRoom_A": "Innocence Room",
+        "HeroineRoom_A_Night": "Innocence Room (Night)",
+        "HeroineRoom_A1": "Pure Room",
+        "HeroineRoom_A1_Night": "Pure Room (Night)",
+        "HeroineRoom_B": "Kuudere Room",
+        "HeroineRoom_B_Night": "Kuudere Room (Night)",
+        "HeroineRoom_B1": "Serious Room",
+        "HeroineRoom_B1_Night": "Serious Room (Night)",
+        "HeroineRoom_C": "Tsundere",
+        "HeroineRoom_C_Night": "Tsundere (Night)",
+        "HeroineRoom_C1": "Rindere Room",
+        "HeroineRoom_C1_Night": "Rindere Room (Night)",
+        "HeroineRoom_D": "Yandere Room",
+        "HeroineRoom_D_Night": "Yandere Room (Night)",
+        "HeroineRoom_D1": "Bookworm Room",
+        "HeroineRoom_D1_Night": "Bookworm Room (Night)",
+        "HeroineRoom_E": "Oneechan Room",
+        "HeroineRoom_E_Night": "Oneechan Room (Night)",
+        "HeroineRoom_E1": "Koakuma Room",
+        "HeroineRoom_E1_Night": "Koakuma Room (Night)",
+        "HeroineRoom_F": "Genki Room",
+        "HeroineRoom_F_Night": "Genki Room (Night)",
+        "HeroineRoom_F1": "Anesan Room",
+        "HeroineRoom_F1_Night": "Anesan Room (Night)",
+        "HeroineRoom_G": "Sadist Room",
+        "HeroineRoom_G_Night": "Sadist Room (Night)",
+        "HeroineRoom_G1": "Secretary Room",
+        "HeroineRoom_G1_Night": "Secretary Room (Night)",
+        "HeroineRoom_H1": "Imouto Room",
+        "HeroineRoom_H1_Night": "Imouto Room (Night)",
+        "HeroineRoom_J1": "Wary Room",
+        "HeroineRoom_J1_Night": "Wary Room (Night)",
+        "HeroineRoom_K1": "Ojou Room",
+        "HeroineRoom_K1_Night": "Ojou Room (Night)",
+        "HeroineRoom_L1": "Osanajimi Room",
+        "HeroineRoom_L1_Night": "Osanajimi Room (Night)",
+        "homelesstents": "Homeless Tent",
+        "HoneymoonRoom": "Honeymoon Room",
+        "izakaya": "Japanese Bar",
+        "izakaya_play": "Japanese Bar Messy",
+        "japanesehouse": "Japanese Style House",
+        "japanesehouse_night": "Japanese Style House (Night)",
+        "KaraokeRoom": "Karaoke Room",
+        "Kitchen": "Kitchen",
+        "Kitchen_Night": "Kitchen (Night)",
+        "LargeBathRoom": "Large Bathroom",
+        "LiveStage": "Live Stage",
+        "LiveStage_Side": "Live Stage (On)",
+        "LiveStage_use_dance": "Live Stage (Off)",
+        "LockerRoom": "Locker Room",
+        "luxurytoilet": "Luxury Bathroom",
+        "machikado": "Street Corner",
+        "machikado_night": "Street Corner (Night)",
+        "MaidRoom": "Maid Room",
+        "MainKitchen": "Main Kitchen",
+        "MainKitchen_LightOff": "Main Kitchen (Lights Off)",
+        "MainKitchen_Night": "Kitchen (Night)",
+        "MusicShop": "Music Shop",
+        "MyBedRoom": "Master's Room",
+        "MyBedRoom_Night": "Master's Room (Night)",
+        "MyBedRoom_NightOff": "Master's Room (Lights Off)",
+        "MyRoom": "Master's Room",
+        "MyRoom_Night": "Master's Room Night",
+        "Oheya": "Tatami Mat Room",
+        "OiranRoom": "Oiran Style Room",
+        "OpemCafe": "Open Cafe",
+        "opemcafe_aikiss": "Ai Kiss Collab Cafe",
+        "opemcafe_aikiss_night": "Ai Kiss Collab Cafe (Night)",
+        "opemcafe_cristalia": "CRYSTALiA Collab Cafe",
+        "opemcafe_cristalia_night": "CRYSTALiA Collab Cafe (Night)",
+        "opemcafe_evenicle2": "Evenicle Ⅱ Collab Cafe",
+        "opemcafe_evenicle2_night": "Evenicle Ⅱ Collab Cafe (Night)",
+        "opemcafe_inuyome2": "Wanko no Yomeiri Collab Cafe 2",
+        "opemcafe_inuyome2_night": "Wanko no Yomeiri Collab Cafe 2 (Night)",
+        "opemcafe_korolum": "Korolum Collab Cafe",
+        "opemcafe_korolum2": "Korolum Collab Cafe 2",
+        "opemcafe_korolum2_night": "Korolum Collab Cafe 2 (Night)",
+        "opemcafe_korolum_night": "Korolum Collab Cafe (Night)",
+        "opemcafe_laplacian": "Future Radio and Artificial Pigeons Collab Cafe",
+        "opemcafe_laplacian_night": "Future Radio and Artificial Pigeons Collab Cafe (Night)",
+        "opemcafe_nekow": "Nekopara Collab Cafe",
+        "opemcafe_nekow_night": "Nekopara Collab Cafe (Night)",
+        "OpemCafe_Night": "Open Cafe (Night)",
+        "opemcafe_nitro": "Minikui Mojika no Ko Collab Cafe",
+        "opemcafe_nitro_night": "Minikui Mojika no Ko Collab Cafe (Night)",
+        "opemcafe_pencil": "Mary-san Collab Cafe",
+        "opemcafe_pencil_night": "Mary-san Collab Cafe (Night)",
+        "opemcafe_rance10": "RanceX Collab Cafe",
+        "opemcafe_rance10_night": "RanceX Collab Cafe (Night)",
+        "opemcafe_raspberry": "Raspberry Cube Collab Cafe",
+        "opemcafe_raspberry_night": "Raspberry Cube Collab Cafe (Night)",
+        "opemcafe_riddlejoker": "Riddle Joker Collab Cafe",
+        "opemcafe_riddlejoker_night": "Riddle Joker Collab Cafe (Night)",
+        "opemcafe_sagapla": "Kin'iro Loveriche GT Collab Cafe",
+        "opemcafe_sagapla_night": "Kin'iro Loveriche GT Collab Cafe (Night)",
+        "opemcafe_wanko": "Wanko no Yomeiri Collab Cafe",
+        "opemcafe_wanko_night": "Wanko no Yomeiri Collab Cafe (Night)",
+        "OutletPark": "Outlet Park",
+        "park": "Park (No Food Trucks)",
+        "park_car": "Park",
+        "park_car_night": "Park (Night)",
+        "park_night": "Park (Night No Food Trucks)",
+        "Penthouse": "Penthouse",
+        "PlayRoom": "Playroom",
+        "PlayRoom2": "Playroom 2",
+        "poledancestage": "Pole Dance Stage",
+        "Pool": "Pool",
+        "PrivateRoom": "Private Room",
+        "privateroom2": "Private Room 2",
+        "privateroom2_night": "Private Room 2 (Night)",
+        "privateroom2_nightoff": "Private Room 2 (Lights Off)",
+        "PrivateRoom_Night": "Private Room (Night)",
+        "Restaurant": "Restaurant",
+        "Restaurant_Night": "Restaurant (Night)",
+        "Rotenburo": "Open-Air Bath",
+        "Rotenburo_Night": "Open-Air Bath (Night)",
+        "Salon": "Salon",
+        "Salon_Day": "Salon Day",
+        "Salon_Entrance": "Salon Entrance",
+        "Salon_Garden": "Courtyard",
+        "Sea": "Beach",
+        "seacafe": "Beach Cafe",
+        "seacafe_night": "Beach Cafe (Night)",
+        "Sea_Night": "Beach (Night)",
+        "Sea_VR": "Beach (VR)",
+        "Sea_VR_Night": "Beach (VR Night)",
+        "ShinShitsumu": "Office",
+        "ShinShitsumu_ChairRot": "Office (Chair)",
+        "ShinShitsumu_Night": "Office (Night)",
+        "Shitsumu": "Office",
+        "Shitsumu_ChairRot": "Office 2 (Chair)",
+        "Shitsumu_ChairRot_Night": "Office 2 (Chair Night)",
+        "Shitsumu_Night": "Office (Night)",
+        "ShoppingMall": "Shopping Mall",
+        "ShoppingMall_Night": "Shopping Mall (Night)",
+        "shrine": "Shrine",
+        "shrine_night": "Shrine (Night)",
+        "Shukuhakubeya_BedRoom": "Bedroom",
+        "Shukuhakubeya_BedRoom_Night": "Bedroom (Night)",
+        "Shukuhakubeya_Living": "Living Room",
+        "Shukuhakubeya_Living_Night": "Living Room (Night)",
+        "Shukuhakubeya_Other_BedRoom": "Bedroom 2",
+        "Shukuhakubeya_Toilet": "Bathroom",
+        "Shukuhakubeya_Toilet_Night": "Bathroom (Night)",
+        "Shukuhakubeya_WashRoom": "Washroom",
+        "Shukuhakubeya_WashRoom_Night": "Washroom (Night)",
+        "SMClub": "SM Club",
+        "SMRoom": "SM Room",
+        "SMRoom2": "Basement",
+        "Soap": "Soapland",
+        "Spa": "Spa",
+        "Spa_Night": "Spa (Night)",
+        "springgarden": "Spring Garden (No Stalls)",
+        "springgarden_night": "Spring Garden (Night No Stalls)",
+        "springgarden_yatai": "Spring Garden",
+        "springgarden_yatai_night": "Spring Garden (Night)",
+        "Syosai": "Study",
+        "Syosai_Night": "Study (Night)",
+        "Theater": "Theater",
+        "Theater_LightOff": "Theater (Night)",
+        "Toilet": "Toilet",
+        "Town": "Town",
+        "Train": "Train",
+        "train_notsurikawa": "Train (No Handles)",
+        "Villa": "Villa 1F",
+        "Villa_BedRoom": "Villa 2f",
+        "Villa_BedRoom_Night": "Villa 2f (Night)",
+        "villa_bedroom_door": "Villa 2f (Door)",
+        "Villa_Farm": "Garden",
+        "Villa_Farm_Night": "Garden (Night)",
+        "Villa_Night": "Villa 1F (Night)",
+        "Yashiki": "Inn (Night)",
+        "Yashiki_Day": "Inn",
+        "Yashiki_Pillow": "Inn (Night with Pillow)"
+    },
+}

+ 116 - 0
COM3D2.MeidoPhotoStudio.Plugin/Config/MeidoPhotoStudio/Translations/en/translation.face.json

@@ -0,0 +1,116 @@
+{
+    "faceBlendPresetsDropdown": {
+        "通常": "General: Normal",
+        "微笑み": "General: Half Smile",
+        "笑顔": "General: Big Smile",
+        "にっこり": "General: Sweet Smile",
+        "優しさ": "General: Gentle",
+        "発情": "General: Lust",
+        "ジト目": "General: Glare",
+        "閉じ目": "General: Eyes Closed",
+        "思案伏せ目": "General: Consideration",
+        "ドヤ顔": "General: Proud",
+        "引きつり笑顔": "General: Awkward Smile",
+        "苦笑い": "General: Bitter Smile",
+        "困った": "General: Distressed",
+        "疑問": "General: Curious",
+        "ぷんすか": "General: Upset",
+        "むー": "General: Mmmm..",
+        "泣き": "General: Cry",
+        "拗ね": "General: Sulk",
+        "照れ": "General: Bashful",
+        "悲しみ2": "General: Sad",
+        "きょとん": "General: Confused",
+        "びっくり": "General: Surprised",
+        "少し怒り": "General: Kinda Angry",
+        "怒り": "General: Angry",
+        "照れ叫び": "General: Shout",
+        "誘惑": "General: Temptation",
+        "接吻": "General: Kiss",
+        "居眠り安眠": "General: Sleep",
+        "まぶたギュ": "General: Eyes Shut",
+        "目を見開いて": "General: Eyes Wide Open",
+        "痛みで目を見開いて": "General: Eyes Open Pain",
+        "恥ずかしい": "General: Embarrassed",
+        "ためいき": "General: Sigh",
+        "目口閉じ": "General: Eyes and Mouth Closed",
+        "ウインク照れ": "General: Shy Wink",
+        "ダンス目つむり": "Dance: Eyes and Mouth Closed",
+        "ダンスあくび": "Dance: Yawn",
+        "ダンスびっくり": "Dance: Surprised",
+        "ダンス微笑み": "Dance: Half Smile",
+        "ダンス目あけ": "Dance: Eyes Open",
+        "ダンス目とじ": "Dance: Eyes Closed",
+        "ダンス誘惑": "Dance: Temptation",
+        "ダンス困り顔": "Dance: Troubled",
+        "ダンスウインク": "Dance: Wink",
+        "ダンス真剣": "Dance: Serious",
+        "ダンス憂い": "Dance: Sorrow",
+        "ダンスジト目": "Dance: Glare",
+        "ダンスキス": "Dance: Kiss",
+        "エロ通常1": "Ero: General 1",
+        "エロ通常2": "Ero: General 2",
+        "エロ通常3": "Ero: General 3",
+        "エロ興奮0": "Ero: Excitement 1",
+        "エロ興奮1": "Ero: Excitement 2",
+        "エロ興奮2": "Ero: Excitement 3",
+        "エロ興奮3": "Ero: Excitement 4",
+        "エロ好感1": "Ero: Favourable 1",
+        "エロ好感2": "Ero: Favourable 2",
+        "エロ好感3": "Ero: Favourable 3",
+        "エロ期待": "Ero: Anticipation",
+        "エロ羞恥1": "Ero: Bashful 1",
+        "エロ羞恥2": "Ero: Bashful 2",
+        "エロ羞恥3": "Ero: Bashful 3",
+        "エロ緊張": "Ero: Nervous",
+        "エロ我慢1": "Ero: Endurance 1",
+        "エロ我慢2": "Ero: Endurance 2",
+        "エロ我慢3": "Ero: Endurance 3",
+        "エロ嫌悪1": "Ero: Hate",
+        "エロ痛み1": "Ero: Pain 1",
+        "エロ痛み2": "Ero: Pain 2",
+        "エロ痛み3": "Ero: Pain 3",
+        "エロ痛み我慢": "Ero: Enduring 1",
+        "エロ痛み我慢2": "Ero: Enduring 2",
+        "エロ痛み我慢3": "Ero: Enduring 3",
+        "エロ怯え": "Ero: Afraid",
+        "エロメソ泣き": "Ero: Lewd Cry",
+        "あーん": "Ero: Ahhnn",
+        "エロ舌責": "Ero: Tongue Out",
+        "エロ舌責快楽": "Ero: Tongue Out Pleasure",
+        "エロ舌責嫌悪": "Ero: Tongue Out Hate",
+        "エロ舐め通常": "Ero: Lick Normal 1",
+        "エロ舐め通常2": "Ero: Lick Normal 2",
+        "エロ舐め愛情": "Ero: Lick Love 1",
+        "エロ舐め愛情2": "Ero: Lick Love 2",
+        "エロ舐め快楽": "Ero: Lick Pleasure 1",
+        "エロ舐め快楽2": "Ero: Lick Pleasure 2",
+        "エロ舐め嫌悪": "Ero: Lick Hate 1",
+        "エロ舐め嫌悪2": "Ero: Lick Hate 2",
+        "エロフェラ通常": "Ero: Fellatio Normal",
+        "エロフェラ愛情": "Ero: Fellatio Love",
+        "エロフェラ快楽": "Ero: Fellatio Pleasure",
+        "エロフェラ嫌悪": "Ero: Fellatio Hate",
+        "閉じ舐め通常": "Ero: Lick Normal 1 (close)",
+        "閉じ舐め通常2": "Ero: Lick Normal 2 (close)",
+        "閉じ舐め愛情": "Ero: Lick Love 1 (close)",
+        "閉じ舐め愛情2": "Ero: Lick Love 2 (close)",
+        "閉じ舐め快楽": "Ero:  Lick Pleasure 1 (close)",
+        "閉じ舐め快楽2": "Ero: Lick Pleasure 2 (close)",
+        "閉じ舐め嫌悪": "Ero: Lick Hate 1 (close)",
+        "閉じ舐め嫌悪2": "Ero: Lick Hate 2 (close)",
+        "閉じフェラ通常": "Ero: Fellatio Normal (close)",
+        "閉じフェラ愛情": "Ero: Fellatio Love (close)",
+        "閉じフェラ快楽": "Ero: Fellatio Pleasure (close)",
+        "閉じフェラ嫌悪": "Ero: Fellatio Hate (close)",
+        "通常射精後1": "Ero: After Ejaculation 1",
+        "通常射精後2": "Ero: After Ejaculation 2",
+        "絶頂射精後1": "Ero: After Ejaculation Orgasm 1",
+        "絶頂射精後2": "Ero: After Ejaculation Orgasm 2",
+        "興奮射精後1": "Ero: After Ejaculation Aroused 1",
+        "興奮射精後2": "Ero: After Ejaculation Aroused 2",
+        "余韻弱": "Ero: Afterglow",
+        "エロ絶頂": "Ero: Orgasm",
+        "エロ放心": "Ero: Absent Minded"
+    },
+}

+ 0 - 603
COM3D2.MeidoPhotoStudio.Plugin/Config/MeidoPhotoStudio/translations.en.json

@@ -1,498 +1,4 @@
 {
-    "tabs": {
-        "call": "Call",
-        "pose": "Pose",
-        "face": "Face",
-        "bg": "BG",
-        "bg2": "BG2"
-    },
-    "maidCallWindow": {
-        "okButton": "OK",
-        "clearButton": "Clear",
-        "callButton": "Call"
-    },
-    "placementDropdown": {
-        "normal": "Normal",
-        "horizontalRow": "Horizontal Row",
-        "diagonal": "Diagonal",
-        "circleOut": "Circle (outer)",
-        "circleIn": "Circle (Inner)",
-        "fan": "Fan",
-        "v": "V",
-        "^": "^",
-        "m": "M",
-        "w": "W"
-    },
-    "maidPoseWindow": {
-        "ikToggle": "IK",
-        "releaseToggle": "Release",
-        "boneToggle": "Bone",
-        "flipToggle": "Flip IK",
-        "fixSkirtToggle": "Fix Skirt"
-    },
-    "poseGroupDropdown": {
-        "normal": "Normal",
-        "standing": "Standing",
-        "halfStand": "Half-Standing",
-        "kneeling": "Kneeling",
-        "sitting": "Sitting",
-        "onAllFours": "On All Fours",
-        "sittingFloor": "Sitting (Floor)",
-        "sittingChair": "Sitting (Chair)",
-        "sittingSofa": "Sitting (Sofa)",
-        "walking": "Walking",
-        "other": "Other",
-        "danceDokiDoki": "Doki Doki ☆ Fallin' Love",
-        "danceEntranceToYou": "Entrance To You",
-        "danceScarletLeap": "Scarlet Leap",
-        "danceRhythmix": "Rhythmix to You",
-        "dance": "Dance",
-        "danceMC": "Dance (MC)",
-        "restraint": "Restraint",
-        "ero": "Ero",
-        "normal2": "Normal 2",
-        "ero2": "Ero 2"
-    },
-    "poseSave": {
-        "saveToggle": "Save Pose",
-        "saveButton": "Add",
-        "deleteButton": "D"
-    },
-    "freeLook": {
-        "freeLookToggle": "F-Look",
-        "x": "Look X",
-        "y": "Look Y"
-    },
-    "clothing": {
-        "accHat": "Hat",
-        "headset": "Headdress",
-        "wear": "Top",
-        "skirt": "Bottoms",
-        "onepiece": "One-Piece",
-        "mizugi": "Bathing Suit",
-        "glove": "Gloves",
-        "shoes": "Shoes",
-        "stkg": "Socks",
-        "bra": "Bra",
-        "panz": "Panties",
-        "megane": "Eyewear",
-        "accHead": "Eye Mask",
-        "accSenaka": "Back",
-        "accShippo": "Tail",
-        "accKami_1_": "Pin 1",
-        "accKami_2_": "Pin 2",
-        "accKami_3_": "Pin 3",
-        "accKamiSubL": "Ribbon L",
-        "accKamiSubR": "Ribbon R",
-        "accMiMiL": "Ear L",
-        "accMiMiR": "Ear R",
-        "accHana": "Nose",
-        "accKubiwa": "Choker",
-        "accKubi": "Necklace",
-        "accNipL": "Nip L",
-        "accNipR": "Nip R",
-        "accUde": "Arms",
-        "accHeso": "Navel",
-        "accAshi": "Ankles",
-        "accXXX": "Genitals",
-        "body": "Body",
-        "headwear": "Headwear",
-        "curlingFront": "Curl Front",
-        "curlingBack": "Curl Rear",
-        "shiftPanties": "Shift",
-        "detail": "Detailed Clothing"
-    },
-    "hands": {
-        "rightHand": "R Hand",
-        "leftHand": "L Hand"
-    },
-    "copyIK": {
-        "copyLabel": "copy",
-        "copyButton": "OK"
-    },
-    "voiceLines": {
-        "speak": "Speak",
-        "speakEro": "H Lines"
-    },
-    "maidFaceWindow": {
-        "faceLock": "L"
-    },
-    "faceBlendPresetsDropdown": {
-        "通常": "General: Normal",
-        "微笑み": "General: Half Smile",
-        "笑顔": "General: Big Smile",
-        "にっこり": "General: Sweet Smile",
-        "優しさ": "General: Gentle",
-        "発情": "General: Lust",
-        "ジト目": "General: Glare",
-        "閉じ目": "General: Eyes Closed",
-        "思案伏せ目": "General: Consideration",
-        "ドヤ顔": "General: Proud",
-        "引きつり笑顔": "General: Awkward Smile",
-        "苦笑い": "General: Bitter Smile",
-        "困った": "General: Distressed",
-        "疑問": "General: Curious",
-        "ぷんすか": "General: Upset",
-        "むー": "General: Mmmm..",
-        "泣き": "General: Cry",
-        "拗ね": "General: Sulk",
-        "照れ": "General: Bashful",
-        "悲しみ2": "General: Sad",
-        "きょとん": "General: Confused",
-        "びっくり": "General: Surprised",
-        "少し怒り": "General: Kinda Angry",
-        "怒り": "General: Angry",
-        "照れ叫び": "General: Shout",
-        "誘惑": "General: Temptation",
-        "接吻": "General: Kiss",
-        "居眠り安眠": "General: Sleep",
-        "まぶたギュ": "General: Eyes Shut",
-        "目を見開いて": "General: Eyes Wide Open",
-        "痛みで目を見開いて": "General: Eyes Open Pain",
-        "恥ずかしい": "General: Embarrassed",
-        "ためいき": "General: Sigh",
-        "目口閉じ": "General: Eyes and Mouth Closed",
-        "ウインク照れ": "General: Shy Wink",
-        "ダンス目つむり": "Dance: Eyes and Mouth Closed",
-        "ダンスあくび": "Dance: Yawn",
-        "ダンスびっくり": "Dance: Surprised",
-        "ダンス微笑み": "Dance: Half Smile",
-        "ダンス目あけ": "Dance: Eyes Open",
-        "ダンス目とじ": "Dance: Eyes Closed",
-        "ダンス誘惑": "Dance: Temptation",
-        "ダンス困り顔": "Dance: Troubled",
-        "ダンスウインク": "Dance: Wink",
-        "ダンス真剣": "Dance: Serious",
-        "ダンス憂い": "Dance: Sorrow",
-        "ダンスジト目": "Dance: Glare",
-        "ダンスキス": "Dance: Kiss",
-        "エロ通常1": "Ero: General 1",
-        "エロ通常2": "Ero: General 2",
-        "エロ通常3": "Ero: General 3",
-        "エロ興奮0": "Ero: Excitement 1",
-        "エロ興奮1": "Ero: Excitement 2",
-        "エロ興奮2": "Ero: Excitement 3",
-        "エロ興奮3": "Ero: Excitement 4",
-        "エロ好感1": "Ero: Favourable 1",
-        "エロ好感2": "Ero: Favourable 2",
-        "エロ好感3": "Ero: Favourable 3",
-        "エロ期待": "Ero: Anticipation",
-        "エロ羞恥1": "Ero: Bashful 1",
-        "エロ羞恥2": "Ero: Bashful 2",
-        "エロ羞恥3": "Ero: Bashful 3",
-        "エロ緊張": "Ero: Nervous",
-        "エロ我慢1": "Ero: Endurance 1",
-        "エロ我慢2": "Ero: Endurance 2",
-        "エロ我慢3": "Ero: Endurance 3",
-        "エロ嫌悪1": "Ero: Hate",
-        "エロ痛み1": "Ero: Pain 1",
-        "エロ痛み2": "Ero: Pain 2",
-        "エロ痛み3": "Ero: Pain 3",
-        "エロ痛み我慢": "Ero: Enduring 1",
-        "エロ痛み我慢2": "Ero: Enduring 2",
-        "エロ痛み我慢3": "Ero: Enduring 3",
-        "エロ怯え": "Ero: Afraid",
-        "エロメソ泣き": "Ero: Lewd Cry",
-        "あーん": "Ero: Ahhnn",
-        "エロ舌責": "Ero: Tongue Out",
-        "エロ舌責快楽": "Ero: Tongue Out Pleasure",
-        "エロ舌責嫌悪": "Ero: Tongue Out Hate",
-        "エロ舐め通常": "Ero: Lick Normal 1",
-        "エロ舐め通常2": "Ero: Lick Normal 2",
-        "エロ舐め愛情": "Ero: Lick Love 1",
-        "エロ舐め愛情2": "Ero: Lick Love 2",
-        "エロ舐め快楽": "Ero: Lick Pleasure 1",
-        "エロ舐め快楽2": "Ero: Lick Pleasure 2",
-        "エロ舐め嫌悪": "Ero: Lick Hate 1",
-        "エロ舐め嫌悪2": "Ero: Lick Hate 2",
-        "エロフェラ通常": "Ero: Fellatio Normal",
-        "エロフェラ愛情": "Ero: Fellatio Love",
-        "エロフェラ快楽": "Ero: Fellatio Pleasure",
-        "エロフェラ嫌悪": "Ero: Fellatio Hate",
-        "閉じ舐め通常": "Ero: Lick Normal 1 (close)",
-        "閉じ舐め通常2": "Ero: Lick Normal 2 (close)",
-        "閉じ舐め愛情": "Ero: Lick Love 1 (close)",
-        "閉じ舐め愛情2": "Ero: Lick Love 2 (close)",
-        "閉じ舐め快楽": "Ero:  Lick Pleasure 1 (close)",
-        "閉じ舐め快楽2": "Ero: Lick Pleasure 2 (close)",
-        "閉じ舐め嫌悪": "Ero: Lick Hate 1 (close)",
-        "閉じ舐め嫌悪2": "Ero: Lick Hate 2 (close)",
-        "閉じフェラ通常": "Ero: Fellatio Normal (close)",
-        "閉じフェラ愛情": "Ero: Fellatio Love (close)",
-        "閉じフェラ快楽": "Ero: Fellatio Pleasure (close)",
-        "閉じフェラ嫌悪": "Ero: Fellatio Hate (close)",
-        "通常射精後1": "Ero: After Ejaculation 1",
-        "通常射精後2": "Ero: After Ejaculation 2",
-        "絶頂射精後1": "Ero: After Ejaculation Orgasm 1",
-        "絶頂射精後2": "Ero: After Ejaculation Orgasm 2",
-        "興奮射精後1": "Ero: After Ejaculation Aroused 1",
-        "興奮射精後2": "Ero: After Ejaculation Aroused 2",
-        "余韻弱": "Ero: Afterglow",
-        "エロ絶頂": "Ero: Orgasm",
-        "エロ放心": "Ero: Absent Minded"
-    },
-    "faceBlendValues": {
-        "eyeclose": "Eye Shut",
-        "eyeclose2": "Eye Smile",
-        "eyeclose3": "Glare",
-        "eyebig": "Eyes Widen",
-        "eyeclose6": "Wink Smile",
-        "eyeclose5": "Wink Shut",
-        "hitomih": "Highlight",
-        "hitomis": "Pupil Size",
-        "mayuha": "Brows Angle",
-        "mayuw": "Brows Sad",
-        "mayuup": "Brows Up",
-        "mayuv": "Brows Angry 1",
-        "mayuvhalf": "Brows Angry 2",
-        "moutha": "Mouth Open 1",
-        "mouths": "Mouth Open 2",
-        "mouthc": "Mouth Narrow",
-        "mouthi": "Mouth Widen",
-        "mouthup": "Smile",
-        "mouthdw": "Frown",
-        "mouthhe": "Pout",
-        "mouthuphalf": "Grin",
-        "tangout": "Tongue Out",
-        "tangup": "Tongue Up",
-        "tangopen": "Tongue Base",
-        "hoho2": "Blush",
-        "shock": "Shade",
-        "nosefook": "Nose Up",
-        "namida": "Tears",
-        "yodare": "Drool",
-        "toothoff": "Teeth",
-        "tear1": "Cry 1",
-        "tear2": "Cry 2",
-        "tear3": "Cry 3",
-        "hohos": "Blush 1",
-        "hoho": "Blush 2",
-        "hohol": "Blush 3"
-    },
-    "faceSave": {
-        "saveButton": "Add",
-        "deleteButton": "D"
-    },
-    "backgroundWindow": {
-        "saveLoadButton": "Save\nLoad",
-        "movementCubeLabel": "Movement Cube",
-        "lightLabel": "Light",
-        "red": "Red",
-        "green": "Green",
-        "blue": "Blue"
-    },
-    "bgDropdown": {
-        "adultshop": "Adult Shop",
-        "aquarium": "Aquarium",
-        "aquarium_isu": "Aquarium (No Chairs)",
-        "BackStage": "Backstage",
-        "Bar": "Bar",
-        "BarLounge": "Bar Lounge",
-        "Bathroom": "Bathroom",
-        "BigSight": "Cosplay Convention",
-        "BigSight_Night": "Cosplay Convention (Night)",
-        "boutique": "Boutique",
-        "Casino": "Casino",
-        "CasinoMini": "Mini Casino",
-        "cathedral": "Cathedral",
-        "ClassRoom": "Classroom",
-        "ClassRoom_Play": "Classroom (Yotogi)",
-        "classroom_nodesk": "Classroom (No Desks)",
-        "com3d2pool": "Pool",
-        "com3d2pool_night": "Pool (Night)",
-        "DanceRoom": "Training",
-        "DressRoom_NoMirror": "Dressing Room",
-        "empireclub_elevator": "Empire Club Elevator",
-        "EmpireClub_Entrance": "Empire Club Entrance",
-        "empireclub_hallway": "Empire Club Hallway",
-        "EmpireClub_Rotary": "Empire Club Rotary",
-        "EmpireClub_Rotary_Night": "Empire Club Rotary (Night)",
-        "fantasyinn": "Fantasy Inn",
-        "fantasyinn_night": "Fantasy Inn (Night)",
-        "GameShop": "Game Shop",
-        "gelaende": "Ski Slope",
-        "gelaende_night": "Ski Slope (Night)",
-        "HeroineRoom_A": "Innocence Room",
-        "HeroineRoom_A_Night": "Innocence Room (Night)",
-        "HeroineRoom_A1": "Pure Room",
-        "HeroineRoom_A1_Night": "Pure Room (Night)",
-        "HeroineRoom_B": "Kuudere Room",
-        "HeroineRoom_B_Night": "Kuudere Room (Night)",
-        "HeroineRoom_B1": "Serious Room",
-        "HeroineRoom_B1_Night": "Serious Room (Night)",
-        "HeroineRoom_C": "Tsundere",
-        "HeroineRoom_C_Night": "Tsundere (Night)",
-        "HeroineRoom_C1": "Rindere Room",
-        "HeroineRoom_C1_Night": "Rindere Room (Night)",
-        "HeroineRoom_D": "Yandere Room",
-        "HeroineRoom_D_Night": "Yandere Room (Night)",
-        "HeroineRoom_D1": "Bookworm Room",
-        "HeroineRoom_D1_Night": "Bookworm Room (Night)",
-        "HeroineRoom_E": "Oneechan Room",
-        "HeroineRoom_E_Night": "Oneechan Room (Night)",
-        "HeroineRoom_E1": "Koakuma Room",
-        "HeroineRoom_E1_Night": "Koakuma Room (Night)",
-        "HeroineRoom_F": "Genki Room",
-        "HeroineRoom_F_Night": "Genki Room (Night)",
-        "HeroineRoom_F1": "Anesan Room",
-        "HeroineRoom_F1_Night": "Anesan Room (Night)",
-        "HeroineRoom_G": "Sadist Room",
-        "HeroineRoom_G_Night": "Sadist Room (Night)",
-        "HeroineRoom_G1": "Secretary Room",
-        "HeroineRoom_G1_Night": "Secretary Room (Night)",
-        "HeroineRoom_H1": "Imouto Room",
-        "HeroineRoom_H1_Night": "Imouto Room (Night)",
-        "HeroineRoom_J1": "Wary Room",
-        "HeroineRoom_J1_Night": "Wary Room (Night)",
-        "HeroineRoom_K1": "Ojou Room",
-        "HeroineRoom_K1_Night": "Ojou Room (Night)",
-        "HeroineRoom_L1": "Osanajimi Room",
-        "HeroineRoom_L1_Night": "Osanajimi Room (Night)",
-        "homelesstents": "Homeless Tent",
-        "HoneymoonRoom": "Honeymoon Room",
-        "izakaya": "Japanese Bar",
-        "izakaya_play": "Japanese Bar Messy",
-        "japanesehouse": "Japanese Style House",
-        "japanesehouse_night": "Japanese Style House (Night)",
-        "KaraokeRoom": "Karaoke Room",
-        "Kitchen": "Kitchen",
-        "Kitchen_Night": "Kitchen (Night)",
-        "LargeBathRoom": "Large Bathroom",
-        "LiveStage": "Live Stage",
-        "LiveStage_Side": "Live Stage (On)",
-        "LiveStage_use_dance": "Live Stage (Off)",
-        "LockerRoom": "Locker Room",
-        "luxurytoilet": "Luxury Bathroom",
-        "machikado": "Street Corner",
-        "machikado_night": "Street Corner (Night)",
-        "MaidRoom": "Maid Room",
-        "MainKitchen": "Main Kitchen",
-        "MainKitchen_LightOff": "Main Kitchen (Lights Off)",
-        "MainKitchen_Night": "Kitchen (Night)",
-        "MusicShop": "Music Shop",
-        "MyBedRoom": "Master's Room",
-        "MyBedRoom_Night": "Master's Room (Night)",
-        "MyBedRoom_NightOff": "Master's Room (Lights Off)",
-        "MyRoom": "Master's Room",
-        "MyRoom_Night": "Master's Room Night",
-        "Oheya": "Tatami Mat Room",
-        "OiranRoom": "Oiran Style Room",
-        "OpemCafe": "Open Cafe",
-        "opemcafe_aikiss": "Ai Kiss Collab Cafe",
-        "opemcafe_aikiss_night": "Ai Kiss Collab Cafe (Night)",
-        "opemcafe_cristalia": "CRYSTALiA Collab Cafe",
-        "opemcafe_cristalia_night": "CRYSTALiA Collab Cafe (Night)",
-        "opemcafe_evenicle2": "Evenicle Ⅱ Collab Cafe",
-        "opemcafe_evenicle2_night": "Evenicle Ⅱ Collab Cafe (Night)",
-        "opemcafe_inuyome2": "Wanko no Yomeiri Collab Cafe 2",
-        "opemcafe_inuyome2_night": "Wanko no Yomeiri Collab Cafe 2 (Night)",
-        "opemcafe_korolum": "Korolum Collab Cafe",
-        "opemcafe_korolum2": "Korolum Collab Cafe 2",
-        "opemcafe_korolum2_night": "Korolum Collab Cafe 2 (Night)",
-        "opemcafe_korolum_night": "Korolum Collab Cafe (Night)",
-        "opemcafe_laplacian": "Future Radio and Artificial Pigeons Collab Cafe",
-        "opemcafe_laplacian_night": "Future Radio and Artificial Pigeons Collab Cafe (Night)",
-        "opemcafe_nekow": "Nekopara Collab Cafe",
-        "opemcafe_nekow_night": "Nekopara Collab Cafe (Night)",
-        "OpemCafe_Night": "Open Cafe (Night)",
-        "opemcafe_nitro": "Minikui Mojika no Ko Collab Cafe",
-        "opemcafe_nitro_night": "Minikui Mojika no Ko Collab Cafe (Night)",
-        "opemcafe_pencil": "Mary-san Collab Cafe",
-        "opemcafe_pencil_night": "Mary-san Collab Cafe (Night)",
-        "opemcafe_rance10": "RanceX Collab Cafe",
-        "opemcafe_rance10_night": "RanceX Collab Cafe (Night)",
-        "opemcafe_raspberry": "Raspberry Cube Collab Cafe",
-        "opemcafe_raspberry_night": "Raspberry Cube Collab Cafe (Night)",
-        "opemcafe_riddlejoker": "Riddle Joker Collab Cafe",
-        "opemcafe_riddlejoker_night": "Riddle Joker Collab Cafe (Night)",
-        "opemcafe_sagapla": "Kin'iro Loveriche GT Collab Cafe",
-        "opemcafe_sagapla_night": "Kin'iro Loveriche GT Collab Cafe (Night)",
-        "opemcafe_wanko": "Wanko no Yomeiri Collab Cafe",
-        "opemcafe_wanko_night": "Wanko no Yomeiri Collab Cafe (Night)",
-        "OutletPark": "Outlet Park",
-        "park": "Park (No Food Trucks)",
-        "park_car": "Park",
-        "park_car_night": "Park (Night)",
-        "park_night": "Park (Night No Food Trucks)",
-        "Penthouse": "Penthouse",
-        "PlayRoom": "Playroom",
-        "PlayRoom2": "Playroom 2",
-        "poledancestage": "Pole Dance Stage",
-        "Pool": "Pool",
-        "PrivateRoom": "Private Room",
-        "privateroom2": "Private Room 2",
-        "privateroom2_night": "Private Room 2 (Night)",
-        "privateroom2_nightoff": "Private Room 2 (Lights Off)",
-        "PrivateRoom_Night": "Private Room (Night)",
-        "Restaurant": "Restaurant",
-        "Restaurant_Night": "Restaurant (Night)",
-        "Rotenburo": "Open-Air Bath",
-        "Rotenburo_Night": "Open-Air Bath (Night)",
-        "Salon": "Salon",
-        "Salon_Day": "Salon Day",
-        "Salon_Entrance": "Salon Entrance",
-        "Salon_Garden": "Courtyard",
-        "Sea": "Beach",
-        "seacafe": "Beach Cafe",
-        "seacafe_night": "Beach Cafe (Night)",
-        "Sea_Night": "Beach (Night)",
-        "Sea_VR": "Beach (VR)",
-        "Sea_VR_Night": "Beach (VR Night)",
-        "ShinShitsumu": "Office",
-        "ShinShitsumu_ChairRot": "Office (Chair)",
-        "ShinShitsumu_Night": "Office (Night)",
-        "Shitsumu": "Office",
-        "Shitsumu_ChairRot": "Office 2 (Chair)",
-        "Shitsumu_ChairRot_Night": "Office 2 (Chair Night)",
-        "Shitsumu_Night": "Office (Night)",
-        "ShoppingMall": "Shopping Mall",
-        "ShoppingMall_Night": "Shopping Mall (Night)",
-        "shrine": "Shrine",
-        "shrine_night": "Shrine (Night)",
-        "Shukuhakubeya_BedRoom": "Bedroom",
-        "Shukuhakubeya_BedRoom_Night": "Bedroom (Night)",
-        "Shukuhakubeya_Living": "Living Room",
-        "Shukuhakubeya_Living_Night": "Living Room (Night)",
-        "Shukuhakubeya_Other_BedRoom": "Bedroom 2",
-        "Shukuhakubeya_Toilet": "Bathroom",
-        "Shukuhakubeya_Toilet_Night": "Bathroom (Night)",
-        "Shukuhakubeya_WashRoom": "Washroom",
-        "Shukuhakubeya_WashRoom_Night": "Washroom (Night)",
-        "SMClub": "SM Club",
-        "SMRoom": "SM Room",
-        "SMRoom2": "Basement",
-        "Soap": "Soapland",
-        "Spa": "Spa",
-        "Spa_Night": "Spa (Night)",
-        "springgarden": "Spring Garden (No Stalls)",
-        "springgarden_night": "Spring Garden (Night No Stalls)",
-        "springgarden_yatai": "Spring Garden",
-        "springgarden_yatai_night": "Spring Garden (Night)",
-        "Syosai": "Study",
-        "Syosai_Night": "Study (Night)",
-        "Theater": "Theater",
-        "Theater_LightOff": "Theater (Night)",
-        "Toilet": "Toilet",
-        "Town": "Town",
-        "Train": "Train",
-        "train_notsurikawa": "Train (No Handles)",
-        "Villa": "Villa 1F",
-        "Villa_BedRoom": "Villa 2f",
-        "Villa_BedRoom_Night": "Villa 2f (Night)",
-        "villa_bedroom_door": "Villa 2f (Door)",
-        "Villa_Farm": "Garden",
-        "Villa_Farm_Night": "Garden (Night)",
-        "Villa_Night": "Villa 1F (Night)",
-        "Yashiki": "Inn (Night)",
-        "Yashiki_Day": "Inn",
-        "Yashiki_Pillow": "Inn (Night with Pillow)"
-    },
-    "props": {
-        "props1Label": "Props 1",
-        "props2Label": "Props 2",
-        "props1AddButton": "Add",
-        "props2AddButton": "Add"
-    },
     "props1Dropdown": {
         "photo_ver/Odogu_HeroineChair_cooldere_photo_ver": "Kuudere Chair",
         "photo_ver/Odogu_HeroineChair_junshin_photo_ver": "Junshin Chair",
@@ -1064,113 +570,4 @@
         "p_yuge_large_photo_ver": "Steam (Onsen Large)",
         "p_smoke_dance_photo_ver": "Smoke (Dance)"
     },
-    "movementCube": {
-        "label": "Movement Cube",
-        "props": "Props",
-        "small": "Small",
-        "maid": "Maid",
-        "bg": "BG"
-    },
-    "lights": {
-        "x": "Light X",
-        "y": "Light Y",
-        "intensity": "Brightness",
-        "range": "Range",
-        "spot": "Spot Angle",
-        "shadow": "Shadow"
-    },
-    "lightsPane": {
-        "header": "Lights",
-        "add": "+",
-        "delete": "Del",
-        "resetPosition": "R Pos",
-        "resetProperties": "R Props",
-        "clear": "Clear",
-        "colour": "Colour",
-        "disable": "On"
-    },
-    "lightType": {
-        "main": "Main",
-        "normal": "Normal",
-        "spot": "Spot",
-        "point": "Point"
-    },
-    "effectsPane": {
-        "onToggle": "On",
-        "bloom": "Bloom",
-        "dof": "DOF",
-        "vignette": "Blur",
-        "fog": "Fog",
-        "sepia": "Sepia",
-        "reset": "Reset Effect"
-    },
-    "effectBloom": {
-        "intensity": "Intensity",
-        "blur": "Blur",
-        "hdrToggle": "HDR"
-    },
-    "effectDof": {
-        "focalLength": "Focal Length",
-        "focalArea": "Focal Area",
-        "aperture": "Aperture",
-        "blur": "Blur",
-        "thicknessToggle": "Thickness"
-    },
-    "effectVignette": {
-        "intensity": "Strength",
-        "blur": "Blur",
-        "blurSpread": "Spread",
-        "aberration": "Aberration"
-    },
-    "effectFog": {
-        "distance": "Distance",
-        "density": "Density",
-        "strength": "Strength",
-        "height": "Height"
-    },
-    "effectSepia": {
-        "toggle": "Sepia",
-        "blur": "Blur"
-    },
-    "background2Window": {
-        "envButton": "Environments",
-        "itemLabel": "Item",
-        "smallBGLabel": "BG (Prop)",
-        "propLabel": "Clothes",
-        "modsToggle": "Mods"
-    },
-    "clothingDropdown": {
-        "myRoom": "My Room Custom",
-        "hat": "Hat",
-        "headset": "Headset",
-        "top": "Top",
-        "bottom": "Bottom",
-        "onepiece": "One-Piece",
-        "swimsuit": "Swimsuit",
-        "bra": "Bra",
-        "panties": "Panties",
-        "socks": "Socks",
-        "shoes": "Shoes",
-        "hairAccessory": "Hair Accessory",
-        "glasses": "Glasses",
-        "eyeMask": "Eye Mask",
-        "nose": "Nose",
-        "ear": "Ear",
-        "gloves": "Gloves",
-        "necklace": "Necklace",
-        "choker": "Choker",
-        "ribbon": "Ribbon",
-        "nipple": "Nipple",
-        "arms": "Arms",
-        "belly": "Belly",
-        "ankle": "Ankle",
-        "back": "Back",
-        "tail": "Tail",
-        "genitals": "Genitals"
-    },
-    "messageWindow": {
-        "name": "Name",
-        "fontSize": "Font Size",
-        "okButton": "OK"
-    }
 }

+ 284 - 0
COM3D2.MeidoPhotoStudio.Plugin/Config/MeidoPhotoStudio/Translations/en/translation.ui.json

@@ -0,0 +1,284 @@
+{
+    "tabs": {
+        "call": "Call",
+        "pose": "Pose",
+        "face": "Face",
+        "bg": "BG",
+        "bg2": "BG2"
+    },
+    "maidCallWindow": {
+        "okButton": "OK",
+        "clearButton": "Clear",
+        "callButton": "Call"
+    },
+    "placementDropdown": {
+        "normal": "Normal",
+        "horizontalRow": "Horizontal Row",
+        "diagonal": "Diagonal",
+        "circleOut": "Circle (outer)",
+        "circleIn": "Circle (Inner)",
+        "fan": "Fan",
+        "v": "V",
+        "^": "^",
+        "m": "M",
+        "w": "W"
+    },
+    "maidPoseWindow": {
+        "ikToggle": "IK",
+        "releaseToggle": "Release",
+        "boneToggle": "Bone",
+        "flipToggle": "Flip IK",
+        "fixSkirtToggle": "Fix Skirt"
+    },
+    "poseGroupDropdown": {
+        "normal": "Normal",
+        "standing": "Standing",
+        "halfStand": "Half-Standing",
+        "kneeling": "Kneeling",
+        "sitting": "Sitting",
+        "onAllFours": "On All Fours",
+        "sittingFloor": "Sitting (Floor)",
+        "sittingChair": "Sitting (Chair)",
+        "sittingSofa": "Sitting (Sofa)",
+        "walking": "Walking",
+        "other": "Other",
+        "danceDokiDoki": "Doki Doki ☆ Fallin' Love",
+        "danceEntranceToYou": "Entrance To You",
+        "danceScarletLeap": "Scarlet Leap",
+        "danceRhythmix": "Rhythmix to You",
+        "dance": "Dance",
+        "danceMC": "Dance (MC)",
+        "restraint": "Restraint",
+        "ero": "Ero",
+        "normal2": "Normal 2",
+        "ero2": "Ero 2"
+    },
+    "poseSave": {
+        "saveToggle": "Save Pose",
+        "saveButton": "Add",
+        "deleteButton": "D"
+    },
+    "freeLook": {
+        "freeLookToggle": "F-Look",
+        "x": "Look X",
+        "y": "Look Y"
+    },
+    "clothing": {
+        "accHat": "Hat",
+        "headset": "Headdress",
+        "wear": "Top",
+        "skirt": "Bottoms",
+        "onepiece": "One-Piece",
+        "mizugi": "Bathing Suit",
+        "glove": "Gloves",
+        "shoes": "Shoes",
+        "stkg": "Socks",
+        "bra": "Bra",
+        "panz": "Panties",
+        "megane": "Eyewear",
+        "accHead": "Eye Mask",
+        "accSenaka": "Back",
+        "accShippo": "Tail",
+        "accKami_1_": "Pin 1",
+        "accKami_2_": "Pin 2",
+        "accKami_3_": "Pin 3",
+        "accKamiSubL": "Ribbon L",
+        "accKamiSubR": "Ribbon R",
+        "accMiMiL": "Ear L",
+        "accMiMiR": "Ear R",
+        "accHana": "Nose",
+        "accKubiwa": "Choker",
+        "accKubi": "Necklace",
+        "accNipL": "Nip L",
+        "accNipR": "Nip R",
+        "accUde": "Arms",
+        "accHeso": "Navel",
+        "accAshi": "Ankles",
+        "accXXX": "Genitals",
+        "body": "Body",
+        "headwear": "Headwear",
+        "curlingFront": "Curl Front",
+        "curlingBack": "Curl Rear",
+        "shiftPanties": "Shift",
+        "detail": "Detailed Clothing"
+    },
+    "hands": {
+        "rightHand": "R Hand",
+        "leftHand": "L Hand"
+    },
+    "copyIK": {
+        "copyLabel": "copy",
+        "copyButton": "OK"
+    },
+    "voiceLines": {
+        "speak": "Speak",
+        "speakEro": "H Lines"
+    },
+    "maidFaceWindow": {
+        "faceLock": "L"
+    },
+    "faceBlendValues": {
+        "eyeclose": "Eye Shut",
+        "eyeclose2": "Eye Smile",
+        "eyeclose3": "Glare",
+        "eyebig": "Eyes Widen",
+        "eyeclose6": "Wink Smile",
+        "eyeclose5": "Wink Shut",
+        "hitomih": "Highlight",
+        "hitomis": "Pupil Size",
+        "mayuha": "Brows Angle",
+        "mayuw": "Brows Sad",
+        "mayuup": "Brows Up",
+        "mayuv": "Brows Angry 1",
+        "mayuvhalf": "Brows Angry 2",
+        "moutha": "Mouth Open 1",
+        "mouths": "Mouth Open 2",
+        "mouthc": "Mouth Narrow",
+        "mouthi": "Mouth Widen",
+        "mouthup": "Smile",
+        "mouthdw": "Frown",
+        "mouthhe": "Pout",
+        "mouthuphalf": "Grin",
+        "tangout": "Tongue Out",
+        "tangup": "Tongue Up",
+        "tangopen": "Tongue Base",
+        "hoho2": "Blush",
+        "shock": "Shade",
+        "nosefook": "Nose Up",
+        "namida": "Tears",
+        "yodare": "Drool",
+        "toothoff": "Teeth",
+        "tear1": "Cry 1",
+        "tear2": "Cry 2",
+        "tear3": "Cry 3",
+        "hohos": "Blush 1",
+        "hoho": "Blush 2",
+        "hohol": "Blush 3"
+    },
+    "faceSave": {
+        "saveButton": "Add",
+        "deleteButton": "D"
+    },
+    "backgroundWindow": {
+        "saveLoadButton": "Save\nLoad",
+        "lightLabel": "Light",
+        "red": "Red",
+        "green": "Green",
+        "blue": "Blue"
+    },
+    "props": {
+        "props1Label": "Props 1",
+        "props2Label": "Props 2",
+        "props1AddButton": "Add",
+        "props2AddButton": "Add"
+    },
+    "movementCube": {
+        "header": "Movement Cube",
+        "props": "Props",
+        "small": "Small",
+        "maid": "Maid",
+        "bg": "BG"
+    },
+    "lights": {
+        "x": "Light X",
+        "y": "Light Y",
+        "intensity": "Brightness",
+        "range": "Range",
+        "spot": "Spot Angle",
+        "shadow": "Shadow"
+    },
+    "lightsPane": {
+        "header": "Lights",
+        "add": "+",
+        "delete": "Del",
+        "resetPosition": "R Pos",
+        "resetProperties": "R Props",
+        "clear": "Clear",
+        "colour": "Colour",
+        "disable": "On"
+    },
+    "lightType": {
+        "main": "Main",
+        "normal": "Normal",
+        "spot": "Spot",
+        "point": "Point"
+    },
+    "effectsPane": {
+        "onToggle": "On",
+        "bloom": "Bloom",
+        "dof": "DOF",
+        "vignette": "Blur",
+        "fog": "Fog",
+        "sepia": "Sepia",
+        "reset": "Reset Effect"
+    },
+    "effectBloom": {
+        "intensity": "Intensity",
+        "blur": "Blur",
+        "hdrToggle": "HDR"
+    },
+    "effectDof": {
+        "focalLength": "Focal Length",
+        "focalArea": "Focal Area",
+        "aperture": "Aperture",
+        "blur": "Blur",
+        "thicknessToggle": "Thickness"
+    },
+    "effectVignette": {
+        "intensity": "Strength",
+        "blur": "Blur",
+        "blurSpread": "Spread",
+        "aberration": "Aberration"
+    },
+    "effectFog": {
+        "distance": "Distance",
+        "density": "Density",
+        "strength": "Strength",
+        "height": "Height"
+    },
+    "effectSepia": {
+        "toggle": "Sepia",
+        "blur": "Blur"
+    },
+    "background2Window": {
+        "envButton": "Environments",
+        "itemLabel": "Item",
+        "smallBGLabel": "BG (Prop)",
+        "propLabel": "Clothes",
+        "modsToggle": "Mods"
+    },
+    "clothingDropdown": {
+        "myRoom": "My Room Custom",
+        "hat": "Hat",
+        "headset": "Headset",
+        "top": "Top",
+        "bottom": "Bottom",
+        "onepiece": "One-Piece",
+        "swimsuit": "Swimsuit",
+        "bra": "Bra",
+        "panties": "Panties",
+        "socks": "Socks",
+        "shoes": "Shoes",
+        "hairAccessory": "Hair Accessory",
+        "glasses": "Glasses",
+        "eyeMask": "Eye Mask",
+        "nose": "Nose",
+        "ear": "Ear",
+        "gloves": "Gloves",
+        "necklace": "Necklace",
+        "choker": "Choker",
+        "ribbon": "Ribbon",
+        "nipple": "Nipple",
+        "arms": "Arms",
+        "belly": "Belly",
+        "ankle": "Ankle",
+        "back": "Back",
+        "tail": "Tail",
+        "genitals": "Genitals"
+    },
+    "messageWindow": {
+        "name": "Name",
+        "fontSize": "Font Size",
+        "okButton": "OK"
+    }
+}

+ 37 - 12
COM3D2.MeidoPhotoStudio.Plugin/MeidoPhotoStudio/Translation.cs

@@ -9,7 +9,8 @@ namespace COM3D2.MeidoPhotoStudio.Plugin
 {
     internal static class Translation
     {
-        public static Dictionary<string, Dictionary<string, string>> Translations;
+        private static readonly string[] props = { "ui", "props", "bg", "face" };
+        private static Dictionary<string, Dictionary<string, string>> Translations;
         public static string CurrentLanguage { get; private set; }
         public static event EventHandler ReloadTranslationEvent;
 
@@ -17,22 +18,46 @@ namespace COM3D2.MeidoPhotoStudio.Plugin
         {
             CurrentLanguage = language;
 
-            string translationFile = $"translations.{language}.json";
-            string translationPath = Path.Combine(Constants.configPath, translationFile);
-            string translationJson = File.ReadAllText(translationPath);
-
-            JObject translation = JObject.Parse(translationJson);
-
             Translations = new Dictionary<string, Dictionary<string, string>>(
                 StringComparer.InvariantCultureIgnoreCase
             );
 
-            foreach (JProperty translationProp in translation.AsJEnumerable())
+            string rootTranslationPath = Path.Combine(Constants.configPath, "Translations");
+
+            string currentTranslationPath = Path.Combine(rootTranslationPath, CurrentLanguage);
+
+            if (!Directory.Exists(currentTranslationPath))
             {
-                JToken token = translationProp.Value;
-                Translations[translationProp.Path] = new Dictionary<string, string>(
-                    token.ToObject<Dictionary<string, string>>(), StringComparer.InvariantCultureIgnoreCase
+                // Directory.CreateDirectory(currentTranslationPath);
+                Debug.LogWarning(
+                    $"No translations found for '{CurrentLanguage}' in '{currentTranslationPath}'"
                 );
+                return;
+            }
+
+            foreach (string prop in props)
+            {
+                string translationFile = $"translation.{prop}.json";
+                try
+                {
+                    string translationPath = Path.Combine(currentTranslationPath, translationFile);
+
+                    string translationJson = File.ReadAllText(translationPath);
+
+                    JObject translation = JObject.Parse(translationJson);
+
+                    foreach (JProperty translationProp in translation.AsJEnumerable())
+                    {
+                        JToken token = translationProp.Value;
+                        Translations[translationProp.Path] = new Dictionary<string, string>(
+                            token.ToObject<Dictionary<string, string>>(), StringComparer.InvariantCultureIgnoreCase
+                        );
+                    }
+                }
+                catch
+                {
+                    Debug.LogError($"Could not find translation file '{translationFile}'");
+                }
             }
         }
 
@@ -57,7 +82,7 @@ namespace COM3D2.MeidoPhotoStudio.Plugin
         {
             if (!Translations.ContainsKey(category))
             {
-                Debug.LogWarning($"Could not find category '{category}'");
+                Debug.LogWarning($"Could not find translation category '{category}'");
                 return text;
             }