diff --git a/app/appearance/langs/ar_SA.json b/app/appearance/langs/ar_SA.json index a6b8d9b58..93639514f 100644 --- a/app/appearance/langs/ar_SA.json +++ b/app/appearance/langs/ar_SA.json @@ -8,8 +8,8 @@ "removeAssetsID": "إزالة الـ ID من أسماء ملفات الموارد", "removeAssetsIDTip": "عند التفعيل سيتم إزالة جزء الـ ID من أسماء ملفات الموارد عند تصدير Markdown", "clearTempFiles": "مسح الملفات المؤقتة", - "clearTempFilesTip": "Bereinigen Sie temporäre Dateien, die während der Ausführung der Anwendung erstellt wurden, um Speicherplatz freizugeben", - "uploadFileTooLarge": "⚠️ الملف الذي تم رفعه [${x}] كبير جدًا [${y}],هل تؤكد المتابعة بالرفع?", + "clearTempFilesTip": "مسح الملفات المؤقتة التي تم إنشاؤها أثناء تشغيل التطبيق لتحرير مساحة التخزين", + "uploadFileTooLarge": "⚠️ الملف الذي تم رفعه [${x}] كبير جدًا [${y}]، هل تؤكد المتابعة بالرفع؟", "recentDocsMaxListCount": "الحد الأقصى لعدد المستندات الحديثة المعروضة", "recentDocsMaxListCountTip": "الحد الأقصى لعدد المستندات المدرجة في مربع حوار المستندات الحديثة", "bazaarNeedVersion": "يتطلب ترقية SiYuan إلى الإصدار v${x} أو أحدث لاستخدام هذه الميزة", @@ -37,7 +37,7 @@ "rebuildDataIndex": "إعادة بناء الفهرس", "rebuildDataIndexTip": "إعادة بناء كاملة لفهرس البيانات، قد يستغرق ذلك بعض الوقت، يرجى الانتظار", "displayFieldName": "عرض اسم الحقل", - "sortBySelectOption": "Nach Option sortieren", + "sortBySelectOption": "الترتيب حسب الخيار", "groupStep": "فاصل التجميع", "groupRange": "نطاق التجميع", "groupMethodDateRelative": "تاريخ نسبي", @@ -757,7 +757,7 @@ "exportPDF4": "تضمين الأصول", "exportPDF5": "البقاء مطوية", "paged": "ترقيم الصفحات", - "mergeSubdocs": "إبقاء مطوياً", + "mergeSubdocs": "دمج المستندات الفرعية", "removeAssetsFolder": "إزالة دليل الأصول", "upload": "رفع", "reminderTip": "لا يمكن تعيين وقت التذكير قبل الوقت الحالي", @@ -1308,7 +1308,7 @@ "exportCABundleTip": "تصدير شهادة CA والمفتاح الخاص لمشاركتها مع أجهزة SiYuan الأخرى. ستثق الأجهزة التي تستخدم نفس CA في الشهادات الصادرة عنها", "importCABundle": "استيراد حزمة CA", "importCABundleTip": "استيراد حزمة CA من جهاز SiYuan آخر. بعد الاستيراد سيستخدم هذا الجهاز نفس CA، مما يسمح للعملاء بالثقة في شهادات جميع الأجهزة", - "importCABundleSuccess": "تم استيراد حزمة CA بنجاح,يرجى إعادة تشغيل التطبيق لتطبيق التغييرات", + "importCABundleSuccess": "تم استيراد حزمة CA بنجاح، يرجى إعادة تشغيل التطبيق لتطبيق التغييرات", "about13": "‫رمز API‬", "about14": "\u202B مصادفة الرمز المميز عند استدعاء واجهة برمجة التطبيقات (API)\u202C
\u202Bرأس طلب HTTP هو \u202AAuthorization: token ${token}\u202C\u202C", "about17": "‫عند الضبط على ‪اتصال مباشر‬ لن يتم تفعيل الوكيل‬", @@ -1659,7 +1659,7 @@ "193": "يرجى الرجوع إلى الفصل [الذكاء الاصطناعي] من دليل المستخدم للتكوين", "194": "‫هناك قيود على واجهة Nutstore، يرجى استخدام خدمات WebDAV الأخرى‬", "195": "وقت النظام غير صحيح، يرجى معايرة وقت النظام والمحاولة مرة أخرى", - "196": "‫لا تقم بتعيين مساحة العمل تحت مسار قرص مزامنة من طرف ثالث، وإلا فإن البيانات سوف تتلف (iCloud/OneDrive/ropbox/Google Drive/Nutstore/Baidu Netdisk/Tencent Weiyun، إلخ)‬", + "196": "‫لا تقم بتعيين مساحة العمل تحت مسار قرص مزامنة من طرف ثالث، وإلا فإن البيانات سوف تتلف (iCloud/OneDrive/Dropbox/Google Drive/Nutstore/Baidu Netdisk/Tencent Weiyun، إلخ)‬", "197": "يرجى فتح المفكرة [%s] ثم المحاولة مرة أخرى", "198": "هذا ليس أرشيف بيانات صالح. إذا تم تصدير الأرشيف من [شجرة المستندات]، الرجاء استيراده من [شجرة المستندات]", "199": "‫هذا ليس أرشيف .sy.zip الصالح. إذا تم تصدير الأرشيف من [الإعدادات]، الرجاء استيراده من [الإعدادات]‬", diff --git a/app/appearance/langs/de_DE.json b/app/appearance/langs/de_DE.json index 5f0a96785..9650b47a2 100644 --- a/app/appearance/langs/de_DE.json +++ b/app/appearance/langs/de_DE.json @@ -137,7 +137,7 @@ "allowHTMLBLockScript": "Die Ausführung von Skripten innerhalb von HTML-Blöcken zulassen", "allowHTMLBLockScriptTip": "Nach der Aktivierung wird das Skript im HTML-Block nicht bereinigt. Bitte seien Sie sich des potenziellen Risikos von XSS-Angriffen bewusst.", "allowSVGScript": "Ausführen von Skripten innerhalb von SVG erlauben", - "allowSVGScriptTip": "Wenn aktiviert, wird der Code im SVG nicht sicherheitsgefiltert。Achten Sie auf mögliche XSS-Risiken", + "allowSVGScriptTip": "Wenn aktiviert, wird der Code im SVG nicht sicherheitsgefiltert. Achten Sie auf mögliche XSS-Risiken", "autoLaunchMode0": "Nicht automatisch starten", "autoLaunchMode1": "Automatisch nach dem Booten starten", "autoLaunchMode2": "Automatisch starten und die Hauptoberfläche minimieren nach dem Booten", diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index 5da146e9a..5a80f0a3d 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -1103,7 +1103,7 @@ "logout": "Logout", "refreshUser": "User information refreshed", "insertBottom": "Open Below the Tab", - "insertRight": "Open Right the Tab", + "insertRight": "Open to the Right of the Tab", "account1": "Become a paid member", "account4": "Upgrade to a subscription member", "account2": "End-to-end encrypted data sync and backup", @@ -1474,7 +1474,7 @@ "8": "Check update failed", "9": "\uD83D\uDE80 A new version is available, please browse the release announcement %s", "10": "Is the latest version", - "11": "\uD83D\uDCE2 系統公告:%s", + "11": "\uD83D\uDCE2 System announcement: %s", "12": "Query asset failed [%s]", "13": "Cannot create a file starting with .", "14": "Export failed: %s", diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index 0b51f8ecf..d037a0c98 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -9,7 +9,7 @@ "removeAssetsIDTip": "Al habilitar, al exportar a Markdown se eliminará la parte del nombre de archivo de recursos que contiene el ID", "clearTempFiles": "Limpiar archivos temporales", "clearTempFilesTip": "Limpia los archivos temporales generados durante la ejecución de la aplicación para liberar espacio de almacenamiento", - "uploadFileTooLarge": "⚠️ El archivo subido [${x}] es demasiado grande [${y}],¿estás seguro de que deseas continuar con la subida?", + "uploadFileTooLarge": "⚠️ El archivo subido [${x}] es demasiado grande [${y}]. ¿Estás seguro de que deseas continuar con la subida?", "recentDocsMaxListCount": "Número máximo de documentos recientes listados", "recentDocsMaxListCountTip": "Número máximo de documentos que se mostrarán en el cuadro de diálogo Documentos recientes", "bazaarNeedVersion": "Se requiere actualizar SiYuan a la versión v${x} o posterior para usarlo", @@ -137,7 +137,7 @@ "allowHTMLBLockScript": "Permitir la ejecución de scripts dentro de bloques HTML", "allowHTMLBLockScriptTip": "Después de habilitarlo, el script en el bloque HTML no se desinfectará. Tenga en cuenta el riesgo potencial de ataques XSS", "allowSVGScript": "Permitir ejecutar scripts dentro del SVG", - "allowSVGScriptTip": "Al activarlo, el código dentro del SVG no será filtrado por seguridad。Tenga en cuenta el riesgo potencial de XSS", + "allowSVGScriptTip": "Al activarlo, el código dentro del SVG no será filtrado por seguridad. Tenga en cuenta el riesgo potencial de XSS", "autoLaunchMode0": "No iniciar automáticamente", "autoLaunchMode1": "Inicio automático después del arranque", "autoLaunchMode2": "Iniciar automáticamente y minimizar la interfaz principal después del arranque", @@ -1262,7 +1262,7 @@ "parentRelation": "Padre - Hijo", "openInNewTab": "Abrir en una nueva pestaña", "help": "Ayuda", - "userGuide": "User Guide", + "userGuide": "Guía del usuario", "paragraphBeginningSpace": "Dos espacios vacíos al principio del párrafo", "outline": "Esquema", "newFile": "Nuevo documento", @@ -1531,7 +1531,7 @@ "65": "Exportando datos...", "66": "Archivo de datos [%s] creado", "67": "Cargado en %s, descargado en %s", - "68": "Les données locales ont dépassé la capacité de stockage maximale de l'espace cloud [%s] pendant la période d'essai et ne peuvent pas continuer à synchroniser les données. Después de la suscripción, la capacidad de almacenamiento en la nube se actualizará a 8GB", + "68": "Los datos locales han superado la capacidad máxima de almacenamiento del espacio en la nube [%s] durante el período de prueba y no se puede continuar sincronizando datos. Después de la suscripción, la capacidad de almacenamiento en la nube se actualizará a 8 GB", "69": "Descarga completada", "70": "Procesando [%s], por favor espere...", "71": "Fallo en la inserción del archivo de recursos, por favor reabra el documento", diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index a6cc61a3b..4fb614cc3 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -137,7 +137,7 @@ "allowHTMLBLockScript": "Autoriser l'exécution de scripts dans les blocs HTML", "allowHTMLBLockScriptTip": "Après activation, le script dans le bloc HTML ne sera pas nettoyé. Veuillez être conscient du risque potentiel d'attaques XSS", "allowSVGScript": "Autoriser l'exécution de scripts dans le SVG", - "allowSVGScriptTip": "Si activé, le code dans le SVG ne sera pas filtré pour la sécurité。Veuillez noter le risque potentiel de XSS", + "allowSVGScriptTip": "Si activé, le code dans le SVG ne sera pas filtré pour la sécurité. Veuillez noter le risque potentiel de XSS", "autoLaunchMode0": "Ne pas lancer automatiquement", "autoLaunchMode1": "Lancement automatique après le démarrage", "autoLaunchMode2": "Lancement automatique et minimisation de l'interface principale après le démarrage", @@ -488,7 +488,7 @@ "apiTimeoutTip": "Le délai d'attente pour lancer une requête", "apiProxy": "Proxy Web", "apiProxyTip": "Le proxy réseau qui lance la requête, tel que socks://user:pass@127.0.0.1:1080", - "apiModel": "Modelo", + "apiModel": "Modèle", "apiModelTip": "Le paramètre model transmis lors de la demande de l'API est utilisé pour contrôler le style de texte généré (l'ID de déploiement doit être renseigné lors de l'utilisation du service Azure OpenAI)", "apiMaxTokens": "Nombre maximum de jetons", "apiMaxTokensTip": "Le paramètre max_tokens transmis lors de la demande de l'API est utilisé pour contrôler la longueur du texte généré", @@ -503,7 +503,7 @@ "apiVersionTip": "Requis uniquement lors de l'utilisation du service Azure OpenAI", "apiProvider": "API du fournisseur", "apiProviderTip": "En sélectionnant, le service API du fournisseur sera utilisé pour implémenter des fonctionnalités d'IA (ChatGPT, Claude, DeepSeek et autres modèles prennent en charge l'interface OpenAI)", - "skip": "Navire", + "skip": "Passer", "nextRound": "Prochain tour", "save": "Sauvegarder", "ai": "Intelligence Artificielle", @@ -726,7 +726,7 @@ "rtl": "De droite à gauche (RTL)", "ltr": "De gauche à droite (LTR)", "rtlTip": "Rendre le contenu de droite à gauche", - "height": "haut", + "height": "Hauteur", "deactivateUser": "Désactiver le compte", "deactivateUserTip": "", "mergeCell": "Fusionner la cellule", @@ -760,7 +760,7 @@ "mergeSubdocs": "Fusionner les sous-documents", "removeAssetsFolder": "Supprimer le répertoire des actifs", "upload": "Télécharger", - "reminderTip": "The reminder time cannot be less than the current time", + "reminderTip": "L'heure de rappel ne peut pas être antérieure à l'heure actuelle", "wechatTip": "Le bloc de contenu sera envoyé au cloud en texte clair et transmis au message du modèle de compte officiel WeChat à son expiration.", "notEmpty": "L'heure de rappel ne peut pas être vide", "experimentalFeature": "(⚗️ Cette fonctionnalité est au stade expérimental)", @@ -883,7 +883,7 @@ "cloudSync": "Cloud Sync", "cloudSyncDir": "Répertoire de sync cloud", "cloudSyncDirTip": "Chaque répertoire de synchronisation cloud ne stocke que les données d'un espace de travail, et un espace de travail local ne peut utiliser qu'un seul répertoire de synchronisation cloud. Veuillez ne pas basculer d'avant en arrière. Après avoir modifié la clé de référentiel de données, vous devez basculer vers un nouveau répertoire de synchronisation cloud", - "emptyCloudSyncList": "La liste de sync du cloud est videy", + "emptyCloudSyncList": "La liste de sync du cloud est vide", "retry": "Réessayer", "insertVideoURL": "Insérer lien vidéo", "insertAudioURL": "Insérer lien audio", @@ -910,7 +910,7 @@ "backup": "Sauvegarde", "cloudStorage": "Stockage en ligne", "vLayout": "Disposition verticale", - "hLayout": "Horizontal horizontale", + "hLayout": "Disposition horizontale", "merge": "Merge", "wordCount": "Mots", "runeCount": "Caractères", @@ -974,17 +974,17 @@ "expand": "Élargir", "toggleDock": "Afficher/masquer le Dock", "notebookName": "Veuillez entrer un nom de carnet de notes", - "moveToLeftTop": "Déplacer vers la Gauche à Haut", - "moveToLeftBottom": "Déplacer vers la Gauche à Bas", - "moveToRightTop": "Déplacer vers la Droit à Haut", - "moveToRightBottom": "Déplacer vers la Droit à Bas", - "moveToBottomLeft": "Déplacer vers la Bas à Gauche", - "moveToBottomRight": "Déplacer vers la Bas à Droit", + "moveToLeftTop": "Déplacer vers le haut à gauche", + "moveToLeftBottom": "Déplacer vers le bas à gauche", + "moveToRightTop": "Déplacer vers la droite en haut", + "moveToRightBottom": "Déplacer vers la droite en bas", + "moveToBottomLeft": "Déplacer vers le bas à gauche", + "moveToBottomRight": "Déplacer vers le bas à droite", "accountDisplayTitle": "Afficher l'icône du titre", "accountDisplayVIP": "Afficher l'icône VIP", "rollbackConfirm": "L'opération de restauration ne peut pas être annulée, veuillez procéder avec prudence. Êtes-vous sûr de vouloir restaurer ${name} à ${time}?", "pdfTip": "L'exportation de PDF ne supporte pas le thème Dark", - "pdfConfirm": "Voulez-vous continuer à exporter avec le thème clear sélectionné ?", + "pdfConfirm": "Voulez-vous continuer à exporter avec le thème clair sélectionné ?", "import": "Importer", "doc": "Doc", "openBy": "Ouvrir", @@ -993,7 +993,7 @@ "alias": "Alias", "exportTplSucc": "Le template a été exporté avec succès", "exportTplTip": "Les données existent déjà, devez-vous les écraser?", - "globalSearch": "Recherche globaleh", + "globalSearch": "Recherche globale", "stickSearch": "Bâton de recherche", "resetLayout1": "Réinitialiser disposition", "zoomIn": "Agrandir", @@ -1030,7 +1030,7 @@ "fontStyle": "Effets de fonte", "font": "Police", "folder": "Dossier", - "day": "jous", + "day": "jours", "pin": "Épingler ", "unpin": "Détacher", "createdAt": "Créé en", @@ -1103,7 +1103,7 @@ "logout": "Se déconnecter", "refreshUser": "Les informations sur l'utilisateur ont été actualisées", "insertBottom": "Ouvrir en bas de l'onglet", - "insertRight": "Ouvrir en droit de l'onglet", + "insertRight": "Ouvrir à droite de l'onglet", "account1": "Devenez membre payant", "account4": "Mise à niveau vers un Membre abonné", "account2": "Synchronisation et sauvegarde des données cryptées de bout en bout", @@ -1141,8 +1141,8 @@ "appearance3": "Thème de mise en évidence de la syntaxe des blocs de code en mode Sombre", "appearance2": "Thème de mise en évidence de la syntaxe des blocs de code en mode Clair", "appearance1": "Thème du bloc de codes", - "appearance10": "Close button settings", - "appearance11": "shrink to the tray after clicking the close button", +"appearance10": "Paramètres du bouton fermer", + "appearance11": "Réduire dans la barre des tâches après avoir cliqué sur le bouton fermer", "appearance16": "Masquer la barre d'état inférieure", "appearance17": "Une fois activé, la barre d'état sera masquée", "appearance18": "Configurer l'interrupteur des messages de la barre d'état", @@ -1235,7 +1235,7 @@ "export5": "Référence d'annotation PDF", "export6": "À propos de la gestion du texte d'ancrage dans les annotations PDF lors de l'exportation", "export7": "Nom de fichier - Numéro de page - Texte d'ancrage", - "export8": "Anchor text only", + "export8": "Texte d'ancre uniquement", "graphConfig2": "Filtre de compte de blocs de référence", "selectOpen": "Localisez toujours les documents ouverts", "selectOpen1": "Localiser les documents ouverts", @@ -1253,8 +1253,8 @@ "splitLR": "Split Droit", "splitMoveR": "Split et Déplacer a Droit", "splitTB": "Split Bas", - "splitMoveB": "Split and Move Down", - "debug": "Outils Developer", + "splitMoveB": "Diviser et déplacer vers le bas", + "debug": "Outils développeur", "fileTree": "Arbre de Doc", "graphView": "Vue graphique", "sponsor": "Faire un don aux développeurs", @@ -1262,9 +1262,9 @@ "parentRelation": "Parent - Enfant", "openInNewTab": "Ouvrir dans un nouvel onglet", "help": "Aide", - "userGuide": "User Guide", + "userGuide": "Guide utilisateur", "paragraphBeginningSpace": "Deux espaces vides au début du paragraphe", - "outline": "Outline", + "outline": "Plan", "newFile": "Nouveau Doc", "newFileRef": "Créer un nouveau document et le citer", "close": "Fermer", @@ -1285,7 +1285,7 @@ "userName": "Nom d'utilisateur", "password": "Mot de passe", "passphrase": "Mot de passe", - "reEnterPassphrase": "Entrez à nouveau la mot de passe", + "reEnterPassphrase": "Entrez à nouveau le mot de passe", "theme": "Thème", "language": "Langue", "about": "À propos de", @@ -1418,7 +1418,7 @@ "1h": "1 heure %s", "xh": "%d heures %s", "1d": "1 jour %s", - "xd": "%d heures %s", + "xd": "%d jours %s", "1w": "1 semaine %s", "xw": "%d semaines %s", "1M": "1 mois %s", @@ -1429,7 +1429,7 @@ "max": "un bon moment %s" }, "_taskAction": { - "task.repo.checkout": "Effectuer le paiement à partir d'un instantané", + "task.repo.checkout": "Effectuer le checkout à partir d'un instantané", "task.database.index.full": "Exécuter l'index de reconstruction", "task.database.index": "Effectuer l'indexation de la base de données", "task.database.index.commit": "Effectuer la validation de l'index de la base de données", diff --git a/app/appearance/langs/he_IL.json b/app/appearance/langs/he_IL.json index 9f56b778b..f0fdad99f 100644 --- a/app/appearance/langs/he_IL.json +++ b/app/appearance/langs/he_IL.json @@ -9,7 +9,7 @@ "removeAssetsIDTip": "כאשר מופעל, בעת ייצוא ל‑Markdown יוסר חלק ה‑ID משמות קבצי המשאבים", "clearTempFiles": "ניקוי קבצים זמניים", "clearTempFilesTip": "נקה קבצים זמניים שנוצרו במהלך הפעלת היישום כדי לפנות מקום אחסון", - "uploadFileTooLarge": "⚠️ הקובץ שהועלה [${x}] גדול מאוד [${y}],אשר האם להמשיך בהעלאה?", + "uploadFileTooLarge": "⚠️ הקובץ שהועלה [${x}] גדול מאוד [${y}]. אשר האם להמשיך בהעלאה?", "recentDocsMaxListCount": "מספר מקסימלי של מסמכים אחרונים ברשימה", "recentDocsMaxListCountTip": "מספר המסמכים המקסימלי שיופיע בתיבת הדו-שיח של 'מסמכים אחרונים'", "bazaarNeedVersion": "נדרש לשדרג את SiYuan לגרסה v${x} או גבוהה יותר כדי להשתמש", @@ -477,7 +477,7 @@ "flashcardDeck": "קבוצת כרטיסים", "flashcardDeckTip": "לאחר הפעלה, תומך בקטגורית כרטיסים. זו אפשרות תאימות היסטורית, לא מומלץ להפעיל אותה אלא אם כן זה הכרחי, ומומלץ להשתמש בצור כרטיסים מהר", "flashcardFSRSParamRequestRetention": "FSRS שימור בקשות", - "flashcardFSRSParamRequestRetentionTip": "מייצג את הסבירות של התRecall שברצונך להגיע אליה. שים לב שיש סיכון בין שימור גבוה ובין מספר חזרות גבוהים. מומלץ לקבוע ערך זה Somewhere בין 0.8 ל-0.9", + "flashcardFSRSParamRequestRetentionTip": "מייצג את הסבירות של ההזכרה שברצונך להגיע אליה. שים לב שיש סיכון בין שימור גבוה ובין מספר חזרות גבוהים. מומלץ לקבוע ערך זה איפשהו בין 0.8 ל-0.9", "flashcardFSRSParamMaximumInterval": "FSRS מקסימום אינטרוול", "flashcardFSRSParamMaximumIntervalTip": "מספר הימים המקסימלי בין חזרות", "flashcardFSRSParamWeights": "FSRS משקלות", @@ -529,7 +529,7 @@ "allAttrs": "כל שמות מאפיינים וערכי מאפיינים", "chooseSyncDirection": "בחר כיוון סנכרון", "uploadData2Cloud": "⬆️ העלה צילום נתונים מקומי", - "uploadData2CloudTip": "צור צילום נתונים ולאחר מכן העלe אותו לענן", + "uploadData2CloudTip": "צור צילום נתונים ולאחר מכן העלה אותו לענן", "downloadDataFromCloud": "⬇️ הורד צילום נתונים מהענן", "downloadDataFromCloudTip": "הורד את צילום נתונים האחרון מהענן ובצע מיזוג עם נתונים מקומיים", "targetBlockID": "ID בלוק יעד", @@ -1085,7 +1085,7 @@ "sort": "מיין", "enterFullscreen": "היכנס למסך מלא", "exitFullscreen": "צא ממסך מלא", - "clearAll": "האם אתה בטוח שאתה רוצה לנקות את כל הקבצים הלא מפנים?", + "clearAll": "האם אתה בטוח שאתה רוצה לנקות את כל הנכסים הלא מפנים?", "missingAssets": "נכסים חסרים", "unreferencedAssets": "נכסים לא מפנים", "paste": "הדבק", @@ -1496,7 +1496,7 @@ "30": "נכשל בקבלת מידע על ענן", "31": "אישור חשבון נכשל, אנא היכנס שוב", "32": "נכשל בהסרת מחברת בענן", - "33": "הרשאות לא מספיקות לקוראים ולכתוב קבצים או גישה לרשת, אנא בדוק את הרשאות תיקיית החלל עבודה ואת הגדרות תוכנת האנטי-וירוס/חומת האש. אם כבר הפעלת את SiYuan כמנהל בעבר, אנא Consider שינוי לתיקיית עבודה חדשה ואינך מריץ את זה כמנהל בעתיד (תיקיית העבודה הנוכחית עשויה לא להיות נגישה יותר על ידי משתמשים רגילים)", + "33": "הרשאות לא מספיקות לקוראים ולכתוב קבצים או גישה לרשת, אנא בדוק את הרשאות תיקיית החלל עבודה ואת הגדרות תוכנת האנטי-וירוס/חומת האש. אם כבר הפעלת את SiYuan כמנהל בעבר, אנא שקול שינוי לתיקיית עבודה חדשה ואינך מריץ את זה כמנהל בעתיד (תיקיית העבודה הנוכחית עשויה לא להיות נגישה יותר על ידי משתמשים רגילים)", "34": "תפעולה זו אינה נתמכת במצב קריאה בלבד", "35": "שחזור אינדקס, אנא המתן...", "36": "יש יותר מדי תוכן במסמך ההיסטורי, כדי שלא להשפיע על הביצועים, זה הוסב לתצוגת טקסט פשוטה", @@ -1573,7 +1573,7 @@ "107": "הועלה מסמך [%s]", "108": "נמצא סכסוך בנתוני הסנכרון, תוכל לראות את התוכן שנוצר בסכסוך ב[היסטוריית הנתונים]", "109": "הסרת תזכורת הושלמה [%s]", - "110": "מחזיק...", + "110": "משנה שם...", "111": "שומר את הנתונים [%s]...", "112": "אין לכלול את סימן התחביר של Markdown [%s]", "113": "שלמת הנתונים מתבצעת...", diff --git a/app/appearance/langs/ja_JP.json b/app/appearance/langs/ja_JP.json index 96f1a36dd..86773620b 100644 --- a/app/appearance/langs/ja_JP.json +++ b/app/appearance/langs/ja_JP.json @@ -30,7 +30,7 @@ "insertSameLevelHeadingAfter": "後に同じレベルの見出しを挿入", "upgrade": "アップグレード", "downgrade": "ダウングレード", - "clipboardPermissionDenied": "A permissão para a área de transferência foi negada. Por favor, permita o acesso à área de transferência na barra de endereços do navegador e tente novamente. Atenção: o protocolo http pode não permitir o acesso à área de transferência, use Ctrl+V / ⌘V para colar", + "clipboardPermissionDenied": "クリップボードへのアクセスが拒否されました。ブラウザのアドレスバーでクリップボードへのアクセスを許可してから、再度お試しください。注意:http プロトコルではクリップボードにアクセスできない場合があります。Ctrl+V / ⌘V で貼り付けてください", "jumpTo": "ジャンプ先", "vacuumDataIndex": "インデックスの最適化", "vacuumDataIndexTip": "データインデックスを検証し、ストレージを解放してインデックス性能を向上させます", @@ -1211,8 +1211,8 @@ "export22": "%page は現在のページ番号、%pages は総ページ数で、Sprig テンプレート関数に対応しています", "export23": "YAML フロントマター付きの Markdown をエクスポート", "export24": "エクスポートされる Markdown ファイルの先頭に一般的なメタデータを追加します", - "export25": "Pandoc 실행 매개변수", - "export26": "Word .docx 파일을 내보낼 때 사용하는 Pandoc 매개변수", +"export25": "Pandoc 実行パラメータ", + "export26": "Word .docx ファイルをエクスポートする際に使用する Pandoc パラメータ", "export27": "PDF に透かしを書き出す", "export28": "透かしテキストまたは透かし画像ファイルのパス", "export29": "透かしの位置、サイズ、スタイルなど", @@ -1375,7 +1375,7 @@ "desktop": "デスクトップ", "tablet": "タブレット", "mobile": "モバイル端末", - "copyToWechatMP": "Yuque にコピーする", + "copyToWechatMP": "WeChat MP にコピー", "copyToZhihu": "Zhihu にコピーする", "copyToYuque": "Yuque にコピーする", "pasteToWechatMP": "コピーしました。WeChat に貼り付けることができます", @@ -1468,8 +1468,8 @@ "2": "ボックス [%s] およびパス [%s] のファイル一覧の取得に失敗しました: %s", "3": "ノートブック [%s] ファイル [%s] の読み込みに失敗しました: %s", "4": "ノートブック [%s] ファイル [%s] のメタ情報の取得に失敗しました: %s", - "5": "ノートブック [%s] ファイル [%s] の移動に失敗しまし: %s", - "6": "ノートブック [%s] フォルダ [%s] の作成に失敗しまし: %s", + "5": "ノートブック [%s] ファイル [%s] の移動に失敗しました: %s", + "6": "ノートブック [%s] フォルダ [%s] の作成に失敗しました: %s", "7": "ノートブック [%s] パス [%s] の削除に失敗しました: %s", "8": "更新の確認に失敗しました", "9": "\uD83D\uDE80 新しいバージョンが利用可能です。リリースアナウンスを確認してください %s", @@ -1487,11 +1487,11 @@ "21": "キャプチャを入力してください", "22": "キャプチャが正しくありません", "23": "データリポジトリが壊れています。データリポジトリをリセットしてください", - "24": "ネットワークがタイムアウトしました。後でまた試してださい", + "24": "ネットワークがタイムアウトしました。後でまた試してください", "25": "属性名は小文字の英字、数字、ハイフンのみを含むことができ、小文字の英字で始まる必要があります", "26": "[設定] - [情報] - [データリポジトリキー] でデータリポジトリキーを初期化してください", "27": "[%v] をアップロード中", - "28": "ネットワークに問題があります。後でまた試してださい", + "28": "ネットワークに問題があります。後でまた試してください", "29": "この機能は [年額サブスクリプション] を購入後に使用できます(すでに購入している場合は、設定 - アカウントで更新または再ログインしてください)", "30": "クラウド情報の取得に失敗しました", "31": "アカウントの認証に失敗しました。もう一度ログインしてください", diff --git a/app/appearance/langs/ko_KR.json b/app/appearance/langs/ko_KR.json index c3b4e0c5d..aa0d7528c 100644 --- a/app/appearance/langs/ko_KR.json +++ b/app/appearance/langs/ko_KR.json @@ -137,7 +137,7 @@ "allowHTMLBLockScript": "HTML 블록 내 스크립트 실행 허용", "allowHTMLBLockScriptTip": "활성화하면 HTML 블록의 스크립트가 삭제되지 않습니다. XSS 공격의 잠재적 위험에 주의하세요", "allowSVGScript": "SVG 내부 스크립트 실행 허용", - "allowSVGScriptTip": "활성화하면 SVG 내의 코드는 보안 필터링 대상이 되지 않습니다。잠재적 XSS 공격에 주의하세요", + "allowSVGScriptTip": "활성화하면 SVG 내의 코드는 보안 필터링 대상이 되지 않습니다. 잠재적 XSS 공격에 주의하세요", "autoLaunchMode0": "자동으로 시작하지 않음", "autoLaunchMode1": "부팅 후 자동 시작", "autoLaunchMode2": "부팅 후 자동 시작 및 메인 인터페이스 최소화", diff --git a/app/appearance/langs/pl_PL.json b/app/appearance/langs/pl_PL.json index 1455b5273..efd46bcb9 100644 --- a/app/appearance/langs/pl_PL.json +++ b/app/appearance/langs/pl_PL.json @@ -30,7 +30,7 @@ "insertSameLevelHeadingAfter": "Wstaw nagłówek na tym samym poziomie po", "upgrade": "Aktualizuj", "downgrade": "Degraduj", - "clipboardPermissionDenied": "A permissão para a área de transferência foi negada. Por favor, permita o acesso à área de transferência na barra de endereços do navegador e tente novamente. Atenção: o protocolo http pode não permitir o acesso à área de transferência, use Ctrl+V / ⌘V para colar", + "clipboardPermissionDenied": "Odmowa dostępu do schowka. Zezwól na dostęp do schowka w pasku adresu przeglądarki i spróbuj ponownie. Uwaga: protokół http może uniemożliwiać dostęp do schowka, użyj Ctrl+V / ⌘V do wklejenia", "jumpTo": "Przejdź do", "vacuumDataIndex": "Optymalizuj indeks", "vacuumDataIndexTip": "Sprawdź indeks danych, zwolnij miejsce i popraw wydajność indeksu", @@ -91,7 +91,7 @@ "dynamicIconDateEmptyInfo": "Wyczyść datę, ikona kalendarza będzie dynamicznie wyświetlać bieżącą datę", "backlinkContainChildren": "Czy linki zwrotne zawierają bloki podrzędne", "backlinkContainChildrenTip": "Po włączeniu bloki podrzędne zostaną uwzględnione w obliczeniach linków zwrotnych", - "entryNum": "Количество записей", + "entryNum": "Liczba wpisów", "workspaceData": "Dane przestrzeni roboczej", "confirmRemoveRelationField": "Czy na pewno chcesz usunąć pole ${x}? Po usunięciu tego pola, dwukierunkowe pole relacji ${z} w bazie danych ${y} również zostanie usunięte synchronicznie.", "removeBothRelationField": "Usuń oba pola", @@ -561,7 +561,7 @@ "sortByRankDesc": "Relevance DESC", "sortByRankAsc": "Relevance ASC", "saveCriterion": "Zapisz kryteria zapytania", - "useCriterion": "Następne zapytanie nie wilno już używać bieżących kryteriów zapytania", + "useCriterion": "Następne zapytanie nie będzie już używać bieżących kryteriów zapytania", "removeCriterion": "Resetuj kryteria zapytania", "group": "Grupa", "noGroupBy": "Brak grupowania", @@ -1210,7 +1210,7 @@ "export21": "Eksportuj szablon stopki PDF", "export22": "%page to numer bieżącej strony, %pages to całkowita liczba stron, wspiera funkcje szablonu Sprig", "export23": "Eksportuj Markdown z metadanymi YAML", - "export24": "Po włączeniu, dodaj kilka ogólnych informacji metadanych на początku wyeksportowanego pliku Markdown", + "export24": "Po włączeniu, dodaj kilka ogólnych informacji metadanych na początku wyeksportowanego pliku Markdown", "export25": "Parametry uruchamiania Pandoc", "export26": "Parametry Pandoc używane przy eksporcie pliku Word .docx", "export27": "Eksportuj znak wodny PDF", @@ -1661,7 +1661,7 @@ "195": "Czas systemowy jest nieprawidłowy, proszę skalibrować czas systemowy i spróbować ponownie", "196": "Nie ustawiaj obszaru roboczego pod ścieżką zewnętrznego dysku synchronizującego, w przeciwnym razie dane ulegną uszkodzeniu (iCloud/OneDrive/Dropbox/Google Drive/Nutstore/Baidu Netdisk/Tencent Weiyun itp.)", "197": "Proszę otworzyć notatnik [%s] i spróbować ponownie", - "198": "To nie jest ważny archiwum. Jeśli archiwum zostało wyeksportowane z [Drzewa dokumentów], proszę zaimportować je iz [Drzewa dokumentów]", + "198": "To nie jest ważny archiwum. Jeśli archiwum zostało wyeksportowane z [Drzewa dokumentów], proszę zaimportować je z [Drzewa dokumentów]", "199": "To nie jest ważny archiwum .sy.zip. Jeśli archiwum zostało wyeksportowane z [Ustawień], proszę zaimportować je z [Ustawień]", "200": "Czas reakcji wyszukiwania globalnego jest wolny, zaleca się dodanie filtrów typów lub słów kluczowych w celu zawężenia zakresu wyszukiwania", "201": "Nie udało się opróżnić repozytorium danych: %s", diff --git a/app/appearance/langs/pt_BR.json b/app/appearance/langs/pt_BR.json index bda09ba2c..165b9ed82 100644 --- a/app/appearance/langs/pt_BR.json +++ b/app/appearance/langs/pt_BR.json @@ -9,7 +9,7 @@ "removeAssetsIDTip": "Ao ativar, ao exportar para Markdown a parte do nome do arquivo de recursos contendo o ID será removida", "clearTempFiles": "Limpar arquivos temporários", "clearTempFilesTip": "Limpe os arquivos temporários gerados durante a execução do aplicativo para liberar espaço de armazenamento", - "uploadFileTooLarge": "⚠️ O arquivo enviado [${x}] é muito grande [${y}]。 Tem certeza de que deseja continuar o upload?", + "uploadFileTooLarge": "⚠️ O arquivo enviado [${x}] é muito grande [${y}]. Tem certeza de que deseja continuar o upload?", "recentDocsMaxListCount": "Número máximo de documentos recentes listados", "recentDocsMaxListCountTip": "Número máximo de documentos listados na caixa de diálogo Documentos Recentes", "bazaarNeedVersion": "É necessário atualizar o SiYuan para a versão v${x} ou superior para usar", @@ -137,7 +137,7 @@ "allowHTMLBLockScript": "Permitir execução de scripts dentro de blocos HTML", "allowHTMLBLockScriptTip": "Quando ativado, o script no bloco HTML não será sanitizado, esteja ciente do risco potencial de ataques XSS", "allowSVGScript": "Permitir execução de scripts dentro de SVG", - "allowSVGScriptTip": "Ao ativar, o código dentro do SVG não será filtrado por segurança。Atenção ao risco potencial de XSS", + "allowSVGScriptTip": "Ao ativar, o código dentro do SVG não será filtrado por segurança. Atenção ao risco potencial de XSS", "autoLaunchMode0": "Não iniciar automaticamente", "autoLaunchMode1": "Iniciar automaticamente após inicialização", "autoLaunchMode2": "Iniciar automaticamente e minimizar a interface principal após inicialização", @@ -330,7 +330,7 @@ "numberFormatMOP": "Pataca de Macau", "numberFormatSGD": "Dólar de Singapura", "numberFormatNZD": "Dólar neozelandês", - "numberFormatILS": "Новый израильский шекель", + "numberFormatILS": "Novo shequel israelense", "email": "E-mail", "phone": "Telefone", "inboxTip": "Abra o guia do usuário para pesquisar o inbox e visualizar as instruções", diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index 7bfd2fb3f..2c8e8ac8e 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -13,7 +13,7 @@ "recentDocsMaxListCount": "最近的文檔列出數量", "recentDocsMaxListCountTip": "在最近的文檔對話框中最多列出文檔的數量", "bazaarNeedVersion": "需升級到思源筆記 v${x} 或更高版本才能使用", - "downloadRollback": "下载并回滚", + "downloadRollback": "下載並回滾", "callout": "提示", "hasAttrName": "屬性名 ${x} 已存在", "statusBarMsgPushTip": "透過狀態列訊息可以即時地了解系統的運作情況,如果感到打擾可以將其關閉", @@ -1574,7 +1574,7 @@ "108": "資料同步發現衝突,可在 [資料歷史] 中查看生成的衝突內容", "109": "移除提醒完畢 [%s]", "110": "正在重命名...", - "111": "正在保存数据 [%s]...", + "111": "正在保存資料 [%s]...", "112": "請勿包含 Markdown 語法標記符 [%s]", "113": "正在完成資料寫入...", "114": "標籤不能為空", @@ -1597,8 +1597,8 @@ "131": "不支持該操作,請到雲端存儲提供商管理控制台進行操作", "132": "SQL 搜索方式下不支援替換操作,請使用其他搜索方式", "133": "正在下載更新安裝檔 [%s]", - "134": "為避免剛恢復的資料被同步覆蓋,資料據同步功能已被自動暫停", - "135": "資料倉儲金鑰不正確,無法解密資料。請參考 用戶指南-常見問題-遺失密鑰 步驟處理", + "134": "為避免剛恢復的資料被同步覆蓋,資料同步功能已被自動暫停", + "135": "資料倉庫密鑰不正確,無法解密資料。請參考 用戶指南-常見問題-遺失密鑰 步驟處理", "136": "初始化資料倉庫密鑰...", "137": "初始化資料倉庫密鑰失敗:%s", "138": "資料倉庫密鑰設置完畢", @@ -1714,7 +1714,7 @@ "248": "目標標題位於容器塊中,無法作為放置點", "249": "因配置錯誤導致無法存取數據,請仔細逐個核對配置項,並檢查雲端存儲相關權限配置", "250": "請求已被雲端存儲限流,請仔細逐個核對配置項,並檢查雲端存儲相關權限配置", - "251": "未引用資源一共 ${x} 個,這裡僅列出 ${y} 個", + "251": "未引用資源一共 [%d] 個,這裡僅列出 [%d] 個", "252": "\uD83D\uDEA8 Microsoft Defender 可能會誤殺內核、誤刪數據和嚴重降低運行性能,建議將思源安裝路徑和工作空間路徑添加到排除列表", "253": "正在壓縮文件 [%s],請稍等...", "254": "[Region ID] 不正確,請參考 S3 服務提供商的文檔配置地域 ID", diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index 839ee5397..af13dd596 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -835,7 +835,7 @@ "thumbsTitle": "显示缩略图", "document_properties_page_size_name_a3": "A3", "document_properties_page_size_name_a4": "A4", - "document_properties_page_size_name_letter": "文本", + "document_properties_page_size_name_letter": "信纸", "document_properties_page_size_name_legal": "法律", "document_properties_page_size_orientation_portrait": "纵向", "document_properties_page_size_orientation_landscape": "横向", diff --git a/kernel/bazaar/package.go b/kernel/bazaar/package.go index cae1efc29..c5c240490 100644 --- a/kernel/bazaar/package.go +++ b/kernel/bazaar/package.go @@ -611,7 +611,7 @@ func isOutdatedTheme(theme *Theme, bazaarThemes []*Theme) bool { } for _, pkg := range bazaarThemes { - if theme.URL == pkg.URL && theme.Name == pkg.Name && 0 > semver.Compare("v"+theme.Version, "v"+pkg.Version) { + if theme.Name == pkg.Name && 0 > semver.Compare("v"+theme.Version, "v"+pkg.Version) { theme.RepoHash = pkg.RepoHash return true } @@ -631,7 +631,7 @@ func isOutdatedIcon(icon *Icon, bazaarIcons []*Icon) bool { } for _, pkg := range bazaarIcons { - if icon.URL == pkg.URL && icon.Name == pkg.Name && 0 > semver.Compare("v"+icon.Version, "v"+pkg.Version) { + if icon.Name == pkg.Name && 0 > semver.Compare("v"+icon.Version, "v"+pkg.Version) { icon.RepoHash = pkg.RepoHash return true } @@ -651,7 +651,7 @@ func isOutdatedPlugin(plugin *Plugin, bazaarPlugins []*Plugin) bool { } for _, pkg := range bazaarPlugins { - if plugin.URL == pkg.URL && plugin.Name == pkg.Name && 0 > semver.Compare("v"+plugin.Version, "v"+pkg.Version) { + if plugin.Name == pkg.Name && 0 > semver.Compare("v"+plugin.Version, "v"+pkg.Version) { plugin.RepoHash = pkg.RepoHash return true } @@ -671,7 +671,7 @@ func isOutdatedWidget(widget *Widget, bazaarWidgets []*Widget) bool { } for _, pkg := range bazaarWidgets { - if widget.URL == pkg.URL && widget.Name == pkg.Name && 0 > semver.Compare("v"+widget.Version, "v"+pkg.Version) { + if widget.Name == pkg.Name && 0 > semver.Compare("v"+widget.Version, "v"+pkg.Version) { widget.RepoHash = pkg.RepoHash return true } @@ -691,7 +691,7 @@ func isOutdatedTemplate(template *Template, bazaarTemplates []*Template) bool { } for _, pkg := range bazaarTemplates { - if template.URL == pkg.URL && template.Name == pkg.Name && 0 > semver.Compare("v"+template.Version, "v"+pkg.Version) { + if template.Name == pkg.Name && 0 > semver.Compare("v"+template.Version, "v"+pkg.Version) { template.RepoHash = pkg.RepoHash return true } diff --git a/kernel/model/attribute_view_render.go b/kernel/model/attribute_view_render.go index 5b78d21d3..93b654236 100644 --- a/kernel/model/attribute_view_render.go +++ b/kernel/model/attribute_view_render.go @@ -44,6 +44,11 @@ func RenderAttributeView(blockID, avID, viewID, query string, page, pageSize int return } + if !ast.IsNodeIDPattern(avID) { + err = ErrInvalidID + return + } + attrView = av.NewAttributeView(avID) if err = av.SaveAttributeView(attrView); err != nil { logging.LogErrorf("save attribute view [%s] failed: %s", avID, err) @@ -499,6 +504,11 @@ func RenderRepoSnapshotAttributeView(indexID, avID string) (viewable av.Viewable } if nil == avFile { + if !ast.IsNodeIDPattern(avID) { + err = ErrInvalidID + return + } + attrView = av.NewAttributeView(avID) } else { data, readErr := repo.OpenFile(avFile) @@ -507,6 +517,11 @@ func RenderRepoSnapshotAttributeView(indexID, avID string) (viewable av.Viewable return } + if !ast.IsNodeIDPattern(avID) { + err = ErrInvalidID + return + } + attrView = av.NewAttributeView(avID) if err = gulu.JSON.UnmarshalJSON(data, attrView); err != nil { logging.LogErrorf("unmarshal attribute view [%s] failed: %s", avID, err) @@ -544,6 +559,11 @@ func RenderHistoryAttributeView(blockID, avID, viewID, query string, page, pageS } if !gulu.File.IsExist(avJSONPath) { logging.LogWarnf("attribute view [%s] not found in current data", avID) + if !ast.IsNodeIDPattern(avID) { + err = ErrInvalidID + return + } + attrView = av.NewAttributeView(avID) } else { data, readErr := os.ReadFile(avJSONPath) @@ -552,6 +572,11 @@ func RenderHistoryAttributeView(blockID, avID, viewID, query string, page, pageS return } + if !ast.IsNodeIDPattern(avID) { + err = ErrInvalidID + return + } + attrView = av.NewAttributeView(avID) if err = gulu.JSON.UnmarshalJSON(data, attrView); err != nil { logging.LogErrorf("unmarshal attribute view [%s] failed: %s", avID, err) diff --git a/kernel/model/tree.go b/kernel/model/tree.go index 96ff5989e..ba18dd159 100644 --- a/kernel/model/tree.go +++ b/kernel/model/tree.go @@ -182,6 +182,7 @@ var ( ErrTreeNotFound = errors.New("tree not found") ErrIndexing = errors.New("indexing") ErrBoxUnindexed = errors.New("notebook unindexed") + ErrInvalidID = errors.New("invalid id") ) func LoadTreeByBlockIDWithReindex(id string) (ret *parse.Tree, err error) {