mirror of https://github.com/wayvr-org/wayvr.git
translator: Fix english not working at all, minor refactoring
This commit is contained in:
parent
3ae01f59d1
commit
98f800c644
|
|
@ -13,6 +13,334 @@
|
|||
"FEATURES": "Features",
|
||||
"OVERLAY": "Overlay",
|
||||
"SKYMAP": "Skymap",
|
||||
"PLAYSPACE": "Playspace"
|
||||
}
|
||||
}
|
||||
"PLAYSPACE": "Playspace",
|
||||
"D_PAD": "D-pad"
|
||||
},
|
||||
"ACTIONS": {
|
||||
"RECENTER_PLAYSPACE": "Re-center playspace"
|
||||
},
|
||||
"APP_LAUNCHER": {
|
||||
"ASPECT": {
|
||||
"SEMI_TALL": "Semi-tall",
|
||||
"SEMI_WIDE": "Semi-wide",
|
||||
"SQUARE": "Square",
|
||||
"TALL": "Tall",
|
||||
"WIDE": "Wide"
|
||||
},
|
||||
"ASPECT_TITLE": "Aspect",
|
||||
"AUTOSTART": "Run automatically on startup",
|
||||
"LAUNCH": "Launch",
|
||||
"MODE": {
|
||||
"CAGE": "Compatibility mode (Cage)",
|
||||
"NATIVE": "Native mode"
|
||||
},
|
||||
"RES_TITLE": "Resolution"
|
||||
},
|
||||
"APP_SETTINGS": {
|
||||
"ALLOW_SLIDING": "Stick interaction during grab",
|
||||
"ANIMATION_SPEED": "UI Animation speed",
|
||||
"AUTOSTART_APPS": "Apps to run on startup",
|
||||
"BLOCK_GAME_INPUT": "Block game input",
|
||||
"BLOCK_GAME_INPUT_HELP": "Blocks all input when an overlay is hovered",
|
||||
"BLOCK_GAME_INPUT_IGNORE_WATCH": "Ignore watch when blocking input",
|
||||
"BLOCK_GAME_INPUT_IGNORE_WATCH_HELP": "Do not block input when watch is hovered",
|
||||
"BLOCK_POSES_ON_KBD_INTERACTION": "Block poses when interacting with keyboard",
|
||||
"BLOCK_POSES_ON_KBD_INTERACTION_HELP": "Blocks the game from receiving poses when the keyboard is hovered and 'Block game input' is enabled",
|
||||
"BINDINGS": {
|
||||
"COMP": {
|
||||
"CLICK": "Click",
|
||||
"FORCE": "Force",
|
||||
"TOUCH": "Touch",
|
||||
"VALUE": "Value",
|
||||
"PROXIMITY": "Proximity",
|
||||
"X_AXIS": "X axis",
|
||||
"Y_AXIS": "Y axis"
|
||||
},
|
||||
"TYPE": {
|
||||
"BUMPER": "Bumper",
|
||||
"DPAD_UP": "D-pad Up",
|
||||
"DPAD_DOWN": "D-pad Down",
|
||||
"DPAD_LEFT": "D-pad Left",
|
||||
"DPAD_RIGHT": "D-pad Right",
|
||||
"JOYSTICK": "Joystick",
|
||||
"MENU": "Menu",
|
||||
"SHOULDER": "Shoulder",
|
||||
"SQUEEZE": "Grip",
|
||||
"SYSTEM": "System",
|
||||
"THUMBREST": "Thumbrest",
|
||||
"THUMBSTICK": "Thumbstick",
|
||||
"TRACKPAD": "Trackpad",
|
||||
"TRIGGER": "Trigger",
|
||||
"VIEW": "View"
|
||||
},
|
||||
"CLICK": {
|
||||
"ANY": "Any",
|
||||
"DOUBLE": "Double-tap",
|
||||
"TRIPLE": "Triple-tap",
|
||||
"TYPE": "Tap count"
|
||||
},
|
||||
"ACTION": {
|
||||
"CLICK": "Click*",
|
||||
"GRAB": "Grab*",
|
||||
"ALT_CLICK": "Custom shell exec (set alt_click in config)",
|
||||
"SHOW_HIDE": "Show, hide, recenter*",
|
||||
"TOGGLE_DASHBOARD": "Toggle dashboard",
|
||||
"SPACE_DRAG": "Playspace drag",
|
||||
"SPACE_ROTATE": "Playspace rotate",
|
||||
"SPACE_RESET": "Playspace reset",
|
||||
"CLICK_MODIFIER_RIGHT": "Right-click modifier",
|
||||
"CLICK_MODIFIER_MIDDLE": "Middle-click modifier",
|
||||
"MOVE_MOUSE": "Move mouse (if off by default)",
|
||||
"SCROLL": "Scroll*"
|
||||
},
|
||||
"LEFT": "Left",
|
||||
"RIGHT": "Right",
|
||||
"COMPONENT": "Actuation type",
|
||||
"SUBPATH": "Actuating control",
|
||||
"THRESHOLD": "Activate when above upper value\nDeactivate when below lower value"
|
||||
},
|
||||
"BROWSE_ONLINE_CATALOG": "Browse online catalog...",
|
||||
"BROWSE_SKYMAPS": "Browse skymaps",
|
||||
"CAPTURE_METHOD": "Screen capture method",
|
||||
"CAPTURE_METHOD_HELP": "Try changing this if you are\nexperiencing black or glitchy screens",
|
||||
"COLOR_KEYING": "Color keying",
|
||||
"COLOR_PALETTE": "Color palette",
|
||||
"COLOR_PALETTE_HELP": "Click to browse color palettes.\nTo create custom ones, see website!",
|
||||
"COLOR_PALETTES": "Color palettes",
|
||||
"COLOR_PALETTE_CURRENT": "Currently active theme.",
|
||||
"COLOR_PALETTE_CUSTOM_URL": "Add your own custom theme!",
|
||||
"COLOR_PALETTE_CUSTOM_URL2": "Click to open web manual.",
|
||||
"COLOR_PALETTE_ACTIVATE": "Click to use this theme.",
|
||||
"CLEAR_PIPEWIRE_TOKENS": "Clear PipeWire tokens",
|
||||
"CLEAR_PIPEWIRE_TOKENS_HELP": "Prompt for screen selection on next start",
|
||||
"CLEAR_SAVED_STATE": "Clear saved state",
|
||||
"CLEAR_SAVED_STATE_HELP": "Reset sets & overlay positions",
|
||||
"CLICK_FREEZE_TIME_MS": "Click freeze time (ms)",
|
||||
"CLICK_FREEZE_TIME_MS_HELP": "Helps with double-click precision",
|
||||
"CLOCK_12H": "12-hour clock",
|
||||
"CONTROLS": "Controls",
|
||||
"DELETE_ALL_CONFIGS": "Wipe configuration",
|
||||
"DELETE_ALL_CONFIGS_HELP": "Remove all configuration files from conf.d",
|
||||
"DOUBLE_CURSOR_FIX": "Double cursor fix",
|
||||
"DOUBLE_CURSOR_FIX_HELP": "Enable this if you see 2 cursors",
|
||||
"DEFAULT_OVERLAY_SCALE": "Default overlay size",
|
||||
"DEFAULT_OVERLAY_SCALE_HELP": "Spawn new overlays at this scale.",
|
||||
"DEFAULT_CURVATURE": "Default overlay curvature",
|
||||
"DEFAULT_OPACITY": "Default overlay opacity",
|
||||
"DEFAULT_POSITIONING": "Default overlay positioning",
|
||||
"OVERLAY_DEFAULTS_HELP": "Only applies to new overlays",
|
||||
"ENABLED": "Enabled",
|
||||
"FEATURES": "Features",
|
||||
"FOCUS_FOLLOWS_MOUSE_MODE": "Mouse move on trigger touch",
|
||||
"HANDSFREE_POINTER": "Handsfree mode",
|
||||
"HANDSFREE_POINTER_HELP": "Input to use when motion\ncontrollers are unavailable.\nLeft pinch is grab, right is click.",
|
||||
"HANDSFREE_ALT_TAB": "App switcher aim",
|
||||
"HANDSFREE_ALT_TAB_HELP": "Hold Super+X, aim at the desired window, then release to switch focus.",
|
||||
"HIDE_GRAB_HELP": "Hide grab help",
|
||||
"HIDE_USERNAME": "Hide username",
|
||||
"INPUT_EMULATION_METHOD": "Input emulation method",
|
||||
"INPUT_EMULATION_METHOD_HELP": "Try change this in case mouse or\nkeyboard input does not register.",
|
||||
"INPUT_CAPTURE_METHOD": "Input capture method",
|
||||
"INPUT_CAPTURE_METHOD_HELP": "Allows using physical peripherial inside WayVR.\n Super+Z: Switch input between WayVR and real desktop\n Super+X: Switch between WayVR apps",
|
||||
"INPUT_PROFILES": "Change Input Bindings",
|
||||
"INPUT_PROFILES_HELP": "OpenXR controller input bindings",
|
||||
"INVERT_SCROLL_DIRECTION_X": "Invert horizontal scroll direction",
|
||||
"INVERT_SCROLL_DIRECTION_Y": "Invert vertical scroll direction",
|
||||
"KEYBOARD_MIDDLE_CLICK": "Keyboard middle click",
|
||||
"KEYBOARD_MIDDLE_CLICK_HELP": "Modifier to use when typing\nwith purple laser",
|
||||
"KEYBOARD_SOUND_ENABLED": "Keyboard sounds",
|
||||
"LANGUAGE": "Language",
|
||||
"LEFT_HANDED_MOUSE": "Left-handed mouse",
|
||||
"LEFT_HANDED_MOUSE_HELP": "Use this if mouse buttons are swapped",
|
||||
"LONG_PRESS_DURATION": "Long press duration",
|
||||
"LOOK_AND_FEEL": "Look & Feel",
|
||||
"MISC": "Miscellaneous",
|
||||
"NOTIFICATIONS_ENABLED": "Enable notifications",
|
||||
"NOTIFICATIONS_SOUND_ENABLED": "Notification sounds",
|
||||
"NOT_SUPPORTED": "Not supported",
|
||||
"NO_SKYMAPS_FOUND": "No skymaps found",
|
||||
"OPAQUE_BACKGROUND": "Opaque background",
|
||||
"OPTION": {
|
||||
"ANCHORED_HELP": "Moves with center marker. Recommended.",
|
||||
"FLOATING_HELP": "Moves independently, recenters.\nEasy to misplace; not recommended.",
|
||||
"STATIC_HELP": "Stays in place relative to world.",
|
||||
"AUTO": "Automatic",
|
||||
"AUTO_HELP": "ScreenCopy GPU if supported,\notherwise PipeWire GPU.",
|
||||
"EYE_ONLY": "Eye laser",
|
||||
"EYE_PINCH": "Eye + pinch",
|
||||
"HMD_ONLY": "HMD laser",
|
||||
"HMD_PINCH": "HMD + pinch",
|
||||
"NONE": "None",
|
||||
"NONE_INPUT_HELP": "Do not emulate mouse and keyboard.\nWill not be able to interact with screens.",
|
||||
"NONE_INPUT_CAPTURE_HELP": "Do not capture mouse and keyboard.\nWill not be able to use physical mouse or\nkeyboard in apps launched inside WayVR.",
|
||||
"PIPEWIRE_HELP": "Fast GPU capture,\nstandard on all desktops.",
|
||||
"PW_FALLBACK_HELP": "Slow method with high CPU usage.\nTry in case PipeWire GPU doesn't work",
|
||||
"SCREENCOPY_GPU_HELP": "Fast, no screen share popups.\nWorks on: Hyprland, Niri, River, Sway",
|
||||
"SCREENCOPY_HELP": "Slow, no screen share popups.\nWorks on: Hyprland, Niri, River, Sway",
|
||||
"UINPUT": "Device emulation",
|
||||
"UINPUT_HELP": "Uses the uinput module to emulate a device.\nKnown to work well on most desktops.",
|
||||
"EVDEV_HELP": "Grab input devices for exclusive use.\nYour user must be in the input group.",
|
||||
"WL_VIRTUAL": "Wayland virtual input",
|
||||
"WL_VIRTUAL_HELP": "Send events to the Wayland compositor using\nzwlr_virtual_pointer and zwp_virtual_keyboard.\nOnly works reliably on some desktops.\nDoes NOT work on KDE, GNOME or COSMIC."
|
||||
},
|
||||
"POINTER_ACCELERATION": "Mouse acceleration",
|
||||
"POINTER_ACCELERATION_HELP": "On: Adaptive mouse acceleration\nOff: Constant speed",
|
||||
"POINTER_LERP_FACTOR": "Pointer smoothing",
|
||||
"POINTER_SPEED": "Mouse speed",
|
||||
"REQUIRES_RESTART": "Requires restart",
|
||||
"RESET_PLAYSPACE": "Reset playspace",
|
||||
"RESET_PLAYSPACE_HELP": "Clear the stage space offset.",
|
||||
"SAVE_PLAYSPACE_CENTER": "Save playspace center",
|
||||
"SAVE_PLAYSPACE_CENTER_HELP": "Use current playspace for reset playspace binding.",
|
||||
"RESET_PLAYSPACE_CENTER": "Reset playspace center",
|
||||
"RESET_PLAYSPACE_CENTER_HELP": "Clear previously set playspace center.",
|
||||
"RESTART_SOFTWARE": "Restart software",
|
||||
"RESTART_SOFTWARE_HELP": "Apply settings that require a restart",
|
||||
"ROUND_MULTIPLIER": "UI Edge roundness",
|
||||
"SCREEN_RENDER_DOWN": "Render screen at lower resolution",
|
||||
"SCREEN_RENDER_DOWN_HELP": "Helps with aliasing on high-res screens",
|
||||
"SCROLL_SPEED": "Scroll speed",
|
||||
"SELECT_VARIANT": "Select variant",
|
||||
"SNAP_ANGLE_DEG": "Window pitch & roll snap angle",
|
||||
"SNAP_ANGLE_DEG_HELP": "Grabbed windows snap to this angle on pitch and roll axis.",
|
||||
"ENABLE_WATCH": "Enable watch",
|
||||
"SETS_ON_WATCH": "Sets on watch",
|
||||
"SHOW_WELCOME_SCREEN": "Show welcome screen",
|
||||
"SKYBOX": "Skymap",
|
||||
"SKYMAP_ALREADY_DOWNLOADED": "This skymap is already downloaded. Select desired action.",
|
||||
"SPACE_DRAG": "Playspace",
|
||||
"SPACE_DRAG_MULTIPLIER": "Space drag multiplier",
|
||||
"SPACE_DRAG_AFFECTS_WORLD": "Leave overlays behind during space move",
|
||||
"SPACE_DRAG_UNLOCKED": "Allow space drag on all axes",
|
||||
"SPACE_GRAVITY_DAMPING": "Damping",
|
||||
"SPACE_GRAVITY_DAMPING_HELP": "Artificial drag to slow down movement. 0.1 - high drag, 1.0 - no drag",
|
||||
"SPACE_GRAVITY_FLING_STRENGTH": "Fling strength",
|
||||
"SPACE_GRAVITY_FLING_STRENGTH_HELP": "Intensity multiplier of gravitational launch force after space-drag.\n0.0 - no movement at all, 2.0 - double intensity",
|
||||
"SPACE_GRAVITY_GRAVITY": "Gravity",
|
||||
"SPACE_GRAVITY_GRAVITY_HELP": "Amount of downwards force. 0.0 - no gravity",
|
||||
"SPACE_GRAVITY_GROUND_FRICTION": "Ground friction",
|
||||
"SPACE_GRAVITY_GROUND_FRICTION_HELP": "Amount of friction slowing you down if you're touching the ground.\n0.0 - no friction (just like on ice), 1.0 - rough surface",
|
||||
"SPACE_GRAVITY_FLOOR_HEIGHT": "Floor height",
|
||||
"SPACE_GRAVITY_FLOOR_HEIGHT_HELP": "The Y position where the floor is. Gravity stops when you reach this height.",
|
||||
"SPACE_ROTATE_UNLOCKED": "Allow space rotate on all axes",
|
||||
"TROUBLESHOOTING": "Troubleshooting",
|
||||
"UI_GRADIENT_INTENSITY": "UI Gradient intensity",
|
||||
"UPRIGHT_SCREEN_FIX": "Upright screen fix",
|
||||
"UPRIGHT_SCREEN_FIX_HELP": "Fixes upright screens on some desktops",
|
||||
"USE_PASSTHROUGH": "Enable passthrough",
|
||||
"USE_PASSTHROUGH_HELP": "Allow passthrough if the XR runtime supports it",
|
||||
"USE_SKYBOX": "Show skymap",
|
||||
"USE_SKYBOX_HELP": "Show a skymap if there's no scene app or passthrough",
|
||||
"WATCH_VIEW_ANGLE": "Watch view angles",
|
||||
"WATCH_VIEW_ANGLE_HELP": "Control how the watch fades away",
|
||||
"WHISPER": {
|
||||
"NEED_TO_DOWNLOAD_MODEL": "The selected model needs to be downloaded.\nDownload it right now?",
|
||||
"REMOVE_UNUSED_MODELS": "You are turning off the speech-to-text feature.\nWould you like to remove downloaded Whisper models to free up space?"
|
||||
},
|
||||
"WHISPER_MODEL": "Speech-to-text model",
|
||||
"WHISPER_MODEL_HELP": "Whisper model to use.\nLarger models produce more accurate\nresults, but consume more VRAM.",
|
||||
"GRID_OPACITY": "Floor grid opacity",
|
||||
"GRID_OPACITY_HELP": "Opacity of the floor grid when the skymap is enabled",
|
||||
"XWAYLAND_BY_DEFAULT": "Run apps in Compatibility mode by default",
|
||||
"SAVE": "Save",
|
||||
"CANCEL": "Cancel"
|
||||
},
|
||||
"APPLICATION_LAUNCHER": "Application launcher",
|
||||
"APPLICATION_STARTED": "Application started",
|
||||
"APPLICATIONS": "Applications",
|
||||
"AUDIO": {
|
||||
"AUTO_SWITCH_TO_VR_AUDIO": "Auto-switch to VR audio",
|
||||
"CARDS": "Cards",
|
||||
"FAILED_TO_SWITCH_MICROPHONE": "Failed to switch microphone",
|
||||
"MICROPHONE_SET_SUCCESSFULLY": "Microphone set successfully",
|
||||
"MICROPHONES": "Microphones",
|
||||
"NO_VR_MICROPHONE_SWITCH_MANUALLY": "No VR microphone found. Switch it manually.",
|
||||
"NO_VR_SPEAKERS_FOUND_SWITCH_MANUALLY": "No VR speakers found. Switch them manually.",
|
||||
"SELECT_AUDIO_CARD_PROFILE": "Select audio card profile",
|
||||
"SETTINGS": "Audio settings",
|
||||
"SPEAKERS": "Speakers",
|
||||
"SPEAKERS_SET_SUCCESSFULLY": "Speakers set successfully",
|
||||
"VOLUME": "Volume"
|
||||
},
|
||||
"CLOSE_WINDOW": "Close window",
|
||||
"CREATION_DATE": "Creation date",
|
||||
"DEBUG_INFO": "Debug info",
|
||||
"DISPLAY_BRIGHTNESS": "Display brightness",
|
||||
"DONATE": {
|
||||
"SUPPORT_US": "Support us",
|
||||
"DESCRIPTION": "We're a small team of 2 developers building WayVR in our free time. If you enjoy using this software, please consider supporting us - every donation helps us keep going.",
|
||||
"THANK_YOU_WAYVR": "Thank you from the WayVR Team!",
|
||||
"BUTTON_TOOLTIP": "Donate via Open Collective",
|
||||
"CURRENT_SUPPORTERS": "Current Supporters"
|
||||
},
|
||||
"DOWNLOAD": "Download",
|
||||
"DOWNLOADER": "Downloader",
|
||||
"WELCOME": {
|
||||
"ALL_SET": "You're all set!",
|
||||
"BASICS": "These basics will allow you to start using WayVR with ease.",
|
||||
"CENTER_MARKER": "Center marker is what will appear in front of you when recentering. Place overlays around it!",
|
||||
"DOUBLE_PRESS_TO_TOGGLE": "Double-press B (on Index) or Y (on Meta) to show, recenter or hide your set. Try it now.",
|
||||
"FEATURES_DOCUMENTATION": "There are many other features worth customizing. For more information, check the documentation at",
|
||||
"FINISH_TUTORIAL": "Finish tutorial",
|
||||
"GRAB_BOTH_HANDS": "Grab it with both hands if you want to move a specific overlay in your set.",
|
||||
"GRAB_ONE_HAND": "Grab it with one hand to move your set.",
|
||||
"GREETING": "Hi there!",
|
||||
"GUIDE_INTRO": "Let us guide you through your first steps.",
|
||||
"LASER_COLORS": "Laser Colors",
|
||||
"LASER_FUNCTIONALITY": "Much of the functionality in WayVR depends on what color of laser is used to interact with a UI element. You don't need to press these buttons, just touch them!",
|
||||
"LAST_PAGE_INFO": "This tutorial will stop showing up once you get to the last page.",
|
||||
"LOOK_AT_LEFT_WRIST": "Look at your left wrist. That's your watch.",
|
||||
"MIDDLE_CLICK_MODE_PURPLE_LASER": "Middle-click Mode: Purple laser",
|
||||
"MOVING_YOUR_SET": "Moving your set",
|
||||
"NEXT_BUTTON": "Press Next button below to get started.",
|
||||
"REGULAR_MODE_BLUE_LASER": "Regular Mode: Blue laser",
|
||||
"REPOSITION_THIS_WINDOW_BY_GRABBING": "Reposition this window using your controller's grip action.",
|
||||
"RIGHT_CLICK_MODE_ORANGE_LASER": "Right-click Mode: Orange laser",
|
||||
"THANKS_FOR_INSTALLING": "Thank you for installing WayVR!",
|
||||
"WATCH": "Watch",
|
||||
"WORKING_SET": "Working Set"
|
||||
},
|
||||
"DOWNLOAD_AGAIN": "Download again",
|
||||
"DOWNLOADING_FILE": "Downloading file...",
|
||||
"FAILED_TO_LAUNCH_APPLICATION": "Failed to launch a application:",
|
||||
"GAME_LAUNCHED": "Game launched",
|
||||
"GAME_LIST": {
|
||||
"NO_GAMES_FOUND": "No games found",
|
||||
"RUNNING_GAMES_LIST": "List of running games"
|
||||
},
|
||||
"GAMES": "Games",
|
||||
"GENERAL_SETTINGS": "General settings",
|
||||
"GETTING_STARTED": "Getting started",
|
||||
"HEIGHT": "Height",
|
||||
"HELLO": "Hello!",
|
||||
"HELLO_USER": "Hello, {USER}!",
|
||||
"HIDE": "Hide",
|
||||
"HOME_SCREEN": "Home",
|
||||
"MODIFICATION_DATE": "Modification date",
|
||||
"MONADO_RUNTIME": "Monado runtime",
|
||||
"LOADING": "Loading...",
|
||||
"POPUP_ADD_DISPLAY": {
|
||||
"RESOLUTION": "Resolution"
|
||||
},
|
||||
"PROCESS": {
|
||||
"FORCE_KILL": "Force-kill",
|
||||
"STOP": "Stop"
|
||||
},
|
||||
"PROCESS_LIST": "Process list",
|
||||
"REFRESH": "Refresh",
|
||||
"REMOVE": "Remove",
|
||||
"APPLY": "Apply",
|
||||
"RELOAD_FROM_DISK": "Reload from disk",
|
||||
"SETTINGS": "Settings",
|
||||
"SHOW": "Show",
|
||||
"TARGET_PATH": "Target path",
|
||||
"TERMINATE_PROCESS": "Terminate process",
|
||||
"VERSION": "Version",
|
||||
"WIDTH": "Width",
|
||||
"PINNED_APPS": "Pinned applications",
|
||||
"SAVED_TO_FAVOURITES": "Saved to pinned apps",
|
||||
"ADD_TO_FAVOURITES": "Add to pinned apps",
|
||||
"ADD_TO_FAVOURITES_HINT": "Save preset and pin it to the app drawer",
|
||||
"REMOVE_FROM_FAVOURITES": "Remove from pinned apps",
|
||||
"EMPTY": "Empty"
|
||||
}
|
||||
|
|
@ -196,39 +196,42 @@ function gen_prompt(
|
|||
english_translation: string,
|
||||
context: string,
|
||||
) {
|
||||
let num = 1;
|
||||
for (const example of template.examples) {
|
||||
description += "\nExample " + num + ":\n\n";
|
||||
for (let num = 1; num <= template.examples.length; num++) {
|
||||
const example = template.examples[num - 1]!;
|
||||
description +=
|
||||
"Translate key `" +
|
||||
example.key +
|
||||
"` from English to " +
|
||||
template.full_name +
|
||||
":\n\n";
|
||||
description += "```\n";
|
||||
description += example.en + "\n";
|
||||
description += "```\n\n";
|
||||
description += "Result:\n\n";
|
||||
description += "```\n";
|
||||
description += example.translated + "\n";
|
||||
description += "```\n";
|
||||
num += 1;
|
||||
`\nExample ${num}:\n\n` +
|
||||
`Translate key \`${example.key}\` from English to ${template.full_name}:\n\n` +
|
||||
"```\n" +
|
||||
example.en +
|
||||
"\n```\n\n" +
|
||||
"Result:\n\n```\n" +
|
||||
example.translated +
|
||||
"\n```\n";
|
||||
}
|
||||
description += "\nEnd of examples.\n\n";
|
||||
description += "Context: " + context + "\n\n";
|
||||
description +=
|
||||
"Translate key `" +
|
||||
key +
|
||||
"` from English to " +
|
||||
template.full_name +
|
||||
":\n\n";
|
||||
description += "```\n";
|
||||
description += english_translation + "\n";
|
||||
description += "```\n";
|
||||
`\nEnd of examples.\n\n` +
|
||||
`Context: ${context}\n\n` +
|
||||
`Translate key \`${key}\` from English to ${template.full_name}:\n\n` +
|
||||
"```\n" +
|
||||
english_translation +
|
||||
"\n```\n";
|
||||
return description;
|
||||
}
|
||||
|
||||
async function run() {
|
||||
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);
|
||||
|
||||
if (template_name === "en") {
|
||||
await fsp.writeFile(
|
||||
lang_path + "/en.json",
|
||||
JSON.stringify(orig_english_json, undefined, "\t"),
|
||||
);
|
||||
console.log("Translation en copied");
|
||||
return;
|
||||
}
|
||||
|
||||
const template = JSON.parse(
|
||||
await fsp.readFile(templates_path + "/" + template_name + ".json", "utf-8"),
|
||||
) as Template;
|
||||
|
|
@ -242,42 +245,15 @@ async function run() {
|
|||
template.full_name,
|
||||
);
|
||||
|
||||
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)) {
|
||||
try {
|
||||
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 {
|
||||
orig_translated_json = JSON.parse(
|
||||
(
|
||||
await fsp.readFile(lang_path + "/" + template_name + ".json")
|
||||
).toString(),
|
||||
);
|
||||
} catch (_e) {}
|
||||
|
||||
let total_count = 0;
|
||||
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);
|
||||
|
|
@ -294,10 +270,6 @@ async function run() {
|
|||
const english_translation = entry.english;
|
||||
const context = entry.context;
|
||||
|
||||
if (key_exists(orig_translated_json, key)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (key_exists(llm_translated_json, key)) {
|
||||
continue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ if [ -z "${LLAMA_BASE_URL}" ]; then
|
|||
export LLAMA_BASE_URL="http://127.0.0.1:8080"
|
||||
fi
|
||||
|
||||
TEMPLATE="en" bun main.ts
|
||||
TEMPLATE="pl" bun main.ts
|
||||
TEMPLATE="de" bun main.ts
|
||||
TEMPLATE="ja" bun main.ts
|
||||
|
|
|
|||
|
|
@ -1,17 +1,63 @@
|
|||
{
|
||||
"EDIT_MODE": {
|
||||
"STEREO_3D_MODE": {
|
||||
"ADJUST_MOUSE": "Adjust mouse",
|
||||
"FULL_FRAME": "Full 3D",
|
||||
"FULL_FRAME_BAT": "Full-BAT",
|
||||
"FULL_FRAME_SBS": "Full-SBS",
|
||||
"FULL_FRAME_TAB": "Full-TAB",
|
||||
"SPLIT_BOTTOM_TOP": "BOTTOM→TOP",
|
||||
"SPLIT_LEFT_RIGHT": "LEFT→RIGHT",
|
||||
"SPLIT_RIGHT_LEFT": "RIGHT→LEFT",
|
||||
"SPLIT_TOP_BOTTOM": "TOP→BOTTOM",
|
||||
"TITLE": "3D Stereo Mode"
|
||||
"DEFINITIONS": {
|
||||
"ANCHORED": "Anchored",
|
||||
"FLOATING": "Floating",
|
||||
"STATIC": "Static",
|
||||
"SET": "Set",
|
||||
"WATCH": "Watch",
|
||||
"DASHBOARD": "Dashboard",
|
||||
"EDIT_MODE": "Edit Mode",
|
||||
"MIRROR": "Mirror",
|
||||
"SETTINGS": "Settings",
|
||||
"KEYBOARD": "Keyboard",
|
||||
"TASKBAR": "Taskbar",
|
||||
"FEATURES": "Features",
|
||||
"OVERLAY": "Overlay"
|
||||
},
|
||||
"ANCHOR": {
|
||||
"CENTER": "Center"
|
||||
},
|
||||
"BAR": {
|
||||
"ADD_MIRROR": "Add a new mirror overlay",
|
||||
"ADD_NEW_SET": "Add new set",
|
||||
"ADD_PASSTHRU": "Add new pass-through cutout",
|
||||
"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": "Hands-free 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°",
|
||||
|
|
@ -23,6 +69,29 @@
|
|||
"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 together with set. 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: Not part of any set, no recenter.",
|
||||
"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",
|
||||
"FULL_FRAME_BAT": "Full-BAT",
|
||||
"FULL_FRAME_SBS": "Full-SBS",
|
||||
"FULL_FRAME_TAB": "Full-TAB",
|
||||
"SPLIT_BOTTOM_TOP": "BOTTOM→TOP",
|
||||
"SPLIT_LEFT_RIGHT": "LEFT→RIGHT",
|
||||
"SPLIT_RIGHT_LEFT": "RIGHT→LEFT",
|
||||
"SPLIT_TOP_BOTTOM": "TOP→BOTTOM",
|
||||
"TITLE": "3D Stereo Mode"
|
||||
}
|
||||
},
|
||||
"ALTTAB": {
|
||||
|
|
@ -33,7 +102,6 @@
|
|||
"GRAB": "Move individual overlay",
|
||||
"DASH": "Toggle dashboard",
|
||||
"EDIT": "Toggle edit mode",
|
||||
"KEYBOARD": "Toggle keyboard",
|
||||
"SET": "Switch set",
|
||||
"RECENTER": "Show/hide/recenter",
|
||||
"GENERAL_BINDS": "General bindings",
|
||||
|
|
@ -45,7 +113,7 @@
|
|||
"GRAB": {
|
||||
"ADJUST_DISTANCE": "Adjust distance",
|
||||
"ADJUST_SIZE": "Adjust size",
|
||||
"GRABBING_ANCHORED": "Anchored overlays all move together. Separate a single window by grabbing it with the other hand while still grabbing the anchor.",
|
||||
"GRABBING_ANCHORED": "Anchored overlays move with the set. Separate a single window by grabbing it with the other hand while still grabbing the set.",
|
||||
"GRABBING_ANCHORED_EDIT": "This overlay will stay anchored to the center marker.",
|
||||
"GRABBING_FLOATING": "This overlay is Floating and will stay in place, unless recentered.",
|
||||
"GRABBING_FOLLOW": "This overlay will follow the device it is attached to.",
|
||||
|
|
@ -71,17 +139,16 @@
|
|||
"LAST_EXISTING_SET": "This is the last existing set.",
|
||||
"LETS_ADD_OVERLAYS": "Let's add some overlays from the taskbar!",
|
||||
"MAXIMUM_SETS_REACHED": "Maximum number of sets reached.",
|
||||
"NO_KEYMAPS_CONFIGURED": "No keyboard layouts configured",
|
||||
"NO_KEYMAPS_CONFIGURED_HELP": "Check the wayvr.org on how to set up your keyboard layouts!",
|
||||
"NO_SET_SELECTED": "No set is selected.",
|
||||
"ONE_CONTROLLER_ON_FLOOR": "Place one controller on the floor!",
|
||||
"NO_KEYMAPS_CONFIGURED": "No keymaps configured.",
|
||||
"NO_KEYMAPS_CONFIGURED_HELP": "Check the wayvr.org on how to set up your keymaps!"
|
||||
"ONE_CONTROLLER_ON_FLOOR": "Place one controller on the floor!"
|
||||
},
|
||||
"WATCH": {
|
||||
"ADD_NEW_SET": "Add a new set",
|
||||
"CLEANUP_MIRRORS": "Remove mirrors that are\nnot currently visible",
|
||||
"DASHBOARD": "Dashboard",
|
||||
"EDIT_MODE": "Edit Mode",
|
||||
"EDIT_MODE_EXPLANATION": "Overlays can now be moved and tuned individually.\nControl which overlays are visible on this set:",
|
||||
"FIX_FLOOR": "Fix floor level",
|
||||
"LONG_PRESS_TO_DELETE_SET": "Hold to delete",
|
||||
"RECENTER": "Recenter playspace",
|
||||
|
|
@ -99,20 +166,5 @@
|
|||
"INITIAL_TEXT": "Press and hold the mic button to start transcribing...",
|
||||
"INIT_ERROR": "Error while starting Whisper engine",
|
||||
"ENTER_KEY": "Enter key"
|
||||
},
|
||||
"DEFINITIONS": {
|
||||
"ANCHORED": "Anchored",
|
||||
"FLOATING": "Floating",
|
||||
"STATIC": "Static",
|
||||
"SET": "Set",
|
||||
"WATCH": "Watch",
|
||||
"DASHBOARD": "Dashboard",
|
||||
"EDIT_MODE": "Edit Mode",
|
||||
"MIRROR": "Mirror",
|
||||
"SETTINGS": "Settings",
|
||||
"KEYBOARD": "Keyboard",
|
||||
"TASKBAR": "Taskbar",
|
||||
"FEATURES": "Features",
|
||||
"OVERLAY": "Overlay"
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue