diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-01-07 15:32:07 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-01-07 15:32:37 +0800 |
| commit | 197363c9ed2b285db220988590dfc13edcbbad41 (patch) | |
| tree | 6152f0f71844afe25c193d710a97662c458095b1 /resources/locales/en.yml | |
| parent | 0044c072e2a55c09feb041d60251e184c8d1f2a1 (diff) | |
Move resources to resources directory
Diffstat (limited to 'resources/locales/en.yml')
| -rw-r--r-- | resources/locales/en.yml | 1303 |
1 files changed, 1303 insertions, 0 deletions
diff --git a/resources/locales/en.yml b/resources/locales/en.yml new file mode 100644 index 0000000..be88c60 --- /dev/null +++ b/resources/locales/en.yml @@ -0,0 +1,1303 @@ +# l10n file - en + +# The following syntax can be used in text +# 1. **Bold** +# 2. *Italic* +# 3. [[red]]Color[[/]] +# 4. `text` (auto colored green) +# 5. <文本> (auto colored cyan) +# +# For color usage, please refer to: +# RED = Emergency, Error +# YELLOW = Warning +# +# CYAN = Emphasis +# GREEN = Text Content +# +# GRAY = De-emphasis, Ignore +# GREY = Same as above +# +# For Analyzer results: +# YELLOW = Move operation = ">" symbol +# GREEN = Create operation = "+" symbol +# RED = Lost operation = "-" symbol +# MAGENTA = Erase operation = "&" symbol +# CYAN = Modify operation = "*" symbol + +common: + confirm: | + Confirm to perform the above operation? (Y/n): + + word: + version: Version + cli_version: CLI Version + vcs_version: VCS Version + +jvv: + version: + header: | + JVCS Upstream Manager - %{version} (Core: [[cyan]]%{vcs_version}[[/]]) + + compile_info: | + Compile Info + Compile Date - [[cyan]]%{build_time}[[/]] + Target - [[cyan]]%{build_target}[[/]] + Platform - [[cyan]]%{build_platform} - %{build_toolchain}[[/]] + + Core - [[cyan]]%{core_build_branch}[[/]] (Commit: %{core_build_commit}) + CLI - [[cyan]]%{cli_build_branch}[[/]] (Commit: %{cli_build_commit}) + + help: | + **JustEnoughVCS Upstream Vault Commands** + This program directly creates, manages, and runs JustEnoughVCS upstream vaults. + **Warning**: It directly operates on vault data - please operate with caution! + * With great power comes great responsibility * + + **VAULT**: + create <NAME> - Create a vault in the given directory name + init - Create a vault in the current directory + + **QUERY**: + here - Query information about the current vault + + **MEMBERS**: + member [list|register|remove] + list - List members + register <MEMBER_NAME> - Register a member + remove <MEMBER_NAME> - Remove a member + + **SERVICES**: + service listen - Run the server + + Additionally, you can use jvv <CMD_NAME> --help to query more detailed help! + + here: | + **Display Vault Information Here** + **Example**: cd ./target_dir/ && jvv here + + create: | + **Create a new vault with the given name** + **Usage**: jvv create <VAULT_NAME> + + **Example**: jvv create MyVault + Creates a directory named 'MyVault' and initializes a vault inside it. + + init: | + **Initialize a vault in the current directory** + **Usage**: jvv init + + Uses the current directory's name as the vault name. + + member: | + **Member Management** + **Usage**: jvv member <register/remove> <MEMBER_NAME> + + Register or remove members based on the given member name. + + It is recommended to use the "snake_case" naming format, + as it will be stored in this format in the configuration file + **Example**: jvv member register vault_member + + **Query**: jvv member list + Equivalent to running `jvv here` in the members directory. + + **Tip**: Does not manage private keys automatically. Keys must be handled manually. + + service: | + **Service Management** + **Usage**: + jvv service listen - Start the server in the current vault + You can use --port to set the listening port, + use --no-log to disable log output + + info: + here: + analyzing_size: Analyzing vault storage size... + + fail: + jvcs: "JustEnoughVCS Error: %{err}" + no_vault_here: No vault found here + + tokio: + fs: + create_dir: Failed to create directory %{dir} + create_dir_all: Failed to create directory %{dir} + + std: + current_dir: Failed to get current directory + current_dir_name: Failed to get current directory name + set_current_dir: Failed to set current directory to %{dir} + + here: + cfg_not_found: Could not find vault configuration! + If you wish to use this directory as a vault, please use jvv init --help to view related help + + vault_init_failed: Failed to initialize vault! + size_calc_error: Failed to calculate vault storage size! + member_ids_failed: Failed to get member IDs! + ref_sheet_not_found: Reference sheet `ref` not found, but it should exist! + + create: + not_empty: Operation denied! The specified directory already exists. + + init: + not_empty: Operation denied! The directory is not empty. + + member: + register: Failed to create member! Please check if a member with the same name already exists + list: Failed to get member ID! + + service: + listen_done: | + Server forced to close due to error! + Error message: %{error} + + wtf_show_log_and_no_log: | + You cannot both show and hide log output at the same time! + + " + This reminds me of the old saying: 'You can't have your cake and eat it too.' + Or perhaps the classic logical puzzle: 'This statement is false.' + " + + Your command is a paradox: show the logs, and do not show the logs. Which contradictory order should I follow? + + **Tip**: Use `jvv listen --no-log` or `jvv listen --show-log` to override the default Logger setting. + + success: + here: + info: | + Found vault *`%{name}`*! (%{num_mem} Members, %{num_pk} registered PubKeys) + Managing %{num_sheets} Sheets, %{num_vf} VirtualFiles, total %{total_size} + + **Tip**: To start the server, run jvv service listen + + create: Successfully created vault at `%{name}`! + + init: Successfully initialized vault here! + + member: + register: Successfully created member `%{member}`! + remove: | + Successfully removed `%{member}` from the vault! + (or they were never here?) + list: + header: | + **There are %{num} member(s) in the current vault:** + + footer: | + **Among them, %{num} members have registered PubKeys.** + + status_key_registered: (REGISTERED) + + service: + listen_start: Listening for client connections in vault `%{path}` ... + listen_done: Server shutdown! + +jv: + version: + header: | + JVCS CommandLine - [[cyan]]%{version}[[/]] (Core: [[cyan]]%{vcs_version}[[/]]) + + compile_info: | + Compile Info + Compile Date - [[cyan]]%{build_time}[[/]] + Target - [[cyan]]%{build_target}[[/]] + Platform - [[cyan]]%{build_platform} - %{build_toolchain}[[/]] + + Core - [[cyan]]%{core_build_branch}[[/]] (Commit: %{core_build_commit}) + CLI - [[cyan]]%{cli_build_branch}[[/]] (Commit: %{cli_build_commit}) + + tip: + not_workspace: | + Not in workspace directory. + Use `jv create <name>` or `jv init` to create workspace + + no_account: | + No accounts registered on this computer. + Use `jv account add <account_name>` to create account + + no_account_set: | + Current workspace account is `unknown`, meaning no account is set + Use `jv as <account_name>` to set account for workspace + or use `jv login <account_name> <upstream_address>` to directly login to the upstream vault + + account_not_exist: | + The account `%{account}` set for the current workspace is not registered on your computer + + outdated: | + Workspace info has not been updated for %{hour} hours %{minutes} minutes + Use `jv update` to get the latest information + + help: | + **JustEnoughVCS** + This program connects to upstream vaults to synchronize and commit changes to local workspace files for collaborative work. + + **ALIASES**: + jv u - Download latest information [[cyan]][REMOTE][[/]] + jv t - Track files [[cyan]][REMOTE][[/]] + jv a - Align files to sheet + jv [in|out] - Import or export files [[cyan]][REMOTE][[/]] + + **UPSTREAM VAULT**: + login <ACCOUNT> <UPSTREAM> - Login to upstream vault [[cyan]][REMOTE][[/]] + direct <UPSTREAM> - Direct workspace to upstream vault [[cyan]][REMOTE][[/]] + unstain - Unstain workspace, clear association + update - Download latest information [[cyan]][REMOTE][[/]] + + **ACCOUNTS**: + account [list|as|add|remove|movekey|genpub] + list - List accounts + as <ACCOUNT_NAME> - Switch account in workspace + add <ACCOUNT_NAME> - Add account to this computer + remove <ACCOUNT_NAME> - Remove account from computer + movekey <NAME> <KEY_FILE> - Move private key file to specified account + genpub <NAME> <DIRECTORY> - Output public key file to specified directory + + **SHEETS**: + sheet [list|use|exit|make|drop|align] + list - List all sheets + use - Use sheet, start work + exit - Exit sheet, clear current modifications + make - Create a new sheet for yourself [[cyan]][REMOTE][[/]] + drop - Drop the sheet for others to use [[cyan]][REMOTE][[/]] + align - Align files to sheet [[cyan]][REMOTE][[/]] + + **CONTEXT**: + here - Display path information + status - Display current sheet status information + info <FILE_PATH> - Display individual file status + + **FILE TRANSFER**: + share <FILE> <SHEET> <DESC> - Share mapping to other sheets [[cyan]][REMOTE][[/]] + share <SHARE_ID> - Import share to current sheet [[cyan]][REMOTE][[/]] + share <REF_SHEET> <FILE> - Import mapping from other ref sheet [[cyan]][REMOTE][[/]] + + **FILE OPERATIONS**: + move <FILE> <TO> - Safely rename files [[cyan]][REMOTE][[/]] + track <FILE> - Track files to latest version [[cyan]][REMOTE][[/]] + hold <FILE> - Hold, sync and lock file [[cyan]][REMOTE][[/]] + throw <FILE> - Throw, sync and unlock file [[cyan]][REMOTE][[/]] + jump <FILE> <VERSION> - Jump file to other version [[cyan]][REMOTE][[/]] + + **DOCUMENTATION**: + docs list - List all available documentation + docs <DOC_NAME> - View content of specified documentation + + You can use jv <COMMAND_NAME> --help to query more detailed help! + + **Tip**: If you need to understand JustEnoughVCS collaboration paradigms, use jv docs get_started + + account: | + **Manage Local Accounts** + **Usage**: + jv account list - List all accounts on this computer and whether private keys are registered + jv account as <ACCOUNT_NAME> - Switch current account + jv account as host/<ACCOUNT_NAME> - Switch to account in Host mode + jv account add <ACCOUNT_NAME> - Add an account to this computer + jv account remove <ACCOUNT_NAME> - Delete this account + jv account movekey <ACCOUNT_NAME> <PRIVATE_KEY_FILE> - Move private key to specified account + jv account genpub <ACCOUNT_NAME> <OUTPUT_DIR> - Output public key to specified directory, leave empty for current directory + + **Tip**: Use jv account add <ACCOUNT_NAME> --keygen to automatically generate ED25519 private key for your account + **Note**: Both `--keygen` and `genpub` require your computer to be able to directly call OpenSSL command-line tools + + Accounts are identity identifiers on the local computer, each account can be associated with different private keys. + You need to set up accounts before interacting with upstream vaults. + + sheet: | + **Manage Sheets** + **Usage**: + jv sheet list - List all sheets in the upstream workspace + + jv sheet use <SHEET_NAME> - Use the specified sheet to start current work (automatically created if it doesn't exist) + jv sheet exit - Exit current work + + jv sheet make <SHEET_NAME> - Create a new sheet for yourself + jv sheet drop <SHEET_NAME> - Drop the sheet for others to use + + **Align**: + jv sheet align - View all items that need alignment + + For moved items: + jv sheet align <ITEM> [local/remote] - Align specified moved item + jv sheet align moved [local/remote] - Align all moved items + jv sheet align moved break - Break all move items + + For lost items: + jv sheet align <ITEM> <CREATED_ITEM> - Point to created item to confirm move + jv sheet align <ITEM> confirm - Confirm this file is lost + jv sheet align lost confirm - Confirm all lost items + + For erased items: + jv sheet align <ITEM> confirm - Confirm this file is erased + jv sheet align erased confirm - Confirm all erased items + + jv sheet align --work - Use editor mode to align files + + Sheets are core concepts in JustEnoughVCS, each sheet represents an independent file collection. + You can switch work between different sheets, or export files from one sheet to another. + + create: | + **Create Workspace with Specified Name** + **Usage**: jv create <WORKSPACE_NAME> + + **Example**: jv create my_workspace + Creates a directory named 'my_workspace' in the current directory and initializes a workspace inside it. + + Workspace is your local working environment for file synchronization and version control with upstream vaults. + + init: | + **Create Workspace in Current Directory** + **Usage**: jv init + + This command creates a workspace in the current directory, with the workspace name determined by the current directory name. + + If the current directory is not empty, this operation will fail. Please ensure you execute this command in an empty directory. + + here: | + **Query Directory Information Here** + **Usage**: jv here + + Displays detailed information about current directory files, including: + - File name, size, version number + - Current file holder + - Latest version update description + + **Tip**: Use `jv here --desc` to view the last update description for local files + + status: | + **Display Current Sheet Status Information** + **Usage**: jv status + + Displays the file modification status of the current sheet: + - Added, deleted files + - Moved files + - Modified files + + This is a quick way to understand the current file status of the sheet. + + info: | + **Display File Details** + **Usage**: jv info <FILE_PATH> + Use `--full` to view the full update history + + Display detailed information about the specified file, including: + - File's change history + - File's mapping in `ref` + - File's version in `ref` + + track: | + **Track Files to Latest Fact** + **Usage**: jv track <FILE_PATH> + + It is not uploading, nor downloading, + but a declaration of the result regarding [[cyan]]"which version should be considered fact"[[/]]. + + **Creation** + When there is an untracked file in the workspace, that file does not yet exist in the recognized fact. + Executing track will create the factual version of this file, write it to your sheet, and grant you editing rights. + At this point, you are **the author of this fact**. + + **Update** + When you hold a file and edit based on the current latest fact, + the version in your workspace will be considered the new latest fact. + Executing track will **update this fact to the upstream**. + + **Synchronization** + When you do not hold the file, edit based on outdated facts, or the file does not exist locally, + your modifications do not have factual validity; everything follows the upstream latest version. + Executing track will **synchronize the upstream fact to local**. + To overwrite local modifications, you must explicitly specify `--overwrite`. + + hold: | + **Hold Files: Obtain File Edit Rights from Upstream Vault** + **Usage**: jv hold <FILE_PATH> + + **Example**: jv hold src/lib.rs + When you need to edit a file, you must first hold the file's edit rights. + After holding a file, other collaborators will not be able to edit the same file simultaneously, avoiding conflicts. + + After editing, remember to track the file to save changes. + + throw: | + **Throw Files: Release File Edit Rights from Upstream Vault** + **Usage**: jv throw <FILE_PATH> + + **Example**: jv throw src/config.rs + When you no longer need to edit a file, you can throw the file's edit rights. + After throwing, other collaborators can hold and edit the file. + + If you have made changes to the file but haven't tracked them, throwing will lose those changes. + + move: | + **Move Mapping** + **Usage**: + jv move <MAPPING> <TARGET_MAPPING> - Modify upstream mapping + jv move <MAPPING> --erase - Erase upstream mapping + + **Examples**: + jv move draft/character.png done/character.png - Move mapping + jv move character.png player.png - Rename + jv move . ../publish/ - Batch move + jv move temp/ --erase - Erase mapping + + The move mapping operation modifies the upstream mapping and synchronizes the local structure (use `--only-remote` to cancel local modification) + After moving, you usually need `jv align moved remote` to synchronize the local structure to the upstream + + share: | + **Share File Visibility** + **Usage**: + jv share <FILE> <SHEET> <DESCRIPTION> - Share mapping to other sheets + jv share <SHARE_ID> - Import share to current sheet + + jv share list - View incoming shares + jv share see - View share details + + **Tip**: The import command can use the following parameters + --safe - Safe import, reject all conflicts, this is the default scheme + --skip - Skip all conflicting items + --overwrite - Force overwrite conflicting mappings, dangerous operation + --reject - Reject this share + + **Sharing** is the simplest way to give file visibility to others + + direct: | + **Direct to Specified Upstream Vault and Stain This Workspace** + **Usage**: jv direct <UPSTREAM_VAULT_ADDRESS> + + **Example**: jv direct your_vault.org + This operation connects the current workspace to the specified upstream vault and adds a stain identifier to the workspace. + + After staining, the workspace will only be able to interact with vaults of the specified identifier, ensuring data consistency. + + unstain: | + **Unstain This Workspace** + **Usage**: jv unstain + + **DANGER ZONE**: This operation removes the workspace's stain identifier, after which the workspace will be disconnected from the upstream vault. + + After unstaining, the workspace will no longer be associated with any specific vault and can be reconnected to other vaults. + However, please note that this may cause data synchronization issues, use with caution. + + update: | + **Download Latest Information from Upstream Vault** + **Usage**: jv update + + This operation synchronizes the latest file status, sheet information, and member information from the upstream vault. + + It is recommended to perform an update operation before starting work to ensure you have the latest working environment. + + docs: | + **Query Built-in Documentation** + **Usage**: + jv docs list - List all available documentation + jv docs <DOC_NAME> - View content of specified documentation + jv docs <DOC_NAME> -d - Print content directly + + **Example**: + jv docs get_started + jv docs collaboration -d + + Built-in documentation includes JustEnoughVCS usage guides, collaboration paradigms, and best practices. + + confirm: + login: | + You are logging into upstream vault %{upstream} as %{account}, please confirm + + unstain: | + This operation will disconnect the current workspace from the upstream vault `%{upstream}` + If you reconnect to a vault with a mismatched identifier, it will cause serious problems, please operate with caution! + + direct: | + Do you want to direct the current local workspace to the upstream vault %{upstream}? + + sheet: + make: + restore: | + Sheet `%{sheet_name}` is no holder. Take ownership? + If not, use a different name to create a sheet. + + drop: | + Are you sure you want to drop sheet `%{sheet_name}`? + After this, you will not be able to work in the sheet! + + track: + prepare: | + You are tracking %{file_counts} file(s), these files will follow the following rules + 1. New files will be uploaded and added to your sheet for management + 2. For files you held, unless they don't exist locally or versions don't match, upload logic will always be executed + 3. For files not held unless the version is frozen, download logic will always be executed to get the latest version + + **CURRENT**: + **DOWN**: %{old_files} to sync, %{download_files} to download + **UP** : %{new_files} to track, %{modified_files} to update + + fail: + std: + current_dir: Failed to get current directory + current_dir_name: Failed to get current directory name + set_current_dir: Failed to set current directory to %{dir} + + not_root_dir: This command needs to be execute in the workspace root directory! + + move: + rename_failed: | + **Warning**: Failed to move local file `%{from}` to `%{to}`: %{error} + + has_rename_failed: | + **Tip**: Because the file move was skipped, a deviation will occur. + After moving the file, be sure to use `jv align` to resolve the deviation. + + no_target_dir: | + You did not specify a target directory to move to! + Please use `jv move <mapping> <target_address>` to move the mapping + or use `jv move <mapping> --erase` to erase the mapping + + count_doesnt_match: | + You specified multiple mappings, but the target address is a single mapping. + Please use `jv move multiple_mappings directory/` to move multiple mappings + or use `jv move single_mapping mapping_name` to rename that mapping. + + format_path: | + Failed to format directory %{path}: %{error}. + + path_not_found: | + The directory `%{path}` cannot be found! + + parse: + parser_failed: | + Incorrect command input! + Please use `jv -h` to view help + + str_to_sockaddr: | + Error: %{err} + Cannot recognize *`%{str}`* as a valid address, please check your input! + + from_core: | + **Error**: `%{err}` (This error is from core call) + + share: + share_id_not_exist: | + The share `%{id}` does not exist. + + invalid_target_sheet: | + The sheet `%{sheet}` you specified does not exist in your context. + If you are sure it exists, please use `jv update` to update the workspace. + + sheet: + align: + no_direction: | + Unable to confirm alignment method! + + align_item_not_found: | + Cannot find this alignment item! + **Tip**: Use `jv align` to view available alignment items + + unknown_moved_direction: | + Unknown alignment direction! + Please use `local` or `remote` to indicate whether the path is based on local location or remote location + + target_exists: | + Cannot align local file `%{local}` to remote address `%{remote}` + because another file already exists here. Please move that file away and align again! + + move_failed: | + Failed to move local file: %{err} + **Tip**: Please check file permissions or if the path is correct + + remove_mapping_failed: | + Failed to remove local mapping: %{err} + + delete_mapping_failed: | + Failed to delete mapping from local table: %{err} + **Tip**: Please check the local table configuration file + + no_lost_matched: | + No matching lost item found! + + no_created_matched: | + No matching created item found! + + too_many_lost: | + Found multiple lost items! + + too_many_created: | + Found multiple created items! + + calc_hash_failed: | + Failed to calculate hash for file `%{file}` + + account: + no_user_dir: Cannot find user directory! + add: Failed to add account `%{account}`, please check if the account already exists. + remove: Failed to remove account `%{account}`, please check if the account exists. + list: Failed to get account list! + not_found: Cannot find account `%{account}`! + no_key_registered: Account `%{account}` has no registered private key! + as: Failed to set current account, please ensure the current sheet has been exited + keygen: Failed to generate private key! Please try generating private key manually + keygen_exec: | + Failed to run OpenSSL! + Please check if OpenSSL is installed on your computer + generate_pub_key: | + Failed to generate public key! + Please check if OpenSSL is installed, or manually generate the public key + + init_create_dir_not_empty: | + The current directory is not empty! + If you are certain you want to create here, please use --force to force execution! + + create: Failed to create local workspace! + init: Failed to create workspace here! + get_current_dir: Failed to get current directory! + + workspace_not_found: | + Local workspace not found! Please use this command within a local workspace + If you wish to use this directory as a local workspace, please use jv init + + read_cfg: Failed to read local workspace configuration file! + write_cfg: | + Failed to write modifications to the local workspace configuration file! + This is usually a disk issue. Here is the error message: + %{error} + + cfg_not_found: + local_config: | + Unable to find or read local workspace information! + Please confirm you are in the workspace directory. + + latest_info: | + Unable to find or read the latest upstream information from the perspective of account `%{account}`! + Please use `jv update` to update the workspace! + + latest_file_data: | + Unable to find or read the latest file information from the perspective of account `%{account}`! + Please use `jv update` to update the workspace! + + local_sheet: | + Unable to read or find the local mapping `%{account}/%{sheet}`! + + cached_sheet: | + Unable to read or find the cached information for sheet `%{sheet}` + Please use `jv update` to update the workspace! + + create_socket: Failed to create TCP socket! + connection_failed: Failed to connect to target server! + + unstain: | + The current workspace is not stained, no need to unstain + + not_stained: | + The current workspace is not stained, cannot perform the next operation! + **Tip**: Please first use `jv direct <upstream_address>` to direct to an upstream vault + + change_edit_right: + no_selection: No files selected! + + check_failed: | + In the %{num} selected files, there are items that failed pre-check! + Add `--details` after the command to view specific details + + **Tip**: + Add `--skip-failed` after the command to skip the current failed items and proceed with the operation + Add `--force` to ignore checks and proceed (UNSAFE) + + check_failed_details: + In the %{num} selected files, %{failed} files failed pre-check! + %{items} + + check_fail_item: | + %{path} (%{reason}) + + check_fail_reason: + not_found_in_sheet: Mapping Not Found In Sheet + not_a_tracked_file: File Not Tracked + base_version_unmatch: Version Mismatch + not_holder: Not Holder + has_holder: Held by %{holder} + already_held: Already Held + already_modified: Already Modified + + docs: + not_found: Doc `%{docs_name}` not found! + no_doc_dir: | + Cannot find staging directory! + **Tip**: You can also use `jv docs %{docs_name} -d` to print directly + open_editor: | + Failed to open text editor preview: `%{err}! + **Tip**: You can also use `jv docs %{docs_name} -d` to print directly + + track: + no_selection: | + You did not select any files in this operation! + + **Tip**: If you entered content and still see this, + it may be because the directory you passed is outside the workspace directory, paths outside the workspace will be ignored + + status: + no_sheet_in_use: | + You are not using any sheet! Cannot analyze workspace status in this situation + **Tip**: You can use `jv use <sheet_name>` to select and use a sheet + + analyze: | + Failed to analyze local workspace status! + + use: + sheet_not_exists: | + Sheet `%{name}` does not exist! + **Tip**: Please use `jv update` to update workspace status + + directory_not_empty: | + When no sheet is in use, the workspace should not contain any files! + **Tip**: Please ensure the workspace is clean before using `jv use <sheet_name>` to select and use a sheet + + success: + account: + as: Successfully switched this workspace's account to `%{account}` + as_host: | + Switched to account: `host/%{account}` + If the Host identity is recognized by the upstream vault, you can control all sheets and mappings. + Please remember: "*With great power comes great responsibility*" + add: Successfully added account `%{account}`! + remove: Successfully removed account `%{account}`! + list: + header: | + **There are %{num} account(s) on this computer:** + + status_has_key: (REGISTERED) + move_key: Successfully moved the private key to the account directory! + generate_pub_key: Successfully generated public key at `%{export}`, please give it to the upstream vault administrator! + create: Successfully created local workspace! + init: Successfully created workspace here! + unstain: | + Successfully unstained! + The current workspace no longer belongs to any upstream vault, please direct to a new upstream vault before working + **Tip**: Use `jv direct <upstream_vault_address>` to redirect to a new upstream vault + + sheet: + list: + your_sheet: | + **VISIBLE TO YOU**: + your_sheet_item: | + %{number}. %{name} + your_sheet_item_use: | + %{number}. %{name} [Current] + reference_sheet_suffix: | + [REF] + other_sheet: | + **OTHERS**: + other_sheet_item: | + %{number}. %{name} (AT `%{holder}`) + other_sheet_item_no_holder: | + %{number}. %{name} (NO HOLDER) + tip_has_sheet: | + You are not on any sheet, you can use `jv use <SHEET_NAME>` to use a sheet + tip_no_sheet: | + You don't have any sheets, you can use `jv make <SHEET_NAME>` to create a new sheet + + align: + list: | + Your local workspace has the following alignment tasks pending: + %{tasks} + + task_name: TASK + local_path: LOCAL_FILE + remote_path: REMOTE_FILE + + no_changes: | + Great, no structural deviations in the local workspace, no alignment needed! + + suggestion_1: | + **Suggestion**: Confirm [[magenta]]Erased Items[[/]] + **Example**: Use `jv align %{example_erased} confirm` to confirm this [[magenta]]Erased Item[[/]]! + + [[yellow]]**Note**: After confirmation, the local mapping will be erased, and the file at that location will be moved away.[[/]] + + suggestion_2: | + **Suggestion**: Confirm [[red]]Lost Items[[/]] + Cannot determine if the intent of the file loss is [[red]]Deletion[[/]] or [[yellow]]Move[[/]]! + **Example**: Use `jv align %{example_lost} <action>` to handle this [[red]]Lost Item[[/]] + + **Confirm Deletion**: Enter `confirm` to confirm your operation is a [[red]]Deletion[[/]] + **Declare Move**: Enter a [[green]]Created Item[[/]] to form a [[yellow]]Move[[/]] relationship with it + + suggestion_3: | + **Suggestion**: Align [[yellow]]Moved Items[[/]], confirm the move is based on Local or Remote + **Example**: Use `jv align moved [local|remote]` to batch align + or use `jv align %{example_moved} [local|remote]` to precisely align a move + If this move is not what you expected, + use `jv align %{example_moved} break` to break them + + **Align to Local**: Online , modify the upstream mapping to the local location + **Align to Remote**: Offline, move the local file to the upstream location + + docs: + list: + header: | + **DOCUMENTS**: + + item: | + %{num}. %{docs_name} + + footer: | + **Tip**: Use `jv docs <doc_name>` to view doc, use -d for direct output + + here: + items: + name: NAME + version: VERSION + holder: HOLDER + size: SIZE + editing: STATUS + description: DESC + + path_info: | + CURRENT: %{upstream}/%{account}/%{sheet_name}/%{path} (%{minutes} min ago) + + ghost_directory_item_info: | + ? %{directory_name}/ + + ghost_file_item_info: | + ? %{file_name} + + directory_item_info: | + %{directory_name}/ + + file_item_info: | + %{file_name} + + append_info: + holder: + yourself: | + You + + others: | + %{holder} + + size: | + %{size} + + name: | + %{name} + + version: + unmatch: | + %{remote_version}* + + match: | + %{version} + + editing: + cant_edit: | + R + + cant_edit_but_modified: | + R* + + can_edit: | + R/W + + modified: | + R/W * + + not_local: | + Remote + + description: | + @%{creator}: %{description} + + count_info: | + %{dir_count} dir(s), %{file_count} file(s). Total %{size}. + + info: + oneline: + table_headers: + prefix: _ + version: VERSION + creator: CREATOR + description: DESCRIPTION + description_current: Editing ... + + share: + list: + headers: + id: ID + sharer: SHARER + description: DESCRIPTION + file_count: COUNT + footer: Use `jv share see <ID>` to view the specific content of the share + + content: | + %{share_id} + FROM: %{sharer} + %{description} + MAPPINGS: + %{mappings} + + status: + struct_changes_display: | + Viewing sheet %{sheet_name} (%{h}h %{m}min %{s}secs ago). + + Now in structural change mode: + %{moved_items}%{lost_items}%{erased_items}%{created_items} + **Tip**: Use `jv align` to align moved, lost, and erased changes, + Use `jv track` to track created changes + + content_modifies_display: | + Viewing sheet %{sheet_name} (%{h}h %{m}min %{s}secs ago). + + Now in content change mode: + %{modified_items} + + **Tip**: Use `jv track` to track your changes + + no_changes: | + In sheet %{sheet_name}, status based on %{h} hours %{m} minutes %{s} seconds ago + Your workspace is synchronized with upstream, you can proceed with structural and content editing based on this state! + + no_changes_in_reference_sheet: | + In sheet %{sheet_name}, status based on %{h} hours %{m} minutes %{s} seconds ago + + created_item: | + + Created: %{path} + + lost_item: | + - Lost: %{path} + + moved_item: | + \> Moved: Remote %{from} + Local %{to} + + erased_item: | + & Erased: %{path} + + modified_item: | + \* Modified: %{path} + + invalid_modified_item: | + x Modified: %{path} (%{reason}) + + invalid_modified_reasons: + not_holder: Modified without holding + base_version_mismatch: Base version mismatch for editing + + no_structure_changes: | + No struct changes + + no_file_modifications: | + No modifications + + hint_in_reference_sheet: | + You are accessing the **reference sheet** in **read-only** mode + You can view file content, share visibility, and modify holding rights + But you cannot modify the structure or submit content + + hint_as_host: | + You are in Host mode. + In this mode, you are the final interpreter of vault structure and version progression. + Your operations will directly affect others' work status, and may not be reversible. + + **Structure Maintenance** + 1. You can use `jv align` or `jv move` to edit the reference sheet structure + 2. You can use `jv make` to create new reference sheets, + or convert an unheld sheet into a reference sheet + + **Status Arbitration** + 3. You can use `jv throw` to forcibly discard everyone's edit rights + 4. You can use `jv drop` to forcibly discard others' sheets + + **Fact Advancement** + 5. You can directly use `jv track` in any sheet to advance file versions + + [[red]]**Please remember**: Host is not administrator mode, + but the ultimate bearer of others' structure, history, and interpretive rights. + Every operation you perform will become a fact that others must accept.[[/]] + + result: + common: + not_allowed_in_reference_sheet: | + This operation is not allowed in the reference sheet! + You cannot make any structural changes to the reference sheet + because you are not the maintainer of the reference sheet. + + **Tip**: If you have local moves that need to be aligned, + use `jv align moved remote` to revert the moves. + authroize_failed: | + Authentication failed: %{err}! + unknown: | + Unknown result! + + direct: + redirected: | + Successfully redirected to upstream vault `%{upstream}`! + + redirect_failed: | + Redirection failed: %{err}! + + directed_and_stained: | + Successfully directed to upstream vault `%{upstream}`! + Workspace has been **stained**, ready to start working! + + already_stained: | + Current workspace is already stained and cannot be directed to other upstream vaults with different identifiers + Please use `jv unstain` to remove the stain first + + same_upstream: | + Current upstream is the same as given, no need to redirect + + update: + success: | + Synchronized to latest information! + + fail: + sync_cached_sheet_fail: + path_already_exist: | + Error syncing upstream information to local: Local path %{path} already exists, but a move operation needs to move an item here. + Please try moving the item to a different path, then run `jv update` again + + share: + share_mapping: + success: | + Successfully shared visibility of %{file_nums} files to `%{to_sheet}` + The holder of that sheet, `%{to_sheet_holder}`, will see your share after performing an update + + target_sheet_not_found: | + The sheet `%{to_sheet}` you specified does not exist. + You can use `jv sheet list --all` to list all sheets + + target_is_self: | + You cannot share your own mapping to yourself + + mapping_not_found: | + In your share, a mapping was found that is not recognized by the upstream! + Mapping: %{mapping} + + Please confirm your local mapping is aligned with the upstream. You can use `jv align` to check the status + + unknown: | + Unknown result! + + merge_shares: + success: | + Successfully merged share `%{share_id}` into your sheet `%{sheet}` + Upstream information has changed, please use `jv update` to sync to the latest information + + success_reject: + Rejected share `%{share_id}` + + has_conflicts: | + Conflicts occurred when merging structure from share `%{share_id}` into your sheet! + Because the share contains mappings that overlap with your sheet! + You can use `jv share %{share_id} --skip` + or use `jv share %{share_id} --overwrite` + to select the merge mode + + edit_not_allowed: | + Upstream prevented you from modifying this sheet! + Because you do not have edit rights for this sheet + + share_id_not_found: | + Cannot find the share `%{share_id}` you provided in the upstream + You can use `jv share list` to list all shares after `jv update` + + merge_failed: | + Merge failed: %{error} + + sheet: + make: + success: | + Successfully created sheet `%{name}`! + Upstream changed, use `jv update` to get the latest information + + success_restore: | + Successfully restored sheet `%{name}`! + Upstream changed, use `jv update` to get the latest information + + sheet_already_exists: | + Sheet `%{name}` already exists and is held by other members! + + sheet_creation_failed: | + Sheet creation failed: `%{error}` + + drop: + success: | + Successfully dropped sheet `%{name}`! + Upstream changed, use `jv update` to sync to latest information + **Tip**: You can use `jv make %{name}` to restore this sheet + + sheet_in_use: | + Sheet `%{name}` is in use, cannot drop! + **Tip**: Please use `jv exit` to exit current sheet first + + sheet_not_exists: | + Sheet `%{name}` does not exist! + + sheet_drop_failed: | + Failed to drop sheet: %{err} + + no_holder: | + Sheet `%{name}` has no holder! + + not_owner: | + You are not the holder of sheet `%{name}`, cannot drop it! + + change_edit_right: + failed: + none: | + Do nothing! + + success: + hold: | + Held %{num} files! + + throw: | + Threw %{num} files! + + mixed: | + Successfully modified edit rights for %{num} files! + Held %{num_hold}, Threw %{num_throw} + + track: + done: | + Tracked %{count} files to latest! + **Total**: %{created} Created, %{updated} Updated, %{synced} Synced + + tip_has_skipped: | + **Note**: Skipped %{skipped_num} sync tasks + %{skipped} + Because local modifications exist, the sync task will forcibly overwrite your changes. + Please confirm you really want to overwrite these files. + Use `jv track . --overwrite` to confirm overwriting them + + structure_changes_not_solved: | + There are unresolved local lost and moved items! + **Tip**: Use `jv align` to view items that need to be resolved + + create_failed: + sheet_not_found: | + Sheet `%{name}` does not exist in the upstream vault! + This means the sheet has been deleted in the upstream vault, or the sheet does not belong to you + + create_file_on_exist_path: | + Failed to track and create file! + The file path `%{path}` you want to track already exists in the remote sheet, please use a different path for tracking + + update_failed: + verify: + sheet_not_found: Sheet %{sheet_name} does not exist! + mapping_not_found: | + Cannot get mapping for path %{path} from the sheet! + This means the file does not exist in the sheet. If it exists locally, it may have been deleted + Please use `jv update` to update the workspace and try again + + virtual_file_not_found: | + Cannot read virtual file ID %{vfid} from the mapping! + This means the mapping exists in the sheet, but the actual file information is missing! + Please contact the upstream vault administrator for assistance + + virtual_file_read_failed: | + Cannot read metadata for virtual file %{vfid} from the mapping! + This means the file exists, but the mapping information is corrupted! + Please contact the upstream vault administrator for assistance + + not_held: | + You are not holding file %{path}! + This means you modified the file without holding it, and the upstream vault blocked your update attempt + (Sorry, JustEnoughVCS collaboration is based on serial editing - parallel editing and merging is not allowed) + + **Tip**: If you really need to update this file, you can follow these steps: + 1. First move the file outside the workspace and update the correct version here + 2. Use `jv info <this_file> --holder` to query the member currently editing it + 3. Try to contact them, describe your situation, and wait for them to release editing rights + 4. After editing rights are released, use `jv track <this_file>` to get the latest version from that member + 5. Manually merge your backed-up version into the latest version + 6. Update your modified latest version, then release editing rights + + Finally: You can use `jv here` to check file status in the directory before editing files to ensure you can edit + + version_dismatch: | + The base version of the file you edited does not match the version in the upstream vault! + Your version is %{version_current} while the upstream version is %{version_latest}, the upstream vault blocked your update + + **Tip**: + You can use `jv jump <file> %{version_current}` to jump the version to your local version and update again + If you don't want to force override the version, you can backup the file version, update your local version to the latest, then manually merge the files and update + + Finally: You can use `jv here` to check file status in the directory before editing files to ensure you can edit + + update_but_no_description: | + There are update items in the files you specified, but no information provided + You can use `jv track <file> --desc <description> -v <version>` to update files + or use `jv track . --work` to enter the editor environment for updating + + version_already_exist: | + The version %{version} of file %{path} you are updating already exists in the upstream vault, please use a different version number! + + move: + success: | + Successfully modified mapping! + Upstream information has changed, please use `jv update` to sync to latest information + + mapping_not_found: | + Mapping `%{path}` does not exist! + Please check if the path you entered is correct, or use `jv update` to update workspace status + + invalid_move: + no_target: | + You did not specify a target address for the mapping `%{path}` to move to! + Please use `jv move <mapping> <target_mapping>` to move the mapping + or use `jv move <mapping> --erase` to erase the mapping + + duplicate_mapping: | + Move operation failed because target path `%{path}` already has a mapping! + Please change to another path, or erase the existing mapping first + + unknown: | + Unknown move operation result! + +jvii: + hints: | + [^S WRITE] [ESC EXIT] + + errors: + no_file_path: "Error: No file path provided" + editor_error: "Editor error: %{error}" + file_error: "File error: %{error}" + file_not_found: "File does not exist: %{path}" + not_a_file: "Path is not a file: %{path}" + init_error: "Failed to initialize editor: %{error}" + raw_mode_error: "Failed to enable raw mode: %{error}" + alternate_screen_error: "Failed to enter alternate screen: %{error}" + save_error: "Failed to save file: %{error}" + render_error: "Render error: %{error}" + + messages: + file_saved: "File saved successfully" + unsaved_changes: "Unsaved changes! Press Ctrl+S to save or Esc again to exit" + modified: " *" + + status: + lines: " lines" + +editor: + update_editor: | + # You are using editor mode to track and update files + # The following files will be updated: + # - Adding `#` at the beginning of a line will skip the update, + # - Fill in the version after the arrow + + %{modified_lines} + ---------------------------------------------------------------- + # Fill description here, tell others about the changes you made + %{description} + + modified_line: + header: + file_path: | + # PATH + + old_version: OLD + new_version: NEW + content: + arrow: -> |
