refactor(i18n): route remaining Obsidian UI text through the message catalogue

Continues the source-key migration inside the application boundary introduced
in 1.0.0, where LiveSync owns its catalogue and consumes Commonlib as a
published package.

- Replace hardcoded user-visible strings in the Obsidian UI (Setup Wizard
  dialogues, P2P panes, Customisation Sync panes, Global History, the JSON
  conflict pane and the remote-configuration menu) with `$msg` calls, keeping
  the English source string as the key.
- Wire up strings whose translations already existed in the catalogue but were
  still rendered as literals, for example the whole Intro dialogue.
- Add the new entries to `src/common/messagesYAML/en.yaml` and `es.yaml`, then
  regenerate `messagesJson/` and `combinedMessages.prod.ts` through the
  documented `i18n:bake` pipeline.
- No Commonlib gitlink or catalogue is involved; every change is
  LiveSync-owned.

Regenerating the catalogue also normalises three pre-existing entries each in
`ko.json` and `zh.json`, where the committed JSON kept a trailing space before
a newline that YAML cannot represent.

Verified with tsc-check, tsc-check:apps, svelte-check and lint.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Zeedif
2026-07-30 18:59:19 -06:00
co-authored by Claude Opus 5
parent c385bd7ce7
commit b6746be73e
37 changed files with 3624 additions and 499 deletions
+319 -1
View File
@@ -1,33 +1,78 @@
{
", please select the option that best describes the current state of your Vault. The application will then check your files in the most appropriate way based on your selection.": ", please select the option that best describes the current state of your Vault. The application will then check your files in the most appropriate way based on your selection.",
"(Active)": "(Active)",
"(BETA) Always overwrite with a newer file": "(BETA) Always overwrite with a newer file",
"(Beta) Use ignore files": "(Beta) Use ignore files",
"(Days passed, 0 to disable automatic-deletion)": "(Days passed, 0 to disable automatic-deletion)",
"(e.g., after editing many files whilst offline)": "(e.g., after editing many files whilst offline)",
"(e.g., immediately after restoring on another computer, or having recovered from a backup)": "(e.g., immediately after restoring on another computer, or having recovered from a backup)",
"(e.g., setting up for the first time on a new smartphone, starting from a clean slate)": "(e.g., setting up for the first time on a new smartphone, starting from a clean slate)",
"(ex. Read chunks online) If this option is enabled, LiveSync reads chunks online directly instead of replicating them locally. Increasing Custom chunk size is recommended.": "(ex. Read chunks online) If this option is enabled, LiveSync reads chunks online directly instead of replicating them locally. Increasing Custom chunk size is recommended.",
"(MB) If this is set, changes to local and remote files that are larger than this will be skipped. If the file becomes smaller again, a newer one will be used.": "(MB) If this is set, changes to local and remote files that are larger than this will be skipped. If the file becomes smaller again, a newer one will be used.",
"(Mega chars)": "(Mega chars)",
"(Missing)": "(Missing)",
"(Not recommended) If set, credentials will be stored in the file.": "(Not recommended) If set, credentials will be stored in the file.",
"(Obsolete) Use an old adapter for compatibility": "(Obsolete) Use an old adapter for compatibility",
"(RegExp) Empty to sync all files. Set filter as a regular expression to limit synchronising files.": "(RegExp) Empty to sync all files. Set filter as a regular expression to limit synchronising files.",
"(RegExp) If this is set, any changes to local and remote files that match this will be skipped.": "(RegExp) If this is set, any changes to local and remote files that match this will be skipped.",
"(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": "(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.",
"(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": "(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.",
"↑: Overwrite Remote": "↑: Overwrite Remote",
"↓: Overwrite Local": "↓: Overwrite Local",
"⇅: Use newer": "⇅: Use newer",
"+1 week": "+1 week",
"> [!INFO]- The connected devices have been detected as follows:\n${devices}": "> [!INFO]- The connected devices have been detected as follows:\n${devices}",
"⚠️ Important Notice": "⚠️ Important Notice",
"⚠️ Please Confirm the Following": "⚠️ Please Confirm the Following",
"✔ SELECT": "✔ SELECT",
"✔ SYNC": "✔ SYNC",
"✔ WATCH": "✔ WATCH",
"📡 Off": "📡 Off",
"📡 On": "📡 On",
"🔴 Disconnected": "🔴 Disconnected",
"🕵️ Diag": "🕵️ Diag",
"🗑 Delete": "🗑 Delete",
"🟢 Connected": "🟢 Connected",
"${count} issue(s) detected!": "${count} issue(s) detected!",
"A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.": "A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.",
"Accept": "Accept",
"Accept in session": "Accept in session",
"ACCEPTED": "ACCEPTED",
"ACCEPTED (in session)": "ACCEPTED (in session)",
"Access Key": "Access Key",
"Access Key ID": "Access Key ID",
"Action": "Action",
"Activate": "Activate",
"Active Remote Configuration": "Active Remote Configuration",
"Add default patterns": "Add default patterns",
"Add new connection": "Add new connection",
"AddOn Module (ConfigSync) has not been loaded. This is very unexpected situation. Please report this issue.": "AddOn Module (ConfigSync) has not been loaded. This is very unexpected situation. Please report this issue.",
"AddOn Module (HiddenFileSync) has not been loaded. This is very unexpected situation. Please report this issue.": "AddOn Module (HiddenFileSync) has not been loaded. This is very unexpected situation. Please report this issue.",
"Advanced": "Advanced",
"Advanced Settings": "Advanced Settings",
"After restarting, the data on this device will be uploaded to the server as the 'master copy'. Please be aware that any unintended data currently on the server will be completely overwritten.": "After restarting, the data on this device will be uploaded to the server as the 'master copy'. Please be aware that any unintended data currently on the server will be completely overwritten.",
"After restarting, the database on this device will be rebuilt using data from the server. If there are any unsynchronised files in this vault, conflicts may occur with the server data.": "After restarting, the database on this device will be rebuilt using data from the server. If there are any unsynchronised files in this vault, conflicts may occur with the server data.",
"After that, synchronise to a brand new vault on each other device with the new remote one by one.": "After that, synchronise to a brand new vault on each other device with the new remote one by one.",
"All checks passed successfully!": "All checks passed successfully!",
"All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": "All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.",
"All the same or non-existent": "All the same or non-existent",
"Allow in session": "Allow in session",
"Allow permanently": "Allow permanently",
"Also, please note that if you are using Peer-to-Peer synchronization, this configuration will be used when you switch to other methods and connect to a remote server in the future.": "Also, please note that if you are using Peer-to-Peer synchronization, this configuration will be used when you switch to other methods and connect to a remote server in the future.",
"Always prompt merge conflicts": "Always prompt merge conflicts",
"Analyse": "Analyse",
"Analyse database usage": "Analyse database usage",
"Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.": "Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.",
"Apply All Selected": "Apply All Selected",
"Apply Latest Change if Conflicting": "Apply Latest Change if Conflicting",
"Apply preset configuration": "Apply preset configuration",
"Apply the settings": "Apply the settings",
"Ask a passphrase at every launch": "Ask a passphrase at every launch",
"Auto Connect": "Auto Connect",
"Auto Start P2P Connection": "Auto Start P2P Connection",
"Automatic": "Automatic",
"Automatically Sync all files when opening Obsidian.": "Automatically Sync all files when opening Obsidian.",
"Available Peers": "Available Peers",
"Back": "Back",
"Back to non-configured": "Back to non-configured",
"Batch database update": "Batch database update",
@@ -35,19 +80,31 @@
"Batch size": "Batch size",
"Batch size of on-demand fetching": "Batch size of on-demand fetching",
"Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding. Please disable this toggle when you have enough time. If leave it enabled, also while fetching from the remote database, you will be asked to disable this.": "Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding. Please disable this toggle when you have enough time. If leave it enabled, also while fetching from the remote database, you will be asked to disable this.",
"Broadcasting?": "Broadcasting?",
"Bucket Name": "Bucket Name",
"by resetting the remote, you will be informed on other devices.": "by resetting the remote, you will be informed on other devices.",
"Cancel": "Cancel",
"Cancel Garbage Collection": "Cancel Garbage Collection",
"Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm. Ensure that all your devices are configured to use the same algorithm to maintain access to your data.": "Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm. Ensure that all your devices are configured to use the same algorithm to maintain access to your data.",
"Changing this setting requires migrating existing data (a bit time may be taken) and restarting Obsidian. Please make sure to back up your data before proceeding.": "Changing this setting requires migrating existing data (a bit time may be taken) and restarting Obsidian. Please make sure to back up your data before proceeding.",
"Check": "Check",
"Check and convert non-path-obfuscated files": "Check and convert non-path-obfuscated files",
"Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.": "Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.",
"Checking connection... Please wait.": "Checking connection... Please wait.",
"Chunks": "Chunks",
"Close": "Close",
"Close & Disconnect": "Close & Disconnect",
"Close this dialog": "Close this dialog",
"Closed:": "Closed:",
"cmdConfigSync.showCustomizationSync": "Show Customization sync",
"Comma separated `.gitignore, .dockerignore`": "Comma separated `.gitignore, .dockerignore`",
"Command": "Command",
"Communicating": "Communicating",
"Compaction in progress on remote database...": "Compaction in progress on remote database...",
"Compaction on remote database completed successfully.": "Compaction on remote database completed successfully.",
"Compaction on remote database failed.": "Compaction on remote database failed.",
"Compaction on remote database timed out.": "Compaction on remote database timed out.",
"Compare file": "Compare file",
"Compare the content of files between on local database and storage. If not matched, you will be asked which one you want to keep.": "Compare the content of files between on local database and storage. If not matched, you will be asked which one you want to keep.",
"Compatibility (Conflict Behaviour)": "Compatibility (Conflict Behaviour)",
"Compatibility (Database structure)": "Compatibility (Database structure)",
@@ -56,48 +113,78 @@
"Compatibility (Remote Database)": "Compatibility (Remote Database)",
"Compatibility (Trouble addressed)": "Compatibility (Trouble addressed)",
"Compute revisions for chunks": "Compute revisions for chunks",
"Configuration": "Configuration",
"Configuration Encryption": "Configuration Encryption",
"Configure": "Configure",
"Configure And Change Remote": "Configure And Change Remote",
"Configure E2EE": "Configure E2EE",
"Configure Remote": "Configure Remote",
"Configure the same server information as your other devices again, manually, very advanced users only.": "Configure the same server information as your other devices again, manually, very advanced users only.",
"Connect": "Connect",
"Connected to Signaling Server (as Peer ID: ${peerId})": "Connected to Signaling Server (as Peer ID: ${peerId})",
"Connected:": "Connected:",
"Connection Method": "Connection Method",
"Connection Settings": "Connection Settings",
"Connection:": "Connection:",
"Continue anyway": "Continue anyway",
"Continue to CouchDB setup": "Continue to CouchDB setup",
"Continue to Peer-to-Peer only setup": "Continue to Peer-to-Peer only setup",
"Continue to S3/MinIO/R2 setup": "Continue to S3/MinIO/R2 setup",
"Copy": "Copy",
"Copy Report to clipboard": "Copy Report to clipboard",
"CouchDB Configuration": "CouchDB Configuration",
"CouchDB Connection Tweak": "CouchDB Connection Tweak",
"Create P2P remote": "Create P2P remote",
"Cross-platform": "Cross-platform",
"Current adapter: {adapter}": "Current adapter: {adapter}",
"Custom Headers": "Custom Headers",
"Customization Sync": "Customization Sync",
"Customization Sync (Beta3)": "Customization Sync (Beta3)",
"Data Compression": "Data Compression",
"Data to Copy": "Data to Copy",
"Database -> Storage": "Database -> Storage",
"Database Adapter": "Database Adapter",
"Database Name": "Database Name",
"Database suffix": "Database suffix",
"Date": "Date",
"Default": "Default",
"Delay conflict resolution of inactive files": "Delay conflict resolution of inactive files",
"Delay merge conflict prompt for inactive files.": "Delay merge conflict prompt for inactive files.",
"Delete": "Delete",
"Delete all customization sync data": "Delete all customization sync data",
"Delete all data on the remote server.": "Delete all data on the remote server.",
"Delete All of": "Delete All of",
"Delete local database to reset or uninstall Self-hosted LiveSync": "Delete local database to reset or uninstall Self-hosted LiveSync",
"Delete old metadata of deleted files on start-up": "Delete old metadata of deleted files on start-up",
"Delete Remote Configuration": "Delete Remote Configuration",
"Delete remote configuration '{name}'?": "Delete remote configuration '{name}'?",
"Delete remote configuration '${name}'?": "Delete remote configuration '${name}'?",
"DENIED": "DENIED",
"DENIED (in session)": "DENIED (in session)",
"Deny": "Deny",
"Deny in session": "Deny in session",
"Deny permanently": "Deny permanently",
"Deselect all": "Deselect all",
"desktop": "desktop",
"Detected Peers": "Detected Peers",
"Developer": "Developer",
"Device": "Device",
"device name": "device name",
"Device name": "Device name",
"Device name to identify the device. Please use shorter one for the stable peer detection, i.e., \"iphone-16\" or \"macbook-2021\".": "Device name to identify the device. Please use shorter one for the stable peer detection, i.e., \"iphone-16\" or \"macbook-2021\".",
"Device Peer ID": "Device Peer ID",
"Device Setup Method": "Device Setup Method",
"Devices:": "Devices:",
"Diagnostic RTCPeerConnection is enabled": "Diagnostic RTCPeerConnection is enabled",
"dialog.yourLanguageAvailable": "Self-hosted LiveSync had translations for your language, so the %{Display language} setting was enabled.\n\nNote: Not all messages are translated. We are waiting for your contributions!\nNote 2: If you create an Issue, **please revert to %{lang-def}** and then take screenshots, messages and logs. This can be done in the setting dialogue.\nMay you find it easy to use!",
"dialog.yourLanguageAvailable.btnRevertToDefault": "Keep %{lang-def}",
"dialog.yourLanguageAvailable.Title": " Translation is available!",
"Diff": "Diff",
"Different": "Different",
"Disables all synchronization and restart.": "Disables all synchronization and restart.",
"Disables logging, only shows notifications. Please disable if you report an issue.": "Disables logging, only shows notifications. Please disable if you report an issue.",
"Disconnect": "Disconnect",
"Dismiss": "Dismiss",
"Display Language": "Display Language",
"Display name": "Display name",
"Do not check configuration mismatch before replication": "Do not check configuration mismatch before replication",
@@ -136,33 +223,70 @@
"Enable customization sync": "Enable customization sync",
"Enable Developers' Debug Tools.": "Enable Developers' Debug Tools.",
"Enable edge case treatment features": "Enable edge case treatment features",
"Enable P2P Replicator": "Enable P2P Replicator",
"Enable poweruser features": "Enable poweruser features",
"Enable this if your Object Storage doesn't support CORS": "Enable this if your Object Storage doesn't support CORS",
"Enable this option to automatically apply the most recent change to documents even when it conflicts": "Enable this option to automatically apply the most recent change to documents even when it conflicts",
"Enabled": "Enabled",
"Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server. This means that even if someone gains access to the server, they won't be able to read your data without the passphrase. Make sure to remember your passphrase, as it will be required to decrypt your data on other devices.": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server. This means that even if someone gains access to the server, they won't be able to read your data without the passphrase. Make sure to remember your passphrase, as it will be required to decrypt your data on other devices.",
"Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended.": "Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended.",
"Encrypting sensitive configuration items": "Encrypting sensitive configuration items",
"Encryption Algorithm": "Encryption Algorithm",
"Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.": "Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.",
"End-to-End Encryption": "End-to-End Encryption",
"Endpoint URL": "Endpoint URL",
"Enhance chunk size": "Enhance chunk size",
"Enter a folder prefix (optional)": "Enter a folder prefix (optional)",
"Enter Server Information": "Enter Server Information",
"Enter Setup URI": "Enter Setup URI",
"Enter the server information manually": "Enter the server information manually",
"Enter TURN credential": "Enter TURN credential",
"Enter TURN username": "Enter TURN username",
"Enter your Access Key ID": "Enter your Access Key ID",
"Enter your Bucket Name": "Enter your Bucket Name",
"Enter your database name": "Enter your database name",
"Enter your JWT Key ID": "Enter your JWT Key ID",
"Enter your JWT secret or private key": "Enter your JWT secret or private key",
"Enter your JWT Subject (CouchDB Username)": "Enter your JWT Subject (CouchDB Username)",
"Enter your passphrase": "Enter your passphrase",
"Enter your password": "Enter your password",
"Enter your Region (e.g., us-east-1, auto for R2)": "Enter your Region (e.g., us-east-1, auto for R2)",
"Enter your Secret Access Key": "Enter your Secret Access Key",
"Enter your username": "Enter your username",
"Error during connection test: ${reason}": "Error during connection test: ${reason}",
"Error during testAndFixSettings: ${reason}": "Error during testAndFixSettings: ${reason}",
"Experimental Settings": "Experimental Settings",
"Export": "Export",
"Failed to connect to remote for compaction.": "Failed to connect to remote for compaction.",
"Failed to connect to remote for compaction. ${reason}": "Failed to connect to remote for compaction. ${reason}",
"Failed to connect to the server: ${reason}": "Failed to connect to the server: ${reason}",
"Failed to connect to the server. Please check your settings.": "Failed to connect to the server. Please check your settings.",
"Failed to connect to the signalling relay: ${reason}": "Failed to connect to the signalling relay: ${reason}",
"Failed to create replicator instance.": "Failed to create replicator instance.",
"Failed to parse Setup-URI.": "Failed to parse Setup-URI.",
"Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.": "Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.",
"Failed to start replication after Garbage Collection.": "Failed to start replication after Garbage Collection.",
"Failed:": "Failed:",
"Fetch": "Fetch",
"Fetch chunks on demand": "Fetch chunks on demand",
"Fetch database with previous behaviour": "Fetch database with previous behaviour",
"Fetch remote settings": "Fetch remote settings",
"FETCHING": "FETCHING",
"Fetching status...": "Fetching status...",
"File integrity": "File integrity",
"File to resolve conflict": "File to resolve conflict",
"File to view History": "File to view History",
"Filename": "Filename",
"Final Confirmation: Overwrite Server Data with This Device's Files": "Final Confirmation: Overwrite Server Data with This Device's Files",
"First, please select the option that best describes your current situation.": "First, please select the option that best describes your current situation.",
"Fix": "Fix",
"Flag and restart": "Flag and restart",
"Flagged Selective": "Flagged Selective",
"Folder Prefix": "Folder Prefix",
"For HS256/HS512 algorithms, provide the shared secret key. For ES256/ES512 algorithms, provide the pkcs8 PEM-formatted private key.": "For HS256/HS512 algorithms, provide the shared secret key. For ES256/ES512 algorithms, provide the pkcs8 PEM-formatted private key.",
"Forces the file to be synced when opened.": "Forces the file to be synced when opened.",
"Fresh Start Wipe": "Fresh Start Wipe",
"Furthermore, if conflicts are already present in the server data, they will be synchronised to this device as they are, and you will need to resolve them locally.": "Furthermore, if conflicts are already present in the server data, they will be synchronised to this device as they are, and you will need to resolve them locally.",
"Garbage Collection cancelled by user.": "Garbage Collection cancelled by user.",
"Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": "Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.",
"Garbage Collection Confirmation": "Garbage Collection Confirmation",
@@ -170,15 +294,33 @@
"Garbage Collection: Found ${unusedChunks} unused chunks to delete.": "Garbage Collection: Found ${unusedChunks} unused chunks to delete.",
"Garbage Collection: Scanned ${scanned} / ~${docCount}": "Garbage Collection: Scanned ${scanned} / ~${docCount}",
"Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": "Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}",
"Gathering information...": "Gathering information...",
"Generate Random ID": "Generate Random ID",
"Group ID": "Group ID",
"Handle files as Case-Sensitive": "Handle files as Case-Sensitive",
"Have you created a backup before proceeding?": "Have you created a backup before proceeding?",
"Hidden file synchronization have been temporarily disabled. Please enable them after the fetching, if you need them.": "Hidden file synchronization have been temporarily disabled. Please enable them after the fetching, if you need them.",
"Hidden Files": "Hidden Files",
"Hide completely": "Hide completely",
"Hide not applicable items": "Hide not applicable items",
"Higher (${local} > ${remote})": "Higher (${local} > ${remote})",
"Highlight diff": "Highlight diff",
"How to display network errors when the sync server is unreachable.": "How to display network errors when the sync server is unreachable.",
"How would you like to configure the connection to your server?": "How would you like to configure the connection to your server?",
"However, This should not be enabled if you want to increase your secrecy more.": "However, This should not be enabled if you want to increase your secrecy more.",
"I am adding a device to an existing synchronisation setup": "I am adding a device to an existing synchronisation setup",
"I am setting this up for the first time": "I am setting this up for the first time",
"I am setting up a new server for the first time / I want to reset my existing server.": "I am setting up a new server for the first time / I want to reset my existing server.",
"I am unable to create a backup of my Vault.": "I am unable to create a backup of my Vault.",
"I am unable to create a backup of my Vaults.": "I am unable to create a backup of my Vaults.",
"I have created a backup of my Vault.": "I have created a backup of my Vault.",
"I know my server details, let me enter them": "I know my server details, let me enter them",
"I understand that all changes made on other smartphones or computers possibly could be lost.": "I understand that all changes made on other smartphones or computers possibly could be lost.",
"I understand that other devices will no longer be able to synchronise, and will need to be reset the synchronisation information.": "I understand that other devices will no longer be able to synchronise, and will need to be reset the synchronisation information.",
"I understand that this action is irreversible once performed.": "I understand that this action is irreversible once performed.",
"I understand the risks and will proceed without a backup.": "I understand the risks and will proceed without a backup.",
"I Understand, Overwrite Server": "I Understand, Overwrite Server",
"If \"Auto Start P2P Connection\" is enabled, the P2P connection will be started automatically when the plug-in launches.": "If \"Auto Start P2P Connection\" is enabled, the P2P connection will be started automatically when the plug-in launches.",
"If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).": "If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).",
"If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this. And all devices should be updated to v0.23.18. Once we enabled this, we lost a compatibility with old versions.": "If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this. And all devices should be updated to v0.23.18. Once we enabled this, we lost a compatibility with old versions.",
"If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.": "If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.",
@@ -191,16 +333,38 @@
"If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.": "If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.",
"If this is set, changes to local files which are matched by the ignore files will be skipped. Remote changes are determined using local ignore files.": "If this is set, changes to local files which are matched by the ignore files will be skipped. Remote changes are determined using local ignore files.",
"If this option is enabled, PouchDB will hold the connection open for 60 seconds, and if no change arrives in that time, close and reopen the socket, instead of holding it open indefinitely. Useful when a proxy limits request duration but can increase resource usage.": "If this option is enabled, PouchDB will hold the connection open for 60 seconds, and if no change arrives in that time, close and reopen the socket, instead of holding it open indefinitely. Useful when a proxy limits request duration but can increase resource usage.",
"If you cannot avoid CORS issues, you might want to try this option. It uses Obsidian's internal API to communicate with the CouchDB server. Not compliant with web standards, but works. Note that this might break in future Obsidian versions.": "If you cannot avoid CORS issues, you might want to try this option. It uses Obsidian's internal API to communicate with the CouchDB server. Not compliant with web standards, but works. Note that this might break in future Obsidian versions.",
"If you cannot avoid CORS issues, you might want to try this option. It uses Obsidian's internal API to communicate with the S3 server. Not compliant with web standards, but works. Note that this might break in future Obsidian versions.": "If you cannot avoid CORS issues, you might want to try this option. It uses Obsidian's internal API to communicate with the S3 server. Not compliant with web standards, but works. Note that this might break in future Obsidian versions.",
"If you have unsynchronised changes in your Vault on this device, they will likely diverge from the server's versions after the reset. This may result in a large number of file conflicts.": "If you have unsynchronised changes in your Vault on this device, they will likely diverge from the server's versions after the reset. This may result in a large number of file conflicts.",
"If you reached the payload size limit when using IBM Cloudant, please decrease batch size and batch limit to a lower value.": "If you reached the payload size limit when using IBM Cloudant, please decrease batch size and batch limit to a lower value.",
"If you understand the risks and still wish to proceed, select so.": "If you understand the risks and still wish to proceed, select so.",
"If you want to store the data in a specific folder within the bucket, you can specify a folder prefix here. Otherwise, leave it blank to store data at the root of the bucket.": "If you want to store the data in a specific folder within the bucket, you can specify a folder prefix here. Otherwise, leave it blank to store data at the root of the bucket.",
"If you want to use `LiveSync`, you should broadcast changes. All `watching` peers which detects this will start the replication for fetching.": "If you want to use `LiveSync`, you should broadcast changes. All `watching` peers which detects this will start the replication for fetching.",
"Ignore": "Ignore",
"Ignore and Proceed": "Ignore and Proceed",
"Ignore files": "Ignore files",
"Ignore patterns": "Ignore patterns",
"Import connection": "Import connection",
"IMPORTANT": "IMPORTANT",
"In most cases, you should stick with the default algorithm (${algorithm}), This setting is only required if you have an existing Vault encrypted in a different format.": "In most cases, you should stick with the default algorithm (${algorithm}), This setting is only required if you have an existing Vault encrypted in a different format.",
"In this scenario, Self-hosted LiveSync will recreate metadata for every file and deliberately generate conflicts. Where the file content is identical, these conflicts will be resolved automatically.": "In this scenario, Self-hosted LiveSync will recreate metadata for every file and deliberately generate conflicts. Where the file content is identical, these conflicts will be resolved automatically.",
"Incoming:": "Incoming:",
"Incubate Chunks in Document": "Incubate Chunks in Document",
"Initial Action": "Initial Action",
"Initialise all journal history, On the next sync, every item will be received and sent.": "Initialise all journal history, On the next sync, every item will be received and sent.",
"Initialise journal received history. On the next sync, every item except this device sent will be downloaded again.": "Initialise journal received history. On the next sync, every item except this device sent will be downloaded again.",
"Initialise journal sent history. On the next sync, every item except this device received will be sent again.": "Initialise journal sent history. On the next sync, every item except this device received will be sent again.",
"Interval (sec)": "Interval (sec)",
"INVERTED": "INVERTED",
"Issue detection log:": "Issue detection log:",
"It is strongly advised to create a backup before proceeding. Continuing without a backup may lead to data loss.": "It is strongly advised to create a backup before proceeding. Continuing without a backup may lead to data loss.",
"Just for a minute, please!": "Just for a minute, please!",
"JWT (JSON Web Token) authentication allows you to securely authenticate with the CouchDB server using tokens. Ensure that your CouchDB server is configured to accept JWTs and that the provided key and settings match the server's configuration. Incidentally, I have not verified it very thoroughly.": "JWT (JSON Web Token) authentication allows you to securely authenticate with the CouchDB server using tokens. Ensure that your CouchDB server is configured to accept JWTs and that the provided key and settings match the server's configuration. Incidentally, I have not verified it very thoroughly.",
"JWT Algorithm": "JWT Algorithm",
"JWT Expiration Duration (minutes)": "JWT Expiration Duration (minutes)",
"JWT Key": "JWT Key",
"JWT Key ID (kid)": "JWT Key ID (kid)",
"JWT Subject (sub)": "JWT Subject (sub)",
"K.exp": "Experimental",
"K.long_p2p_sync": "%{title_p2p_sync}",
"K.P2P": "%{Peer}-to-%{Peer}",
@@ -222,6 +386,7 @@
"lang-zh-tw": "繁體中文",
"Later": "Later",
"Limit: {datetime} ({timestamp})": "Limit: {datetime} ({timestamp})",
"live": "live",
"LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured.": "LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured.",
"liveSyncReplicator.beforeLiveSync": "Before LiveSync, start OneShot once...",
"liveSyncReplicator.cantReplicateLowerValue": "We can't replicate more lower value.",
@@ -250,6 +415,7 @@
"liveSyncSetting.valueShouldBeInRange": "The value should ${min} < value < ${max}",
"liveSyncSettings.btnApply": "Apply",
"Local Database Tweak": "Local Database Tweak",
"Local only": "Local only",
"Lock": "Lock",
"Lock Server": "Lock Server",
"Lock the remote server to prevent synchronization with other devices.": "Lock the remote server to prevent synchronization with other devices.",
@@ -258,6 +424,9 @@
"logPane.pause": "Pause",
"logPane.title": "Self-hosted LiveSync Log",
"logPane.wrap": "Wrap",
"Lower (${local} < ${remote})": "Lower (${local} < ${remote})",
"Maintenance Commands": "Maintenance Commands",
"Maintenance mode": "Maintenance mode",
"Maximum delay for batch database updating": "Maximum delay for batch database updating",
"Maximum file size": "Maximum file size",
"Maximum Incubating Chunk Size": "Maximum Incubating Chunk Size",
@@ -270,6 +439,7 @@
"Merge": "Merge",
"Minimum delay for batch database updating": "Minimum delay for batch database updating",
"Minimum interval for syncing": "Minimum interval for syncing",
"Mixed": "Mixed",
"moduleCheckRemoteSize.logCheckingStorageSizes": "Checking storage sizes",
"moduleCheckRemoteSize.logCurrentStorageSize": "Remote storage size: ${measuredSize}",
"moduleCheckRemoteSize.logExceededWarning": "Remote storage size: ${measuredSize} exceeded ${notifySize}",
@@ -352,23 +522,39 @@
"moduleMigration.titleWelcome": "Welcome to Self-hosted LiveSync",
"moduleObsidianMenu.replicate": "Replicate",
"More actions": "More actions",
"Mostly Complete: Decision Required": "Mostly Complete: Decision Required",
"Move remotely deleted files to the trash, instead of deleting.": "Move remotely deleted files to the trash, instead of deleting.",
"My remote server is already set up. I want to join this device.": "My remote server is already set up. I want to join this device.",
"Name": "Name",
"Network warning style": "Network warning style",
"NEW": "NEW",
"New Remote": "New Remote",
"Newer (${diff})": "Newer (${diff})",
"No checks have been performed yet.": "No checks have been performed yet.",
"No connected device information found. Cancelling Garbage Collection.": "No connected device information found. Cancelling Garbage Collection.",
"No Connection": "No Connection",
"No devices available. Waiting for other devices to connect...": "No devices available. Waiting for other devices to connect...",
"No Items.": "No Items.",
"No limit configured": "No limit configured",
"NO PREVIEW": "NO PREVIEW",
"No, please take me back": "No, please take me back",
"Node ID": "Node ID",
"Node Information Missing": "Node Information Missing",
"Non-Synchronising files": "Non-Synchronising files",
"Normal Files": "Normal Files",
"Not all messages have been translated. And, please revert to \"Default\" when reporting errors.": "Not all messages have been translated. And, please revert to \"Default\" when reporting errors.",
"Not configured": "Not configured",
"Not now": "Not now",
"Note that the Group ID is not limited to the generated format; you can use any string as the Group ID.": "Note that the Group ID is not limited to the generated format; you can use any string as the Group ID.",
"Note that you can generate a new Setup URI by running the \"Copy settings as a new Setup URI\" command in the command palette.": "Note that you can generate a new Setup URI by running the \"Copy settings as a new Setup URI\" command in the command palette.",
"Notify all setting files": "Notify all setting files",
"Notify customized": "Notify customized",
"Notify when other device has newly customized.": "Notify when other device has newly customized.",
"Notify when the estimated remote storage size exceeds on start up": "Notify when the estimated remote storage size exceeds on start up",
"Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time.": "Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time.",
"Number of changes to sync at a time. Defaults to 50. Minimum is 2.": "Number of changes to sync at a time. Defaults to 50. Minimum is 2.",
"Obfuscate Properties": "Obfuscate Properties",
"Obfuscating properties (e.g., path of file, size, creation and modification dates) adds an additional layer of security by making it harder to identify the structure and names of your files and folders on the remote server. This helps protect your privacy and makes it more difficult for unauthorized users to infer information about your data.": "Obfuscating properties (e.g., path of file, size, creation and modification dates) adds an additional layer of security by making it harder to identify the structure and names of your files and folders on the remote server. This helps protect your privacy and makes it more difficult for unauthorized users to infer information about your data.",
"Obsidian version": "Obsidian version",
"obsidianLiveSyncSettingTab.btnApply": "Apply",
"obsidianLiveSyncSettingTab.btnCheck": "Check",
@@ -541,16 +727,29 @@
"obsidianLiveSyncSettingTab.titleUpdateThinning": "Update Thinning",
"obsidianLiveSyncSettingTab.warnCorsOriginUnmatched": "⚠ CORS Origin is unmatched ${from}->${to}",
"obsidianLiveSyncSettingTab.warnNoAdmin": "⚠ You do not have administrator privileges.",
"Of course, we can back up the data before proceeding.": "Of course, we can back up the data before proceeding.",
"Off": "Off",
"Ok": "Ok",
"Old Algorithm": "Old Algorithm",
"Older (${diff})": "Older (${diff})",
"Older fallback (Slow, W/O WebAssembly)": "Older fallback (Slow, W/O WebAssembly)",
"On": "On",
"On the source device, from the command palette, run the 'Show settings as a QR code' command.": "On the source device, from the command palette, run the 'Show settings as a QR code' command.",
"On the source device, open Obsidian.": "On the source device, open Obsidian.",
"On this device, please keep this Vault open.": "On this device, please keep this Vault open.",
"On this device, switch to the camera app or use a QR code scanner to scan the displayed QR code.": "On this device, switch to the camera app or use a QR code scanner to scan the displayed QR code.",
"Open": "Open",
"Open connection": "Open connection",
"Open P2P Setup...": "Open P2P Setup...",
"Open the dialog": "Open the dialog",
"Other files": "Other files",
"Overwrite": "Overwrite",
"Overwrite patterns": "Overwrite patterns",
"Overwrite remote": "Overwrite remote",
"Overwrite remote with local DB and passphrase.": "Overwrite remote with local DB and passphrase.",
"Overwrite Server Data with This Device's Files": "Overwrite Server Data with This Device's Files",
"P2P Configuration": "P2P Configuration",
"P2P Status": "P2P Status",
"P2P.AskPassphraseForDecrypt": "The remote peer shared the configuration. Please input the passphrase to decrypt the configuration.",
"P2P.AskPassphraseForShare": "The remote peer requested this device configuration. Please input the passphrase to share the configuration. You can ignore the request by cancelling this dialogue.",
"P2P.DisabledButNeed": "%{title_p2p_sync} is disabled. Do you really want to enable it?",
@@ -574,36 +773,59 @@
"paneMaintenance.remoteLockedResolvedDevice": "paneMaintenance.remoteLockedResolvedDevice",
"paneMaintenance.unlockDatabaseReady": "paneMaintenance.unlockDatabaseReady",
"Passphrase": "Passphrase",
"Passphrase is required.": "Passphrase is required.",
"Passphrase of sensitive configuration items": "Passphrase of sensitive configuration items",
"password": "password",
"Password": "Password",
"Paste a connection string": "Paste a connection string",
"Paste the Setup URI generated from one of your active devices.": "Paste the Setup URI generated from one of your active devices.",
"Path": "Path",
"Path Obfuscation": "Path Obfuscation",
"Patterns to match files for overwriting instead of merging": "Patterns to match files for overwriting instead of merging",
"Patterns to match files for syncing": "Patterns to match files for syncing",
"Peer ID:": "Peer ID:",
"Peer to Peer Replicator": "Peer to Peer Replicator",
"Peer-to-Peer only": "Peer-to-Peer only",
"Peer-to-Peer Synchronisation": "Peer-to-Peer Synchronisation",
"Peers": "Peers",
"Per-file-saved customization sync": "Per-file-saved customization sync",
"Perform": "Perform",
"Perform cleanup": "Perform cleanup",
"Perform Garbage Collection": "Perform Garbage Collection",
"Perform Garbage Collection to remove unused chunks and reduce database size.": "Perform Garbage Collection to remove unused chunks and reduce database size.",
"Periodic Sync interval": "Periodic Sync interval",
"PERMANENT": "PERMANENT",
"Pick a file to resolve conflict": "Pick a file to resolve conflict",
"Pick a file to show history": "Pick a file to show history",
"Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences. This is a security measure designed to protect your data.": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences. This is a security measure designed to protect your data.",
"Please configure your end-to-end encryption settings.": "Please configure your end-to-end encryption settings.",
"Please disable 'Read chunks online' in settings to use Garbage Collection.": "Please disable 'Read chunks online' in settings to use Garbage Collection.",
"Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.": "Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.",
"Please enter the CouchDB server information below.": "Please enter the CouchDB server information below.",
"Please enter the details required to connect to your S3/MinIO/R2 compatible object storage service.": "Please enter the details required to connect to your S3/MinIO/R2 compatible object storage service.",
"Please enter the Peer-to-Peer Synchronisation information below.": "Please enter the Peer-to-Peer Synchronisation information below.",
"Please enter the Setup URI that was generated during server installation or on another device, along with the vault passphrase.": "Please enter the Setup URI that was generated during server installation or on another device, along with the vault passphrase.",
"Please follow the steps below to import settings from your existing device.": "Please follow the steps below to import settings from your existing device.",
"PLEASE NOTE": "PLEASE NOTE",
"Please select 'Cancel' explicitly to cancel this operation.": "Please select 'Cancel' explicitly to cancel this operation.",
"Please select a method to import the settings from another device.": "Please select a method to import the settings from another device.",
"Please select an active P2P remote configuration to change P2P sync targets.": "Please select an active P2P remote configuration to change P2P sync targets.",
"Please select an option to proceed": "Please select an option to proceed",
"Please select the button below to restart and proceed to the data fetching confirmation.": "Please select the button below to restart and proceed to the data fetching confirmation.",
"Please select the button below to restart and proceed to the final confirmation.": "Please select the button below to restart and proceed to the final confirmation.",
"Please select the type of server to which you are connecting.": "Please select the type of server to which you are connecting.",
"Please select your situation.": "Please select your situation.",
"Please set device name to identify this device. This name should be unique among your devices. While not configured, we cannot enable this feature.": "Please set device name to identify this device. This name should be unique among your devices. While not configured, we cannot enable this feature.",
"Please set this device name": "Please set this device name",
"Please understand that this is intended behaviour.": "Please understand that this is intended behaviour.",
"Plug-in version": "Plug-in version",
"Plugins": "Plugins",
"Prepare the 'report' to create an issue": "Prepare the 'report' to create an issue",
"Presets": "Presets",
"Prevent fetching configuration from server": "Prevent fetching configuration from server",
"Proceed": "Proceed",
"Proceed Garbage Collection": "Proceed Garbage Collection",
"Proceed to the next step.": "Proceed to the next step.",
"Proceed with Setup URI": "Proceed with Setup URI",
"Proceeding with Garbage Collection, ignoring missing nodes.": "Proceeding with Garbage Collection, ignoring missing nodes.",
"Proceeding with Garbage Collection.": "Proceeding with Garbage Collection.",
@@ -629,15 +851,22 @@
"RedFlag.FetchRemoteConfig.Title": "Fetch Remote Configuration",
"Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.": "Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.",
"Reducing the frequency with which on-disk changes are reflected into the DB": "Reducing the frequency with which on-disk changes are reflected into the DB",
"Refresh": "Refresh",
"Region": "Region",
"Relay settings": "Relay settings",
"Reload": "Reload",
"Remediation": "Remediation",
"Remediation Setting Changed": "Remediation Setting Changed",
"Remote Database Tweak (In sunset)": "Remote Database Tweak (In sunset)",
"Remote Databases": "Remote Databases",
"Remote name": "Remote name",
"Remote only": "Remote only",
"Remote server type": "Remote server type",
"Remote Type": "Remote Type",
"Rename": "Rename",
"Replicate now": "Replicate now",
"Replicating": "Replicating",
"Replicating...": "Replicating...",
"Replicator.Dialogue.Locked.Action.Dismiss": "Cancel for reconfirmation",
"Replicator.Dialogue.Locked.Action.Fetch": "Reset Synchronisation on This Device",
"Replicator.Dialogue.Locked.Action.Unlock": "Unlock the remote database",
@@ -660,6 +889,7 @@
"Reset": "Reset",
"Reset all": "Reset all",
"Reset all journal counter": "Reset all journal counter",
"Reset and Resume Synchronisation": "Reset and Resume Synchronisation",
"Reset journal received history": "Reset journal received history",
"Reset journal sent history": "Reset journal sent history",
"Reset notification threshold and check the remote database usage": "Reset notification threshold and check the remote database usage",
@@ -672,14 +902,26 @@
"Resolve all conflicted files": "Resolve all conflicted files",
"Resolve All conflicted files by the newer one": "Resolve All conflicted files by the newer one",
"Resolve all conflicted files by the newer one. Caution: This will overwrite the older one, and cannot resurrect the overwritten one.": "Resolve all conflicted files by the newer one. Caution: This will overwrite the older one, and cannot resurrect the overwritten one.",
"Restart and Fetch Data": "Restart and Fetch Data",
"Restart and Initialise Server": "Restart and Initialise Server",
"Restart Now": "Restart Now",
"Restarting Obsidian is strongly recommended. Until restart, some changes may not take effect, and display may be inconsistent. Are you sure to restart now?": "Restarting Obsidian is strongly recommended. Until restart, some changes may not take effect, and display may be inconsistent. Are you sure to restart now?",
"Restore or reconstruct local database from remote.": "Restore or reconstruct local database from remote.",
"Rev": "Rev",
"Revert changes": "Revert changes",
"Revoke": "Revoke",
"Room ID": "Room ID",
"Room ID suffix:": "Room ID suffix:",
"Run Doctor": "Run Doctor",
"S3/MinIO/R2 Configuration": "S3/MinIO/R2 Configuration",
"S3/MinIO/R2 Object Storage": "S3/MinIO/R2 Object Storage",
"Same": "Same",
"Same or local only": "Same or local only",
"Save and Apply": "Save and Apply",
"Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform.": "Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform.",
"Saving will be performed forcefully after this number of seconds.": "Saving will be performed forcefully after this number of seconds.",
"Scan a QR Code (Recommended for mobile)": "Scan a QR Code (Recommended for mobile)",
"Scan changes": "Scan changes",
"Scan changes on customization sync": "Scan changes on customization sync",
"Scan customization automatically": "Scan customization automatically",
"Scan customization before replicating.": "Scan customization before replicating.",
@@ -688,17 +930,28 @@
"Scan for Broken files": "Scan for Broken files",
"Scan for hidden files before replication": "Scan for hidden files before replication",
"Scan hidden files periodically": "Scan hidden files periodically",
"Scan QR Code": "Scan QR Code",
"Scan the QR code displayed on an active device using this device's camera.": "Scan the QR code displayed on an active device using this device's camera.",
"Schedule and Restart": "Schedule and Restart",
"Scram Switches": "Scram Switches",
"Scram!": "Scram!",
"Seconds, 0 to disable": "Seconds, 0 to disable",
"Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.": "Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.",
"Secret Access Key": "Secret Access Key",
"Secret Key": "Secret Key",
"Select active P2P remote": "Select active P2P remote",
"Select All Shiny": "Select All Shiny",
"Select Flagged Shiny": "Select Flagged Shiny",
"Select P2P remote...": "Select P2P remote...",
"Select the database adapter to use.": "Select the database adapter to use.",
"Selecting this option will result in the current data on this device being used to initialise the server. Any existing data on the server will be completely overwritten.": "Selecting this option will result in the current data on this device being used to initialise the server. Any existing data on the server will be completely overwritten.",
"Selecting this option will result in this device joining the existing server. You need to fetching the existing synchronisation data from the server to this device.": "Selecting this option will result in this device joining the existing server. You need to fetching the existing synchronisation data from the server to this device.",
"Selective": "Selective",
"Send": "Send",
"Send chunks": "Send chunks",
"SENDING": "SENDING",
"Server URI": "Server URI",
"SESSION": "SESSION",
"Setting.GenerateKeyPair.Desc": "We have generated a key pair!\n\nNote: This key pair will never be shown again. Please save it in a safe place. If you have lost it, you need to generate a new key pair.\nNote 2: The public key is in spki format, and the Private key is in pkcs8 format. For the sake of convenience, newlines are converted to `\\n` in public key.\nNote 3: The public key should be configured in the remote database, and the private key should be configured in local devices.\n\n>[!FOR YOUR EYES ONLY]-\n> <div class=\"sls-keypair\">\n>\n> ### Public Key\n> ```\n${public_key}\n> ```\n>\n> ### Private Key\n> ```\n${private_key}\n> ```\n>\n> </div>\n\n>[!Both for copying]-\n>\n> <div class=\"sls-keypair\">\n>\n> ```\n${public_key}\n${private_key}\n> ```\n>\n> </div>\n\n",
"Setting.GenerateKeyPair.Title": "New key pair has been generated!",
"Setting.TroubleShooting": "TroubleShooting",
@@ -707,7 +960,10 @@
"Setting.TroubleShooting.ScanBrokenFiles": "Scan for broken files",
"Setting.TroubleShooting.ScanBrokenFiles.Desc": "Scans for files that are not stored correctly in the database.",
"SettingTab.Message.AskRebuild": "Your changes require fetching from the remote database. Do you want to proceed?",
"Setup Complete: Preparing to Fetch Synchronisation Data": "Setup Complete: Preparing to Fetch Synchronisation Data",
"Setup Complete: Preparing to Initialise Server": "Setup Complete: Preparing to Initialise Server",
"Setup URI dialog cancelled.": "Setup URI dialog cancelled.",
"Setup-URI": "Setup-URI",
"Setup.Apply.Buttons.ApplyAndFetch": "Apply and Fetch",
"Setup.Apply.Buttons.ApplyAndMerge": "Apply and Merge",
"Setup.Apply.Buttons.ApplyAndRebuild": "Apply and Rebuild",
@@ -777,16 +1033,29 @@
"Show status inside the editor": "Show status inside the editor",
"Show status on the status bar": "Show status on the status bar",
"Show verbose log. Please enable if you report an issue.": "Show verbose log. Please enable if you report an issue.",
"Signaling Server Connection": "Signaling Server Connection",
"Signalling Status": "Signalling Status",
"Skip and close": "Skip and close",
"Snippets": "Snippets",
"Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": "Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.",
"Start Broadcasting": "Start Broadcasting",
"Start change-broadcasting on Connect": "Start change-broadcasting on Connect",
"Start Sync & Close": "Start Sync & Close",
"Starts synchronisation when a file is saved.": "Starts synchronisation when a file is saved.",
"Stat": "Stat",
"Stats": "Stats",
"Stop ⚡": "Stop ⚡",
"Stop Broadcasting": "Stop Broadcasting",
"Stop reflecting database changes to storage files.": "Stop reflecting database changes to storage files.",
"Stop watching for file changes.": "Stop watching for file changes.",
"Storage -> Database": "Storage -> Database",
"Strongly Recommended": "Strongly Recommended",
"Suppress notification of hidden files change": "Suppress notification of hidden files change",
"Suspend database reflecting": "Suspend database reflecting",
"Suspend file watching": "Suspend file watching",
"Switch to IDB": "Switch to IDB",
"Switch to IndexedDB": "Switch to IndexedDB",
"Sync": "Sync",
"Sync after merging file": "Sync after merging file",
"Sync automatically after merging files": "Sync automatically after merging files",
"Sync Mode": "Sync Mode",
@@ -794,25 +1063,56 @@
"Sync on File Open": "Sync on File Open",
"Sync on Save": "Sync on Save",
"Sync on Startup": "Sync on Startup",
"Sync once": "Sync once",
"Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.": "Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.",
"Synchronising files": "Synchronising files",
"Syncing": "Syncing",
"Syncing...": "Syncing...",
"Target patterns": "Target patterns",
"Test Settings and Continue": "Test Settings and Continue",
"Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.": "Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.",
"The connection to the server has been configured successfully. As the next step,": "The connection to the server has been configured successfully. As the next step,",
"The delay for consecutive on-demand fetches": "The delay for consecutive on-demand fetches",
"The files in this Vault are almost identical to the server's.": "The files in this Vault are almost identical to the server's.",
"The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": "The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.",
"The Group ID and passphrase are used to identify your group of devices. Make sure to use the same Group ID and passphrase on all devices you want to synchronise.": "The Group ID and passphrase are used to identify your group of devices. Make sure to use the same Group ID and passphrase on all devices you want to synchronise.",
"The Hash algorithm for chunk IDs": "The Hash algorithm for chunk IDs",
"The IndexedDB adapter often offers superior performance in certain scenarios, but it has been found to cause memory leaks when used with LiveSync mode. When using LiveSync mode, please use IDB adapter instead.": "The IndexedDB adapter often offers superior performance in certain scenarios, but it has been found to cause memory leaks when used with LiveSync mode. When using LiveSync mode, please use IDB adapter instead.",
"the latest synchronisation data will be downloaded from the server to this device.": "the latest synchronisation data will be downloaded from the server to this device.",
"the local database, that is to say the synchronisation information, must be reconstituted.": "the local database, that is to say the synchronisation information, must be reconstituted.",
"The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.": "The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.",
"The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks.": "The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks.",
"The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks.": "The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks.",
"The minimum interval for automatic synchronisation on event.": "The minimum interval for automatic synchronisation on event.",
"The remote is already set up, and the configuration is compatible (or got compatible by this operation).": "The remote is already set up, and the configuration is compatible (or got compatible by this operation).",
"The Setup-URI does not appear to be valid. Please check that you have copied it correctly.": "The Setup-URI does not appear to be valid. Please check that you have copied it correctly.",
"The Setup-URI is valid and ready to use.": "The Setup-URI is valid and ready to use.",
"the single, authoritative master copy": "the single, authoritative master copy",
"the synchronisation data on the server will be built based on the current data on this device.": "the synchronisation data on the server will be built based on the current data on this device.",
"Themes": "Themes",
"There is a way to resolve this on other devices.": "There is a way to resolve this on other devices.",
"There may be differences between the files in this Vault and the server.": "There may be differences between the files in this Vault and the server.",
"Therefore, we ask that you exercise extreme caution when configuring server information manually. If an incorrect passphrase is entered, the data on the server will become corrupted.": "Therefore, we ask that you exercise extreme caution when configuring server information manually. If an incorrect passphrase is entered, the data on the server will become corrupted.",
"This can isolate your connections between devices. Use the same Room ID for the same devices.": "This can isolate your connections between devices. Use the same Room ID for the same devices.",
"This device": "This device",
"This device name": "This device name",
"This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.": "This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.",
"This is an advanced option for users who do not have a URI or who wish to configure detailed settings.": "This is an advanced option for users who do not have a URI or who wish to configure detailed settings.",
"This is an extremely powerful operation. We strongly recommend that you copy your Vault folder to a safe location.": "This is an extremely powerful operation. We strongly recommend that you copy your Vault folder to a safe location.",
"This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.": "This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.",
"This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.": "This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.",
"This password is used to encrypt the connection. Use something long enough.": "This password is used to encrypt the connection. Use something long enough.",
"This procedure will first delete all existing synchronisation data from the server. Following this, the server data will be completely rebuilt, using the current state of your Vault on this device (including its local database) as": "This procedure will first delete all existing synchronisation data from the server. Following this, the server data will be completely rebuilt, using the current state of your Vault on this device (including its local database) as",
"This setting must be the same even when connecting to multiple synchronisation destinations.": "This setting must be the same even when connecting to multiple synchronisation destinations.",
"This Vault is empty, or contains only new files that are not on the server.": "This Vault is empty, or contains only new files that are not on the server.",
"This will rebuild the local database on this device using the most recent data from the server. This action is designed to resolve synchronisation inconsistencies and restore correct functionality.": "This will rebuild the local database on this device using the most recent data from the server. This action is designed to resolve synchronisation inconsistencies and restore correct functionality.",
"This will recreate chunks for all files. If there were missing chunks, this may fix the errors.": "This will recreate chunks for all files. If there were missing chunks, this may fix the errors.",
"To minimise the creation of new conflicts": "To minimise the creation of new conflicts",
"Transfer Tweak": "Transfer Tweak",
"TURN Credential": "TURN Credential",
"TURN server settings are only necessary if you are behind a strict NAT or firewall that prevents direct P2P connections. In most cases, you can leave these fields blank.": "TURN server settings are only necessary if you are behind a strict NAT or firewall that prevents direct P2P connections. In most cases, you can leave these fields blank.",
"TURN Server URLs (comma-separated)": "TURN Server URLs (comma-separated)",
"TURN Username": "TURN Username",
"TweakMismatchResolve.Action.DisableAutoAcceptCompatible": "Disable auto-accept",
"TweakMismatchResolve.Action.Dismiss": "Dismiss",
"TweakMismatchResolve.Action.EnableAutoAcceptCompatible": "Enable auto-accept",
@@ -1105,21 +1405,36 @@
"Ui.SetupWizard.SetupRemote.ProceedP2P": "Continue to P2P setup",
"Ui.SetupWizard.SetupRemote.Title": "Choose a synchronisation remote",
"Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": "Unique name between all synchronized devices. To edit this setting, please disable customization sync once.",
"Unless you are certain, selecting this options is bit dangerous. It assumes that the server configuration is compatible with this device. If this is not the case, data loss may occur. Please ensure you know what you are doing.": "Unless you are certain, selecting this options is bit dangerous. It assumes that the server configuration is compatible with this device. If this is not the case, data loss may occur. Please ensure you know what you are doing.",
"Updating list...": "Updating list...",
"URL": "URL",
"Use a custom passphrase": "Use a custom passphrase",
"Use a Setup URI (Recommended)": "Use a Setup URI (Recommended)",
"Use Custom HTTP Handler": "Use Custom HTTP Handler",
"Use Diagnostic RTCPeerConnection for statistics": "Use Diagnostic RTCPeerConnection for statistics",
"Use dynamic iteration count": "Use dynamic iteration count",
"Use internal API": "Use internal API",
"Use Internal API": "Use Internal API",
"Use JWT Authentication": "Use JWT Authentication",
"Use Path-Style Access": "Use Path-Style Access",
"Use Random Number": "Use Random Number",
"Use Segmented-splitter": "Use Segmented-splitter",
"Use splitting-limit-capped chunk splitter": "Use splitting-limit-capped chunk splitter",
"Use the trash bin": "Use the trash bin",
"Use timeouts instead of heartbeats": "Use timeouts instead of heartbeats",
"Use vrtmrz's relay": "Use vrtmrz's relay",
"username": "username",
"Username": "Username",
"Verbose Log": "Verbose Log",
"Verify all": "Verify all",
"Verify and repair all files": "Verify and repair all files",
"Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.": "Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.",
"WATCHING": "WATCHING",
"We can not use \"/\" to the device name": "We can not use \"/\" to the device name",
"We can use only Secure (HTTPS) connections on Obsidian Mobile.": "We can use only Secure (HTTPS) connections on Obsidian Mobile.",
"We cannot change the device name while this feature is enabled. Please disable this feature to change the device name.": "We cannot change the device name while this feature is enabled. Please disable this feature to change the device name.",
"We have to configure the device name": "We have to configure the device name",
"We recommend that you copy your Vault folder to a safe location. This will provide a safeguard in case a large number of conflicts arise, or if you accidentally synchronise with an incorrect destination.": "We recommend that you copy your Vault folder to a safe location. This will provide a safeguard in case a large number of conflicts arise, or if you accidentally synchronise with an incorrect destination.",
"We will now guide you through a few questions to simplify the synchronisation setup.": "We will now guide you through a few questions to simplify the synchronisation setup.",
"We will now proceed with the server configuration.": "We will now proceed with the server configuration.",
"Welcome to Self-hosted LiveSync": "Welcome to Self-hosted LiveSync",
@@ -1130,5 +1445,8 @@
"xxhash64 (Fastest)": "xxhash64 (Fastest)",
"Yes, I want to add this device to my existing synchronisation": "Yes, I want to add this device to my existing synchronisation",
"Yes, I want to set up a new synchronisation": "Yes, I want to set up a new synchronisation",
"You are adding this device to an existing synchronisation setup.": "You are adding this device to an existing synchronisation setup."
"You are adding this device to an existing synchronisation setup.": "You are adding this device to an existing synchronisation setup.",
"You can configure in the Obsidian Plugin Settings.": "You can configure in the Obsidian Plugin Settings.",
"You should create a new synchronisation destination and rebuild your data there.": "You should create a new synchronisation destination and rebuild your data there.",
"You should perform this operation only in exceptional circumstances, such as when the server data is completely corrupted, when changes on all other devices are no longer needed, or when the database size has become unusually large in comparison to the Vault size.": "You should perform this operation only in exceptional circumstances, such as when the server data is completely corrupted, when changes on all other devices are no longer needed, or when the database size has become unusually large in comparison to the Vault size."
}