From 97418111fb122304c76c30eecbd700ee50dac62b Mon Sep 17 00:00:00 2001 From: galister <22305755+galister@users.noreply.github.com> Date: Sun, 2 Aug 2026 17:18:36 +0900 Subject: [PATCH] =?UTF-8?q?translations=20json=20=E2=86=92=20csv?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/translator/main.ts | 148 +++++++++++++++--- wayvr/src/assets/lang/de.json | 248 ++++++++++++++++-------------- wayvr/src/assets/lang/en.csv | 145 ++++++++++++++++++ wayvr/src/assets/lang/en.json | 78 ++-------- wayvr/src/assets/lang/es.json | 252 ++++++++++++++++--------------- wayvr/src/assets/lang/it.json | 240 +++++++++++++++-------------- wayvr/src/assets/lang/ja.json | 250 ++++++++++++++++-------------- wayvr/src/assets/lang/pl.json | 242 +++++++++++++++-------------- wayvr/src/assets/lang/zh_CN.json | 240 +++++++++++++++-------------- 9 files changed, 1067 insertions(+), 776 deletions(-) create mode 100644 wayvr/src/assets/lang/en.csv diff --git a/scripts/translator/main.ts b/scripts/translator/main.ts index dae44aba..6aa23054 100644 --- a/scripts/translator/main.ts +++ b/scripts/translator/main.ts @@ -97,11 +97,101 @@ interface Template { examples: Example[]; } +interface CsvEntry { + key: string; + english: string; + context: string; +} + +function parse_csv_line(line: string): [string, string, string] { + const result: string[] = []; + let current = ""; + let inQuotes = false; + for (let i = 0; i < line.length; i++) { + const ch = line[i]!; + if (ch === '"') { + inQuotes = !inQuotes; + } else if (ch === "," && !inQuotes) { + result.push(current.trim()); + current = ""; + } else { + current += ch; + } + } + result.push(current.trim()); + return [result[0]!, result[1]!, result[2] ?? ""]; +} + +function parse_csv(text: string): CsvEntry[] { + const lines: string[] = []; + let current = ""; + let inQuotes = false; + for (const line of text.split("\n")) { + const wasInQuotes = inQuotes; + for (const ch of line) { + if (ch === '"') { + inQuotes = !inQuotes; + } + } + if (wasInQuotes) { + current += line + "\n"; + } else { + if (current) lines.push(current); + current = line + "\n"; + } + } + if (current) lines.push(current); + return lines.filter((l) => l.trim()).map(parse_csv_line).map(([key, english, context]) => ({ + key, + english, + context, + })); +} + +function csv_to_json(entries: CsvEntry[]): any { + const result: any = {}; + for (const entry of entries) { + set_i18n_key(result, entry.key, entry.english); + } + return result; +} + +function get_nested_value(obj: any, key: string): string | undefined { + const parts = key.split("."); + let level = obj; + for (const part of parts) { + if (!level || typeof level !== "object") { + return undefined; + } + level = level[part]; + } + return level; +} + +function resolve_variables( + text: string, + translated_json: any, + all_entries: CsvEntry[], +): string { + return text.replace(/\$\{([^}]+)\}/g, (_, key) => { + const val = get_nested_value(translated_json, key); + if (val !== undefined) { + return val; + } + const entry = all_entries.find((e) => e.key === key); + if (entry !== undefined) { + return entry.english; + } + return `${key}`; + }); +} + function gen_prompt( description: string, template: Template, key: string, english_translation: string, + context: string, ) { let num = 1; for (const example of template.examples) { @@ -128,6 +218,8 @@ function gen_prompt( "` from English to " + template.full_name + ":\n\n"; + description += "Context: " + context + "\n\n"; + description += "Style: These are UI elements in a software, so keep the translations cocise and with an appropriate tone. Don't use polite/formal language. Make sure it sounds natural.\n\n"; description += "```\n"; description += english_translation + "\n"; description += "```\n"; @@ -148,9 +240,27 @@ async function run() { template.full_name, ); - const orig_english_json = JSON.parse( - (await fsp.readFile(lang_path + "/en.json")) as any, - ); + const csv_text = (await fsp.readFile(lang_path + "/en.csv", "utf-8")) as any; + const csv_entries = parse_csv(csv_text); + const orig_english_json = csv_to_json(csv_entries); + + let llm_translated_json: any = {}; + const translated_json_path = lang_path + "/" + template_name + ".json"; + if (await fsp.exists(translated_json_path)) { + console.log("Loading file", translated_json_path); + llm_translated_json = JSON.parse( + (await fsp.readFile(translated_json_path)).toString(), + ); + } + + if (template_name === "en") { + await fsp.writeFile( + lang_path + "/en.json", + JSON.stringify(orig_english_json, undefined, "\t"), + ); + console.log("Translation en finished"); + return; + } let orig_translated_json = {}; try { @@ -161,47 +271,45 @@ async function run() { ); } catch (_e) {} - let llm_translated_json = {}; - const translated_json_path = lang_path + "/" + template_name + ".json"; - if (await fsp.exists(translated_json_path)) { - console.log("Loading file", translated_json_path); - llm_translated_json = JSON.parse( - (await fsp.readFile(translated_json_path)).toString(), - ); - } - let total_count = 0; - await loop_object(orig_english_json, "", async () => { + for (const _entry of csv_entries) { total_count += 1; - }); + } await loop_object(llm_translated_json, "", async (key, _) => { if (!key_exists(orig_english_json, key)) { console.log("Removing key", key); set_i18n_key(llm_translated_json, key, undefined); - fsp.writeFile( + await fsp.writeFile( translated_json_path, JSON.stringify(llm_translated_json, undefined, "\t"), ); } }); - await loop_object(orig_english_json, "", async (key, english_translation) => { + for (const entry of csv_entries) { + const key = entry.key; + const english_translation = entry.english; + const context = entry.context; + if (key_exists(orig_translated_json, key)) { - return; + continue; } if (key_exists(llm_translated_json, key)) { - return; + continue; } console.log("Translating", key, "..."); + const resolved_context = resolve_variables(context, llm_translated_json, csv_entries); + const prompt = gen_prompt( description_txt, template, key, english_translation, + resolved_context, ); const response = await fetch(base_url + "/v1/chat/completions", { @@ -237,11 +345,11 @@ async function run() { console.log(" >>>", msg); set_i18n_key(llm_translated_json, key, msg[0]); - fsp.writeFile( + await fsp.writeFile( translated_json_path, JSON.stringify(llm_translated_json, undefined, "\t"), ); - }); + } console.log("Translation", template_name, "finished"); } diff --git a/wayvr/src/assets/lang/de.json b/wayvr/src/assets/lang/de.json index cbf548e6..8d284070 100644 --- a/wayvr/src/assets/lang/de.json +++ b/wayvr/src/assets/lang/de.json @@ -1,62 +1,5 @@ { - "ANCHOR": { - "CENTER": "Zentrum" - }, - "BAR": { - "ADD_MIRROR": "Neuen Spiegel-Overlay hinzufügen", - "EDIT_MODE_TOGGLE": "Bearbeitungsmodus umschalten", - "ADD_NEW_SET": "Neues Set hinzufügen", - "DELETE_CURRENT_SET": "Aktuelles Set löschen", - "TOGGLE_VISIBILITY": "Sichtbarkeit umschalten", - "RESET_POSITION": "Position zurücksetzen", - "RELOAD_FROM_DISK": "XML-Datei von der Festplatte neu laden", - "CLOSE_APP": "App schließen", - "FORCE_CLOSE_APP": "App zwangsweise schließen", - "HANDSFREE": { - "TITLE": "Freihändig-Modus", - "NONE": "Aus", - "HMD": "HMD + Kneifen", - "EYE_TRACKING": "Auge + Kneifen", - "EYE_ONLY": "Augenlaser", - "HMD_ONLY": "HMD-Laser" - }, - "ADD_PASSTHRU": "Passthrough-Fenster hinzufügen", - "CLOSE_OVERLAY": "Overlay schließen" - }, - "WATCH": { - "RECENTER": "Spielbereich neu zentrieren", - "FIX_FLOOR": "Bodenhöhe korrigieren", - "EDIT_MODE_EXPLANATION": "Overlays können nun einzeln verschoben und angepasst werden.\nOverlays für den aktuellen Satz umschalten:", - "DASHBOARD": "Dashboard", - "EDIT_MODE": "Bearbeitungsmodus", - "ADD_NEW_SET": "Neuen Satz hinzufügen", - "SWITCH_TO_SET": "Zum Satz wechseln", - "TOGGLE_FOR_CURRENT_SET": "Sichtbarkeit im aktuellen Satz umschalten", - "LONG_PRESS_TO_DELETE_SET": "Lange drücken, um Satz zu löschen", - "CLEANUP_MIRRORS": "Spiegel entfernen, die\nderzeit nicht sichtbar sind" - }, "EDIT_MODE": { - "ADJUST_CURVATURE": "Krümmung anpassen", - "ALPHA_BLEND_MODE": "Alpha-Mischmodus", - "BLENDING_ADDITIVE": "Additiv", - "CURVATURE": "Krümmung", - "DELETE": "Löschen", - "HINT_POINT_WINDOW": "Zeigen Sie auf ein Fenster, um seine Parameter zu ändern.\nWenn Sie fertig sind, verlassen Sie den Bearbeitungsmodus mit der Schaltfläche auf der rechten Seite.", - "LEAVE": "Bearbeitungsmodus verlassen", - "LOCK_INTERACTION": "Interaktion sperren", - "DISABLE_GRAB": "Greifen deaktivieren", - "MOVE_PRESS_AND_DRAG": "Verschieben (drücken & ziehen)", - "OPACITY": "Undurchsichtigkeit", - "POSITIONING": "Positionierung", - "RESIZE_PRESS_AND_DRAG": "Größe ändern (gedrückt halten & ziehen)", - "POS_ANCHORED": "Verankert: Bewegt sich zusammen mit dem Rest des Sets. Standard.", - "POS_FLOATING": "Schwebend: Bleibt an Ort und Stelle, wird beim Anzeigen neu zentriert.", - "POS_HMD": "Folge dem Headset.", - "POS_HAND_L": "Folge der linken Hand.", - "POS_HAND_R": "Folge der rechten Hand.", - "INTERPOLATION": "Interpolation", - "KEYBOARD": "Tastatur", - "STEREO_3D_MODE_A": {}, "STEREO_3D_MODE": { "TITLE": "3D Stereo-Modus", "SPLIT_LEFT_RIGHT": "LINKS→RECHTS", @@ -69,8 +12,6 @@ "FULL_FRAME_BAT": "Full-BAT", "ADJUST_MOUSE": "Maus anpassen" }, - "STEREO_3D_MODE_": {}, - "ALIGN_TO_HMD": "An HMD ausrichten", "MOUSE": { "TITLE": "Mauskorrekturen", "WRONG_SCREEN_SELECTION_HELP": "Wenn der Cursor auf einem völlig anderen Bildschirm verschwindet,\nwurden die Bildschirme wahrscheinlich falsch ausgewählt. Siehe Lesezeichen.", @@ -83,73 +24,146 @@ "ROTATE180": "180° gedreht", "ROTATE270": "270° gedreht" }, + "ADJUST_CURVATURE": "Krümmung anpassen", + "ALIGN_TO_HMD": "An HMD ausrichten", + "ALPHA_BLEND_MODE": "Alpha-Blend-Modus", + "ANGLE_FADE": "Winkelverblassung", + "ANGLE_FADE_HELP": "Ausblenden, wenn nicht zum HMD ausgerichtet", + "BLENDING_ADDITIVE": "Additives Blending", + "BLOCK_INPUT": "Game-Input blockieren", + "CURVATURE": "Krümmung", + "DELETE": "Lang drücken, um aus dem aktuellen Set zu entfernen", + "DISABLE_GRAB": "Greifen deaktivieren", "GLOBAL": "Immer sichtbar", - "ANGLE_FADE": "Winkelübergang", - "ANGLE_FADE_HELP": "Ausblenden, wenn nicht auf das Headset gerichtet", - "BLOCK_INPUT": "Blockiere Spieleingabe", - "RESIZE_CORNER": "Zum Ändern der Größe ziehen" + "HINT_POINT_WINDOW": "Zeige auf ein Fenster, um dessen Parameter zu ändern.\nVerlasse danach den Bearbeitungsmodus über die Schaltfläche rechts.", + "INTERPOLATION": "Interpolation", + "KEYBOARD": "Tastatur", + "LEAVE": "Bearbeitungsmodus verlassen", + "LOCK_INTERACTION": "Interaktion sperren", + "MOVE_PRESS_AND_DRAG": "Bewegen (drücken & ziehen)", + "OPACITY": "Undurchsichtigkeit", + "POS_ANCHORED": "Verankert: Bewegt sich gemeinsam mit dem Set. Standard.", + "POS_FLOATING": "Schwebend: Bewegt sich unabhängig, zentriert sich beim Anzeigen neu.", + "POS_HAND_L": "Folgt der linken Hand.", + "POS_HAND_R": "Rechter Hand folgen.", + "POS_HMD": "Folgt dem HMD.", + "POS_STATIC": "Statisch: Nicht Teil eines Sets, kein Recenter.", + "POSITIONING": "Positionierung", + "RESIZE_PRESS_AND_DRAG": "Größe ändern (drücken & ziehen)", + "RESIZE_CORNER": "Zum Vergrößern ziehen" + }, + "DEFINITIONS": { + "ANCHORED": "Verankert", + "FLOATING": "Schwebend", + "STATIC": "Statisch", + "SET": "Set", + "WATCH": "Handgelenk-Uhr", + "DASHBOARD": "Dashboard", + "EDIT_MODE": "Bearbeitungsmodus", + "MIRROR": "Spiegelung", + "SETTINGS": "Einstellungen", + "KEYBOARD": "Tastatur", + "TASKBAR": "Taskleiste", + "FEATURES": "Features", + "OVERLAY": "Overlay" + }, + "ANCHOR": { + "CENTER": "Zentrum" + }, + "BAR": { + "ADD_MIRROR": "Neues Spiegel-Overlay hinzufügen", + "ADD_NEW_SET": "Neues Set hinzufügen", + "CLOSE_APP": "App schließen", + "CLOSE_OVERLAY": "Overlay schließen", + "DELETE_CURRENT_SET": "Aktuelles Set löschen", + "EDIT_MODE_TOGGLE": "Bearbeitungsmodus umschalten", + "FORCE_CLOSE_APP": "App zwangsbeenden", + "HANDSFREE": { + "EYE_ONLY": "Augenlaser", + "EYE_TRACKING": "Blick + Pinch", + "HMD": "HMD + Pinzgriff", + "HMD_ONLY": "HMD-Laser", + "NONE": "Aus", + "TITLE": "Freihandmodus" + }, + "RELOAD_FROM_DISK": "XML von Festplatte neu laden", + "RESET_POSITION": "Position zurücksetzen", + "TOGGLE_VISIBILITY": "Sichtbarkeit umschalten" }, - "DISABLED": "Deaktiviert", "DEFAULT": "Standard", + "DISABLED": "Deaktiviert", + "DONE": "Fertig", + "ALTTAB": { + "RELEASE_TO_FOCUS": "Ziele auf eine App und lass die Super-Taste los, um diese zu fokussieren.", + "WHILE_AIMING": "Während des Zielens", + "CLICK": "VR-Zeigerklick", + "GRABALL": "Gesamtes Set bewegen", + "GRAB": "Einzelnes Overlay verschieben", + "DASH": "Dashboard umschalten", + "EDIT": "Bearbeitungsmodus umschalten", + "SET": "Set wechseln", + "RECENTER": "Einblenden/Ausblenden/Zentrieren", + "GENERAL_BINDS": "Allgemeine Belegung", + "TOGGLE_CAPTURE": "Kontrolle an Desktop zurückgeben", + "FOCUS_MODE": "Fokus-Modus (Super halten)", + "CLOSE": "Fokussierte App schließen", + "MOUSE": "Echte Mausklicks & Scrollen wirken ebenfalls als VR-Pointer" + }, "GRAB": { "ADJUST_DISTANCE": "Entfernung anpassen", "ADJUST_SIZE": "Größe anpassen", - "UNRESTRICTED_MOVEMENT": "Unbeschränkte Bewegung", - "GRABBING_WATCH": "Um die Hände zu vertauschen, bewegen Sie die Uhr vor sich und greifen Sie sie mit der anderen Hand.", - "GRABBING_STATIC": "Dieses Overlay ist statisch und bleibt an Ort und Stelle, ignoriert die Neu-Zentrierung.", - "GRABBING_ANCHORED": "Festgelegte Overlays bewegen sich alle zusammen. Trennen Sie ein einzelnes Fenster, indem Sie es mit der anderen Hand greifen, während Sie den Anker weiterhin greifen.", - "GRABBING_ANCHORED_EDIT": "Diese Overlay-Darstellung bleibt an der Mittelmarkierung verankert.", - "GRABBING_FLOATING": "Diese Overlay-Darstellung ist frei schwebend und bleibt an Ort und Stelle, es sei denn, sie wird neu zentriert.", - "GRABBING_FOLLOW": "Dieses Overlay wird dem Gerät folgen, an das es angehängt ist." - }, - "TOAST": { - "DEFAULT_TITLE": "Benachrichtigung", - "ERROR": "Fehler", - "CANNOT_REMOVE_SET": "Satz kann nicht entfernt werden!", - "NO_SET_SELECTED": "Kein Set ausgewählt.", - "LAST_EXISTING_SET": "Dies ist das letzte vorhandene Set.", - "EMPTY_SET": "Leeres Set!", - "ONE_CONTROLLER_ON_FLOOR": "Lege einen Controller auf den Boden!", - "CANNOT_ADD_SET": "Satz kann nicht hinzugefügt werden!", - "MAXIMUM_SETS_REACHED": "Maximale Anzahl an Sets erreicht.", - "FIXING_FLOOR_IN_X_SECS": "Boden wird in {SECONDS} Sekunde(n) repariert...", - "TITLE_SCREENCAST_FAIL": "Bildschirmübertragungsquelle konnte nicht gestartet werden!", - "LETS_ADD_OVERLAYS": "Lass uns einige Overlays aus der Taskleiste hinzufügen!" - }, - "DONE": "Erledigt", - "WHISPER": { - "TRANSCRIBE": "Zum Transkribieren von Text gedrückt halten", - "PASTE": "Transkription in die Zwischenablage kopieren", - "PASTE_AND_GO": "Transkription kopieren und Ctrl-V an die fokussierte App senden", - "SEND_OSC": "Transkription an OSC-Chatbox senden", - "UNLOAD_AND_CLOSE": "Modell entladen und schließen", - "MODEL_NOT_DOWNLOADED": "Spracherkennung nicht eingerichtet!", - "DOWNLOAD_GUIDANCE": "Richten Sie die Spracherkennung unter Einstellungen -> Features ein!", - "INITIAL_TEXT": "Halten Sie die Mikrofontaste gedrückt, um mit der Transkription zu beginnen...", - "INIT_ERROR": "Fehler beim Starten der Whisper-Engine", - "ENTER_KEY": "Enter-Taste" + "GRABBING_ANCHORED": "Verankerte Overlays bewegen sich mit dem Set. Trenne ein einzelnes Fenster, indem du es mit der anderen Hand greifst, während du das Set weiterhin festhältst.", + "GRABBING_ANCHORED_EDIT": "Dieses Overlay bleibt am Zentrumsmarker verankert.", + "GRABBING_FLOATING": "Dieses Overlay schwebt und bleibt an seiner Position, sofern es nicht neu zentriert wird.", + "GRABBING_FOLLOW": "Dieses Overlay folgt dem Gerät, an dem es befestigt ist.", + "GRABBING_STATIC": "Dieses Overlay ist statisch und bleibt an seinem Platz, unabhängig vom Recentern.", + "GRABBING_WATCH": "Um die Seite zu wechseln, bewege die Uhr nach vorne und greife sie mit der anderen Hand.", + "UNRESTRICTED_MOVEMENT": "Uneingeschränkte Bewegung" }, "SCREENCAST": { "PENDING": "Bitte warten...", "QUEUED": "Warten auf die Bestätigung des Screen-Cast-Pop-ups eines anderen Overlays.", - "WAITING_FOR_USER_DESC": "Überprüfen Sie Ihren Desktop auf ein Pop-up zur Bildschirmübertragung.\nWählen Sie Folgendes aus:", - "WAITING_FOR_USER": "Überprüfen Sie Ihren Desktop auf ein Pop-up zur Bildschirmübertragung.", - "FAIL": "Bildschirmübertragungsquelle konnte nicht initialisiert werden." + "WAITING_FOR_USER_DESC": "Prüfe deinen Desktop auf ein Pop-up für die Bildschirmübertragung.\nWähle Folgendes aus:", + "WAITING_FOR_USER": "Prüfe deinen Desktop auf ein Pop-up zur Bildschirmübertragung.", + "FAIL": "Bildschirmübertragung konnte nicht initialisiert werden." }, - "ALTTAB": { - "RELEASE_TO_FOCUS": "Richten Sie den Cursor auf eine App und lassen Sie die Super-Taste los, um diese App zu fokussieren.", - "WHILE_AIMING": "Beim Zielen", - "CLICK": "VR-Pointer-Klick", - "GRABALL": "Gesamtes Set bewegen", - "GRAB": "Einzelnes Overlay bewegen", - "DASH": "Dashboard umschalten", - "EDIT": "Bearbeitungsmodus umschalten", - "SET": "Set wechseln", - "RECENTER": "Anzeigen/Ausblenden/Zentrieren", - "GENERAL_BINDS": "Allgemeine Belegungen", - "TOGGLE_CAPTURE": "Kontrolle an Desktop zurückgeben", - "FOCUS_MODE": "Fokus-Modus (Super gedrückt halten)", - "CLOSE": "Fokussierte App schließen", - "MOUSE": "Echte Mausklicks & Scrollen werden auch auf den VR-Zeiger übertragen" + "TOAST": { + "TITLE_SCREENCAST_FAIL": "Bildschirmübertragung konnte nicht gestartet werden!", + "CANNOT_ADD_SET": "Set konnte nicht hinzugefügt werden!", + "CANNOT_REMOVE_SET": "Set konnte nicht entfernt werden!", + "DEFAULT_TITLE": "Benachrichtigung", + "EMPTY_SET": "Leeres Set!", + "ERROR": "Fehler", + "FIXING_FLOOR_IN_X_SECS": "Boden wird in {SECONDS} Sekunde(n) angepasst...", + "LAST_EXISTING_SET": "Dies ist das letzte bestehende Set.", + "LETS_ADD_OVERLAYS": "Füge ein paar Overlays über die Taskleiste hinzu!", + "MAXIMUM_SETS_REACHED": "Maximale Anzahl an Sets erreicht.", + "NO_SET_SELECTED": "Kein Set ausgewählt.", + "ONE_CONTROLLER_ON_FLOOR": "Einen Controller auf den Boden legen!", + "NO_KEYMAPS_CONFIGURED": "Keine Tastaturbelegungen konfiguriert", + "NO_KEYMAPS_CONFIGURED_HELP": "Besuch wayvr.org, um zu erfahren, wie du deine Tastaturlayouts einrichtest!" + }, + "WATCH": { + "ADD_NEW_SET": "Neues Set hinzufügen", + "CLEANUP_MIRRORS": "Nicht sichtbare\nSpiegelungen entfernen", + "DASHBOARD": "Dashboard", + "EDIT_MODE": "Bearbeitungsmodus", + "FIX_FLOOR": "Bodenhöhe fixieren", + "LONG_PRESS_TO_DELETE_SET": "Zum Löschen gedrückt halten", + "RECENTER": "Playspace zentrieren", + "SWITCH_TO_SET": "Zum Set wechseln", + "TOGGLE_FOR_CURRENT_SET": "Aktuelles Set umschalten" + }, + "WHISPER": { + "TRANSCRIBE": "Zum Transkribieren gedrückt halten", + "PASTE": "Transkription in die Zwischenablage kopieren", + "PASTE_AND_GO": "Transkript kopieren und Ctrl-V an fokussierte App senden", + "SEND_OSC": "Transkription an OSC-Chatbox senden", + "UNLOAD_AND_CLOSE": "Modell entladen und schließen", + "MODEL_NOT_DOWNLOADED": "Spracherkennung nicht eingerichtet!", + "DOWNLOAD_GUIDANCE": "Spracherkennung unter Einstellungen > Features einrichten!", + "INITIAL_TEXT": "Mic-Taste gedrückt halten, um die Transkription zu starten...", + "INIT_ERROR": "Fehler beim Starten der Whisper-Engine", + "ENTER_KEY": "Enter-Taste" } -} +} \ No newline at end of file diff --git a/wayvr/src/assets/lang/en.csv b/wayvr/src/assets/lang/en.csv new file mode 100644 index 00000000..26d5051a --- /dev/null +++ b/wayvr/src/assets/lang/en.csv @@ -0,0 +1,145 @@ +DEFINITIONS.ANCHORED,Anchored,A movement option that makes this window move together with the rest of the workspace. Emphasize the “moving together” part as opposed to “not moving at all”. +DEFINITIONS.FLOATING,Floating,A movement option that lets this window float freely. +DEFINITIONS.STATIC,Static,"A movement option that keeps this window in place relative to the world origin. Emphasize the “not moving at all” part, as opposed to the “moving together” option which was previously translated as ${DEFINITIONS.ANCHORED}." +DEFINITIONS.SET,Set,A desktop workspace consisting of multiple windows. +DEFINITIONS.WATCH,Watch,Name of the small utility window that hovers around the user’s wrist. +DEFINITIONS.DASHBOARD,Dashboard,Name of the window that acts as the main menu / control panel of the application. +DEFINITIONS.EDIT_MODE,Edit Mode,Name of the mode that allows the user to make various tweaks to the current workspace and its windows. +DEFINITIONS.MIRROR,Mirror,A type of virtual window that displays a desktop window using screen mirroring. +DEFINITIONS.SETTINGS,Settings,The title of the settings panel. +DEFINITIONS.KEYBOARD,Keyboard,Name of the virtual keyboard +DEFINITIONS.TASKBAR,Taskbar,"A long panel showing currently active programs & windows, workspaces and a clock." +DEFINITIONS.FEATURES,Features,The section title of the section panel that deals with software features. +DEFINITIONS.OVERLAY,Overlay,"An overlay window inside VR, similar to a “desktop window”. Consider it a technical term." +ANCHOR.CENTER,Center,A marker on the floor describing where the center of the area is +BAR.ADD_MIRROR,Add a new mirror overlay,"Button to add a mirror overlay window. “Mirror” was previously translated as “${DEFINITIONS.MIRROR}”, “Overlay” was previously translated as “${DEFINITIONS.OVERLAY}”" +BAR.ADD_NEW_SET,Add new set,Button to add a new set. “Set” was previously translated as “${DEFINITIONS.SET}” +BAR.CLOSE_APP,Close app,Button to quit the app +BAR.CLOSE_OVERLAY,Close overlay,Button to close an overlay window. “Overlay” was previously translated as “{$DEFINITIONS.OVERLAY}” +BAR.DELETE_CURRENT_SET,Delete current set,Button to delete the currently selected set. “Set” was previously translated as “${DEFINITIONS.SET}” +BAR.EDIT_MODE_TOGGLE,Toggle edit mode,Button to toggle Edit mode. “Edit mode” was previously translated as “${DEFINITIONS.EDIT_MODE}” +BAR.FORCE_CLOSE_APP,Force close app,Button to terminate an application from the process manager +BAR.HANDSFREE.EYE_ONLY,Eye laser,Option to aim with the user’s eye gaze (eye tracking) +BAR.HANDSFREE.EYE_TRACKING,Eye + pinch,Option to aim with the user’s eye gaze (eye tracking) and input using pinch gestures +BAR.HANDSFREE.HMD,HMD + pinch,Option to aim with the HMD and input using pinch gestures +BAR.HANDSFREE.HMD_ONLY,HMD laser,Option to aim with the HMD +BAR.HANDSFREE.NONE,Off,Option to not use this feature at all +BAR.HANDSFREE.TITLE,Hands-free mode,"Title of a mode that lets the user interact with the software without controllers, keyboard or mouse." +BAR.RELOAD_FROM_DISK,Reload XML from disk,Button to reload the XML configuration file from disk +BAR.RESET_POSITION,Reset position,Button to reset the selected object to its default position and orientation +BAR.TOGGLE_VISIBILITY,Toggle visibility,Button to toggle the visibility of this object +DEFAULT,Default,Default value used when no custom setting is applied +DISABLED,Disabled,Feature or setting is turned off +DONE,Done,Title of a pop-up dialog explaining that the requested action has completed successfully. +EDIT_MODE.ADJUST_CURVATURE,Adjust curvature,Tooltip on a settings page to adjust screen panel curvature +EDIT_MODE.ALIGN_TO_HMD,Align to HMD,Checkbox for a window to always rotate (billboard) towards the viewer +EDIT_MODE.ALPHA_BLEND_MODE,Alpha blend mode,Blending mode for window transparency +EDIT_MODE.ANGLE_FADE,Angle fade,Fade based on viewing angle +EDIT_MODE.ANGLE_FADE_HELP,Fade when not facing HMD,Automatically fades the window when it is not facing the HMD +EDIT_MODE.BLENDING_ADDITIVE,Additive blending,Additive blending mode for overlays +EDIT_MODE.BLOCK_INPUT,Block game input,Block games form receiving controller input while pointing at the window +EDIT_MODE.CURVATURE,Curvature,Adjust the curvature of the window panel +EDIT_MODE.DELETE,Long press to remove from current set,Button tooltip to remove this window from the current set. “Set” was previously translated as “${DEFINITIONS.SET}” +EDIT_MODE.DISABLE_GRAB,Disable grab,Tooltip on a button that disable grabbing/movement on this this window +EDIT_MODE.GLOBAL,Always visible,Tooltip on a checkbox that makes this window always visible regardless of the active set/workspace +EDIT_MODE.HINT_POINT_WINDOW,"Point at a window to change its parameters. +Once done, leave edit mode using the button on the right.",Instructions displayed to the user. “Edit mode” was previously translated as “${DEFINITIONS.EDIT_MODE}” +EDIT_MODE.INTERPOLATION,Interpolation,Option for smoothing window movement +EDIT_MODE.KEYBOARD,Keyboard,Button to toggle the keyboard. “Keyboard” was previously translated as “${DEFINITIONS.KEYBOARD}” +EDIT_MODE.LEAVE,Leave edit mode,Option to exit edit mode. “Edit mode” was previously translated as “${DEFINITIONS.EDIT_MODE}” +EDIT_MODE.LOCK_INTERACTION,Lock interaction,Option to disable pointer input on this window. The pointer laser will pass through the window completely. +EDIT_MODE.MOUSE.FLIP180,Flipped 180°,Option to mirror the mouse movement horizontally and rotate 180 degrees. Emphasize the part about mirroring / flipping (not just rotation). Keep the translation as short as possible. +EDIT_MODE.MOUSE.FLIP270,Flipped 270°,Option to mirror the mouse movement horizontally and rotate 270 degrees. Emphasize the part about mirroring / flipping (not just rotation). Keep the translation as short as possible. +EDIT_MODE.MOUSE.FLIP90,Flipped 90°,Option to mirror the mouse movement horizontally and rotate 90 degrees. Emphasize the part about mirroring / flipping (not just rotation). Keep the translation as short as possible. +EDIT_MODE.MOUSE.FLIPPED,Flipped,Option to mirror the mouse movement horizontally. Keep the translation as short as possible. +EDIT_MODE.MOUSE.NORMAL,Normal,Option to select default mouse movement behavior. Keep the translation as short as possible. +EDIT_MODE.MOUSE.ROTATE180,Rotated 180°,Option to rotate mouse movement by 180 degrees. Emphasize the part about rotation (no mirroring or flipping). Keep the translation as short as possible. +EDIT_MODE.MOUSE.ROTATE270,Rotated 270°,Option to rotate mouse movement by 270 degrees. Emphasize the part about rotation (no mirroring or flipping). Keep the translation as short as possible. +EDIT_MODE.MOUSE.ROTATE90,Rotated 90°,Option to rotate mouse movement by 90 degrees. Emphasize the part about rotation (no mirroring or flipping). Keep the translation as short as possible. +EDIT_MODE.MOUSE.TITLE,Mouse fixes,Title to adjust quirks in order to get desired mouse movement behavior +EDIT_MODE.MOUSE.WRONG_SCREEN_SELECTION_HELP,"If the cursor moves on a completely different screen, +the screens were likely selected wrong. See readme.",Tooltip to explain possible user error. +EDIT_MODE.MOVE_PRESS_AND_DRAG,Move (press & drag),Tooltip hinting to move the window by pressing and dragging with the pointer +EDIT_MODE.OPACITY,Opacity,Title. Adjust transparency of the window +EDIT_MODE.POS_ANCHORED,Anchored: Moves together with set. Default.,"Tooltip for a an option that changes movement/positioning behavior. “Anchored” was previously translated as “${DEFINITIONS.ANCHORED}”, “Set” was previously translated as “${DEFINITIONS.SET}”" +EDIT_MODE.POS_FLOATING,"Floating: Moves independently, recenters when shown.",Tooltip for a an option that changes movement/positioning behavior. “Floating” was previously translated as “${DEFINITIONS.FLOATING}” +EDIT_MODE.POS_HAND_L,Follow the left hand.,Tooltip for a an option that changes movement/positioning behavior. +EDIT_MODE.POS_HAND_R,Follow the right hand.,Tooltip for a an option that changes movement/positioning behavior. +EDIT_MODE.POS_HMD,Follow the HMD.,Tooltip for a an option that changes movement/positioning behavior. +EDIT_MODE.POS_STATIC,"Static: Not part of any set, no recenter.","Tooltip for a an option that changes movement/positioning behavior. “Static” was previously translated as “${DEFINITIONS.STATIC}”, “Set” was previously translated as “${DEFINITIONS.SET}”" +EDIT_MODE.POSITIONING,Positioning,Title for positioning modes for the window +EDIT_MODE.RESIZE_PRESS_AND_DRAG,Resize (press & drag),Tooltip on the resize button; resize overlay by pressing and dragging +EDIT_MODE.RESIZE_CORNER,Drag to resize,Tooltip when user is hovering the resize grip of a window +EDIT_MODE.STEREO_3D_MODE.ADJUST_MOUSE,Adjust mouse,Checkbox to adjust mouse movement for 3D mode +EDIT_MODE.STEREO_3D_MODE.FULL_FRAME,Full 3D,Checkbox to use full 3D frame +EDIT_MODE.STEREO_3D_MODE.FULL_FRAME_BAT,Full-BAT,Checkbox to use full frame BAT (bottom-left / top-right) 3D format +EDIT_MODE.STEREO_3D_MODE.FULL_FRAME_SBS,Full-SBS,Checkbox to use full frame SBS (side-by-side) 3D format +EDIT_MODE.STEREO_3D_MODE.FULL_FRAME_TAB,Full-TAB,Checkbox to use full frame TAB (top-bottom / left-right) 3D format +EDIT_MODE.STEREO_3D_MODE.SPLIT_BOTTOM_TOP,BOTTOM→TOP,"Side-by-side 3D mode selection. Bottom half shows to left eye, top half to right eye" +EDIT_MODE.STEREO_3D_MODE.SPLIT_LEFT_RIGHT,LEFT→RIGHT,"Side-by-side 3D mode selection. Left half shows to left eye, right half to right eye" +EDIT_MODE.STEREO_3D_MODE.SPLIT_RIGHT_LEFT,RIGHT→LEFT,"Side-by-side 3D mode selection. Right half shows to left eye, left half to right eye" +EDIT_MODE.STEREO_3D_MODE.SPLIT_TOP_BOTTOM,TOP→BOTTOM,"Side-by-side 3D mode selection. Top half shows to left eye, bottom half to right eye" +EDIT_MODE.STEREO_3D_MODE.TITLE,3D Stereo Mode,Title for “Stereo 3D display mode” section +ALTTAB.RELEASE_TO_FOCUS,Aim at an app and release Super to focus that app.,Instructions on how to control the task switcher. +ALTTAB.WHILE_AIMING,While aiming,Title of a section of key bindings that can be activated while aiming the laser. +ALTTAB.CLICK,VR pointer click,Key binding action that mimics a click with the VR laser pointer. +ALTTAB.GRABALL,Move entire set,Key binding action to grab and move the entire set. “Set” was previously translated as “${DEFINITIONS.SET}” +ALTTAB.GRAB,Move individual overlay,Key binding action to grab and move a single overlay. “Overlay” was previously translated as “{$DEFINITIONS.OVERLAY}” +ALTTAB.DASH,Toggle dashboard,Key binding action that toggles the dashboard. “Dashboard” was previously translated as “${DEFINITIONS.DASHBOARD}” +ALTTAB.EDIT,Toggle edit mode,Key binding action that toggles edit mode. “Edit mode” was previously translated as “${DEFINITIONS.EDIT_MODE}” +ALTTAB.SET,Switch set,Key binding action to switch between sets. “Set” was previously translated as “${DEFINITIONS.SET}” +ALTTAB.RECENTER,Show/hide/recenter,"Key binding action to show, hide, or recenter the current set. “Set” was previously translated as “${DEFINITIONS.SET}”" +ALTTAB.GENERAL_BINDS,General bindings,Title for key bindings that don’t need any specific criteria +ALTTAB.TOGGLE_CAPTURE,Give control back to desktop,Key binding action that releases exclusive input capture +ALTTAB.FOCUS_MODE,Focus mode (hold Super),"Key binding action to enter into a task-switcher kind of mode, like Alt-Tab." +ALTTAB.CLOSE,Close focused app,Key binding action to close the application that is being aimed at. +ALTTAB.MOUSE,Real mouse clicks & scroll also translate to VR pointer,Help text explaining to the user that clicks and scroll with their real (physical) mouse will act as if it was done using a VR controller. +GRAB.ADJUST_DISTANCE,Adjust distance,Key binding action to adjust distance of the window in 3D space (in a push/pull motion) +GRAB.ADJUST_SIZE,Adjust size,Key binding action to adjust size of the window +GRAB.GRABBING_ANCHORED,Anchored overlays move with the set. Separate a single window by grabbing it with the other hand while still grabbing the set.,"Help explanation. “Anchored” was previously translated as “${DEFINITIONS.ANCHORED}”, “Set” was previously translated as “${DEFINITIONS.SET}”" +GRAB.GRABBING_ANCHORED_EDIT,This overlay will stay anchored to the center marker.,Help text to explain the movement behavior of this window. “Center” was previously translated as “${ANCHOR.CENTER}” +GRAB.GRABBING_FLOATING,"This overlay is Floating and will stay in place, unless recentered.",Help text to explain the movement behavior of this window. “Floating” was previously translated as “${DEFINITIONS.FLOATING}” +GRAB.GRABBING_FOLLOW,This overlay will follow the device it is attached to.,Help text to explain the movement behavior of this window. +GRAB.GRABBING_STATIC,"This overlay is Static and will stay in place, ignoring recenter.",Help text to explain the movement behavior of this window. “Static” was previously translated as “${DEFINITIONS.STATIC}” +GRAB.GRABBING_WATCH,"To swap hands, move the watch in front and grab it with the other hand.",Help text to explain the user how to switch which hand the watch is on. “Watch” was previously translated as “${DEFINITIONS.WATCH}” +GRAB.UNRESTRICTED_MOVEMENT,Unrestricted movement,"Option that allows the user to move and rotate this window freely, in a raw manner, without assistance such as angle snapping." +SCREENCAST.PENDING,Please wait...,Title saying that the operation is not yet completed. +SCREENCAST.QUEUED,Waiting for a different overlay's screen cast pop-up to be approved.,Instructions asking the user to pay attention to a different screen cast pop-up. “Overlay” was previously translated as “${DEFINITIONS.OVERLAY}” +SCREENCAST.WAITING_FOR_USER_DESC,"Check your dekstop for a screen cast pop-up. +Select the following:",Instructions to the user. +SCREENCAST.WAITING_FOR_USER,Check your desktop for a screen cast pop-up.,Instructions to the user. +SCREENCAST.FAIL,Could not initialize screen cast source.,Error message on a window that normally displays screen casts. +TOAST.TITLE_SCREENCAST_FAIL,Could not start screen cast source!,Error message on a window that normally displays screen casts. +TOAST.CANNOT_ADD_SET,Cannot add set!,Error message telling the user the set could not be added. “Set” was previously translated as “${DEFINITIONS.SET}” +TOAST.CANNOT_REMOVE_SET,Cannot remove set!,Error message telling the user the set could not be removed. “Set” was previously translated as “${DEFINITIONS.SET}” +TOAST.DEFAULT_TITLE,Notification,Default title of notifications +TOAST.EMPTY_SET,Empty set!,Title of a pop-up when the user switches to an empty set. “Set” was previously translated as “${DEFINITIONS.SET}” +TOAST.ERROR,Error,Default title for error pop-ups +TOAST.FIXING_FLOOR_IN_X_SECS,Fixing floor in {SECONDS} second(s)...,A countdown pop-up for automatically adjusting floor height. Keep the {SECONDS} part intact as it’s a parameter. +TOAST.LAST_EXISTING_SET,This is the last existing set.,Notification body explaining that the set cannot be removed because this is the last existing set. “Set” was previously translated as “${DEFINITIONS.SET}” +TOAST.LETS_ADD_OVERLAYS,Let's add some overlays from the taskbar!,"Instructions prompting the user to add overlays. “Taskbar” was previously translated as “${DEFINITIONS.TASKBAR}”, “Overlay” was previously translated as “${DEFINITIONS.OVERLAY}”" +TOAST.MAXIMUM_SETS_REACHED,Maximum number of sets reached.,Notification body explaining that a new set could not be added because we’re already at the limit. “Set” was previously translated as “${DEFINITIONS.SET}” +TOAST.NO_KEYMAPS_CONFIGURED,No keyboard layouts configured,Title of notification +TOAST.NO_KEYMAPS_CONFIGURED_HELP,Check the wayvr.org on how to set up your keyboard layouts!,Body of notification +TOAST.NO_SET_SELECTED,No set is selected.,Notification body explaining that the operation could not be executed because the user has not selected a set. “Set” was previously translated as “${DEFINITIONS.SET}” +TOAST.ONE_CONTROLLER_ON_FLOOR,Place one controller on the floor!,Instructions to the user for automated floor calibration. +WATCH.ADD_NEW_SET,Add a new set,Button to add a new set. “Set” was previously translated as “${DEFINITIONS.SET}” +WATCH.CLEANUP_MIRRORS,"Remove mirrors that are +not currently visible",Button to remove mirrors. “Mirror” was previously translated as “${DEFINITIONS.MIRROR}” +WATCH.DASHBOARD,Dashboard,Button to toggle “${DEFINITIONS.DASHBOARD}” +WATCH.EDIT_MODE,Edit Mode,Button to toggle “${DEFINITIONS.EDIT_MODE}” +WATCH.FIX_FLOOR,Fix floor level,Tooltip for a button that adjusts the height of the VR environment based on the floor level. +WATCH.LONG_PRESS_TO_DELETE_SET,Hold to delete,Tooltip for a button that deletes a set. “Set” was previously translated as “${DEFINITIONS.SET}” +WATCH.RECENTER,Recenter playspace,Tooltip for a button that recenters the VR environment around the player. +WATCH.SWITCH_TO_SET,Switch to set,Tooltip for a button that switches to a different set. “Set” was previously translated as “${DEFINITIONS.SET}” +WATCH.TOGGLE_FOR_CURRENT_SET,Toggle for current set,Tooltip for a button that toggles the visibility of the current window in the current workspace. +WHISPER.TRANSCRIBE,Press and hold to transcribe text,Tooltip for a button that needs to be held while transcribing text. +WHISPER.PASTE,Copy transcription to clipboard,Tooltip for a button that copies the transcribed text to clipboard. +WHISPER.PASTE_AND_GO,Copy transcription and send Ctrl-V to focused app,Tooltip for a button that copies the transcribed text to clipboard and pastes it to the focused app using an emulated Ctrl-V sequence. +WHISPER.SEND_OSC,Send transcription to OSC chatbox,Tooltip for a button that sends the transcribed text via OSC. +WHISPER.UNLOAD_AND_CLOSE,Unload model and close,Unload AI model from VRAM and close the transcription window +WHISPER.MODEL_NOT_DOWNLOADED,Speech-to-text not set up!,Error message warning the user about an incomplete setup. +WHISPER.DOWNLOAD_GUIDANCE,"Set up speech-to-text under settings, features!",Help message prompting the user to finish setup in the ${DEFINITIONS.FEATURES} tab of ${DEFINITIONS.SETTINGS} +WHISPER.INITIAL_TEXT,Press and hold the mic button to start transcribing...,Help message prompting the user to hold down the button with the microphone icon. +WHISPER.INIT_ERROR,Error while starting Whisper engine,Error message. +WHISPER.ENTER_KEY,Enter key,Button to send an Enter key on the emulated keyboard diff --git a/wayvr/src/assets/lang/en.json b/wayvr/src/assets/lang/en.json index 19d9d05f..84f19506 100644 --- a/wayvr/src/assets/lang/en.json +++ b/wayvr/src/assets/lang/en.json @@ -1,71 +1,5 @@ { - "ANCHOR": { - "CENTER": "Center" - }, - "BAR": { - "ADD_MIRROR": "Add a new mirror overlay", - "ADD_NEW_SET": "Add new set", - "ADD_PASSTHRU": "Add a passthrough window", - "CLOSE_APP": "Close app", - "CLOSE_OVERLAY": "Close overlay", - "DELETE_CURRENT_SET": "Delete current set", - "EDIT_MODE_TOGGLE": "Toggle edit mode", - "FORCE_CLOSE_APP": "Force close app", - "HANDSFREE": { - "EYE_ONLY": "Eye laser", - "EYE_TRACKING": "Eye + pinch", - "HMD": "HMD + pinch", - "HMD_ONLY": "HMD laser", - "NONE": "Off", - "TITLE": "Handsfree mode" - }, - "RELOAD_FROM_DISK": "Reload XML from disk", - "RESET_POSITION": "Reset position", - "TOGGLE_VISIBILITY": "Toggle visibility" - }, - "DEFAULT": "Default", - "DISABLED": "Disabled", - "DONE": "Done", "EDIT_MODE": { - "ADJUST_CURVATURE": "Adjust curvature", - "ALIGN_TO_HMD": "Align to HMD", - "ALPHA_BLEND_MODE": "Alpha blend mode", - "ANGLE_FADE": "Angle fade", - "ANGLE_FADE_HELP": "Fade when not facing HMD", - "BLENDING_ADDITIVE": "Additive blending", - "BLOCK_INPUT": "Block game input", - "CURVATURE": "Curvature", - "DELETE": "Long press to remove from current set", - "DISABLE_GRAB": "Disable grab", - "GLOBAL": "Always visible", - "HINT_POINT_WINDOW": "Point at a window to change its parameters.\nOnce done, leave edit mode using the button on the right.", - "INTERPOLATION": "Interpolation", - "KEYBOARD": "Keyboard", - "LEAVE": "Leave edit mode", - "LOCK_INTERACTION": "Lock interaction", - "MOUSE": { - "FLIP180": "Flipped 180°", - "FLIP270": "Flipped 270°", - "FLIP90": "Flipped 90°", - "FLIPPED": "Flipped", - "NORMAL": "Normal", - "ROTATE180": "Rotated 180°", - "ROTATE270": "Rotated 270°", - "ROTATE90": "Rotated 90°", - "TITLE": "Mouse fixes", - "WRONG_SCREEN_SELECTION_HELP": "If the cursor moves on a completely different screen,\nthe screens were likely selected wrong. See readme." - }, - "MOVE_PRESS_AND_DRAG": "Move (press & drag)", - "OPACITY": "Opacity", - "POS_ANCHORED": "Anchored: Moves with center marker. Default.", - "POS_FLOATING": "Floating: Moves independently, recenters when shown.", - "POS_HAND_L": "Follow the left hand.", - "POS_HAND_R": "Follow the right hand.", - "POS_HMD": "Follow the HMD.", - "POS_STATIC": "Static: Stays in place relative to world.", - "POSITIONING": "Positioning", - "RESIZE_PRESS_AND_DRAG": "Resize (press & drag)", - "RESIZE_CORNER": "Drag to resize", "STEREO_3D_MODE": { "ADJUST_MOUSE": "Adjust mouse", "FULL_FRAME": "Full 3D", @@ -77,6 +11,18 @@ "SPLIT_RIGHT_LEFT": "RIGHT→LEFT", "SPLIT_TOP_BOTTOM": "TOP→BOTTOM", "TITLE": "3D Stereo Mode" + }, + "MOUSE": { + "FLIP180": "Flipped 180°", + "FLIP270": "Flipped 270°", + "FLIP90": "Flipped 90°", + "FLIPPED": "Flipped", + "NORMAL": "Normal", + "ROTATE180": "Rotated 180°", + "ROTATE270": "Rotated 270°", + "ROTATE90": "Rotated 90°", + "TITLE": "Mouse fixes", + "WRONG_SCREEN_SELECTION_HELP": "If the cursor moves on a completely different screen,\nthe screens were likely selected wrong. See readme." } }, "ALTTAB": { diff --git a/wayvr/src/assets/lang/es.json b/wayvr/src/assets/lang/es.json index 6261fcf3..5492c5dd 100644 --- a/wayvr/src/assets/lang/es.json +++ b/wayvr/src/assets/lang/es.json @@ -1,62 +1,5 @@ { - "ANCHOR": { - "CENTER": "Centro" - }, - "BAR": { - "ADD_MIRROR": "Agregar una nueva superposición de espejo", - "EDIT_MODE_TOGGLE": "Activar/desactivar el modo de edición", - "ADD_NEW_SET": "Añadir nuevo set", - "DELETE_CURRENT_SET": "Eliminar set actual", - "TOGGLE_VISIBILITY": "Alternar visibilidad", - "RESET_POSITION": "Restablecer posición", - "RELOAD_FROM_DISK": "Volver a cargar XML desde el disco", - "CLOSE_APP": "Cerrar aplicación", - "FORCE_CLOSE_APP": "Forzar cierre de la aplicación", - "HANDSFREE": { - "TITLE": "Modo manos libres", - "NONE": "Desactivado", - "HMD": "HMD + pellizco", - "EYE_TRACKING": "Ojo + pellizco", - "EYE_ONLY": "Láser ocular", - "HMD_ONLY": "Láser del HMD" - }, - "ADD_PASSTHRU": "Añadir una ventana de passthrough", - "CLOSE_OVERLAY": "Cerrar superposición" - }, - "WATCH": { - "RECENTER": "Recentrar el área de juego", - "FIX_FLOOR": "Ajustar la altura del piso", - "EDIT_MODE_EXPLANATION": "Ahora las superposiciones se pueden mover y ajustar individualmente.\nAlternar superposiciones para el conjunto actual:", - "DASHBOARD": "Panel de control", - "EDIT_MODE": "Modo de edición", - "ADD_NEW_SET": "Añadir un nuevo conjunto", - "SWITCH_TO_SET": "Cambiar al conjunto", - "TOGGLE_FOR_CURRENT_SET": "Alternar visibilidad en el conjunto actual", - "LONG_PRESS_TO_DELETE_SET": "Mantén presionado para eliminar el conjunto", - "CLEANUP_MIRRORS": "Eliminar los espejos que\nno son actualmente visibles" - }, "EDIT_MODE": { - "ADJUST_CURVATURE": "Ajustar curvatura", - "ALPHA_BLEND_MODE": "Modo de mezcla alfa", - "BLENDING_ADDITIVE": "Aditivo", - "CURVATURE": "Curvatura", - "DELETE": "Eliminar", - "HINT_POINT_WINDOW": "Pulsa sobre una ventana para cambiar sus parámetros.\nUna vez terminado, sal del modo de edición usando el botón de la derecha.", - "LEAVE": "Salir del modo edición", - "LOCK_INTERACTION": "Bloquear interacción", - "DISABLE_GRAB": "Desactivar agarre", - "MOVE_PRESS_AND_DRAG": "Mover (presionar y arrastrar)", - "OPACITY": "Opacidad", - "POSITIONING": "Posicionamiento", - "RESIZE_PRESS_AND_DRAG": "Redimensionar (presionar y arrastrar)", - "POS_ANCHORED": "Anclado: Se mueve junto con el resto del conjunto. Predeterminado.", - "POS_FLOATING": "Flotante: Permanece en su lugar, se recentra cuando se muestra.", - "POS_HMD": "Seguir el HMD.", - "POS_HAND_L": "Seguir la mano izquierda.", - "POS_HAND_R": "Seguir la mano derecha.", - "INTERPOLATION": "Interpolación", - "KEYBOARD": "Teclado", - "STEREO_3D_MODE_A": {}, "STEREO_3D_MODE": { "TITLE": "Modo Estéreo 3D", "SPLIT_LEFT_RIGHT": "IZQ→DER", @@ -69,8 +12,6 @@ "FULL_FRAME_BAT": "Full-BAT", "ADJUST_MOUSE": "Ajustar ratón" }, - "STEREO_3D_MODE_": {}, - "ALIGN_TO_HMD": "Alinear al HMD", "MOUSE": { "TITLE": "Correcciones del ratón", "WRONG_SCREEN_SELECTION_HELP": "Si el cursor se mueve en una pantalla completamente diferente,\nes probable que las pantallas se hayan seleccionado incorrectamente. Consulta el archivo readme.", @@ -83,73 +24,146 @@ "ROTATE180": "Rotado 180°", "ROTATE270": "Rotado 270°" }, - "GLOBAL": "Siempre visible", - "ANGLE_FADE": "Atenuación angular", - "ANGLE_FADE_HELP": "Desvanecer cuando no se mira el HMD", + "ADJUST_CURVATURE": "Ajustar curvatura", + "ALIGN_TO_HMD": "Alinear con el HMD", + "ALPHA_BLEND_MODE": "Modo de mezcla alfa", + "ANGLE_FADE": "Desvanecimiento por ángulo", + "ANGLE_FADE_HELP": "Desvanecer al no mirar el HMD", + "BLENDING_ADDITIVE": "Mezcla aditiva", "BLOCK_INPUT": "Bloquear entrada del juego", - "RESIZE_CORNER": "Arrastra para cambiar el tamaño" + "CURVATURE": "Curvatura", + "DELETE": "Mantén presionado para eliminar del set actual", + "DISABLE_GRAB": "Desactivar agarre", + "GLOBAL": "Siempre visible", + "HINT_POINT_WINDOW": "Apunta a una ventana para cambiar sus parámetros.\nCuando termines, sal del modo edición usando el botón de la derecha.", + "INTERPOLATION": "Interpolación", + "KEYBOARD": "Teclado", + "LEAVE": "Salir del modo edición", + "LOCK_INTERACTION": "Bloquear interacción", + "MOVE_PRESS_AND_DRAG": "Mover (presiona y arrastra)", + "OPACITY": "Opacidad", + "POS_ANCHORED": "Anclado: Se mueve junto con el set. Por defecto.", + "POS_FLOATING": "Flotante: Se mueve independientemente, se recentra al mostrarse.", + "POS_HAND_L": "Sigue la mano izquierda.", + "POS_HAND_R": "Sigue la mano derecha.", + "POS_HMD": "Sigue el HMD.", + "POS_STATIC": "Estático: No pertenece a ningún set, sin recentrar.", + "POSITIONING": "Posicionamiento", + "RESIZE_PRESS_AND_DRAG": "Redimensionar (presiona y arrastra)", + "RESIZE_CORNER": "Arrastrar para redimensionar" + }, + "DEFINITIONS": { + "ANCHORED": "Anclado", + "FLOATING": "Flotante", + "STATIC": "Estático", + "SET": "Set", + "WATCH": "Reloj", + "DASHBOARD": "Panel de control", + "EDIT_MODE": "Modo edición", + "MIRROR": "Espejo", + "SETTINGS": "Ajustes", + "KEYBOARD": "Teclado", + "TASKBAR": "Barra de tareas", + "FEATURES": "Funciones", + "OVERLAY": "Overlay" + }, + "ANCHOR": { + "CENTER": "Centro" + }, + "BAR": { + "ADD_MIRROR": "Añadir nuevo overlay de espejo", + "ADD_NEW_SET": "Añadir nuevo set", + "CLOSE_APP": "Cerrar aplicación", + "CLOSE_OVERLAY": "Cerrar superposición", + "DELETE_CURRENT_SET": "Eliminar set actual", + "EDIT_MODE_TOGGLE": "Alternar modo edición", + "FORCE_CLOSE_APP": "Forzar cierre de aplicación", + "HANDSFREE": { + "EYE_ONLY": "Láser ocular", + "EYE_TRACKING": "Vista + pinza", + "HMD": "HMD + pellizco", + "HMD_ONLY": "Láser del HMD", + "NONE": "Desactivado", + "TITLE": "Modo manos libres" + }, + "RELOAD_FROM_DISK": "Recargar XML desde el disco", + "RESET_POSITION": "Reiniciar posición", + "TOGGLE_VISIBILITY": "Alternar visibilidad" }, - "DISABLED": "Deshabilitado", "DEFAULT": "Por defecto", - "GRAB": { - "ADJUST_DISTANCE": "Ajustar distancia", - "ADJUST_SIZE": "Ajustar tamaño", - "UNRESTRICTED_MOVEMENT": "Movimiento sin restricciones", - "GRABBING_WATCH": "Para intercambiar las manos, mueve el reloj al frente y agrárralo con la otra mano.", - "GRABBING_STATIC": "Esta superposición es estática y permanecerá en su lugar, ignorando el recentrado.", - "GRABBING_ANCHORED": "Las superposiciones ancladas se mueven todas juntas. Separa una ventana individual agarrándola con la otra mano mientras aún sujetas el ancla.", - "GRABBING_ANCHORED_EDIT": "Esta superposición permanecerá anclada al marcador central.", - "GRABBING_FLOATING": "Esta superposición es flotante y permanecerá en su lugar a menos que se recentre.", - "GRABBING_FOLLOW": "Esta superposición seguirá el dispositivo al que está adjunta." - }, - "TOAST": { - "DEFAULT_TITLE": "Notificación", - "ERROR": "Error", - "CANNOT_REMOVE_SET": "¡No se puede eliminar el conjunto!", - "NO_SET_SELECTED": "No se ha seleccionado ningún conjunto.", - "LAST_EXISTING_SET": "Este es el último conjunto existente.", - "EMPTY_SET": "¡Conjunto vacío!", - "ONE_CONTROLLER_ON_FLOOR": "¡Coloca un mando en el suelo!", - "CANNOT_ADD_SET": "¡No se puede agregar el conjunto!", - "MAXIMUM_SETS_REACHED": "Se ha alcanzado el número máximo de sets.", - "FIXING_FLOOR_IN_X_SECS": "Corrigiendo el suelo en {SECONDS} segundo(s)...", - "TITLE_SCREENCAST_FAIL": "¡No se pudo iniciar la fuente de transmisión de pantalla!", - "LETS_ADD_OVERLAYS": "¡Añadamos algunas superposiciones desde la barra de tareas!" - }, - "DONE": "Hecho", - "WHISPER": { - "TRANSCRIBE": "Mantén presionado para transcribir texto", - "PASTE": "Copiar transcripción al portapapeles", - "PASTE_AND_GO": "Copiar transcripción y enviar Ctrl-V a la aplicación enfocada", - "SEND_OSC": "Enviar transcripción al chatbox de OSC", - "UNLOAD_AND_CLOSE": "Descargar modelo y cerrar", - "MODEL_NOT_DOWNLOADED": "¡El dictado por voz no está configurado!", - "DOWNLOAD_GUIDANCE": "¡Configura la conversión de voz a texto en ajustes, características!", - "INITIAL_TEXT": "Mantén presionado el botón del micrófono para comenzar a transcribir...", - "INIT_ERROR": "Error al iniciar el motor de Whisper", - "ENTER_KEY": "Tecla Enter" - }, - "SCREENCAST": { - "PENDING": "Por favor, espere...", - "QUEUED": "Esperando a que se apruebe la ventana emergente de la transmisión de pantalla de otra superposición.", - "WAITING_FOR_USER_DESC": "Busca la ventana emergente de transmisión de pantalla en tu escritorio.\nSelecciona lo siguiente:", - "WAITING_FOR_USER": "Revisa tu escritorio para ver la ventana emergente de transmisión de pantalla.", - "FAIL": "No se pudo inicializar la fuente de transmisión de pantalla." - }, + "DISABLED": "Desactivado", + "DONE": "Listo", "ALTTAB": { - "RELEASE_TO_FOCUS": "Apunta a una aplicación y suelta Super para enfocar esa aplicación.", - "WHILE_AIMING": "Mientras se apunta", - "CLICK": "Clic del puntero de VR", + "RELEASE_TO_FOCUS": "Apunta a una app y suelta Super para seleccionarla.", + "WHILE_AIMING": "Mientras apuntas", + "CLICK": "Clic del puntero VR", "GRABALL": "Mover set completo", - "GRAB": "Mover superposición individual", - "DASH": "Alternar tablero", - "EDIT": "Alternar modo de edición", + "GRAB": "Mover {$DEFINITIONS.OVERLAY} individual", + "DASH": "Alternar panel de control", + "EDIT": "Alternar modo edición", "SET": "Cambiar set", "RECENTER": "Mostrar/ocultar/recentrar", "GENERAL_BINDS": "Asignaciones generales", "TOGGLE_CAPTURE": "Devolver el control al escritorio", - "FOCUS_MODE": "Modo de enfoque (mantener Super)", - "CLOSE": "Cerrar aplicación enfocada", - "MOUSE": "Los clics y el desplazamiento del ratón real también se traducen al puntero de VR" + "FOCUS_MODE": "Modo enfoque (mantén Super)", + "CLOSE": "Cerrar app enfocada", + "MOUSE": "Los clics y el scroll del ratón real también actúan como el puntero de VR" + }, + "GRAB": { + "ADJUST_DISTANCE": "Ajustar distancia", + "ADJUST_SIZE": "Ajustar tamaño", + "GRABBING_ANCHORED": "Los overlays anclados se mueven con el set. Separa una sola ventana agarrándola con la otra mano mientras sigues sujetando el set.", + "GRABBING_ANCHORED_EDIT": "Este overlay permanecerá anclado al marcador del centro.", + "GRABBING_FLOATING": "Este overlay es flotante y permanecerá en su lugar, a menos que se recentre.", + "GRABBING_FOLLOW": "Este overlay seguirá el dispositivo al que esté unido.", + "GRABBING_STATIC": "Este overlay es estático y se mantendrá en su lugar, ignorando el recentrado.", + "GRABBING_WATCH": "Para cambiar de mano, coloca el reloj al frente y agárralo con la otra mano.", + "UNRESTRICTED_MOVEMENT": "Movimiento sin restricciones" + }, + "SCREENCAST": { + "PENDING": "Por favor, espera...", + "QUEUED": "Esperando la aprobación de la ventana emergente de transmisión de pantalla de otro overlay.", + "WAITING_FOR_USER_DESC": "Revisa tu escritorio para ver la ventana emergente de transmisión de pantalla.\nSelecciona lo siguiente:", + "WAITING_FOR_USER": "Revisa tu escritorio para ver la ventana emergente de transmisión de pantalla.", + "FAIL": "No se pudo inicializar la fuente de la transmisión de pantalla." + }, + "TOAST": { + "TITLE_SCREENCAST_FAIL": "¡No se pudo iniciar la fuente de transmisión de pantalla!", + "CANNOT_ADD_SET": "¡No se pudo añadir el set!", + "CANNOT_REMOVE_SET": "¡No se puede eliminar el set!", + "DEFAULT_TITLE": "Notificación", + "EMPTY_SET": "¡Set vacío!", + "ERROR": "Error", + "FIXING_FLOOR_IN_X_SECS": "Ajustando suelo en {SECONDS} segundo(s)...", + "LAST_EXISTING_SET": "Este es el último set existente.", + "LETS_ADD_OVERLAYS": "¡Añade algunos overlays desde la barra de tareas!", + "MAXIMUM_SETS_REACHED": "Número máximo de sets alcanzado.", + "NO_SET_SELECTED": "No hay ningún set seleccionado.", + "ONE_CONTROLLER_ON_FLOOR": "¡Coloca un controlador en el suelo!", + "NO_KEYMAPS_CONFIGURED": "Sin distribuciones de teclado configuradas", + "NO_KEYMAPS_CONFIGURED_HELP": "¡Consulta wayvr.org para configurar tus diseños de teclado!" + }, + "WATCH": { + "ADD_NEW_SET": "Añadir un set nuevo", + "CLEANUP_MIRRORS": "Eliminar espejos que\nno sean visibles", + "DASHBOARD": "Panel de control", + "EDIT_MODE": "Modo edición", + "FIX_FLOOR": "Ajustar nivel del suelo", + "LONG_PRESS_TO_DELETE_SET": "Mantén presionado para borrar", + "RECENTER": "Recentrar espacio de juego", + "SWITCH_TO_SET": "Cambiar a set", + "TOGGLE_FOR_CURRENT_SET": "Alternar set actual" + }, + "WHISPER": { + "TRANSCRIBE": "Mantén presionado para transcribir texto", + "PASTE": "Copiar transcripción al portapapeles", + "PASTE_AND_GO": "Copiar transcripción y enviar Ctrl-V a la aplicación enfocada", + "SEND_OSC": "Enviar transcripción al chat OSC", + "UNLOAD_AND_CLOSE": "Descargar modelo y cerrar", + "MODEL_NOT_DOWNLOADED": "¡El dictado por voz no está configurado!", + "DOWNLOAD_GUIDANCE": "¡Configura el dictado en Ajustes > Funciones!", + "INITIAL_TEXT": "Mantén pulsado el botón del micro para empezar a transcribir...", + "INIT_ERROR": "Error al iniciar el motor Whisper", + "ENTER_KEY": "Tecla Enter" } -} +} \ No newline at end of file diff --git a/wayvr/src/assets/lang/it.json b/wayvr/src/assets/lang/it.json index 246d5839..c5755f59 100644 --- a/wayvr/src/assets/lang/it.json +++ b/wayvr/src/assets/lang/it.json @@ -1,52 +1,5 @@ { - "ANCHOR": { - "CENTER": "Centro" - }, - "BAR": { - "ADD_MIRROR": "Aggiungi un nuovo overlay specchio", - "EDIT_MODE_TOGGLE": "Attiva/disattiva modalità modifica", - "ADD_NEW_SET": "Aggiungi nuovo set", - "DELETE_CURRENT_SET": "Elimina set attuale", - "TOGGLE_VISIBILITY": "Alterna visibilità", - "RESET_POSITION": "Ripristina posizione", - "RELOAD_FROM_DISK": "Ricarica XML dal disco", - "FORCE_CLOSE_APP": "Chiudi forzatamente l'app", - "HANDSFREE": { - "TITLE": "Modalità a mani libere", - "NONE": "Disattivato", - "HMD": "HMD + pizzico", - "EYE_TRACKING": "Occhio + pizzico", - "EYE_ONLY": "Laser oculare", - "HMD_ONLY": "Laser HMD" - }, - "ADD_PASSTHRU": "Aggiungi una finestra passthrough", - "CLOSE_APP": "Chiudi app", - "CLOSE_OVERLAY": "Chiudi overlay" - }, - "DEFAULT": "Predefinito", - "DISABLED": "Disabilitato", "EDIT_MODE": { - "ADJUST_CURVATURE": "Regola curvatura", - "ALPHA_BLEND_MODE": "Modalità di fusione Alpha", - "BLENDING_ADDITIVE": "Blending additivo", - "CURVATURE": "Curvatura", - "DELETE": "Tenere premuto per rimuovere dal set corrente", - "DISABLE_GRAB": "Disabilita l'afferra", - "HINT_POINT_WINDOW": "Punta a una finestra per modificarne i parametri.\nUna volta fatto, esci dalla modalità di modifica usando il pulsante a destra.", - "INTERPOLATION": "Interpolazione", - "ALIGN_TO_HMD": "Allinea all'HMD", - "KEYBOARD": "Tastiera", - "LEAVE": "Esci dalla modalità di modifica", - "LOCK_INTERACTION": "Blocca interazione", - "MOVE_PRESS_AND_DRAG": "Muovi (premi e trascina)", - "OPACITY": "Opacità", - "POS_ANCHORED": "Ancorato: si muove con il marker centrale. Predefinito.", - "POS_FLOATING": "Galleggiante: si muove indipendentemente, si recentra quando viene visualizzato.", - "POS_HAND_L": "Segui la mano sinistra.", - "POS_HAND_R": "Segui la mano destra.", - "POS_HMD": "Segui l'HMD.", - "POSITIONING": "Posizionamento", - "RESIZE_PRESS_AND_DRAG": "Ridimensiona (premi e trascina)", "STEREO_3D_MODE": { "SPLIT_BOTTOM_TOP": "DAL BASSO→IN ALTO", "SPLIT_LEFT_RIGHT": "SINISTRA→DESTRA", @@ -71,83 +24,146 @@ "FLIP180": "Ruotato di 180°", "FLIP270": "Ruotato di 270°" }, - "GLOBAL": "Sempre visibile", + "ADJUST_CURVATURE": "Regola curvatura", + "ALIGN_TO_HMD": "Allinea al visore", + "ALPHA_BLEND_MODE": "Modalità Alpha blend", "ANGLE_FADE": "Dissolvenza angolare", - "ANGLE_FADE_HELP": "Sfumatura quando non si guarda l'HMD", - "BLOCK_INPUT": "Blocca l'input del gioco", + "ANGLE_FADE_HELP": "Dissolvenza quando non guardi il visore", + "BLENDING_ADDITIVE": "Blending additivo", + "BLOCK_INPUT": "Blocca input gioco", + "CURVATURE": "Curvatura", + "DELETE": "Tieni premuto per rimuovere dal set attuale", + "DISABLE_GRAB": "Disattiva presa", + "GLOBAL": "Sempre visibile", + "HINT_POINT_WINDOW": "Punta una finestra per cambiarne i parametri.\nAl termine, esci dalla modalità modifica usando il pulsante a destra.", + "INTERPOLATION": "Interpolazione", + "KEYBOARD": "Tastiera", + "LEAVE": "Esci dalla modalità modifica", + "LOCK_INTERACTION": "Blocca interazione", + "MOVE_PRESS_AND_DRAG": "Sposta (premi e trascina)", + "OPACITY": "Opacità", + "POS_ANCHORED": "Ancorato: Si muove insieme al set. Predefinito.", + "POS_FLOATING": "Fluttuante: si muove indipendentemente, si ricentra quando appare.", + "POS_HAND_L": "Segui la mano sinistra.", + "POS_HAND_R": "Segui la mano destra.", + "POS_HMD": "Segue l'HMD.", + "POS_STATIC": "Statico: non fa parte di alcun set, nessun ricentramento.", + "POSITIONING": "Posizionamento", + "RESIZE_PRESS_AND_DRAG": "Ridimensiona (premi e trascina)", "RESIZE_CORNER": "Trascina per ridimensionare" }, - "GRAB": { - "ADJUST_DISTANCE": "Regola la distanza", - "ADJUST_SIZE": "Regola dimensione", - "UNRESTRICTED_MOVEMENT": "Movimento libero", - "GRABBING_WATCH": "Per cambiare mano, sposta il watch davanti a te e afferralo con l'altra mano.", - "GRABBING_STATIC": "Questo overlay è Statico e rimarrà in posizione, ignorando il recenter.", - "GRABBING_ANCHORED": "Gli overlay ancorati si muovono tutti insieme. Separa una singola finestra afferrandola con l'altra mano mentre tieni ancora l'ancora.", - "GRABBING_ANCHORED_EDIT": "Questo overlay rimarrà ancorato al marcatore centrale.", - "GRABBING_FLOATING": "Questo overlay è mobile e rimarrà in posizione, a meno che non venga recentrato.", - "GRABBING_FOLLOW": "Questo overlay seguirà il dispositivo a cui è collegato." - }, - "TOAST": { - "DEFAULT_TITLE": "Notifica", - "ERROR": "Errore", - "CANNOT_ADD_SET": "Impossibile aggiungere il set!", - "MAXIMUM_SETS_REACHED": "Numero massimo di set raggiunto.", - "CANNOT_REMOVE_SET": "Impossibile rimuovere il set!", - "NO_SET_SELECTED": "Nessun set è selezionato.", - "LAST_EXISTING_SET": "Questo è l'ultimo set esistente.", - "EMPTY_SET": "Set vuoto!", - "ONE_CONTROLLER_ON_FLOOR": "Posiziona un controller a terra!", - "FIXING_FLOOR_IN_X_SECS": "Correzione del pavimento in {SECONDS} secondo/i...", - "TITLE_SCREENCAST_FAIL": "Impossibile avviare la sorgente dello screen cast!", - "LETS_ADD_OVERLAYS": "Aggiungiamo alcuni overlay dalla barra delle applicazioni!" - }, - "WATCH": { - "ADD_NEW_SET": "Aggiungi un nuovo set", - "CLEANUP_MIRRORS": "Rimuovi gli specchi che\nnon sono attualmente visibili", - "DASHBOARD": "Pannello di controllo", + "DEFINITIONS": { + "ANCHORED": "Ancorato", + "FLOATING": "Fluttuante", + "STATIC": "Statico", + "SET": "Set", + "WATCH": "Orologio", + "DASHBOARD": "Dashboard", "EDIT_MODE": "Modalità modifica", - "EDIT_MODE_EXPLANATION": "Gli overlay possono ora essere spostati e regolati individualmente.\nControlla quali overlay sono visibili in questo set:", - "FIX_FLOOR": "Fissa il livello del pavimento", - "LONG_PRESS_TO_DELETE_SET": "Tenere premuto per eliminare", - "RECENTER": "Recentra l'area di gioco", - "SWITCH_TO_SET": "Passa a set", - "TOGGLE_FOR_CURRENT_SET": "Attiva/disattiva per il set corrente" + "MIRROR": "Specchio", + "SETTINGS": "Impostazioni", + "KEYBOARD": "Tastiera", + "TASKBAR": "Barra delle applicazioni", + "FEATURES": "Funzionalità", + "OVERLAY": "Overlay" }, - "DONE": "Fatto", - "WHISPER": { - "TRANSCRIBE": "Tieni premuto per trascrivere il testo", - "PASTE": "Copia trascrizione negli appunti", - "PASTE_AND_GO": "Copia trascrizione e invia Ctrl-V all'app a fuoco", - "SEND_OSC": "Invia trascrizione alla chatbox OSC", - "UNLOAD_AND_CLOSE": "Scarica modello e chiudi", - "MODEL_NOT_DOWNLOADED": "Speech-to-text non configurato!", - "DOWNLOAD_GUIDANCE": "Configura il riconoscimento vocale in impostazioni, funzionalità!", - "INITIAL_TEXT": "Tieni premuto il tasto del microfono per iniziare la trascrizione...", - "INIT_ERROR": "Errore durante l'avvio del motore Whisper", - "ENTER_KEY": "Tasto Invio" + "ANCHOR": { + "CENTER": "Centro" }, - "SCREENCAST": { - "PENDING": "Attendi prego...", - "QUEUED": "In attesa dell'approvazione del pop-up di screen cast di un altro overlay.", - "WAITING_FOR_USER_DESC": "Controlla il desktop per un pop-up di condivisione schermo.\nSeleziona quanto segue:", - "WAITING_FOR_USER": "Controlla il desktop per un pop-up di condivisione schermo.", - "FAIL": "Impossibile inizializzare la sorgente di trasmissione dello schermo." + "BAR": { + "ADD_MIRROR": "Aggiungi un nuovo overlay specchio", + "ADD_NEW_SET": "Aggiungi nuovo set", + "CLOSE_APP": "Chiudi app", + "CLOSE_OVERLAY": "Chiudi overlay", + "DELETE_CURRENT_SET": "Elimina set corrente", + "EDIT_MODE_TOGGLE": "Attiva/disattiva modalità modifica", + "FORCE_CLOSE_APP": "Forza chiusura app", + "HANDSFREE": { + "EYE_ONLY": "Laser oculare", + "EYE_TRACKING": "Sguardo + pinch", + "HMD": "HMD + pinch", + "HMD_ONLY": "Laser HMD", + "NONE": "Disattivo", + "TITLE": "Modalità mani libere" + }, + "RELOAD_FROM_DISK": "Ricarica XML da disco", + "RESET_POSITION": "Ripristina posizione", + "TOGGLE_VISIBILITY": "Attiva/disattiva visibilità" }, + "DEFAULT": "Predefinito", + "DISABLED": "Disabilitato", + "DONE": "Completato", "ALTTAB": { - "RELEASE_TO_FOCUS": "Mira a un'app e rilascia il tasto Super per focalizzare l'app.", - "WHILE_AIMING": "Mentre si mira", - "CLICK": "Click del puntatore VR", + "RELEASE_TO_FOCUS": "Mira a un'app e rilascia Super per metterla a fuoco.", + "WHILE_AIMING": "Mentre punti", + "CLICK": "Clic puntatore VR", "GRABALL": "Sposta l'intero set", - "GRAB": "Sposta overlay singolo", + "GRAB": "Sposta singolo overlay", "DASH": "Attiva/disattiva dashboard", "EDIT": "Attiva/disattiva modalità modifica", "SET": "Cambia set", "RECENTER": "Mostra/nascondi/ricentra", - "GENERAL_BINDS": "Binding generali", - "TOGGLE_CAPTURE": "Restituisci il controllo al desktop", + "GENERAL_BINDS": "Tasti generali", + "TOGGLE_CAPTURE": "Rendi il controllo al desktop", "FOCUS_MODE": "Modalità focus (tieni premuto Super)", - "CLOSE": "Chiudi l'app focalizzata", - "MOUSE": "I clic e lo scorrimento del mouse reale vengono tradotti anche nel puntatore VR" + "CLOSE": "Chiudi app selezionata", + "MOUSE": "I clic e lo scorrimento del mouse reale influenzano anche il puntatore VR" + }, + "GRAB": { + "ADJUST_DISTANCE": "Regola distanza", + "ADJUST_SIZE": "Regola dimensione", + "GRABBING_ANCHORED": "Gli overlay ancorati si muovono con il set. Separa una singola finestra afferrandola con l'altra mano mentre tieni ancora il set.", + "GRABBING_ANCHORED_EDIT": "Questo overlay rimarrà ancorato al centro.", + "GRABBING_FLOATING": "Questo overlay è fluttuante e rimarrà in posizione, a meno che non venga ricentrato.", + "GRABBING_FOLLOW": "Questo overlay seguirà il dispositivo a cui è collegato.", + "GRABBING_STATIC": "Questo overlay è statico e rimarrà in posizione, ignorando il ricentramento.", + "GRABBING_WATCH": "Per cambiare mano, sposta l'orologio davanti a te e afferralo con l'altra mano.", + "UNRESTRICTED_MOVEMENT": "Movimento libero" + }, + "SCREENCAST": { + "PENDING": "Attendere...", + "QUEUED": "In attesa dell'approvazione del pop-up di screen cast di un altro overlay.", + "WAITING_FOR_USER_DESC": "Controlla sul desktop se è apparso il pop-up per il mirroring dello schermo.\nSeleziona quanto segue:", + "WAITING_FOR_USER": "Controlla il desktop per il pop-up di mirroring dello schermo.", + "FAIL": "Impossibile inizializzare la sorgente del mirroring." + }, + "TOAST": { + "TITLE_SCREENCAST_FAIL": "Impossibile avviare la sorgente di mirroring!", + "CANNOT_ADD_SET": "Impossibile aggiungere il set!", + "CANNOT_REMOVE_SET": "Impossibile rimuovere il set!", + "DEFAULT_TITLE": "Notifica", + "EMPTY_SET": "Set vuoto!", + "ERROR": "Errore", + "FIXING_FLOOR_IN_X_SECS": "Regolazione pavimento tra {SECONDS} secondi...", + "LAST_EXISTING_SET": "Questo è l'ultimo set esistente.", + "LETS_ADD_OVERLAYS": "Aggiungi alcuni overlay dalla barra delle applicazioni!", + "MAXIMUM_SETS_REACHED": "Raggiunto il numero massimo di set.", + "NO_SET_SELECTED": "Nessun set selezionato.", + "ONE_CONTROLLER_ON_FLOOR": "Appoggia un controller sul pavimento!", + "NO_KEYMAPS_CONFIGURED": "Nessuna disposizione tastiera configurata", + "NO_KEYMAPS_CONFIGURED_HELP": "Consulta wayvr.org per configurare i layout della tastiera!" + }, + "WATCH": { + "ADD_NEW_SET": "Aggiungi un nuovo set", + "CLEANUP_MIRRORS": "Rimuovi gli specchi \nnon attualmente visibili", + "DASHBOARD": "Dashboard", + "EDIT_MODE": "Modalità modifica", + "FIX_FLOOR": "Fissa livello pavimento", + "LONG_PRESS_TO_DELETE_SET": "Tieni premuto per eliminare", + "RECENTER": "Ricentra playspace", + "SWITCH_TO_SET": "Passa al set", + "TOGGLE_FOR_CURRENT_SET": "Attiva/disattiva set corrente" + }, + "WHISPER": { + "TRANSCRIBE": "Tieni premuto per trascrivere il testo", + "PASTE": "Copia trascrizione negli appunti", + "PASTE_AND_GO": "Copia trascrizione e invia Ctrl-V all'app focalizzata", + "SEND_OSC": "Invia trascrizione a chatbox OSC", + "UNLOAD_AND_CLOSE": "Scarica modello e chiudi", + "MODEL_NOT_DOWNLOADED": "Riconoscimento vocale non configurato!", + "DOWNLOAD_GUIDANCE": "Configura il riconoscimento vocale in Impostazioni > Funzionalità!", + "INITIAL_TEXT": "Tieni premuto il tasto del microfono per trascrivere...", + "INIT_ERROR": "Errore durante l'avvio del motore Whisper", + "ENTER_KEY": "Tasto Invio" } -} +} \ No newline at end of file diff --git a/wayvr/src/assets/lang/ja.json b/wayvr/src/assets/lang/ja.json index 1adab398..ce3da736 100644 --- a/wayvr/src/assets/lang/ja.json +++ b/wayvr/src/assets/lang/ja.json @@ -1,61 +1,5 @@ { - "ANCHOR": { - "CENTER": "センター" - }, - "BAR": { - "ADD_MIRROR": "新しいミラーを追加", - "EDIT_MODE_TOGGLE": "編集モードの切り替え", - "ADD_NEW_SET": "新しいセットを追加", - "DELETE_CURRENT_SET": "現在のセットを削除", - "TOGGLE_VISIBILITY": "表示/非表示の切り替え", - "RESET_POSITION": "位置をリセット", - "RELOAD_FROM_DISK": "ディスクからXMLを再読み込み", - "CLOSE_APP": "アプリを閉じる", - "FORCE_CLOSE_APP": "アプリを強制終了", - "HANDSFREE": { - "TITLE": "ハンズフリーモード", - "NONE": "オフ", - "HMD": "HMD + ピンチ", - "EYE_TRACKING": "視線 + ピンチ", - "EYE_ONLY": "アイルーザー", - "HMD_ONLY": "HMDレーザー" - }, - "ADD_PASSTHRU": "パススルーウィンドウを追加", - "CLOSE_OVERLAY": "オーバーレイを閉じる" - }, - "WATCH": { - "RECENTER": "プレイスペースをリセンター", - "FIX_FLOOR": "床の高さを修正", - "EDIT_MODE_EXPLANATION": "オーバーレイは個別に移動および調整できます。\n現在のセットのオーバーレイを切り替え:", - "DASHBOARD": "ダッシュボード", - "EDIT_MODE": "編集モード", - "ADD_NEW_SET": "新しいセットを追加", - "SWITCH_TO_SET": "セットに切り替える", - "TOGGLE_FOR_CURRENT_SET": "現在のセットで表示を切り替え", - "LONG_PRESS_TO_DELETE_SET": "長押しでセットを削除", - "CLEANUP_MIRRORS": "現在表示されていないミラーを削除" - }, "EDIT_MODE": { - "ADJUST_CURVATURE": "曲率の調整", - "ALPHA_BLEND_MODE": "アルファブレンド", - "BLENDING_ADDITIVE": "加算モード", - "CURVATURE": "曲率", - "DELETE": "削除", - "HINT_POINT_WINDOW": "ウィンドウをタップしてそのパラメータを変更できます。\n右側のボタンで編集モードを終了できます。", - "LEAVE": "編集モードを終了する", - "LOCK_INTERACTION": "インタラクションを無効化", - "DISABLE_GRAB": "グラブを無効化", - "MOVE_PRESS_AND_DRAG": "移動(押してドラッグ)", - "OPACITY": "不透明度", - "POSITIONING": "位置付け", - "RESIZE_PRESS_AND_DRAG": "サイズ変更(押してドラッグ)", - "POS_ANCHORED": "アンカー:セット内の他のウィンドウと共に移動します。デフォルト。", - "POS_FLOATING": "フローティング:置かれた場所に留まるが、表示される時に再センタリングされます。", - "POS_HMD": "HMD に追従する。", - "POS_HAND_L": "左手に追従する。", - "POS_HAND_R": "右手に追従する。", - "INTERPOLATION": "スムージング", - "KEYBOARD": "キーボード", "STEREO_3D_MODE": { "TITLE": "ステレオ3Dモード", "SPLIT_LEFT_RIGHT": "左→右", @@ -68,7 +12,6 @@ "FULL_FRAME_BAT": "フルBAT", "ADJUST_MOUSE": "マウス調整" }, - "ALIGN_TO_HMD": "常にHMDの方を向く", "MOUSE": { "TITLE": "マウスの修正", "WRONG_SCREEN_SELECTION_HELP": "カーソルが全く別のスクリーンで動く場合、\nスクリーンが正しく選択されていない可能性があります。\nReadmeをご参照ください。", @@ -81,73 +24,146 @@ "ROTATE180": "回転 180°", "ROTATE270": "回転 270°" }, - "GLOBAL": "常に表示", - "ANGLE_FADE": "角度フェード", - "ANGLE_FADE_HELP": "HMDに向いていない時にフェード", - "BLOCK_INPUT": "ゲーム入力をブロック", - "RESIZE_CORNER": "ドラッグしてサイズ変更" + "ADJUST_CURVATURE": "曲率を調整", + "ALIGN_TO_HMD": "HMDに向ける", + "ALPHA_BLEND_MODE": "アルファブレンディングモード", + "ANGLE_FADE": "角度によるフェード", + "ANGLE_FADE_HELP": "HMDに向いていない時にフェードアウト", + "BLENDING_ADDITIVE": "加算合成", + "BLOCK_INPUT": "ゲームへの入力を遮断", + "CURVATURE": "曲率", + "DELETE": "長押しで現在のセットから削除", + "DISABLE_GRAB": "掴むのを無効化", + "GLOBAL": "常時表示", + "HINT_POINT_WINDOW": "ウィンドウを指してパラメータを変更してください。\n完了したら、右側のボタンで編集モードを終了します。", + "INTERPOLATION": "補間", + "KEYBOARD": "キーボード", + "LEAVE": "編集モードを終了", + "LOCK_INTERACTION": "インタラクションをロック", + "MOVE_PRESS_AND_DRAG": "移動(押しながらドラッグ)", + "OPACITY": "不透明度", + "POS_FLOATING": "フローティング:独立して移動し、表示時に中心位置がリセットされる。", + "POS_HAND_L": "左手に追従", + "POS_HAND_R": "右手に従う", + "POS_HMD": "HMDに従う", + "POS_STATIC": "固定:どのセットにも属さず、リセンターを行わない。", + "POSITIONING": "配置", + "RESIZE_PRESS_AND_DRAG": "リサイズ (押し込みながらドラッグ)", + "RESIZE_CORNER": "ドラッグしてリサイズ", + "POS_ANCHORED": "セット追従:セットと一緒に移動。デフォルト。" + }, + "DEFINITIONS": { + "ANCHORED": "セット追従", + "FLOATING": "フローティング", + "STATIC": "固定", + "SET": "セット", + "WATCH": "ウォッチ", + "DASHBOARD": "ダッシュボード", + "EDIT_MODE": "編集モード", + "MIRROR": "ミラー", + "SETTINGS": "設定", + "KEYBOARD": "キーボード", + "TASKBAR": "タスクバー", + "FEATURES": "機能", + "OVERLAY": "オーバーレイ" + }, + "ANCHOR": { + "CENTER": "中心" + }, + "BAR": { + "ADD_MIRROR": "ミラーオーバーレイを追加", + "ADD_NEW_SET": "セットを追加", + "CLOSE_APP": "アプリを終了", + "CLOSE_OVERLAY": "オーバーレイを閉じる", + "DELETE_CURRENT_SET": "現在のセットを削除", + "EDIT_MODE_TOGGLE": "編集モード切替", + "FORCE_CLOSE_APP": "アプリを強制終了", + "HANDSFREE": { + "EYE_ONLY": "視線ポインター", + "EYE_TRACKING": "視線 + ピンチ", + "HMD": "HMD + ピンチ", + "HMD_ONLY": "HMDレーザー", + "NONE": "オフ", + "TITLE": "ハンズフリーモード" + }, + "RELOAD_FROM_DISK": "ディスクからXMLを再読み込み", + "RESET_POSITION": "位置をリセット", + "TOGGLE_VISIBILITY": "表示切替" }, - "DISABLED": "無効", "DEFAULT": "デフォルト", - "GRAB": { - "ADJUST_DISTANCE": "距離を調整", - "ADJUST_SIZE": "サイズ調整", - "UNRESTRICTED_MOVEMENT": "配置制限なし", - "GRABBING_WATCH": "手を入れ替えるにはウォッチを前に移動させて、もう一方の手で掴んでください。", - "GRABBING_STATIC": "このオーバーレイは固定であり、リセンターを無視してその場に留まります。", - "GRABBING_ANCHORED": "アンカーされたオーバーレイはすべて一緒に移動します。もう一方の手で掴んでアンカーを掴んだまま、単一のウィンドウを分離できます。", - "GRABBING_ANCHORED_EDIT": "このオーバーレイは、センター・マーカーに固定されます。", - "GRABBING_FLOATING": "このオーバーレイはフローティングのため、リセンターまではその場所に留まります。", - "GRABBING_FOLLOW": "このオーバーレイは、接続されているデバイスに追従します。" - }, - "TOAST": { - "DEFAULT_TITLE": "通知", - "ERROR": "エラー", - "CANNOT_REMOVE_SET": "セットを削除できません!", - "NO_SET_SELECTED": "セットが選択されていません。", - "LAST_EXISTING_SET": "これが最後の設定です。", - "EMPTY_SET": "空のセットです!", - "ONE_CONTROLLER_ON_FLOOR": "コントローラーを床に置いてください!", - "CANNOT_ADD_SET": "セットを追加できません!", - "MAXIMUM_SETS_REACHED": "最大セット数に達しました。", - "FIXING_FLOOR_IN_X_SECS": "{SECONDS}秒で床を固定中...", - "TITLE_SCREENCAST_FAIL": "スクリーンキャストのソースを開始できませんでした!", - "LETS_ADD_OVERLAYS": "タスクバーからオーバーレイを追加しましょう!" - }, + "DISABLED": "無効", "DONE": "完了", - "WHISPER": { - "TRANSCRIBE": "ボタンを長押ししてテキストを文字起こしする", - "PASTE": "文字起こしをクリップボードにコピー", - "PASTE_AND_GO": "コピーしてフォーカスされているアプリにCtrl-Vを送信", - "SEND_OSC": "OSCチャットボックスに送信", - "UNLOAD_AND_CLOSE": "モデルをアンロードして閉じる", - "MODEL_NOT_DOWNLOADED": "文字起こしが設定されていません!", - "DOWNLOAD_GUIDANCE": "機能設定の中に文字起こしを設定してください!", - "INITIAL_TEXT": "マイクボタンを押し続けて文字起こしを開始してください...", - "INIT_ERROR": "Whisperエンジンの起動中にエラーが発生しました", - "ENTER_KEY": "Enterキー" - }, - "SCREENCAST": { - "PENDING": "少々お待ちください...", - "QUEUED": "別のオーバーレイのスクリーンキャスト許可ポップアップの応答を待っています。", - "WAITING_FOR_USER_DESC": "デスクトップのスクリーンキャストのポップアップを確認してください。\n以下を選択してください:", - "WAITING_FOR_USER": "デスクトップにスクリーンキャストのポップアップが表示されていないか確認してください。", - "FAIL": "スクリーンキャストのソースを初期化できませんでした。" - }, "ALTTAB": { - "RELEASE_TO_FOCUS": "アプリを指してSuperキーを離すと、そのアプリにフォーカスします。", - "WHILE_AIMING": "照準合わせ中", - "CLICK": "VRポインタークリック", + "RELEASE_TO_FOCUS": "アプリに合わせてSuperキーを離すと、そのアプリがフォーカスされる。", + "WHILE_AIMING": "ポインター操作中", + "CLICK": "VRポインターでクリック", "GRABALL": "セット全体を移動", "GRAB": "個別のオーバーレイを移動", "DASH": "ダッシュボードの切り替え", - "EDIT": "編集モードを切り替える", - "SET": "セットを切り替える", - "RECENTER": "表示/非表示/センター合わせ", - "GENERAL_BINDS": "一般バインド", - "TOGGLE_CAPTURE": "コントロールをデスクトップに戻す", + "EDIT": "編集モードの切り替え", + "SET": "セットを切り替え", + "RECENTER": "表示/非表示/中心に配置", + "GENERAL_BINDS": "基本操作", + "TOGGLE_CAPTURE": "デスクトップに操作を戻す", "FOCUS_MODE": "フォーカスモード (Superキーを長押し)", "CLOSE": "フォーカス中のアプリを閉じる", - "MOUSE": "実際のマウスのクリックとスクロールもVRポインターに反映されます" + "MOUSE": "実マウスのクリックとスクロールもVRポインターに反映される" + }, + "GRAB": { + "ADJUST_DISTANCE": "距離を調整", + "ADJUST_SIZE": "サイズ調整", + "GRABBING_FLOATING": "このオーバーレイはフローティング状態であり、再センタリングしない限りその場に固定される。", + "GRABBING_FOLLOW": "このオーバーレイは、アタッチされているデバイスに従って移動する。", + "GRABBING_STATIC": "このオーバーレイは「固定」されており、リセンターしても位置が変わりません。", + "GRABBING_WATCH": "手を変えるには、ウォッチを前に出して、もう一方の手で掴んでください。", + "UNRESTRICTED_MOVEMENT": "自由移動", + "GRABBING_ANCHORED": "セット追従しているオーバーレイは、セットと一緒に移動します。セットを掴んだまま、もう一方の手でウィンドウを掴むことで、個別のウィンドウとして切り離せます。", + "GRABBING_ANCHORED_EDIT": "このオーバーレイは中心マーカーに固定される。" + }, + "SCREENCAST": { + "PENDING": "待機中...", + "QUEUED": "別のオーバーレイのスクリーンキャストポップアップの承認待ち。", + "WAITING_FOR_USER_DESC": "デスクトップのスクリーンキャスト通知を確認して、以下を選択してほしい:", + "WAITING_FOR_USER": "デスクトップのスクリーンキャスト通知を確認して。", + "FAIL": "スクリーンキャストのソースを初期化できませんでした。" + }, + "TOAST": { + "TITLE_SCREENCAST_FAIL": "スクリーンキャストソースを開始できませんでした!", + "CANNOT_ADD_SET": "セットを追加できません!", + "CANNOT_REMOVE_SET": "セットを削除できない!", + "DEFAULT_TITLE": "通知", + "EMPTY_SET": "セットが空です!", + "ERROR": "エラー", + "FIXING_FLOOR_IN_X_SECS": "{SECONDS}秒後に床の高さを調整します...", + "LAST_EXISTING_SET": "最後のセットです。", + "LETS_ADD_OVERLAYS": "タスクバーからオーバーレイを追加しよう!", + "MAXIMUM_SETS_REACHED": "セット数が上限に達しました。", + "NO_SET_SELECTED": "セットが選択されていません。", + "ONE_CONTROLLER_ON_FLOOR": "コントローラーを片方、床に置いてください!", + "NO_KEYMAPS_CONFIGURED": "キーボードレイアウトが設定されていない", + "NO_KEYMAPS_CONFIGURED_HELP": "キーボードレイアウトの設定方法は wayvr.org を確認してね!" + }, + "WATCH": { + "ADD_NEW_SET": "新しいセットを追加", + "CLEANUP_MIRRORS": "表示されていない\nミラーを削除", + "DASHBOARD": "ダッシュボード", + "EDIT_MODE": "編集モード", + "FIX_FLOOR": "床の高さを固定", + "LONG_PRESS_TO_DELETE_SET": "長押しで削除", + "RECENTER": "プレイスペースをリセンター", + "SWITCH_TO_SET": "セットを切り替える", + "TOGGLE_FOR_CURRENT_SET": "現在のセットを切り替え" + }, + "WHISPER": { + "TRANSCRIBE": "押して離さないで文字起こし", + "PASTE": "書き起こしをクリップボードにコピー", + "PASTE_AND_GO": "書き起こしをコピーして、フォーカス中のアプリにCtrl-Vを送信", + "SEND_OSC": "文字起こし結果をOSCチャットボックスに送信", + "UNLOAD_AND_CLOSE": "モデルを解除して閉じる", + "MODEL_NOT_DOWNLOADED": "音声認識が設定されていません!", + "DOWNLOAD_GUIDANCE": "設定の「機能」タブで音声入力の設定をしてね!", + "INITIAL_TEXT": "マイクボタンを長押しして文字起こしを開始...", + "INIT_ERROR": "Whisperエンジンの起動中にエラーが発生しました", + "ENTER_KEY": "Enterキー" } -} +} \ No newline at end of file diff --git a/wayvr/src/assets/lang/pl.json b/wayvr/src/assets/lang/pl.json index 4f7f8ac4..0d99959e 100644 --- a/wayvr/src/assets/lang/pl.json +++ b/wayvr/src/assets/lang/pl.json @@ -1,62 +1,5 @@ { - "ANCHOR": { - "CENTER": "Centrum" - }, - "BAR": { - "ADD_MIRROR": "Dodaj nowy widok lustrzany", - "EDIT_MODE_TOGGLE": "Przełącz tryb edycji", - "ADD_NEW_SET": "Dodaj nowy zestaw", - "DELETE_CURRENT_SET": "Usuń aktualny zestaw", - "TOGGLE_VISIBILITY": "Przełącz widoczność", - "RESET_POSITION": "Zresetuj pozycję", - "RELOAD_FROM_DISK": "Przeładuj XML z dysku", - "CLOSE_APP": "Zamknij aplikację", - "FORCE_CLOSE_APP": "Wymuś zamknięcie aplikacji", - "HANDSFREE": { - "TITLE": "Tryb wolnych rąk", - "NONE": "Wyłączone", - "HMD": "HMD + uszczypnięcie", - "EYE_TRACKING": "Oko + uszczypnięcie", - "EYE_ONLY": "Laser wzrokowy", - "HMD_ONLY": "Laser w HMD" - }, - "ADD_PASSTHRU": "Dodaj okno passthrough", - "CLOSE_OVERLAY": "Zamknij nakładkę" - }, - "WATCH": { - "RECENTER": "Wyśrodkuj przestrzeń gry", - "FIX_FLOOR": "Napraw wysokość podłogi", - "EDIT_MODE_EXPLANATION": "Nakładki można teraz przesuwać i dostosowywać indywidualnie.\nPrzełącz nakładki dla bieżącego zestawu:", - "DASHBOARD": "Pulpit", - "EDIT_MODE": "Tryb edycji", - "ADD_NEW_SET": "Dodaj nowy zestaw", - "SWITCH_TO_SET": "Przełącz na zestaw", - "TOGGLE_FOR_CURRENT_SET": "Przełącz widoczność w bieżącym zestawie", - "LONG_PRESS_TO_DELETE_SET": "Przytrzymaj, aby usunąć zestaw", - "CLEANUP_MIRRORS": "Usuń lustra, które\nnie są obecnie widoczne" - }, "EDIT_MODE": { - "ADJUST_CURVATURE": "Dostosuj zakrzywienie", - "ALPHA_BLEND_MODE": "Tryb mieszania kolorów", - "BLENDING_ADDITIVE": "Addytywne", - "CURVATURE": "Zakrzywienie", - "DELETE": "Usuń", - "HINT_POINT_WINDOW": "Wskaż na okno, aby zmienić jego parametry.\nPo zakończeniu wyjdź z trybu edycji za pomocą przycisku po prawej stronie.", - "LEAVE": "Wyjdź z trybu edycji", - "LOCK_INTERACTION": "Zablokuj interakcję", - "DISABLE_GRAB": "Wyłącz chwytanie", - "MOVE_PRESS_AND_DRAG": "Przesuń (naciśnij i przeciągnij)", - "OPACITY": "Przezroczystość", - "POSITIONING": "Pozycjonowanie", - "BLOCK_INPUT": "Blokuj input z gry", - "RESIZE_PRESS_AND_DRAG": "Zmień rozmiar (naciśnij i przeciągnij)", - "POS_ANCHORED": "Zakotwiczone: Porusza się razem z resztą zestawu. Domyślne.", - "POS_FLOATING": "Pływające: Pozostaje w miejscu, ponownie się wyśrodkowuje po pokazaniu.", - "POS_HMD": "Podążaj za HMD.", - "POS_HAND_L": "Podążaj za lewą dłonią.", - "POS_HAND_R": "Podążaj za prawą dłonią.", - "INTERPOLATION": "Interpolacja", - "KEYBOARD": "Klawiatura", "STEREO_3D_MODE": { "SPLIT_BOTTOM_TOP": "DOŁ→GÓRA", "SPLIT_LEFT_RIGHT": "LEWO→PRAWO", @@ -69,7 +12,6 @@ "FULL_FRAME_BAT": "Full-BAT", "ADJUST_MOUSE": "Dostosuj mysz" }, - "ALIGN_TO_HMD": "Dopasuj do HMD", "MOUSE": { "TITLE": "Naprawa myszy", "WRONG_SCREEN_SELECTION_HELP": "Jeśli kursor porusza się na zupełnie innym ekranie,\nekrany zostały prawdopodobnie nieprawidłowo wybrane. Zobacz dokument README.", @@ -82,72 +24,146 @@ "FLIP180": "Odwrócony o 180°", "FLIP270": "Odwrócony o 270°" }, + "ADJUST_CURVATURE": "Dostosuj krzywiznę", + "ALIGN_TO_HMD": "Dopasuj do HMD", + "ALPHA_BLEND_MODE": "Tryb mieszania alfa", + "ANGLE_FADE": "Wygaszanie kątowe", + "ANGLE_FADE_HELP": "Wygaszenie, gdy nie patrzysz na HMD", + "BLENDING_ADDITIVE": "Mieszanie addytywne", + "BLOCK_INPUT": "Blokuj wejście z gry", + "CURVATURE": "Krzywizna", + "DELETE": "Przytrzymaj, aby usunąć z bieżącego zestawu", + "DISABLE_GRAB": "Wyłącz chwytanie", "GLOBAL": "Zawsze widoczne", - "ANGLE_FADE": "Zanik kątowy", - "ANGLE_FADE_HELP": "Wyblaknij, gdy nie patrzysz na HMD", + "HINT_POINT_WINDOW": "Wskaż okno, aby zmienić jego parametry.\nPo zakończeniu wyjdź z trybu edycji przyciskiem po prawej stronie.", + "INTERPOLATION": "Interpolacja", + "KEYBOARD": "Klawiatura", + "LEAVE": "Wyjdź z trybu edycji", + "LOCK_INTERACTION": "Blokuj interakcję", + "MOVE_PRESS_AND_DRAG": "Przesuń (przyciśnij i przeciągnij)", + "OPACITY": "Przezroczystość", + "POS_ANCHORED": "Przytwierdzone: Przesuwa się wraz z zestawem. Domyślnie.", + "POS_FLOATING": "Pływający: przesuwa się niezależnie, centruje się po wyświetleniu.", + "POS_HAND_L": "Podążaj za lewą ręką.", + "POS_HAND_R": "Podążaj za prawą ręką.", + "POS_HMD": "Podążaj za HMD.", + "POS_STATIC": "Stacjonarny: Poza jakimkolwiek zestawem, brak recentrowania.", + "POSITIONING": "Pozycjonowanie", + "RESIZE_PRESS_AND_DRAG": "Zmień rozmiar (naciśnij i przeciągnij)", "RESIZE_CORNER": "Przeciągnij, aby zmienić rozmiar" }, - "DISABLED": "Wyłączone", + "DEFINITIONS": { + "ANCHORED": "Przytwierdzone", + "FLOATING": "Pływający", + "STATIC": "Stacjonarny", + "SET": "Zestaw", + "WATCH": "Zegarek", + "DASHBOARD": "Panel sterowania", + "EDIT_MODE": "Tryb edycji", + "MIRROR": "Lustro", + "SETTINGS": "Ustawienia", + "KEYBOARD": "Klawiatura", + "TASKBAR": "Pasek zadań", + "FEATURES": "Funkcje", + "OVERLAY": "Nakładka" + }, + "ANCHOR": { + "CENTER": "Środek" + }, + "BAR": { + "ADD_MIRROR": "Dodaj nową nakładkę lustra", + "ADD_NEW_SET": "Dodaj nowy zestaw", + "CLOSE_APP": "Zamknij aplikację", + "CLOSE_OVERLAY": "Zamknij nakładkę", + "DELETE_CURRENT_SET": "Usuń aktualny zestaw", + "EDIT_MODE_TOGGLE": "Przełącz tryb edycji", + "FORCE_CLOSE_APP": "Wymuś zamknięcie aplikacji", + "HANDSFREE": { + "EYE_ONLY": "Laser z oczu", + "EYE_TRACKING": "Wzrok + szczypanie", + "HMD": "HMD + szczypanie", + "HMD_ONLY": "Laser z HMD", + "NONE": "Wył.", + "TITLE": "Tryb bezkontaktowy" + }, + "RELOAD_FROM_DISK": "Przeładuj XML z dysku", + "RESET_POSITION": "Resetuj pozycję", + "TOGGLE_VISIBILITY": "Przełącz widoczność" + }, "DEFAULT": "Domyślny", - "GRAB": { - "ADJUST_DISTANCE": "Dostosuj odległość", - "ADJUST_SIZE": "Dostosuj rozmiar", - "UNRESTRICTED_MOVEMENT": "Nieograniczony ruch", - "GRABBING_WATCH": "Aby zamienić ręce, przenieś zegarek na przód i chwyć go drugą ręką.", - "GRABBING_STATIC": "Ta nakładka jest statyczna i pozostanie na swoim miejscu, ignorując centrowanie.", - "GRABBING_ANCHORED": "Przymocowane nakładki poruszają się razem. Aby oddzielić pojedyncze okno, chwyć je drugą ręką, podczas gdy nadal trzymasz kotwicę.", - "GRABBING_ANCHORED_EDIT": "Ta nakładka pozostanie zakotwiczona do znacznika centralnego.", - "GRABBING_FLOATING": "Ta nakładka jest zawieszony i pozostanie na miejscu, chyba że zostanie wycentrowany.", - "GRABBING_FOLLOW": "Ta nakładka będzie śledzić urządzenie, do którego jest dołączona." - }, - "TOAST": { - "DEFAULT_TITLE": "Powiadomienie", - "ERROR": "Błąd", - "CANNOT_REMOVE_SET": "Nie można usunąć zestawu!", - "NO_SET_SELECTED": "Nie wybrano żadnego zestawu.", - "LAST_EXISTING_SET": "To jest ostatni istniejący zestaw.", - "EMPTY_SET": "Pusty zestaw!", - "ONE_CONTROLLER_ON_FLOOR": "Umieść jeden kontroler na podłodze!", - "CANNOT_ADD_SET": "Nie można dodać zestawu!", - "MAXIMUM_SETS_REACHED": "Osiągnięto maksymalną liczbę zestawów.", - "FIXING_FLOOR_IN_X_SECS": "Naprawianie podłogi za {SECONDS} sekund(y)...", - "TITLE_SCREENCAST_FAIL": "Nie udało się uruchomić źródła przesyłania obrazu z ekranu!", - "LETS_ADD_OVERLAYS": "Dodajmy kilka nakładek z paska zadań!" - }, + "DISABLED": "Wyłączony", "DONE": "Gotowe", - "WHISPER": { - "TRANSCRIBE": "Naciśnij i przytrzymaj, aby transkrybować tekst", - "PASTE": "Kopiuj transkrypcję do schowka", - "PASTE_AND_GO": "Kopiuj transkrypcję i wyślij Ctrl-V do aktywnej aplikacji", - "SEND_OSC": "Wyślij transkrypcję do okna czatu OSC", - "UNLOAD_AND_CLOSE": "Odładuj model i zamknij", - "MODEL_NOT_DOWNLOADED": "Zamiana mowy na tekst nie została skonfigurowana!", - "DOWNLOAD_GUIDANCE": "Skonfiguruj funkcję zamiany mowy na tekst w ustawieniach, w sekcji funkcje!", - "INITIAL_TEXT": "Naciśnij i przytrzymaj przycisk mikrofonu, aby rozpocząć transkrypcję...", - "INIT_ERROR": "Błąd podczas uruchamiania silnika Whisper", - "ENTER_KEY": "Klawisz Enter" - }, - "SCREENCAST": { - "PENDING": "Proszę czekać...", - "QUEUED": "Oczekiwanie na zatwierdzenie okna wysyłania obrazu z innego nakładki.", - "WAITING_FOR_USER_DESC": "Sprawdź na pulpicie okno wyboru ekranu do transmitowania.\nWybierz następujące:", - "WAITING_FOR_USER": "Sprawdź na pulpicie powiadomienie o przesyłaniu ekranu.", - "FAIL": "Nie udało się zainicjować źródła przesyłania obrazu z ekranu." - }, "ALTTAB": { - "RELEASE_TO_FOCUS": "Wyceluj w aplikację i puść klawisz Super, aby ją przenieść na pierwszy plan.", + "RELEASE_TO_FOCUS": "Wyceluj w aplikację i puść klawisz Super, aby ją zaznaczyć.", "WHILE_AIMING": "Podczas celowania", "CLICK": "Kliknięcie wskaźnikiem VR", "GRABALL": "Przesuń cały zestaw", - "GRAB": "Przesuń pojedynczy overlay", - "DASH": "Przełącz pulpit sterowania", + "GRAB": "Przesuń pojedynczą nakładkę", + "DASH": "Przełącz panel sterowania", "EDIT": "Przełącz tryb edycji", "SET": "Zmień zestaw", - "RECENTER": "Pokaż/ukryj/wycentruj", + "RECENTER": "Pokaż/ukryj/wyśrodkuj", "GENERAL_BINDS": "Ogólne przypisania", "TOGGLE_CAPTURE": "Oddaj kontrolę do pulpitu", - "FOCUS_MODE": "Tryb skupienia (przytrzymaj klawisz Super)", - "CLOSE": "Zamknij aktualną aplikację", - "MOUSE": "Kliknięcia i przewijanie fizycznej myszy są również przeniesione na wskaźnik VR" + "FOCUS_MODE": "Tryb skupienia (przytrzymaj Super)", + "CLOSE": "Zamknij aktywną aplikację", + "MOUSE": "Kliknięcia i przewijanie myszką przenoszą się na wskaźnik VR" + }, + "GRAB": { + "ADJUST_DISTANCE": "Dostosuj odległość", + "ADJUST_SIZE": "Dopasuj rozmiar", + "GRABBING_ANCHORED": "Przytwierdzone nakładki poruszają się wraz z zestawem. Aby odseparować pojedyncze okno, chwyć je drugą ręką, nadal trzymając zestaw.", + "GRABBING_ANCHORED_EDIT": "Ten overlay pozostanie zakotwiczony w markerze środka.", + "GRABBING_FLOATING": "Ten overlay jest pływający i pozostanie w miejscu, chyba że zostanie wycentrowany.", + "GRABBING_FOLLOW": "Nakładka będzie podążać za urządzeniem, do którego jest przypisana.", + "GRABBING_STATIC": "Ten overlay jest stacjonarny i pozostanie w miejscu, ignorując centrowanie.", + "GRABBING_WATCH": "Aby zmienić rękę, przesuń zegarek do przodu i chwyć go drugą ręką.", + "UNRESTRICTED_MOVEMENT": "Ruch swobodny" + }, + "SCREENCAST": { + "PENDING": "Proszę czekać...", + "QUEUED": "Oczekiwanie na zatwierdzenie okna przesyłania obrazu z innej nakładki.", + "WAITING_FOR_USER_DESC": "Sprawdź na pulpicie powiadomienie o przesyłaniu ekranu.\nWybierz następujące:", + "WAITING_FOR_USER": "Sprawdź powiadomienie o przesyłaniu ekranu na pulpicie.", + "FAIL": "Nie udało się zainicjować źródła przesyłania obrazu." + }, + "TOAST": { + "TITLE_SCREENCAST_FAIL": "Nie udało się uruchomić źródła przesyłania obrazu!", + "CANNOT_ADD_SET": "Nie można dodać zestawu!", + "CANNOT_REMOVE_SET": "Nie można usunąć zestawu!", + "DEFAULT_TITLE": "Powiadomienie", + "EMPTY_SET": "Pusty zestaw!", + "ERROR": "Błąd", + "FIXING_FLOOR_IN_X_SECS": "Korekta wysokości podłogi za {SECONDS} s...", + "LAST_EXISTING_SET": "To ostatni istniejący zestaw.", + "LETS_ADD_OVERLAYS": "Dodaj kilka nakładek z paska zadań!", + "MAXIMUM_SETS_REACHED": "Osiągnięto maksymalną liczbę zestawów.", + "NO_SET_SELECTED": "Żaden zestaw nie jest wybrany.", + "ONE_CONTROLLER_ON_FLOOR": "Połóż jeden kontroler na podłodze!", + "NO_KEYMAPS_CONFIGURED": "Brak skonfigurowanych układów klawiatury", + "NO_KEYMAPS_CONFIGURED_HELP": "Odwiedź stronę wayvr.org, aby dowiedzieć się, jak skonfigurować układy klawiatury!" + }, + "WATCH": { + "ADD_NEW_SET": "Dodaj nowy zestaw", + "CLEANUP_MIRRORS": "Usuń niewidoczne\nlustra", + "DASHBOARD": "Panel sterowania", + "EDIT_MODE": "Tryb edycji", + "FIX_FLOOR": "Dostosuj poziom podłogi", + "LONG_PRESS_TO_DELETE_SET": "Przytrzymaj, aby usunąć", + "RECENTER": "Wyśrodkuj obszar gry", + "SWITCH_TO_SET": "Zmień zestaw", + "TOGGLE_FOR_CURRENT_SET": "Przełącz widoczność zestawu" + }, + "WHISPER": { + "TRANSCRIBE": "Przytrzymaj, aby zapisać tekst", + "PASTE": "Kopiuj transkrypcję do schowka", + "PASTE_AND_GO": "Kopiuj transkrypcję i wyślij Ctrl-V do aktywnej aplikacji", + "SEND_OSC": "Wyślij transkrypcję do czatu OSC", + "UNLOAD_AND_CLOSE": "Odładuj model i zamknij", + "MODEL_NOT_DOWNLOADED": "Konwersja mowy na tekst nie jest skonfigurowana!", + "DOWNLOAD_GUIDANCE": "Skonfiguruj zamianę mowy na tekst w ustawieniach, w zakładce funkcje!", + "INITIAL_TEXT": "Przytrzymaj przycisk mikrofonu, aby rozpocząć transkrypcję...", + "INIT_ERROR": "Błąd podczas uruchamiania silnika Whisper", + "ENTER_KEY": "Klawisz Enter" } -} +} \ No newline at end of file diff --git a/wayvr/src/assets/lang/zh_CN.json b/wayvr/src/assets/lang/zh_CN.json index 11e22088..3e491197 100644 --- a/wayvr/src/assets/lang/zh_CN.json +++ b/wayvr/src/assets/lang/zh_CN.json @@ -1,52 +1,5 @@ { - "ANCHOR": { - "CENTER": "中心" - }, - "BAR": { - "ADD_MIRROR": "添加新的镜像覆盖层", - "EDIT_MODE_TOGGLE": "切换编辑模式", - "ADD_NEW_SET": "添加新集合", - "DELETE_CURRENT_SET": "删除当前集合", - "TOGGLE_VISIBILITY": "切换可见性", - "RESET_POSITION": "重置位置", - "RELOAD_FROM_DISK": "从磁盘重新加载 XML", - "CLOSE_APP": "关闭应用", - "FORCE_CLOSE_APP": "强制关闭应用", - "HANDSFREE": { - "TITLE": "免提模式", - "NONE": "关闭", - "HMD": "HMD + 捏合", - "EYE_TRACKING": "眼动 + 捏合", - "EYE_ONLY": "眼睛激光", - "HMD_ONLY": "头显射线" - }, - "ADD_PASSTHRU": "添加透视窗口", - "CLOSE_OVERLAY": "关闭叠加层" - }, - "DEFAULT": "默认", - "DISABLED": "已禁用", "EDIT_MODE": { - "ADJUST_CURVATURE": "调整曲率", - "ALPHA_BLEND_MODE": "Alpha 混合模式", - "BLENDING_ADDITIVE": "叠加混合", - "CURVATURE": "曲率", - "DELETE": "长按以从当前集合中移除", - "DISABLE_GRAB": "禁用抓取", - "HINT_POINT_WINDOW": "指向窗口以更改其参数。\n完成后,使用右侧按钮退出编辑模式。", - "INTERPOLATION": "插值", - "ALIGN_TO_HMD": "对齐到头显 (HMD)", - "KEYBOARD": "键盘", - "LEAVE": "离开编辑模式", - "LOCK_INTERACTION": "锁定交互", - "MOVE_PRESS_AND_DRAG": "移动 (按住并拖拽)", - "OPACITY": "不透明度", - "POS_ANCHORED": "锚定:随中心标记移动。默认。", - "POS_FLOATING": "悬浮:独立移动,显示时重新居中。", - "POS_HAND_L": "跟随左手。", - "POS_HAND_R": "跟随右手。", - "POS_HMD": "跟随头显 (HMD)。", - "POSITIONING": "定位", - "RESIZE_PRESS_AND_DRAG": "调整大小 (按住并拖拽)", "STEREO_3D_MODE": { "SPLIT_BOTTOM_TOP": "下→上", "SPLIT_LEFT_RIGHT": "左→右", @@ -71,83 +24,146 @@ "FLIP180": "镜像旋转 180°", "FLIP270": "镜像旋转 270°" }, + "ADJUST_CURVATURE": "调整曲率", + "ALIGN_TO_HMD": "朝向 HMD", + "ALPHA_BLEND_MODE": "Alpha 混合模式", + "ANGLE_FADE": "角度渐变", + "ANGLE_FADE_HELP": "远离 HMD 时淡出", + "BLENDING_ADDITIVE": "加法混合", + "BLOCK_INPUT": "屏蔽游戏输入", + "CURVATURE": "曲率", + "DELETE": "长按将其从当前套装中移除", + "DISABLE_GRAB": "禁用抓取", "GLOBAL": "始终可见", - "ANGLE_FADE": "角度淡出", - "ANGLE_FADE_HELP": "未朝向HMD时淡出", - "BLOCK_INPUT": "阻止游戏输入", + "HINT_POINT_WINDOW": "指向窗口以更改其参数。\n完成后,点击右侧按钮退出编辑模式。", + "INTERPOLATION": "插值", + "KEYBOARD": "键盘", + "LEAVE": "退出编辑模式", + "LOCK_INTERACTION": "锁定交互", + "MOVE_PRESS_AND_DRAG": "移动 (按下并拖拽)", + "OPACITY": "不透明度", + "POS_ANCHORED": "同步移动:随套装一起移动。默认。", + "POS_FLOATING": "悬浮:独立移动,显示时自动居中。", + "POS_HAND_L": "跟随左手", + "POS_HAND_R": "跟随右手。", + "POS_HMD": "跟随 HMD", + "POS_STATIC": "静态:不属于任何套装,不重新居中。", + "POSITIONING": "位置设定", + "RESIZE_PRESS_AND_DRAG": "调整大小(按住并拖动)", "RESIZE_CORNER": "拖动以调整大小" }, - "GRAB": { - "ADJUST_DISTANCE": "调整距离", - "ADJUST_SIZE": "调整大小", - "UNRESTRICTED_MOVEMENT": "无限制移动", - "GRABBING_WATCH": "若要更换手,请将手表移至前方并用另一只手抓取。", - "GRABBING_STATIC": "此覆盖层是静态的,将固定在原位,忽略重新居中。", - "GRABBING_ANCHORED": "锚定覆盖层将一起移动。通过用另一只手抓取单个窗口,同时仍抓取锚点来分离它。", - "GRABBING_ANCHORED_EDIT": "此覆盖层将保持锚定在中心标记上。", - "GRABBING_FLOATING": "此覆盖层是悬浮的,将固定在原位,除非重新居中。", - "GRABBING_FOLLOW": "此覆盖层将跟随它所连接的设备。" - }, - "TOAST": { - "DEFAULT_TITLE": "通知", - "ERROR": "错误", - "CANNOT_ADD_SET": "无法添加集合!", - "MAXIMUM_SETS_REACHED": "已达到集合数量上限。", - "CANNOT_REMOVE_SET": "无法移除集合!", - "NO_SET_SELECTED": "未选择集合。", - "LAST_EXISTING_SET": "这是最后一个现有的集合。", - "EMPTY_SET": "空集合!", - "ONE_CONTROLLER_ON_FLOOR": "请将一个控制器放在地面上!", - "FIXING_FLOOR_IN_X_SECS": "{SECONDS}秒内固定地面...", - "TITLE_SCREENCAST_FAIL": "无法启动屏幕投影源!", - "LETS_ADD_OVERLAYS": "让我们从任务栏添加一些覆盖层吧!" - }, - "WATCH": { - "ADD_NEW_SET": "添加新集合", - "CLEANUP_MIRRORS": "移除当前不可见的镜像", - "DASHBOARD": "控制面板 (Dashboard)", + "DEFINITIONS": { + "ANCHORED": "同步移动", + "FLOATING": "悬浮", + "STATIC": "静态", + "SET": "套装", + "WATCH": "手表", + "DASHBOARD": "控制面板", "EDIT_MODE": "编辑模式", - "EDIT_MODE_EXPLANATION": "覆盖层现在可以单独移动和调整。\n控制此集合中哪些覆盖层可见:", - "FIX_FLOOR": "修复地面水平", - "LONG_PRESS_TO_DELETE_SET": "按住以删除", - "RECENTER": "重置游玩区中心 (Recenter)", - "SWITCH_TO_SET": "切换到集合", - "TOGGLE_FOR_CURRENT_SET": "切换当前集合" + "MIRROR": "镜像", + "SETTINGS": "设置", + "KEYBOARD": "键盘", + "TASKBAR": "任务栏", + "FEATURES": "功能", + "OVERLAY": "叠加层" }, + "ANCHOR": { + "CENTER": "中心" + }, + "BAR": { + "ADD_MIRROR": "添加一个新的镜像叠加层", + "ADD_NEW_SET": "添加新套装", + "CLOSE_APP": "关闭应用", + "CLOSE_OVERLAY": "关闭覆盖层", + "DELETE_CURRENT_SET": "删除当前套装", + "EDIT_MODE_TOGGLE": "切换编辑模式", + "FORCE_CLOSE_APP": "强制关闭应用", + "HANDSFREE": { + "EYE_ONLY": "眼球射线", + "EYE_TRACKING": "眼动 + 捏合", + "HMD": "头显 + 捏合", + "HMD_ONLY": "头显射线", + "NONE": "关闭", + "TITLE": "免手操模式" + }, + "RELOAD_FROM_DISK": "从磁盘重新加载 XML", + "RESET_POSITION": "重置位置", + "TOGGLE_VISIBILITY": "切换显示状态" + }, + "DEFAULT": "默认", + "DISABLED": "禁用", "DONE": "完成", - "WHISPER": { - "TRANSCRIBE": "按住以转录文本", - "PASTE": "将转录内容复制到剪贴板", - "PASTE_AND_GO": "复制转录文本并向当前聚焦的应用发送 Ctrl-V", - "SEND_OSC": "将转录文本发送至 OSC 聊天框", - "UNLOAD_AND_CLOSE": "卸载模型并关闭", - "MODEL_NOT_DOWNLOADED": "语音转文本未设置!", - "DOWNLOAD_GUIDANCE": "请在“设置”中的“功能”选项下配置语音转文本!", - "INITIAL_TEXT": "按住麦克风按钮开始转录...", - "INIT_ERROR": "启动 Whisper 引擎时出错", - "ENTER_KEY": "回车键" - }, - "SCREENCAST": { - "PENDING": "请稍候...", - "QUEUED": "等待另一个覆盖层的屏幕投射确认弹窗。", - "WAITING_FOR_USER_DESC": "请检查桌面上的屏幕投射弹出窗口。\n选择以下选项:", - "WAITING_FOR_USER": "请检查桌面上的屏幕投射弹出窗口。", - "FAIL": "无法初始化屏幕镜像源。" - }, "ALTTAB": { - "RELEASE_TO_FOCUS": "瞄准一个应用程序并松开 Super 键以将焦点切换到该程序。", + "RELEASE_TO_FOCUS": "将光标对准应用并松开 Super 键以聚焦该应用。", "WHILE_AIMING": "瞄准时", "CLICK": "VR 指针点击", - "GRABALL": "移动整个集", + "GRABALL": "移动整个集合", "GRAB": "移动单个覆盖层", "DASH": "切换控制面板", "EDIT": "切换编辑模式", - "SET": "切换 Set", - "RECENTER": "显示/隐藏/重新中心化", - "GENERAL_BINDS": "通用绑定", + "SET": "切换组", + "RECENTER": "显示/隐藏/重新居中", + "GENERAL_BINDS": "通用按键绑定", "TOGGLE_CAPTURE": "将控制权还给桌面", "FOCUS_MODE": "焦点模式 (按住 Super 键)", - "CLOSE": "关闭当前焦点应用", - "MOUSE": "真实鼠标的点击和滚动也将转换为 VR 指针" + "CLOSE": "关闭当前应用", + "MOUSE": "实体鼠标点击与滚动同样可转换为 VR 指针" + }, + "GRAB": { + "ADJUST_DISTANCE": "调整距离", + "ADJUST_SIZE": "调整尺寸", + "GRABBING_ANCHORED": "同步移动的覆盖层随套装一起移动。在抓取套装的同时,用另一只手抓取单个窗口即可将其分离。", + "GRABBING_ANCHORED_EDIT": "该覆盖层将锚定在中心标记处。", + "GRABBING_FLOATING": "该覆盖层处于悬浮状态,除非重新居中,否则将保持在原位。", + "GRABBING_FOLLOW": "该覆盖层将跟随其绑定的设备移动。", + "GRABBING_STATIC": "该覆盖层为静态,将保持在原位,不受重新居中影响。", + "GRABBING_WATCH": "若要切换佩戴手,请将手表移至前方并用另一只手抓取。", + "UNRESTRICTED_MOVEMENT": "自由移动" + }, + "SCREENCAST": { + "PENDING": "请稍候...", + "QUEUED": "正在等待另一个叠加层的屏幕投射确认。", + "WAITING_FOR_USER_DESC": "检查桌面上的屏幕共享弹窗。\n请选择以下项:", + "WAITING_FOR_USER": "请检查桌面上的屏幕传输弹窗。", + "FAIL": "无法初始化屏幕传输源。" + }, + "TOAST": { + "TITLE_SCREENCAST_FAIL": "无法启动屏幕投影源!", + "CANNOT_ADD_SET": "无法添加套装!", + "CANNOT_REMOVE_SET": "无法删除套装!", + "DEFAULT_TITLE": "通知", + "EMPTY_SET": "套装为空!", + "ERROR": "错误", + "FIXING_FLOOR_IN_X_SECS": "将在 {SECONDS} 秒后修正地面高度...", + "LAST_EXISTING_SET": "这是最后一个现有的套装。", + "LETS_ADD_OVERLAYS": "快从任务栏添加一些叠加层吧!", + "MAXIMUM_SETS_REACHED": "已达到最大套装数量。", + "NO_SET_SELECTED": "未选择套装。", + "ONE_CONTROLLER_ON_FLOOR": "将一只控制器放在地面上!", + "NO_KEYMAPS_CONFIGURED": "尚未配置键盘布局", + "NO_KEYMAPS_CONFIGURED_HELP": "请访问 wayvr.org 了解如何设置键盘布局!" + }, + "WATCH": { + "ADD_NEW_SET": "添加新套装", + "CLEANUP_MIRRORS": "移除当前\n不可见的镜像", + "DASHBOARD": "控制面板", + "EDIT_MODE": "编辑模式", + "FIX_FLOOR": "固定地面高度", + "LONG_PRESS_TO_DELETE_SET": "长按以删除", + "RECENTER": "重新中心化活动范围", + "SWITCH_TO_SET": "切换至套装", + "TOGGLE_FOR_CURRENT_SET": "切换当前集合" + }, + "WHISPER": { + "TRANSCRIBE": "按住以转写文本", + "PASTE": "将转写文本复制到剪贴板", + "PASTE_AND_GO": "复制转写文本并向当前聚焦的应用发送 Ctrl-V", + "SEND_OSC": "将转写文本发送至 OSC 聊天框", + "UNLOAD_AND_CLOSE": "卸载模型并关闭", + "MODEL_NOT_DOWNLOADED": "语音转文字尚未设置!", + "DOWNLOAD_GUIDANCE": "请在“设置”的“功能”选项卡中配置语音转文本!", + "INITIAL_TEXT": "按住麦克风按钮开始转写...", + "INIT_ERROR": "启动 Whisper 引擎时出错", + "ENTER_KEY": "回车键" } -} +} \ No newline at end of file