merge langs back to main repo

This commit is contained in:
fyears 2024-01-06 13:49:49 +08:00
commit 30f7c0058c
8 changed files with 1050 additions and 4 deletions

3
.gitmodules vendored
View File

@ -1,3 +0,0 @@
[submodule "src/langs"]
path = src/langs
url = https://github.com/remotely-save/langs.git

@ -1 +0,0 @@
Subproject commit 23f1b7990cdae1fed59088178368e9eb99c823db

202
src/langs/LICENSE Normal file
View File

@ -0,0 +1,202 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

14
src/langs/README.md Normal file
View File

@ -0,0 +1,14 @@
# Translations for Remotely Save
## How To Add A Language?
1. Copy `en.json` to a new json file named `<lang>.json`, and translate all the items inside. The language should match what is available in Obsidian app.
2. Modify the `index.ts` file to include the new language file.
~~## Why Seperated Repo?~~
~~For better pull requests management.~~
## No more `lang` submodule from 20240106
It's actually harder to manage pull requests of submodule for me. The submodule is merged back to the main repo on 20240106. Any further improved translations (and/or pull requestes) should be dealt with in the main repo.

275
src/langs/en.json Normal file
View File

@ -0,0 +1,275 @@
{
"confirm": "Confirm",
"disable": "Disable",
"enable": "Enable",
"goback": "Go Back",
"submit": "Submit",
"sometext": "Here are some texts.",
"syncrun_alreadyrunning": "{{pluginName}} already running in stage {{syncStatus}}!",
"syncrun_syncingribbon": "{{pluginName}}: syncing from {{triggerSource}}",
"syncrun_step0": "0/{{maxSteps}} Remotely Save running in dry mode, not actual file changes would happen.",
"syncrun_step1": "1/{{maxSteps}} Remotely Save Sync Preparing ({{serviceType}})",
"syncrun_step2": "2/{{maxSteps}} Starting to fetch remote meta data.",
"syncrun_step3": "3/{{maxSteps}} Checking password correct or not.",
"syncrun_passworderr": "Something goes wrong while checking password.",
"syncrun_step4": "4/{{maxSteps}} Trying to fetch extra meta data from remote.",
"syncrun_step5": "5/{{maxSteps}} Starting to fetch local meta data.",
"syncrun_step6": "6/{{maxSteps}} Starting to generate sync plan.",
"syncrun_step7": "7/{{maxSteps}} Remotely Save Sync data exchanging!",
"syncrun_step7skip": "7/{{maxSteps}} Remotely Save real sync is skipped in dry run mode.",
"syncrun_step8": "8/{{maxSteps}} Remotely Save finish!",
"syncrun_abort": "{{manifestID}}-{{theDate}}: abort sync, triggerSource={{triggerSource}}, error while {{syncStatus}}",
"protocol_saveqr": "New not-oauth2 settings for {{manifestName}} saved. Reopen the plugin Settings to the effect.",
"protocol_callbacknotsupported": "Your uri call a callback that's not supported yet: {{params}}",
"protocol_dropbox_connecting": "Connecting to Dropbox...\nPlease DO NOT close this modal.",
"protocol_dropbox_connect_succ": "Good! We've connected to Dropbox as user {{username}}!",
"protocol_dropbox_connect_succ_revoke": "You've connected as user {{username}}. If you want to disconnect, click this button.",
"protocol_dropbox_connect_fail": "Something went wrong from response from Dropbox. Maybe you rejected the auth?",
"protocol_dropbox_connect_unknown": "Do not know how to deal with the callback: {{params}}",
"protocol_onedrive_connecting": "Connecting to OneDrive...\nPlease DO NOT close this modal.",
"protocol_onedrive_connect_succ_revoke": "You've connected as user {{username}}. If you want to disconnect, click this button.",
"protocol_onedrive_connect_fail": "Something went wrong from response from OneDrive. Maybe you rejected the auth?",
"protocol_onedrive_connect_unknown": "Do not know how to deal with the callback: {{params}}",
"command_startsync": "start sync",
"command_drynrun": "start sync (dry run only)",
"command_exportsyncplans_json": "export sync plans in json format",
"command_exportsyncplans_table": "export sync plans in table format",
"command_exportlogsindb": "export logs saved in db",
"statusbar_time_years": "{{time}} years",
"statusbar_time_months": "{{time}} months",
"statusbar_time_weeks": "{{time}} weeks",
"statusbar_time_days": "{{time}} days",
"statusbar_time_hours": "{{time}} hours",
"statusbar_time_minutes": "{{time}} minutes",
"statusbar_time_lessminute": "less than a minute",
"statusbar_lastsync": "Synced {{time}} ago",
"statusbar_lastsync_label": "Last successful Sync on {{date}}",
"statusbar_lastsync_never": "Never Synced",
"statusbar_lastsync_never_label": "Never Synced before",
"modal_password_title": "Hold on and PLEASE READ ON...",
"modal_password_shortdesc": "If the field is not empty, files would be encrypted locally before being uploaded.\nIf the field is empty, then files would be uploaded without encryption.",
"modal_password_attn1": "Attention 1/5: The vault name is NOT encrypted. The plugin creates a folder with the vault name on some remote services.",
"modal_password_attn2": "Attention 2/5: The password itself is stored in PLAIN TEXT LOCALLY.",
"modal_password_attn3": "Attention 3/5: Some metadata are not encrypted or can be easily guessed. (File sizes are closed to their unencrypted ones, and directory path may be stored as 0-byte-size object.)",
"modal_password_attn4": "Attention 4/5: You should make sure the remote store IS EMPTY, or REMOTE FILES WERE ENCRYPTED BY THAT NEW PASSWORD, to avoid conflicts.",
"modal_password_attn5": "Attention 5/5: The longer the password, the better.",
"modal_password_secondconfirm": "The Second Confirm to change password.",
"modal_password_notice": "New password saved!",
"modal_remotebasedir_title": "You are changing the remote base directory config",
"modal_remotebasedir_shortdesc": "1. The plugin would NOT automatically move the content from the old directory to the new one directly on the remote. Everything syncs from the beginning again.\n2. If you set the string to the empty, the config would be reset to use the vault folder name (the default config).\n3. The remote directory name itself would not be encrypted even you've set an E2E password.\n4. Some special char like '?', '/', '\\' are not allowed. Spaces in the beginning or in the end are also trimmed.",
"modal_remotebasedir_invaliddirhint": "Your input contains special characters like '?', '/', '\\' which are not allowed.",
"modal_remotebasedir_secondconfirm_vaultname": "Reset To The Default Vault Folder Name",
"modal_remotebasedir_secondconfirm_change": "Confirm To Change",
"modal_remotebasedir_notice": "New remote base directory config saved!",
"modal_dropboxauth_manualsteps": "Step 1: Visit the address in a browser, and follow the steps.\nStep 2: In the end of the web flow, you obtain a long code. Paste it here then click \"Submit\".",
"modal_dropboxauth_autosteps": "Visit the address in a browser, and follow the steps.\nFinally you should be redirected to Obsidian.",
"modal_dropboxauth_copybutton": "Click to copy the auth url",
"modal_dropboxauth_copynotice": "The auth url is copied to the clipboard!",
"modal_dropboxauth_maualinput": "Auth Code from web page",
"modal_dropboxauth_maualinput_desc": "You need to click \"Confirm\".",
"modal_dropboxauth_maualinput_notice": "Trying to connect to Dropbox",
"modal_dropboxauth_maualinput_conn_succ": "Good! We've connected to Dropbox as user {{username}}!",
"modal_dropboxauth_maualinput_conn_succ_revoke": "You've connected as user {{username}}. If you want to disconnect, click this button.",
"modal_dropboxauth_maualinput_conn_fail": "Something goes wrong while connecting to Dropbox.",
"modal_onedriveauth_shortdesc": "Currently only OneDrive for personal is supported. OneDrive for Business is NOT supported (yet).\nVisit the address in a browser, and follow the steps.\nFinally you should be redirected to Obsidian.",
"modal_onedriveauth_copybutton": "Click to copy the auth url",
"modal_onedriveauth_copynotice": "The auth url is copied to the clipboard!",
"modal_onedriverevokeauth_step1": "Step 1: Go to the following address, click the \"Edit\" button for the plugin, then click \"Remove these permissions\" button on the page.",
"modal_onedriverevokeauth_step2": "Step 2: Click the button below, to clean the locally-saved login credentials.",
"modal_onedriverevokeauth_clean": "Clean Locally-Saved Login Credentials",
"modal_onedriverevokeauth_clean_desc": "You need to click the button.",
"modal_onedriverevokeauth_clean_button": "Clean",
"modal_onedriverevokeauth_clean_notice": "Cleaned!",
"modal_onedriverevokeauth_clean_fail": "Something goes wrong while revoking.",
"modal_syncconfig_attn": "Attention 1/2: This only syncs (copies) the whole Obsidian config dir, not other startting-with-dot folders or files. Except for ignoring folders .git and node_modules, it also doesn't understand the meaning of sub-files and sub-folders inside the config dir.\nAttention 2/2: After the config dir is synced, plugins settings might be corrupted, and Obsidian might need to be restarted to load the new settings.\nIf you are agreed to take your own risk, please click the following second confirm button.",
"modal_syncconfig_secondconfirm": "The Second Confirm To Enable.",
"modal_syncconfig_notice": "You've enabled syncing config folder!",
"modal_qr_shortdesc": "This exports not-oauth2 settings. (It means that Dropbox, OneDrive info are NOT exported.)\nYou can use another device to scan this qrcode.\nOr, you can click the button to copy the special url.",
"modal_qr_button": "Click to copy the special URI",
"modal_qr_button_notice": "The special uri is copied to the clipboard!",
"modal_sizesconflict_title": "Remotely Save: Some conflict were found while skipping large files",
"modal_sizesconflict_desc": "You've set skipping files larger than {{thresholdMB}} MB ({{thresholdBytes}} bytes).\nBut the following files have sizes larger than the threshold on one side, and sizes smaller than the threshold on the other side.\nTo avoid unexpected overwriting or deleting, the plugin stops, and you have to manually deal with at least one side of the files.",
"modal_sizesconflict_copybutton": "Click to copy all the below sizes conflicts info",
"modal_sizesconflict_copynotice": "All the sizes conflicts info have been copied to the clipboard!",
"settings_basic": "Basic Settings",
"settings_password": "Encryption Password",
"settings_password_desc": "Password for E2E encryption. Empty for no password. You need to click \"Confirm\". Attention: the password and other info are saved locally.",
"settings_autorun": "Schedule For Auto Run",
"settings_autorun_desc": "The plugin tries to schedule the running after every interval. Battery may be impacted.",
"settings_autorun_notset": "(not set)",
"settings_autorun_1min": "every 1 minute",
"settings_autorun_5min": "every 5 minutes",
"settings_autorun_10min": "every 10 minutes",
"settings_autorun_30min": "every 30 minutes",
"settings_saverun": "Sync on Save",
"settings_saverun_desc": "The plugin tries to sync on after each file save. Battery may be impacted. (May need to restart after changing)",
"settings_saverun_notset": "(not set)",
"settings_saverun_1sec": "every 1 second",
"settings_saverun_5sec": "every 5 seconds",
"settings_saverun_10sec": "every 10 seconds",
"settings_saverun_1min": "every 1 minute",
"settings_runoncestartup": "Run Once On Start Up Automatically",
"settings_runoncestartup_desc": "This settings allows setting running ONCE on start up automatically. This will take effect on NEXT start up after changing. This setting, is different from \"schedule for auto run\" which starts syncing after EVERY interval.",
"settings_runoncestartup_notset": "(not set)",
"settings_runoncestartup_1sec": "sync once after 1 second of start up",
"settings_runoncestartup_10sec": "sync once after 10 seconds of start up",
"settings_runoncestartup_30sec": "sync once after 30 seconds of start up",
"settings_skiplargefiles": "Skip Large Files (experimental)",
"settings_skiplargefiles_desc": "Skip files with sizes larger than the threshold. Here 1 MB = 10^6 bytes.",
"settings_skiplargefiles_notset": "(not set)",
"settings_ignorepaths": "Regex Of Paths To Ignore",
"settings_ignorepaths_desc": "Regex of paths of folders or files to ignore. One regex per line. The path is relative to the vault root without leading slash.",
"settings_enablestatusbar_info": "Show Last Successful Sync In Status Bar",
"settings_enablestatusbar_info_desc": "Show the time of the last successful sync in the status bar.",
"settings_enablestatusbar_reloadrequired_notice": "Reload the plugin for the changes to take effect.",
"settings_resetstatusbar_time": "Reset Last Successful Sync Time",
"settings_resetstatusbar_time_desc": "Reset last successful sync time.",
"settings_resetstatusbar_button": "Reset",
"settings_resetstatusbar_notice": "Reset done!",
"settings_checkonnectivity": "Check Connectivity",
"settings_checkonnectivity_desc": "Check connectivity.",
"settings_checkonnectivity_button": "Check",
"settings_checkonnectivity_checking": "Checking...",
"settings_remotebasedir": "Change The Remote Base Directory (experimental)",
"settings_remotebasedir_desc": "By default the content is synced to a remote directory with the same name as the vault name. You can change the remote folder name here, or keep the input field empty to reset to the default. You need to click \"Confirm\".",
"settings_s3": "Remote For S3 or compatible",
"settings_s3_disclaimer1": "Disclaimer: This plugin is NOT an official Amazon product.",
"settings_s3_disclaimer2": "Disclaimer: The information is stored locally. Other malicious/harmful/faulty plugins could read the info. If you see any unintentional access to your bucket, please immediately delete the access key on your AWS (or other S3-service provider) settings.",
"settings_s3_cors": "You need to configure CORS to allow requests from origin app://obsidian.md and capacitor://localhost and http://localhost, and add ETag into exposed headers.",
"settings_s3_prod": "Some Amazon S3 official docs for references:",
"settings_s3_prod1": "Endpoint and region info",
"settings_s3_prod2": "Access Key ID and Secret Access Key info",
"settings_s3_prod3": "Configuring CORS",
"settings_s3_endpoint": "Endpoint",
"settings_s3_region": "Region",
"settings_s3_region_desc": "If you are not sure what to enter, you could try the value: us-east-1",
"settings_s3_accesskeyid": "Access Key ID",
"settings_s3_accesskeyid_desc": "Access key ID. Attention: Access key ID and other info are saved locally.",
"settings_s3_secretaccesskey": "Secret Access Key",
"settings_s3_secretaccesskey_desc": "Secret access key. Attention: Secret access key and other info are saved locally.",
"settings_s3_bucketname": "Bucket Name",
"settings_s3_bypasscorslocally": "Bypass CORS Issue Locally",
"settings_s3_bypasscorslocally_desc": "The plugin allows skipping server CORS config in new version of Obsidian ( desktop>=0.13.25 or iOS>=1.1.1 or Android>=1.2.1). If you encounter any issues, please disable this setting and config CORS on servers (allowing requests from app://obsidian.md and capacitor://localhost and http://localhost and add ETag into exposed headers).",
"settings_s3_parts": "Parts Concurrency",
"settings_s3_parts_desc": "Large files are split into small parts to upload in S3. How many parts do you want to upload in parallel at most?",
"settings_s3_urlstyle": "S3 URL style",
"settings_s3_urlstyle_desc": "Whether to force path-style URLs for S3 objects (e.g., https://s3.amazonaws.com/*/ instead of https://*.s3.amazonaws.com/).",
"settings_s3_connect_succ": "Great! The bucket can be accessed.",
"settings_s3_connect_fail": "The S3 bucket cannot be reached.",
"settings_dropbox": "Remote For Dropbox",
"settings_dropbox_disclaimer1": "Disclaimer: This app is NOT an official Dropbox product.",
"settings_dropbox_disclaimer2": "Disclaimer: The information is stored locally. Other malicious/harmful/faulty plugins could read the info. If you see any unintentional access to your Dropbox, please immediately disconnect this app on https://www.dropbox.com/account/connected_apps .",
"settings_dropbox_folder": "We will create and sync inside the folder /Apps/{{pluginID}}/{{remoteBaseDir}} on your Dropbox.",
"settings_dropbox_revoke": "Revoke Auth",
"settings_dropbox_revoke_desc": "You've connected as user {{username}}. If you want to disconnect, click this button.",
"settings_dropbox_revoke_button": "Revoke Auth",
"settings_dropbox_revoke_notice": "Revoked!",
"settings_dropbox_revoke_noticeerr": "Something goes wrong while revoking.",
"settings_dropbox_clearlocal": "Clear Locally Saved Credentials",
"settings_dropbox_clearlocal_desc": "You can forcefully clear the locally saved Dropbox login credentials, but not send revoke auth request to the server.",
"settings_dropbox_clearlocal_button": "Clear",
"settings_dropbox_clearlocal_notice": "Cleared!",
"settings_dropbox_auth": "Auth",
"settings_dropbox_auth_desc": "Auth.",
"settings_dropbox_auth_button": "Auth",
"settings_dropbox_connect_succ": "Great! We can connect to Dropbox!",
"settings_dropbox_connect_fail": "We cannot connect to Dropbox.",
"settings_onedrive": "Remote For Onedrive (for personal)",
"settings_onedrive_disclaimer1": "Disclaimer: This app is NOT an official Microsoft / OneDrive product.",
"settings_onedrive_disclaimer2": "Disclaimer: The information is stored locally. Other malicious/harmful/faulty plugins could read the info. If you see any unintentional access to your Onedrive, please immediately disconnect this app on https://microsoft.com/consent .",
"settings_onedrive_folder": "We will create and sync inside the folder /Apps/{{pluginID}}/{{remoteBaseDir}} on your OneDrive.",
"settings_onedrive_nobiz": "Currently only OneDrive for personal is supported. OneDrive for Business is NOT supported (yet).",
"settings_onedrive_revoke": "Revoke Auth",
"settings_onedrive_revoke_desc": "You've connected as user {{username}}. If you want to disconnect, click this button.",
"settings_onedrive_revoke_button": "Revoke Auth",
"settings_onedrive_auth": "Auth",
"settings_onedrive_auth_desc": "Auth.",
"settings_onedrive_auth_button": "Auth",
"settings_onedrive_connect_succ": "Great! We can connect to Onedrive!",
"settings_onedrive_connect_fail": "We cannot connect to Onedrive.",
"settings_webdav": "Remote For Webdav",
"settings_webdav_disclaimer1": "Disclaimer: The information is stored locally. Other malicious/harmful/faulty plugins may read the info. If you see any unintentional access to your webdav server, please immediately change the username and password.",
"settings_webdav_cors_os": "Obsidian desktop>=0.13.25 or iOS>=1.1.1 or Android>=1.2.1 supports bypassing CORS locally. But you are using an old version, and you're suggested to upgrade Obsidian.",
"settings_webdav_cors": "You need to configure CORS to allow requests from origin app://obsidian.md and capacitor://localhost and http://localhost",
"settings_webdav_folder": "We will create and sync inside the folder /{{remoteBaseDir}} on your server.",
"settings_webdav_addr": "Server Address",
"settings_webdav_addr_desc": "Server address.",
"settings_webdav_user": "Username",
"settings_webdav_user_desc": "Username. Attention: the username and other info are saved locally.",
"settings_webdav_password": "Password",
"settings_webdav_password_desc": "Password. Attention: the password and other info are saved locally.",
"settings_webdav_auth": "Auth Type",
"settings_webdav_auth_desc": "If no password, this option would be ignored.",
"settings_webdav_depth": "Depth Header Sent To Servers",
"settings_webdav_depth_desc": "Webdav servers should be configured to allow requests with header Depth being '1' or 'Infinity'. The plugin needs to know this info. If you are not sure what's this, choose \"auto\".",
"settings_webdav_depth_auto": "auto detect",
"settings_webdav_depth_1": "only supports depth='1'",
"settings_webdav_depth_inf": "supports depth='infinity'",
"settings_webdav_connect_succ": "Great! The webdav server can be accessed.",
"settings_webdav_connect_fail": "The webdav server cannot be reached (possible to be any of address/username/password/authtype errors).",
"settings_webdav_connect_fail_withcors": "The webdav server cannot be reached (possible to be any of address/username/password/authtype/CORS errors).",
"settings_chooseservice": "Choose A Remote Service",
"settings_chooseservice_desc": "Start here. What service are you connecting to? S3, Dropbox, Webdav, or OneDrive for personal?",
"settings_chooseservice_s3": "S3 or compatible",
"settings_chooseservice_dropbox": "Dropbox",
"settings_chooseservice_webdav": "Webdav",
"settings_chooseservice_onedrive": "OneDrive for personal",
"settings_adv": "Advanced Settings",
"settings_concurrency": "Concurrency",
"settings_concurrency_desc": "How many files do you want to download or upload in parallel at most? By default it's set to 5. If you meet any problems such as rate limit, you can reduce the concurrency to a lower value.",
"settings_syncunderscore": "Sync _ Files Or Folders",
"settings_syncunderscore_desc": "Sync files or folders starting with _ (\"underscore\") or not",
"settings_configdir": "Sync Config Dir (experimental)",
"settings_configdir_desc": "Sync config dir {{configDir}} or not (inner folder .git and node_modules would be ignored). Please be aware that this may impact all your plugins' or Obsidian's settings, and may require you restart Obsidian after sync. Enable this at your own risk.",
"settings_importexport": "Import and Export Partial Settings",
"settings_export": "Export",
"settings_export_desc": "Export not-oauth2 settings by generating a qrcode.",
"settings_export_desc_button": "Get QR Code",
"settings_import": "Import",
"settings_import_desc": "You should open a camera or scan-qrcode app, to manually scan the QR code.",
"settings_debug": "Debug",
"settings_debuglevel": "Alter Console Log Level",
"settings_debuglevel_desc": "By default the log level is \"info\". You can change to \"debug\" to get verbose information in console.",
"settings_outputsettingsconsole": "Output Current Settings From Disk To Console",
"settings_outputsettingsconsole_desc": "The settings save on disk in encoded. Click this to see the decoded settings in console.",
"settings_outputsettingsconsole_button": "Output",
"settings_outputsettingsconsole_notice": "Finished outputing in console.",
"settings_syncplans": "Export Sync Plans",
"settings_syncplans_desc": "Sync plans are created every time after you trigger sync and before the actual sync. Useful to know what would actually happen in those sync. Click the button to export sync plans. You can choose to export to json or table format inside Markdown, which are equivalent.",
"settings_syncplans_button_json": "Export (json)",
"settings_syncplans_button_table": "Export (table)",
"settings_syncplans_notice": "Sync plans history exported.",
"settings_delsyncplans": "Delete Sync Plans History In DB",
"settings_delsyncplans_desc": "Delete sync plans history in DB.",
"settings_delsyncplans_button": "Delete Sync Plans History",
"settings_delsyncplans_notice": "Sync plans history (in DB) deleted.",
"settings_logtodb": "Save Console Logs Into DB",
"settings_logtodb_desc": "Enable this to save all console logs into DB, so that we can export and read them later. Especially useful for mobile debugging. Has performance cost and may impact battery. The history is saved for at most 10000 records and 7 days old.",
"settings_logtodbexport": "Export Console Logs From DB",
"settings_logtodbexport_desc": "Export the saved console logs of this vault from DB into a new file in the folder {{&debugFolder}} .",
"settings_logtodbexport_button": "Export",
"settings_logtodbexport_notice": "Console logs of this vault from DB are exported!",
"settings_logtodbclear": "Delete All Console Logs In DB",
"settings_logtodbclear_desc": "Delete all the console logs saved inside DB. This setting applies to all saved logs for all vaults in this device.",
"settings_logtodbclear_button": "Delete",
"settings_logtodbclear_notice": "All console logs saved in DB are deleted!",
"settings_delsyncmap": "Delete Sync Mappings History In DB",
"settings_delsyncmap_desc": "Sync mappings history stores the actual LOCAL last modified time of the REMOTE objects. Clearing it may cause unnecessary data exchanges in next-time sync. Click the button to delete sync mappings history in DB.",
"settings_delsyncmap_button": "Delete Sync Mappings",
"settings_delsyncmap_notice": "Sync mappings history (in local DB) deleted",
"settings_outputbasepathvaultid": "Output Vault Base Path And Randomly Assigned ID",
"settings_outputbasepathvaultid_desc": "For debugging purposes.",
"settings_outputbasepathvaultid_button": "Output",
"settings_resetcache": "Reset Local Internal Cache/Databases",
"settings_resetcache_desc": "Reset local internal caches/databases (for debugging purposes). You would want to reload the plugin after resetting this. This option will not empty the {s3, password...} settings.",
"settings_resetcache_button": "Reset",
"settings_resetcache_notice": "Local internal cache/databases deleted. Please manually reload the plugin.",
"syncalgov2_title": "Remotely Save has a better sync algorithm",
"syncalgov2_texts": "Welcome to use Remotely Save!\nFrom version 0.3.0, a new algorithm has been developed, but it needs uploading extra meta data files _remotely-save-metadata-on-remote.{json,bin} to YOUR configured cloud destinations, besides your notes.\nSo that, for example, the second device can know that what files/folders have been deleted on the first device by reading those files.\nIf you agree, plase click the button \"Agree\", and enjoy the plugin! AND PLEASE REMEMBER TO BACKUP YOUR VAULT FIRSTLY!\nIf you do not agree, you should stop using the current and later versions of Remotely Save. You could consider manually install the old version 0.2.14 which uses old algorithm and does not upload any extra meta data files. By clicking the \"Do Not Agree\" button, the plugin will unload itself, and you need to manually disable it in Obsidian settings.",
"syncalgov2_button_agree": "Agree",
"syncalgov2_button_disagree": "Do Not Agree"
}

9
src/langs/index.ts Normal file
View File

@ -0,0 +1,9 @@
import en from "./en.json";
import zh_cn from "./zh_cn.json";
import zh_tw from "./zh_tw.json";
export const LANGS = {
en: en,
zh_cn: zh_cn,
zh_tw: zh_tw,
};

275
src/langs/zh_cn.json Normal file
View File

@ -0,0 +1,275 @@
{
"confirm": "确认",
"disable": "关闭",
"enable": "开启",
"goback": "返回",
"submit": "提交",
"sometext": "这里有一段文字。",
"syncrun_alreadyrunning": "{{pluginName}} 正处于此阶段:{{syncStatus}}!",
"syncrun_syncingribbon": "{{pluginName}}:正在由 {{triggerSource}} 触发运行",
"syncrun_step0": "0/{{maxSteps}} Remotely Save 在空跑dry run模式不会发生实际的文件交换。",
"syncrun_step1": "1/{{maxSteps}} Remotely Save 准备同步({{serviceType}}",
"syncrun_step2": "2/{{maxSteps}} 正在获取远端的元数据。",
"syncrun_step3": "3/{{maxSteps}} 正在检查密码正确与否。",
"syncrun_passworderr": "检查密码时候出错。",
"syncrun_step4": "4/{{maxSteps}} 正在获取远端的额外的元数据。",
"syncrun_step5": "5/{{maxSteps}} 正在获取本地的元数据。",
"syncrun_step6": "6/{{maxSteps}} 正在生成同步计划。",
"syncrun_step7": "7/{{maxSteps}} Remotely Save 开始发生数据交换!",
"syncrun_step7skip": "7/{{maxSteps}} Remotely Save 在空跑模式,跳过实际数据交换步骤。",
"syncrun_step8": "8/{{maxSteps}} Remotely Save 已完成同步!",
"syncrun_abort": "{{manifestID}}-{{theDate}}:中断同步,同步来源={{triggerSource}},出错阶段={{syncStatus}}",
"protocol_saveqr": " {{manifestName}} 新的非 oauth2 设置保存完成。请重启插件设置页使之生效。",
"protocol_callbacknotsupported": "您的 uri callback 暂不支持: {{params}}",
"protocol_dropbox_connecting": "正在连接 Dropbox……\n请不要关闭此弹窗。",
"protocol_dropbox_connect_succ": "好!我们作为用户 {{username}} 连接上了 Dropbox",
"protocol_dropbox_connect_succ_revoke": "您已作为用户 {{username}} 连接上了。如果您想取消连接,请点击此按钮。",
"protocol_dropbox_connect_fail": "Dropbox 的回调请求有点异常。您是否拒绝了鉴权?",
"protocol_dropbox_connect_unknown": "不知道如何处理此 callback{{params}}",
"protocol_onedrive_connecting": "正在连接 OneDrive……\n请不要关闭此弹窗。",
"protocol_onedrive_connect_succ_revoke": "您已作为用户 {{username}} 连接上了。如果您想取消连接,请点击此按钮。",
"protocol_onedrive_connect_fail": "OneDrive 的回调请求有点异常。您是否拒绝了鉴权?",
"protocol_onedrive_connect_unknown": "不知道如何处理此 callback{{params}}",
"command_startsync": "开始同步start sync",
"command_drynrun": "开始同步空跑模式start sync (dry run only)",
"command_exportsyncplans_json": "导出同步计划为 json 格式export sync plans in json format",
"command_exportsyncplans_table": "导出同步计划为表格格式export sync plans in table format",
"command_exportlogsindb": "从数据库导出终端日志export logs saved in db",
"statusbar_time_years": "{{time}} 年前",
"statusbar_time_months": "{{time}} 月前",
"statusbar_time_weeks": "{{time}} 周前",
"statusbar_time_days": "{{time}} 天前",
"statusbar_time_hours": "{{time}} 小时前",
"statusbar_time_minutes": "{{time}} 分钟前",
"statusbar_time_lessminute": "一分钟之内",
"statusbar_lastsync": "上一次同步于:{{time}}",
"statusbar_lastsync_label": "上一次同步于:{{date}}",
"statusbar_lastsync_never": "没触发过同步",
"statusbar_lastsync_never_label": "没触发过同步",
"modal_password_title": "稍等一下,请阅读下文:",
"modal_password_shortdesc": "如果密码不是空的,那么文件会在上传之前,在本地先用此密码加密。\n如果密码是空的那么文件会被非加密地上传。",
"modal_password_attn1": "注意 1/5Vault名字是不会加密的本插件会在一些远程存储里创建一个和库名字有着同名的文件夹。",
"modal_password_attn2": "注意 2/5密码在本地不加密地保存",
"modal_password_attn3": "注意 3/5一些元信息是没有被加密的或者可以被较容易地猜测出来。文件大小很接近于没加密的时候且文件夹可能会被存储为大小为 0 byte 的对象。)",
"modal_password_attn4": "注意 4/5您需要确保远程存储是“空”的或者已有文件也是被同一个新密码加密的从而避免冲突。",
"modal_password_attn5": "注意 5/5密码越长越好。",
"modal_password_secondconfirm": "再次确认保存新密码",
"modal_password_notice": "新密码已保存!",
"modal_remotebasedir_title": "您正在修改远端基文件夹设置",
"modal_remotebasedir_shortdesc": "1. 本插件并不会自动在远端把内容从旧文件夹移动到新文件夹。所有内容都会重新同步。\n2. 如果你使得文本输入框为空,那么本设置会被重设回库的文件夹名(默认设置)。\n3. 即使您设置了端对端加密的密码,远端文件夹名称本身也不会被加密。\n4. 某些特殊字符,如“?”、“/”、“\\”是不允许的。文本前后的空格也会被自动删去。",
"modal_remotebasedir_invaliddirhint": "您所输入的内容含有某些特殊字符,如“?”、“/”、“\\”,它们是不允许的。",
"modal_remotebasedir_secondconfirm_vaultname": "重设回默认的库文件夹名",
"modal_remotebasedir_secondconfirm_change": "确认修改",
"modal_remotebasedir_notice": "新的远端基文件夹设置已保存!",
"modal_dropboxauth_manualsteps": "第 1 步:在浏览器中访问以下地址,然后按照网页提示操作。\n到了最后您应该会获得一串很长的代码文本请复制粘贴到下方并点击“提交”",
"modal_dropboxauth_autosteps": "在浏览器中访问以下地址,然后按照网页提示操作。\n到了最后您应该会被自动重定向回来 Obsidian。",
"modal_dropboxauth_copybutton": "点击此按钮从而复制鉴权 url",
"modal_dropboxauth_copynotice": "鉴权 url 已复制到剪贴板!",
"modal_dropboxauth_maualinput": "来自网页的授权码",
"modal_dropboxauth_maualinput_desc": "您需要点击“确认”",
"modal_dropboxauth_maualinput_notice": "正在尝试连接 Dropbox",
"modal_dropboxauth_maualinput_conn_succ": "很好!我们作为用户 {{username}} 连接到 Dropbox 了!",
"modal_dropboxauth_maualinput_conn_succ_revoke": "您已作为用户 {{username}} 连接到 Dropbox。如果您想断开连接点击此按钮。",
"modal_dropboxauth_maualinput_conn_fail": "连接 Dropbox 途中出错了。",
"modal_onedriveauth_shortdesc": "现在只支持个人版 OneDrive不支持企业版。\n在浏览器中访问以下地址然后按照网页提示操作。\n到了最后您应该会被自动重定向回来 Obsidian。",
"modal_onedriveauth_copybutton": "点击此按钮从而复制鉴权 url",
"modal_onedriveauth_copynotice": "鉴权 url 已复制到剪贴板!",
"modal_onedriverevokeauth_step1": "第 1 步用浏览器打开以下地址点击本插件对应的“Edit”按钮点击“Remove these permissions”按钮。",
"modal_onedriverevokeauth_step2": "第 2 步:点击以下按钮,清理本地保存的登录信息。",
"modal_onedriverevokeauth_clean": "清理本地保存的登录信息",
"modal_onedriverevokeauth_clean_desc": "您需要点击“清理”按钮。",
"modal_onedriverevokeauth_clean_button": "清理",
"modal_onedriverevokeauth_clean_notice": "已清理!",
"modal_onedriverevokeauth_clean_fail": "鉴权途中出错了。",
"modal_syncconfig_attn": "注意 1/2此设置只同步复制整个 Obsidian 的配置文件夹,但是不会同步其它 . 开头的文件夹或文件。除了会忽略 .git 和 node_modules 文件夹之外,它也并不理解配置文件夹的里各个子文件或子文件夹的含义。\n注意 2/2配置文件夹被同步之后各插件的设置或许会出错且 Obsidian 或许需要重启来重载各插件的新配置。\n如果您同意自行承受以上风险您可以点击以下再次确认按钮。",
"modal_syncconfig_secondconfirm": "再次确认开启",
"modal_syncconfig_notice": "您已开启配置文件夹的同步!",
"modal_qr_shortdesc": "这里可导出非 oauth2 设置。意味着Dropbox 和 OneDrive 信息不会被导出。)\n您可以使用另一个设备来扫描此 QR 码。\n又或者您可以点击以下按钮复制此特殊 URI。",
"modal_qr_button": "点击此按钮复制特殊 URI",
"modal_qr_button_notice": "特殊 URI 已被复制到剪贴板!",
"modal_sizesconflict_title": "Remotely Save跳过大文件的时候出现了一些冲突",
"modal_sizesconflict_desc": "您设置了跳过同步大于 {{thresholdMB}} MB{{thresholdBytes}} bytes的文件。\n但是以下文件的大小在一端大于阈值在另一端则小于阈值。\n为了避免意外的覆盖或删除插件停止了运作您需要手动处理至少一端的文件。",
"modal_sizesconflict_copybutton": "点击以复制以下所有文件大小冲突信息",
"modal_sizesconflict_copynotice": "所有的文件大小冲突信息,已被复制到剪贴板!",
"settings_basic": "基本设置",
"settings_password": "密码",
"settings_password_desc": "端到端加密的密码。不填写则代表没密码。您需要点击“确认”来修改。注意:密码和其它信息都会在本地保存。",
"settings_autorun": "自动运行",
"settings_autorun_desc": "每隔一段时间,此插件尝试自动同步。会影响到电池用量。",
"settings_autorun_notset": "(不设置)",
"settings_autorun_1min": "每 1 分钟",
"settings_autorun_5min": "每 5 分钟",
"settings_autorun_10min": "每 10 分钟",
"settings_autorun_30min": "每 30 分钟",
"settings_saverun": "保存时同步",
"settings_saverun_desc": "插件在每次保存文件后尝试同步。电池可能会受到影响。",
"settings_saverun_notset": "(未设置)",
"settings_saverun_1sec": "每1秒",
"settings_saverun_5sec": "每5秒",
"settings_saverun_10sec": "每10秒",
"settings_saverun_1min": "每1分钟",
"settings_runoncestartup": "启动后自动运行一次",
"settings_runoncestartup_desc": "本设置使得插件在程序启动后自动触发一次同步。修改后,会在下一次启动生效。本设置和“自动运行”是不同的,那个设置是指“每隔一段时间”都自动同步一次。",
"settings_runoncestartup_notset": "(不设置)",
"settings_runoncestartup_1sec": "启动后第 1 秒运行一次",
"settings_runoncestartup_10sec": "启动后第 10 秒运行一次",
"settings_runoncestartup_30sec": "启动后第 30 秒运行一次",
"settings_skiplargefiles": "跳过大文件(实验性质)",
"settings_skiplargefiles_desc": "跳过大于某一个阈值的文件。这里 1 MB = 10^6 bytes。",
"settings_skiplargefiles_notset": "(不设置)",
"settings_ignorepaths": "忽略的文件或文件夹的正则表达式",
"settings_ignorepaths_desc": "忽略的文件或文件夹的正则表达式。每行一条。路径是相对于库Vault根目录的没有前置 / 符号。",
"settings_enablestatusbar_info": "在状态栏显示上一次成功的同步",
"settings_enablestatusbar_info_desc": "在状态栏显示上一次成功的同步的时间。",
"settings_enablestatusbar_reloadrequired_notice": "需要重新载入此插件才生效。",
"settings_resetstatusbar_time": "重设上一次成功同步的时间记录",
"settings_resetstatusbar_time_desc": "重设上一次成功同步的时间记录。",
"settings_resetstatusbar_button": "重设",
"settings_resetstatusbar_notice": "重设完毕!",
"settings_checkonnectivity": "检查可否连接",
"settings_checkonnectivity_desc": "检查可否连接。",
"settings_checkonnectivity_button": "检查",
"settings_checkonnectivity_checking": "正在检查……",
"settings_remotebasedir": "修改远端基文件夹(实验性质)",
"settings_remotebasedir_desc": "默认设定,内容会被同步到远端的和资料库同名的文件夹下。您可以在此修改远端文件夹名,或删除输入框文本从而重设到默认值。您需要点击“确认”。",
"settings_s3": "S3 或兼容 S3 的服务的设置",
"settings_s3_disclaimer1": "声明:本插件不是 Amazon 的官方产品。",
"settings_s3_disclaimer2": "声明:您所输入的信息存储于本地。其它有害的或者出错的插件,是有可能读取到这些信息的。如果您发现了存储桶有不符合预期的访问,请立刻从 AWS或其它 S3 服务商)删除记录于此的 access key。",
"settings_s3_cors": "您需要设置 CORS从而允许这些源的请求访问app://obsidian.md 和 capacitor://localhost 和 http://localhost 且增加 ETag 到暴露 headers 里。",
"settings_s3_prod": "一些可参考的 Amazon S3 官方文档:",
"settings_s3_prod1": "服务地址Endpoint和区域Region信息",
"settings_s3_prod2": "Access Key ID 和 Secret Access Key 信息",
"settings_s3_prod3": "设置 CORS",
"settings_s3_endpoint": "服务地址Endpoint",
"settings_s3_region": "区域Region",
"settings_s3_region_desc": "如果您不知道这个值填什么可以尝试填写此默认值us-east-1",
"settings_s3_accesskeyid": "Access Key ID",
"settings_s3_accesskeyid_desc": "Access key ID。注意access key ID 和其它信息都会在本地保存。",
"settings_s3_secretaccesskey": "Secret Access Key",
"settings_s3_secretaccesskey_desc": "Secret access key。注意secret access key 和其它信息都会在本地保存。",
"settings_s3_bucketname": "存储桶Bucket的名字",
"settings_s3_bypasscorslocally": "本地绕过 CORS 问题",
"settings_s3_bypasscorslocally_desc": "对于 Obsidian 新版本(桌面版>=0.13.25 或 iOS>=1.1.1 或 Android>=1.2.1),本插件可以跳过服务器设置 CORS 的步骤。如果您遇到任意问题,可以关闭此设定,并在服务端设置 CORS允许来自 app://obsidian.md 和 capacitor://localhost 和 http://localhost 的请求且增加 ETag 到暴露 headers 里)。",
"settings_s3_parts": "分块并行度",
"settings_s3_parts_desc": "在 S3 里,大文件会被分块上传。您希望同一时间最多有多少个分块被上传?",
"settings_s3_urlstyle": "S3 URL style",
"settings_s3_urlstyle_desc": "是否对 S3 对象强制使用 path style URL例如使用 https://s3.amazonaws.com/*/ 而不是 https://*.s3.amazonaws.com/)。",
"settings_s3_connect_succ": "很好!可以访问到对应存储桶。",
"settings_s3_connect_fail": "无法访问到对应存储桶。",
"settings_dropbox": "Dropbox 设置",
"settings_dropbox_disclaimer1": "声明:此插件不是 Dropbox 官方产品。",
"settings_dropbox_disclaimer2": "声明:您所输入的信息存储于本地。其它有害的或者出错的插件,是有可能读取到这些信息的。如果您发现了 Dropbox 有不符合预期的访问,请立刻从 https://www.dropbox.com/account/connected_apps 删除记录于此插件的连接鉴权。",
"settings_dropbox_folder": "我们会在您的 Dropbox 上创建此文件夹并在里面同步:/Apps/{{pluginID}}/{{remoteBaseDir}}。",
"settings_dropbox_revoke": "撤回鉴权",
"settings_dropbox_revoke_desc": "您现在使用了用户名 {{username}} 来连接。如果想取消连接,请点击此按钮。",
"settings_dropbox_revoke_button": "撤回鉴权",
"settings_dropbox_revoke_notice": "鉴权已被撤回!",
"settings_dropbox_revoke_noticeerr": "撤回鉴权出错。",
"settings_dropbox_clearlocal": "清除本地保存的鉴权信息",
"settings_dropbox_clearlocal_desc": "您可以强制清除本地已保存的 Dropbox 的登录鉴权信息,但不向服务器发送撤回鉴权的请求。",
"settings_dropbox_clearlocal_button": "清除",
"settings_dropbox_clearlocal_notice": "已清除!",
"settings_dropbox_auth": "鉴权",
"settings_dropbox_auth_desc": "鉴权。",
"settings_dropbox_auth_button": "鉴权",
"settings_dropbox_connect_succ": "很好!我们可连接上 Dropbox",
"settings_dropbox_connect_fail": "我们未能连接上 Dropbox。",
"settings_onedrive": "Onedrive个人版设置",
"settings_onedrive_disclaimer1": "声明:此插件不是微软或 OneDrive 的官方产品。",
"settings_onedrive_disclaimer2": "声明:您所输入的信息存储于本地。其它有害的或者出错的插件,是有可能读取到这些信息的。如果您发现了 OneDrive 有不符合预期的访问,请立刻从 https://microsoft.com/consent 删除记录于此插件的连接鉴权。",
"settings_onedrive_folder": "我们会在您的 OneDrive 上创建此文件夹并在里面同步:/Apps/{{pluginID}}/{{remoteBaseDir}}。",
"settings_onedrive_nobiz": "现在只支持个人版 OneDrive。暂时并不支持企业版 OneDrive。",
"settings_onedrive_revoke": "撤回鉴权",
"settings_onedrive_revoke_desc": "您现在使用了用户名 {{username}} 来连接。如果想取消连接,请点击此按钮。",
"settings_onedrive_revoke_button": "撤回鉴权",
"settings_onedrive_auth": "鉴权",
"settings_onedrive_auth_desc": "鉴权。",
"settings_onedrive_auth_button": "鉴权",
"settings_onedrive_connect_succ": "很好!我们可连接上 OneDrive",
"settings_onedrive_connect_fail": "我们未能连接上 OneDrive。",
"settings_webdav": "Webdav 设置",
"settings_webdav_disclaimer1": "声明:您所输入的信息存储于本地。其它有害的或者出错的插件,是有可能读取到这些信息的。如果您发现了 Webdav 服务器有不符合预期的访问,请立刻修改用户名和密码。",
"settings_webdav_cors_os": "Obsidian 桌面版>=0.13.25 或 iOS>=1.1.1 或 Android>=1.2.1 支持跳过 CORS 设置。但您正在使用旧版,建议升级。",
"settings_webdav_cors": "您需要设置 CORS允许来自这些源的请求app://obsidian.md 和 capacitor://localhost 和 http://localhost。",
"settings_webdav_folder": "我们会在您的服务器上创建此文件夹并在里面同步:/{{remoteBaseDir}}",
"settings_webdav_addr": "服务器地址",
"settings_webdav_addr_desc": "服务器地址。",
"settings_webdav_user": "用户名",
"settings_webdav_user_desc": "用户名。注意:用户名和其它信息都会保存在本地。",
"settings_webdav_password": "密码",
"settings_webdav_password_desc": "密码。注意:密码和其它信息都会保存在本地。",
"settings_webdav_auth": "鉴权类型",
"settings_webdav_auth_desc": "如果不填写密码,本设置会被忽略。",
"settings_webdav_depth": "发送到服务器的 Depth header",
"settings_webdav_depth_desc": "Webdav 服务器会被设为接收 Depth header 为“1”或“Infinity”请求。本插件需要得知此信息。如果您不清楚如何设置可以选择“自动检测”",
"settings_webdav_depth_auto": "自动检测",
"settings_webdav_depth_1": "只支持 depth='1'",
"settings_webdav_depth_inf": "支持 depth='infinity'",
"settings_webdav_connect_succ": "很好!可以连接上 Webdav 服务器。",
"settings_webdav_connect_fail": "无法连接上 Webdav 服务器。(可能是地址/账号/密码/鉴权类型等错误。)",
"settings_webdav_connect_fail_withcors": "无法连接上 Webdav 服务器。(可能是地址/账号/密码/鉴权类型/CORS 等错误。)",
"settings_chooseservice": "选择远程服务",
"settings_chooseservice_desc": "从这里开始设置。您想连接到哪一个服务S3、Dropbox、Webdav、OneDrive个人版",
"settings_chooseservice_s3": "S3 或兼容 S3 的服务",
"settings_chooseservice_dropbox": "Dropbox",
"settings_chooseservice_webdav": "Webdav",
"settings_chooseservice_onedrive": "OneDrive个人版",
"settings_adv": "进阶设置",
"settings_concurrency": "并行度",
"settings_concurrency_desc": "您希望同时最多有多少个文件被上传和下载?默认值是 5。如果您遇到了一些问题如访问频率限制您可以减少并行度。",
"settings_syncunderscore": "同步 _ 文件或文件夹",
"settings_syncunderscore_desc": "是否同步“_”下划线开始的文件或文件夹。",
"settings_configdir": "同步配置文件夹(实验性质)",
"settings_configdir_desc": "是否同步 Obsidian 的配置文件夹 {{configDir}}(其中的 .git 和 node_modules 依然会被忽略)。请注意,此设置可能会影响到您 Obsidian 或者所有的插件设置,也可能需要您同步完毕后重启 Obsidian。如果您同意自行承受其风险则可以开启本设置。",
"settings_importexport": "导入导出部分设置",
"settings_export": "导出",
"settings_export_desc": "用 QR 码导出非 oauth2 的设置信息。",
"settings_export_desc_button": "生成 QR 码",
"settings_import": "导入",
"settings_import_desc": "您需要使用系统拍摄 app 或者扫描 QR 码的app来扫描对应的 QR 码。",
"settings_debug": "调试",
"settings_debuglevel": "修改终端输出的 level",
"settings_debuglevel_desc": "默认值为 \"info\"。您可以改为 \"debug\" 从而在终端里获取更多信息。",
"settings_outputsettingsconsole": "读取硬盘上的设置文件输出到终端",
"settings_outputsettingsconsole_desc": "硬盘上的设置文件是编码过的,点击这里从而解码并输出到终端。",
"settings_outputsettingsconsole_button": "输出",
"settings_outputsettingsconsole_notice": "已输出到终端",
"settings_syncplans": "导出同步计划",
"settings_syncplans_desc": "每次您启动同步,并在实际上传下载前,插件会生成同步计划。它可以使您知道每次同步发生了什么。点击按钮可以导出同步计划。并且,您可以选择导出为内嵌在 Markdown 里的 json 格式或表格格式,它们是等价的。",
"settings_syncplans_button_json": "导出json",
"settings_syncplans_button_table": "导出(表格)",
"settings_syncplans_notice": "同步计划已导出",
"settings_delsyncplans": "删除数据库里的同步计划历史",
"settings_delsyncplans_desc": "删除数据库里的同步计划历史。",
"settings_delsyncplans_button": "删除同步计划历史",
"settings_delsyncplans_notice": "(数据库里的)同步计划已被删除。",
"settings_logtodb": "保存终端日志到数据库",
"settings_logtodb_desc": "如果开启此设置,所有终端日志都会保存到数据,从而我们可以在之后导出和阅读它们。对于移动设备的调试较为有用。有性能成本,可能会影响电池用量。历史会保存最多 10000 条和 7 天时间。",
"settings_logtodbexport": "从数据库导出终端日志",
"settings_logtodbexport_desc": "从数据库导出本资料库的已保存的终端日志,输出到文件夹 {{&debugFolder}} 下的一个新文件内。",
"settings_logtodbexport_button": "导出",
"settings_logtodbexport_notice": "数据库内的本资料库的终端日志已导出!",
"settings_logtodbclear": "删除数据库的所有终端日志",
"settings_logtodbclear_desc": "删除数据库内的所有已保存的终端日志。本设置会影响本设备下所有资料库的所有已保存日志。",
"settings_logtodbclear_button": "删除",
"settings_logtodbclear_notice": "数据库内的所有终端日志已删除!",
"settings_delsyncmap": "删除数据库里的同步映射历史",
"settings_delsyncmap_desc": "同步映射历史存储了本地真正的最后修改时间和远程文件时间的映射。删除之可能会导致下一次同步时发生不必要的数据交换。点击按钮删除数据库里的同步映射历史。",
"settings_delsyncmap_button": "删除同步映射历史",
"settings_delsyncmap_notice": "(本地数据库里的)同步映射历史已被删除。",
"settings_outputbasepathvaultid": "输出资料库对应的位置和随机分配的 ID",
"settings_outputbasepathvaultid_desc": "用于调试。",
"settings_outputbasepathvaultid_button": "输出",
"settings_resetcache": "重设本地缓存和数据库",
"settings_resetcache_desc": "(出于调试原因)重设本地缓存和数据库。您需要在重设之后重新载入此插件。本重设不会删除 s3密码……等设定。",
"settings_resetcache_button": "重设",
"settings_resetcache_notice": "本地同步缓存和数据库已被删除。请手动重新载入此插件。",
"syncalgov2_title": "Remotely Save 的同步算法得到优化",
"syncalgov2_texts": "欢迎使用 Remotely Save!\n从版本 0.3.0 开始,它带来了新的同步算法,但是,除了您的笔记之外,它还需要上传额外的带有元信息的文件 _remotely-save-metadata-on-remote.{json,bin} 到您的云服务目的地上。\n从而比如说通过读取这些信息另一台设备可以知道什么文件或文件夹在第一台设备上被删除了。\n如果您同意此策略请点击按钮 \"同意\"然后开始享用此插件且特别要注意使用插件之前请首先备份好您的库Vault\n如果您不同意此策略您应该停止使用此版本和之后版本的 Remotely Save。您可以考虑手动安装旧版 0.2.14,它使用旧的同步算法,并不上传额外元信息文件。点击 \"不同意\" 之后插件会自动停止运行unload然后您需要 Obsidian 设置里手动停用disable此插件。",
"syncalgov2_button_agree": "同意",
"syncalgov2_button_disagree": "不同意"
}

275
src/langs/zh_tw.json Normal file
View File

@ -0,0 +1,275 @@
{
"confirm": "確認",
"disable": "關閉",
"enable": "開啟",
"goback": "返回",
"submit": "提交",
"sometext": "這裡有一段文字。",
"syncrun_alreadyrunning": "{{pluginName}} 正處於此階段:{{syncStatus}}!",
"syncrun_syncingribbon": "{{pluginName}}:正在由 {{triggerSource}} 觸發執行",
"syncrun_step0": "0/{{maxSteps}} Remotely Save 在空跑dry run模式不會發生實際的檔案交換。",
"syncrun_step1": "1/{{maxSteps}} Remotely Save 準備同步({{serviceType}}",
"syncrun_step2": "2/{{maxSteps}} 正在獲取遠端的元資料。",
"syncrun_step3": "3/{{maxSteps}} 正在檢查密碼正確與否。",
"syncrun_passworderr": "檢查密碼時候出錯。",
"syncrun_step4": "4/{{maxSteps}} 正在獲取遠端的額外的元資料。",
"syncrun_step5": "5/{{maxSteps}} 正在獲取本地的元資料。",
"syncrun_step6": "6/{{maxSteps}} 正在生成同步計劃。",
"syncrun_step7": "7/{{maxSteps}} Remotely Save 開始發生資料交換!",
"syncrun_step7skip": "7/{{maxSteps}} Remotely Save 在空跑模式,跳過實際資料交換步驟。",
"syncrun_step8": "8/{{maxSteps}} Remotely Save 已完成同步!",
"syncrun_abort": "{{manifestID}}-{{theDate}}:中斷同步,同步來源={{triggerSource}},出錯階段={{syncStatus}}",
"protocol_saveqr": " {{manifestName}} 新的非 oauth2 設定儲存完成。請重啟外掛設定頁使之生效。",
"protocol_callbacknotsupported": "您的 uri callback 暫不支援: {{params}}",
"protocol_dropbox_connecting": "正在連線 Dropbox……\n請不要關閉此彈窗。",
"protocol_dropbox_connect_succ": "好!我們作為使用者 {{username}} 連線上了 Dropbox",
"protocol_dropbox_connect_succ_revoke": "您已作為使用者 {{username}} 連線上了。如果您想取消連線,請點選此按鈕。",
"protocol_dropbox_connect_fail": "Dropbox 的回撥請求有點異常。您是否拒絕了鑑權?",
"protocol_dropbox_connect_unknown": "不知道如何處理此 callback{{params}}",
"protocol_onedrive_connecting": "正在連線 OneDrive……\n請不要關閉此彈窗。",
"protocol_onedrive_connect_succ_revoke": "您已作為使用者 {{username}} 連線上了。如果您想取消連線,請點選此按鈕。",
"protocol_onedrive_connect_fail": "OneDrive 的回撥請求有點異常。您是否拒絕了鑑權?",
"protocol_onedrive_connect_unknown": "不知道如何處理此 callback{{params}}",
"command_startsync": "開始同步start sync",
"command_drynrun": "開始同步空跑模式start sync (dry run only)",
"command_exportsyncplans_json": "匯出同步計劃為 json 格式export sync plans in json format",
"command_exportsyncplans_table": "匯出同步計劃為表格格式export sync plans in table format",
"command_exportlogsindb": "從資料庫匯出終端日誌export logs saved in db",
"statusbar_time_years": "{{time}} 年前",
"statusbar_time_months": "{{time}} 月前",
"statusbar_time_weeks": "{{time}} 周前",
"statusbar_time_days": "{{time}} 天前",
"statusbar_time_hours": "{{time}} 小時前",
"statusbar_time_minutes": "{{time}} 分鐘前",
"statusbar_time_lessminute": "一分鐘之內",
"statusbar_lastsync": "上一次同步於:{{time}}",
"statusbar_lastsync_label": "上一次同步於:{{date}}",
"statusbar_lastsync_never": "沒觸發過同步",
"statusbar_lastsync_never_label": "沒觸發過同步",
"modal_password_title": "稍等一下,請閱讀下文:",
"modal_password_shortdesc": "如果密碼不是空的,那麼檔案會在上傳之前,在本地先用此密碼加密。\n如果密碼是空的那麼檔案會被非加密地上傳。",
"modal_password_attn1": "注意 1/5儲存庫Vault名字是不會加密的本外掛會在一些遠端儲存裡建立一個和庫名字有著同名的資料夾。",
"modal_password_attn2": "注意 2/5密碼在本地不加密地儲存",
"modal_password_attn3": "注意 3/5一些元資訊是沒有被加密的或者可以被較容易地猜測出來。檔案大小很接近於沒加密的時候且資料夾可能會被儲存為大小為 0 byte 的物件。)",
"modal_password_attn4": "注意 4/5您需要確保遠端儲存是“空”的或者已有檔案也是被同一個新密碼加密的從而避免衝突。",
"modal_password_attn5": "注意 5/5密碼越長越好。",
"modal_password_secondconfirm": "再次確認儲存新密碼",
"modal_password_notice": "新密碼已儲存!",
"modal_remotebasedir_title": "您正在修改遠端基資料夾設定",
"modal_remotebasedir_shortdesc": "1. 本外掛並不會自動在遠端把內容從舊資料夾移動到新資料夾。所有內容都會重新同步。\n2. 如果你使得文字輸入框為空,那麼本設定會被重設回庫的資料夾名(預設設定)。\n3. 即使您設定了端對端加密的密碼,遠端資料夾名稱本身也不會被加密。\n4. 某些特殊字元,如“?”、“/”、“\\”是不允許的。文字前後的空格也會被自動刪去。",
"modal_remotebasedir_invaliddirhint": "您所輸入的內容含有某些特殊字元,如“?”、“/”、“\\”,它們是不允許的。",
"modal_remotebasedir_secondconfirm_vaultname": "重設回預設的庫資料夾名",
"modal_remotebasedir_secondconfirm_change": "確認修改",
"modal_remotebasedir_notice": "新的遠端基資料夾設定已儲存!",
"modal_dropboxauth_manualsteps": "第 1 步:在瀏覽器中訪問以下地址,然後按照網頁提示操作。\n到了最後您應該會獲得一串很長的程式碼文字請複製貼上到下方並點選“提交”",
"modal_dropboxauth_autosteps": "在瀏覽器中訪問以下地址,然後按照網頁提示操作。\n到了最後您應該會被自動重定向回來 Obsidian。",
"modal_dropboxauth_copybutton": "點選此按鈕從而複製鑑權 url",
"modal_dropboxauth_copynotice": "鑑權 url 已複製到剪貼簿!",
"modal_dropboxauth_maualinput": "來自網頁的授權碼",
"modal_dropboxauth_maualinput_desc": "您需要點選“確認”",
"modal_dropboxauth_maualinput_notice": "正在嘗試連線 Dropbox",
"modal_dropboxauth_maualinput_conn_succ": "很好!我們作為使用者 {{username}} 連線到 Dropbox 了!",
"modal_dropboxauth_maualinput_conn_succ_revoke": "您已作為使用者 {{username}} 連線到 Dropbox。如果您想斷開連線點選此按鈕。",
"modal_dropboxauth_maualinput_conn_fail": "連線 Dropbox 途中出錯了。",
"modal_onedriveauth_shortdesc": "現在只支援個人版 OneDrive不支援企業版。\n在瀏覽器中訪問以下地址然後按照網頁提示操作。\n到了最後您應該會被自動重定向回來 Obsidian。",
"modal_onedriveauth_copybutton": "點選此按鈕從而複製鑑權 url",
"modal_onedriveauth_copynotice": "鑑權 url 已複製到剪貼簿!",
"modal_onedriverevokeauth_step1": "第 1 步用瀏覽器開啟以下地址點選本外掛對應的“Edit”按鈕點選“Remove these permissions”按鈕。",
"modal_onedriverevokeauth_step2": "第 2 步:點選以下按鈕,清理本地儲存的登入資訊。",
"modal_onedriverevokeauth_clean": "清理本地儲存的登入資訊",
"modal_onedriverevokeauth_clean_desc": "您需要點選“清理”按鈕。",
"modal_onedriverevokeauth_clean_button": "清理",
"modal_onedriverevokeauth_clean_notice": "已清理!",
"modal_onedriverevokeauth_clean_fail": "鑑權途中出錯了。",
"modal_syncconfig_attn": "注意 1/2此設定只同步複製整個 Obsidian 的配置資料夾,但是不會同步其它 . 開頭的資料夾或檔案。除了會忽略 .git 和 node_modules 資料夾之外,它也並不理解配置資料夾的裡各個子檔案或子資料夾的含義。\n注意 2/2配置資料夾被同步之後各外掛的設定或許會出錯且 Obsidian 或許需要重啟來過載各外掛的新配置。\n如果您同意自行承受以上風險您可以點選以下再次確認按鈕。",
"modal_syncconfig_secondconfirm": "再次確認開啟",
"modal_syncconfig_notice": "您已開啟配置資料夾的同步!",
"modal_qr_shortdesc": "這裡可匯出非 oauth2 設定。意味著Dropbox 和 OneDrive 資訊不會被匯出。)\n您可以使用另一個裝置來掃描此 QR 碼。\n又或者您可以點選以下按鈕複製此特殊 URI。",
"modal_qr_button": "點選此按鈕複製特殊 URI",
"modal_qr_button_notice": "特殊 URI 已被複制到剪貼簿!",
"modal_sizesconflict_title": "Remotely Save跳過大檔案的時候出現了一些衝突",
"modal_sizesconflict_desc": "您設定了跳過同步大於 {{thresholdMB}} MB{{thresholdBytes}} bytes的檔案。\n但是以下檔案的大小在一端大於閾值在另一端則小於閾值。\n為了避免意外的覆蓋或刪除外掛停止了運作您需要手動處理至少一端的檔案。",
"modal_sizesconflict_copybutton": "點選以複製以下所有檔案大小衝突資訊",
"modal_sizesconflict_copynotice": "所有的檔案大小衝突資訊,已被複制到剪貼簿!",
"settings_basic": "基本設定",
"settings_password": "密碼",
"settings_password_desc": "端到端加密的密碼。不填寫則代表沒密碼。您需要點選“確認”來修改。注意:密碼和其它資訊都會在本地儲存。",
"settings_autorun": "自動執行",
"settings_autorun_desc": "每隔一段時間,此外掛嘗試自動同步。會影響到電池用量。",
"settings_autorun_notset": "(不設定)",
"settings_autorun_1min": "每 1 分鐘",
"settings_autorun_5min": "每 5 分鐘",
"settings_autorun_10min": "每 10 分鐘",
"settings_autorun_30min": "每 30 分鐘",
"settings_saverun": "保存時同步",
"settings_saverun_desc": "插件在每次保存文件後嘗試同步。電池可能會受到影響。",
"settings_saverun_notset": "(未設置)",
"settings_saverun_1sec": "每1秒",
"settings_saverun_5sec": "每5秒",
"settings_saverun_10sec": "每10秒",
"settings_saverun_1min": "每1分鐘",
"settings_runoncestartup": "啟動後自動執行一次",
"settings_runoncestartup_desc": "本設定使得外掛在程式啟動後自動觸發一次同步。修改後,會在下一次啟動生效。本設定和“自動執行”是不同的,那個設定是指“每隔一段時間”都自動同步一次。",
"settings_runoncestartup_notset": "(不設定)",
"settings_runoncestartup_1sec": "啟動後第 1 秒執行一次",
"settings_runoncestartup_10sec": "啟動後第 10 秒執行一次",
"settings_runoncestartup_30sec": "啟動後第 30 秒執行一次",
"settings_skiplargefiles": "跳過大檔案(實驗性質)",
"settings_skiplargefiles_desc": "跳過大於某一個閾值的檔案。這裡 1 MB = 10^6 bytes。",
"settings_skiplargefiles_notset": "(不設定)",
"settings_ignorepaths": "忽略的檔案或資料夾的正則表示式",
"settings_ignorepaths_desc": "忽略的檔案或資料夾的正則表示式。每行一條。路徑是相對於庫Vault根目錄的沒有前置 / 符號。",
"settings_enablestatusbar_info": "在狀態列顯示上一次成功的同步",
"settings_enablestatusbar_info_desc": "在狀態列顯示上一次成功的同步的時間。",
"settings_enablestatusbar_reloadrequired_notice": "需要重新載入此外掛才生效。",
"settings_resetstatusbar_time": "重設上一次成功同步的時間記錄",
"settings_resetstatusbar_time_desc": "重設上一次成功同步的時間記錄。",
"settings_resetstatusbar_button": "重設",
"settings_resetstatusbar_notice": "重設完畢!",
"settings_checkonnectivity": "檢查可否連線",
"settings_checkonnectivity_desc": "檢查可否連線。",
"settings_checkonnectivity_button": "檢查",
"settings_checkonnectivity_checking": "正在檢查……",
"settings_remotebasedir": "修改遠端基資料夾(實驗性質)",
"settings_remotebasedir_desc": "預設設定,內容會被同步到遠端的和資料庫同名的資料夾下。您可以在此修改遠端資料夾名,或刪除輸入框文字從而重設到預設值。您需要點選“確認”。",
"settings_s3": "S3 或相容 S3 的服務的設定",
"settings_s3_disclaimer1": "宣告:本外掛不是 Amazon 的官方產品。",
"settings_s3_disclaimer2": "宣告:您所輸入的資訊儲存於本地。其它有害的或者出錯的外掛,是有可能讀取到這些資訊的。如果您發現了儲存桶有不符合預期的訪問,請立刻從 AWS或其它 S3 服務商)刪除記錄於此的 access key。",
"settings_s3_cors": "您需要設定 CORS從而允許這些源的請求訪問app://obsidian.md 和 capacitor://localhost 和 http://localhost 且增加 ETag 到暴露 headers 裡。",
"settings_s3_prod": "一些可參考的 Amazon S3 官方文件:",
"settings_s3_prod1": "服務地址Endpoint和區域Region資訊",
"settings_s3_prod2": "Access Key ID 和 Secret Access Key 資訊",
"settings_s3_prod3": "設定 CORS",
"settings_s3_endpoint": "服務地址Endpoint",
"settings_s3_region": "區域Region",
"settings_s3_region_desc": "如果您不知道這個值填什麼可以嘗試填寫此預設值us-east-1",
"settings_s3_accesskeyid": "Access Key ID",
"settings_s3_accesskeyid_desc": "Access key ID。注意access key ID 和其它資訊都會在本地儲存。",
"settings_s3_secretaccesskey": "Secret Access Key",
"settings_s3_secretaccesskey_desc": "Secret access key。注意secret access key 和其它資訊都會在本地儲存。",
"settings_s3_bucketname": "儲存桶Bucket的名字",
"settings_s3_bypasscorslocally": "本地繞過 CORS 問題",
"settings_s3_bypasscorslocally_desc": "對於 Obsidian 新版本(桌面版>=0.13.25 或 iOS>=1.1.1 或 Android>=1.2.1),本外掛可以跳過伺服器設定 CORS 的步驟。如果您遇到任意問題,可以關閉此設定,並在服務端設定 CORS允許來自 app://obsidian.md 和 capacitor://localhost 和 http://localhost 的請求且增加 ETag 到暴露 headers 裡)。",
"settings_s3_parts": "分塊並行度",
"settings_s3_parts_desc": "在 S3 裡,大檔案會被分塊上傳。您希望同一時間最多有多少個分塊被上傳?",
"settings_s3_urlstyle": "S3 URL style",
"settings_s3_urlstyle_desc": "是否對 S3 物件強制使用 path style URL例如使用 https://s3.amazonaws.com/*/ 而不是 https://*.s3.amazonaws.com/)。",
"settings_s3_connect_succ": "很好!可以訪問到對應儲存桶。",
"settings_s3_connect_fail": "無法訪問到對應儲存桶。",
"settings_dropbox": "Dropbox 設定",
"settings_dropbox_disclaimer1": "宣告:此外掛不是 Dropbox 官方產品。",
"settings_dropbox_disclaimer2": "宣告:您所輸入的資訊儲存於本地。其它有害的或者出錯的外掛,是有可能讀取到這些資訊的。如果您發現了 Dropbox 有不符合預期的訪問,請立刻從 https://www.dropbox.com/account/connected_apps 刪除記錄於此外掛的連線鑑權。",
"settings_dropbox_folder": "我們會在您的 Dropbox 上建立此資料夾並在裡面同步:/Apps/{{pluginID}}/{{remoteBaseDir}}。",
"settings_dropbox_revoke": "撤回鑑權",
"settings_dropbox_revoke_desc": "您現在使用了使用者名稱 {{username}} 來連線。如果想取消連線,請點選此按鈕。",
"settings_dropbox_revoke_button": "撤回鑑權",
"settings_dropbox_revoke_notice": "鑑權已被撤回!",
"settings_dropbox_revoke_noticeerr": "撤回鑑權出錯。",
"settings_dropbox_clearlocal": "清除本地儲存的鑑權資訊",
"settings_dropbox_clearlocal_desc": "您可以強制清除本地已儲存的 Dropbox 的登入鑑權資訊,但不向伺服器傳送撤回鑑權的請求。",
"settings_dropbox_clearlocal_button": "清除",
"settings_dropbox_clearlocal_notice": "已清除!",
"settings_dropbox_auth": "鑑權",
"settings_dropbox_auth_desc": "鑑權。",
"settings_dropbox_auth_button": "鑑權",
"settings_dropbox_connect_succ": "很好!我們可連線上 Dropbox",
"settings_dropbox_connect_fail": "我們未能連線上 Dropbox。",
"settings_onedrive": "Onedrive個人版設定",
"settings_onedrive_disclaimer1": "宣告:此外掛不是微軟或 OneDrive 的官方產品。",
"settings_onedrive_disclaimer2": "宣告:您所輸入的資訊儲存於本地。其它有害的或者出錯的外掛,是有可能讀取到這些資訊的。如果您發現了 OneDrive 有不符合預期的訪問,請立刻從 https://microsoft.com/consent 刪除記錄於此外掛的連線鑑權。",
"settings_onedrive_folder": "我們會在您的 OneDrive 上建立此資料夾並在裡面同步:/Apps/{{pluginID}}/{{remoteBaseDir}}。",
"settings_onedrive_nobiz": "現在只支援個人版 OneDrive。暫時並不支援企業版 OneDrive。",
"settings_onedrive_revoke": "撤回鑑權",
"settings_onedrive_revoke_desc": "您現在使用了使用者名稱 {{username}} 來連線。如果想取消連線,請點選此按鈕。",
"settings_onedrive_revoke_button": "撤回鑑權",
"settings_onedrive_auth": "鑑權",
"settings_onedrive_auth_desc": "鑑權。",
"settings_onedrive_auth_button": "鑑權",
"settings_onedrive_connect_succ": "很好!我們可連線上 OneDrive",
"settings_onedrive_connect_fail": "我們未能連線上 OneDrive。",
"settings_webdav": "Webdav 設定",
"settings_webdav_disclaimer1": "宣告:您所輸入的資訊儲存於本地。其它有害的或者出錯的外掛,是有可能讀取到這些資訊的。如果您發現了 Webdav 伺服器有不符合預期的訪問,請立刻修改使用者名稱和密碼。",
"settings_webdav_cors_os": "Obsidian 桌面版>=0.13.25 或 iOS>=1.1.1 或 Android>=1.1.1 支援跳過 CORS 設定。但您正在使用舊版,建議升級。",
"settings_webdav_cors": "您需要設定 CORS允許來自這些源的請求app://obsidian.md 和 capacitor://localhost 和 http://localhost。",
"settings_webdav_folder": "我們會在您的伺服器上建立此資料夾並在裡面同步:/{{remoteBaseDir}}",
"settings_webdav_addr": "伺服器地址",
"settings_webdav_addr_desc": "伺服器地址。",
"settings_webdav_user": "使用者名稱",
"settings_webdav_user_desc": "使用者名稱。注意:使用者名稱和其它資訊都會儲存在本地。",
"settings_webdav_password": "密碼",
"settings_webdav_password_desc": "密碼。注意:密碼和其它資訊都會儲存在本地。",
"settings_webdav_auth": "鑑權型別",
"settings_webdav_auth_desc": "如果不填寫密碼,本設定會被忽略。",
"settings_webdav_depth": "傳送到伺服器的 Depth header",
"settings_webdav_depth_desc": "Webdav 伺服器會被設為接收 Depth header 為“1”或“Infinity”請求。本外掛需要得知此資訊。如果您不清楚如何設定可以選擇“自動檢測”",
"settings_webdav_depth_auto": "自動檢測",
"settings_webdav_depth_1": "只支援 depth='1'",
"settings_webdav_depth_inf": "支援 depth='infinity'",
"settings_webdav_connect_succ": "很好!可以連線上 Webdav 伺服器。",
"settings_webdav_connect_fail": "無法連線上 Webdav 伺服器。(可能是地址/賬號/密碼/鑑權型別等錯誤。)",
"settings_webdav_connect_fail_withcors": "無法連線上 Webdav 伺服器。(可能是地址/賬號/密碼/鑑權型別/CORS 等錯誤。)",
"settings_chooseservice": "選擇遠端服務",
"settings_chooseservice_desc": "從這裡開始設定。您想連線到哪一個服務S3、Dropbox、Webdav、OneDrive個人版",
"settings_chooseservice_s3": "S3 或相容 S3 的服務",
"settings_chooseservice_dropbox": "Dropbox",
"settings_chooseservice_webdav": "Webdav",
"settings_chooseservice_onedrive": "OneDrive個人版",
"settings_adv": "進階設定",
"settings_concurrency": "並行度",
"settings_concurrency_desc": "您希望同時最多有多少個檔案被上傳和下載?預設值是 5。如果您遇到了一些問題如訪問頻率限制您可以減少並行度。",
"settings_syncunderscore": "同步 _ 檔案或資料夾",
"settings_syncunderscore_desc": "是否同步“_”下劃線開始的檔案或資料夾。",
"settings_configdir": "同步配置資料夾(實驗性質)",
"settings_configdir_desc": "是否同步 Obsidian 的配置資料夾 {{configDir}}(其中的 .git 和 node_modules 依然會被忽略)。請注意,此設定可能會影響到您 Obsidian 或者所有的外掛設定,也可能需要您同步完畢後重啟 Obsidian。如果您同意自行承受其風險則可以開啟本設定。",
"settings_importexport": "匯入匯出部分設定",
"settings_export": "匯出",
"settings_export_desc": "用 QR 碼匯出非 oauth2 的設定資訊。",
"settings_export_desc_button": "生成 QR 碼",
"settings_import": "匯入",
"settings_import_desc": "您需要使用系統拍攝 app 或者掃描 QR 碼的app來掃描對應的 QR 碼。",
"settings_debug": "除錯",
"settings_debuglevel": "修改終端輸出的 level",
"settings_debuglevel_desc": "預設值為 \"info\"。您可以改為 \"debug\" 從而在終端裡獲取更多資訊。",
"settings_outputsettingsconsole": "讀取硬碟上的設定檔案輸出到終端",
"settings_outputsettingsconsole_desc": "硬碟上的設定檔案是編碼過的,點選這裡從而解碼並輸出到終端。",
"settings_outputsettingsconsole_button": "輸出",
"settings_outputsettingsconsole_notice": "已輸出到終端",
"settings_syncplans": "匯出同步計劃",
"settings_syncplans_desc": "每次您啟動同步,並在實際上傳下載前,外掛會生成同步計劃。它可以使您知道每次同步發生了什麼。點選按鈕可以匯出同步計劃。並且,您可以選擇匯出為內嵌在 Markdown 裡的 json 格式或表格格式,它們是等價的。",
"settings_syncplans_button_json": "匯出json",
"settings_syncplans_button_table": "匯出(表格)",
"settings_syncplans_notice": "同步計劃已匯出",
"settings_delsyncplans": "刪除資料庫裡的同步計劃歷史",
"settings_delsyncplans_desc": "刪除資料庫裡的同步計劃歷史。",
"settings_delsyncplans_button": "刪除同步計劃歷史",
"settings_delsyncplans_notice": "(資料庫裡的)同步計劃已被刪除。",
"settings_logtodb": "儲存終端日誌到資料庫",
"settings_logtodb_desc": "如果開啟此設定,所有終端日誌都會儲存到資料,從而我們可以在之後匯出和閱讀它們。對於移動裝置的除錯較為有用。有效能成本,可能會影響電池用量。歷史會儲存最多 10000 條和 7 天時間。",
"settings_logtodbexport": "從資料庫匯出終端日誌",
"settings_logtodbexport_desc": "從資料庫匯出本資料庫的已儲存的終端日誌,輸出到資料夾 {{&debugFolder}} 下的一個新檔案內。",
"settings_logtodbexport_button": "匯出",
"settings_logtodbexport_notice": "資料庫內的本資料庫的終端日誌已匯出!",
"settings_logtodbclear": "刪除資料庫的所有終端日誌",
"settings_logtodbclear_desc": "刪除資料庫內的所有已儲存的終端日誌。本設定會影響本裝置下所有資料庫的所有已儲存日誌。",
"settings_logtodbclear_button": "刪除",
"settings_logtodbclear_notice": "資料庫內的所有終端日誌已刪除!",
"settings_delsyncmap": "刪除資料庫裡的同步對映歷史",
"settings_delsyncmap_desc": "同步對映歷史儲存了本地真正的最後修改時間和遠端檔案時間的對映。刪除之可能會導致下一次同步時發生不必要的資料交換。點選按鈕刪除資料庫裡的同步對映歷史。",
"settings_delsyncmap_button": "刪除同步對映歷史",
"settings_delsyncmap_notice": "(本地資料庫裡的)同步對映歷史已被刪除。",
"settings_outputbasepathvaultid": "輸出資料庫對應的位置和隨機分配的 ID",
"settings_outputbasepathvaultid_desc": "用於除錯。",
"settings_outputbasepathvaultid_button": "輸出",
"settings_resetcache": "重設本地快取和資料庫",
"settings_resetcache_desc": "(出於除錯原因)重設本地快取和資料庫。您需要在重設之後重新載入此外掛。本重設不會刪除 s3密碼……等設定。",
"settings_resetcache_button": "重設",
"settings_resetcache_notice": "本地同步快取和資料庫已被刪除。請手動重新載入此外掛。",
"syncalgov2_title": "Remotely Save 的同步演算法得到最佳化",
"syncalgov2_texts": "歡迎使用 Remotely Save!\n從版本 0.3.0 開始,它帶來了新的同步演算法,但是,除了您的筆記之外,它還需要上傳額外的帶有元資訊的檔案 _remotely-save-metadata-on-remote.{json,bin} 到您的雲服務目的地上。\n從而比如說透過讀取這些資訊另一臺裝置可以知道什麼檔案或資料夾在第一臺裝置上被刪除了。\n如果您同意此策略請點選按鈕 \"同意\"然後開始享用此外掛且特別要注意使用外掛之前請首先備份好您的儲存庫Vault\n如果您不同意此策略您應該停止使用此版本和之後版本的 Remotely Save。您可以考慮手動安裝舊版 0.2.14,它使用舊的同步演算法,並不上傳額外元資訊檔案。點選 \"不同意\" 之後外掛會自動停止執行unload然後您需要 Obsidian 設定裡手動停用disable此外掛。",
"syncalgov2_button_agree": "同意",
"syncalgov2_button_disagree": "不同意"
}