From 0518fab62ad801da10054b7f251e20d594cb8473 Mon Sep 17 00:00:00 2001 From: Zeedif Date: Thu, 30 Jul 2026 19:09:17 -0600 Subject: [PATCH] i18n(es): complete the Spanish catalogue coverage Fills every untranslated key in the Spanish catalogue: coverage goes from 643/1132 to 1131/1132 against `en.yaml`. - Translate the 488 keys that had no Spanish entry, covering the Config Doctor, tweak-mismatch resolution, the P2P notes and panes, the Setup Wizard, the maintenance and patch panels, Garbage Collection V3 and the migration dialogues. - Register follows the existing catalogue: informal address, `es-ES` vocabulary, British-style source wording preserved where it is a proper noun (Setup URI, Vault, chunk). - Placeholders (`${...}`), keyword references (`%{...}`) and Markdown callout syntax are kept byte-identical to the English source. - Regenerate `messagesJson/es.json` and `combinedMessages.prod.ts` with the documented `i18n:bake` pipeline. `obsidianLiveSyncSettingTab.logServerConfigurationCheck` is deliberately left untranslated: its English value is the key itself, so it looks like a placeholder rather than a message. Regenerating the catalogue also normalises three pre-existing entries each in `ko.json` and `zh.json`, where the committed JSON kept a trailing space before a newline that YAML cannot represent. Verified with tsc-check and test:unit. Co-Authored-By: Claude Opus 5 (1M context) --- src/common/messages/combinedMessages.prod.ts | 504 ++++++- src/common/messagesJson/es.json | 492 ++++++- src/common/messagesJson/ko.json | 6 +- src/common/messagesJson/zh.json | 6 +- src/common/messagesYAML/es.yaml | 1227 +++++++++++++++++- 5 files changed, 2164 insertions(+), 71 deletions(-) diff --git a/src/common/messages/combinedMessages.prod.ts b/src/common/messages/combinedMessages.prod.ts index 00cfba16..50d7de59 100644 --- a/src/common/messages/combinedMessages.prod.ts +++ b/src/common/messages/combinedMessages.prod.ts @@ -132,6 +132,7 @@ export const allMessages: Readonly [!INFO]- The connected devices have been detected as follows:\n${devices}": { def: "> [!INFO]- The connected devices have been detected as follows:\n${devices}", + es: "> [!INFO]- Se han detectado los siguientes dispositivos conectados:\n${devices}", ja: "> [!INFO]- 次の接続済みデバイスが検出されました:\n${devices}", ko: "> [!INFO]- 다음 연결된 기기가 감지되었습니다:\n${devices}", ru: "> [!INFO]- Обнаружены следующие подключённые устройства:\n${devices}", @@ -170,6 +171,7 @@ export const allMessages: Readonly Storage": { def: "Database -> Storage", + es: "Base de datos -> Almacenamiento", "zh-tw": "資料庫 -> 儲存空間", }, "Database Adapter": { @@ -859,6 +875,7 @@ export const allMessages: Readonly [!MORE]-\n> Si vous l'utilisez depuis de nombreuses années, il peut y avoir des fragments non référencés — des déchets, en somme — accumulés dans la base. Nous recommandons donc de tout reconstruire. Cela réduira probablement beaucoup la taille.\n>\n> Si le volume de votre coffre augmente simplement, il est préférable de tout reconstruire après avoir organisé les fichiers. Self-hosted LiveSync ne supprime pas réellement les données même si vous les effacez, afin d'accélérer le processus. Ceci est documenté grossièrement [ici](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md).\n>\n> Si cela ne vous dérange pas, vous pouvez augmenter la limite de notification de 100 Mo. C'est le cas si vous l'exécutez sur votre propre serveur. Il reste toutefois préférable de tout reconstruire de temps en temps.\n>\n\n> [!WARNING]\n> Si vous tout reconstruisez, assurez-vous que tous les appareils sont synchronisés. Le plug-in fusionnera autant que possible cependant.\n", he: "**מסד הנתונים שלך הולך וגדל!** אל תדאג, אנחנו יכולים לטפל בזה עכשיו. הזמן שנשאר עד לאזול המקום באחסון המרוחק.\n\n| גודל נמדד | גודל מוגדר |\n| --- | --- |\n| ${estimatedSize} | ${maxSize} |\n\n> [!MORE]-\n> אם אתה משתמש בפלאגין כבר שנים רבות, ייתכן שנצברו נתחים לא מקושרים — כלומר, זבל — במסד הנתונים. לכן, אנו ממליצים לבנות הכל מחדש. ככל הנראה מסד הנתונים יהיה קטן בהרבה לאחר מכן.\n>\n> אם נפח הכספת שלך פשוט גדל, עדיף לבנות מחדש לאחר ארגון הקבצים. Self-hosted LiveSync אינו מוחק נתונים בפועל גם כאשר אתה מוחק קבצים כדי להאיץ את התהליך. הדבר [מתועד בפירוט](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md).\n>\n> אם אינך מוטרד מהגידול, ניתן להגדיל את סף ההתראה ב-100MB. הדבר מתאים אם השרת הוא שלך. עם זאת, מומלץ לבנות מחדש מעת לעת.\n>\n\n> [!WARNING]\n> אם תבנה מחדש, ודא שכל המכשירים מסונכרנים. הפלאגין ינסה למזג כמה שניתן.\n", ja: "**データベースが大きくなっています!** でも心配しないでください。リモートストレージの容量が不足する前に対応できます。\n\n| 測定サイズ | 設定サイズ |\n| --- | --- |\n| ${estimatedSize} | ${maxSize} |\n\n> [!MORE]-\n> 長年使用している場合、参照されていないチャンク(つまりゴミ)がデータベースに蓄積している可能性があります。そのため、すべてを再構築することをお勧めします。おそらくかなり小さくなるでしょう。\n>\n> 単純に保管庫の容量が増えている場合は、事前にファイルを整理してからすべてを再構築するのが良いでしょう。Self-hosted LiveSyncは処理速度を上げるため、削除しても実際のデータを削除しません。これはおおまかに[documentation](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md)に記載されています。\n>\n> 増加を気にしない場合は、通知制限を100MB単位で増やすことができます。これは自分のサーバーで実行している場合に適しています。ただし、定期的にすべてを再構築する方が良いでしょう。\n>\n\n> [!WARNING]\n> すべてを再構築する場合は、すべてのデバイスが同期されていることを確認してください。もちろん、プラグインは可能な限り解決しようと努力はしますけど...\n", - ko: "**데이터베이스 용량이 점점 커지고 있습니다!** 하지만 걱정하지 마세요. 아직 원격 스토리지 공간이 완전히 부족해진 건 아닙니다.\n\n| 측정된 크기 | 설정된 한도 |\n| --- | --- |\n| ${estimatedSize} | ${maxSize} |\n\n> [!MORE]-\n> 오랜 기간 사용했다면 참조되지 않는 청크, 즉 '쓰레기 데이터'가 쌓였을 수 있습니다. 이 경우 전체 재구성을 권장합니다. 용량이 훨씬 줄어들 수 있습니다.\n> \n> 단순히 볼트 자체 용량이 커지고 있는 것이라면, 먼저 파일을 정리한 후 전체를 재구성하는 것이 좋습니다. Self-hosted LiveSync는 처리 속도를 위해 삭제해도 실제 데이터를 바로 지우지 않습니다. 이 내용은 [기술 문서](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md)에 간략히 정리되어 있습니다.\n> \n> 용량 증가가 괜찮다면 알림 임계치를 100MB 단위로 높일 수 있습니다. 직접 서버를 운영하는 경우에 적합한 방법입니다. 다만, 가끔은 전체 재구성을 해주는 것이 바람직합니다.\n\n> [!WARNING]\n> 전체 재구성을 실행할 경우, 모든 기기가 반드시 동기화되어 있어야 합니다. 플러그인이 최대한 병합하려고 시도하긴 하지만 완전하지 않을 수 있습니다.", + ko: "**데이터베이스 용량이 점점 커지고 있습니다!** 하지만 걱정하지 마세요. 아직 원격 스토리지 공간이 완전히 부족해진 건 아닙니다.\n\n| 측정된 크기 | 설정된 한도 |\n| --- | --- |\n| ${estimatedSize} | ${maxSize} |\n\n> [!MORE]-\n> 오랜 기간 사용했다면 참조되지 않는 청크, 즉 '쓰레기 데이터'가 쌓였을 수 있습니다. 이 경우 전체 재구성을 권장합니다. 용량이 훨씬 줄어들 수 있습니다.\n>\n> 단순히 볼트 자체 용량이 커지고 있는 것이라면, 먼저 파일을 정리한 후 전체를 재구성하는 것이 좋습니다. Self-hosted LiveSync는 처리 속도를 위해 삭제해도 실제 데이터를 바로 지우지 않습니다. 이 내용은 [기술 문서](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md)에 간략히 정리되어 있습니다.\n>\n> 용량 증가가 괜찮다면 알림 임계치를 100MB 단위로 높일 수 있습니다. 직접 서버를 운영하는 경우에 적합한 방법입니다. 다만, 가끔은 전체 재구성을 해주는 것이 바람직합니다.\n\n> [!WARNING]\n> 전체 재구성을 실행할 경우, 모든 기기가 반드시 동기화되어 있어야 합니다. 플러그인이 최대한 병합하려고 시도하긴 하지만 완전하지 않을 수 있습니다.", ru: "Ваша база данных увеличивается! Но не волнуйтесь, мы можем решить это сейчас.", - zh: "**您的数据库正在变大!** 但别担心,我们现在可以解决它。在远程存储空间用完之前还有时间。\n\n| 测量大小 | 配置大小 |\n| --- | --- |\n| ${estimatedSize} | ${maxSize} |\n\n> [!MORE]-\n> 如果您已经使用了很多年,数据库中可能会积累未引用的 chunks——也就是垃圾。因此,我们建议重建所有内容。它可能会变得小得多。\n> \n> 如果您的库容量只是在增加,最好在整理文件后重建所有内容。即使您为了加速过程删除了文件,Self-hosted LiveSync 也不会删除实际数据。这大致[有文档记录](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md)。\n> \n> 如果您不介意增加,可以将通知限制增加 100MB。如果您在自己的服务器上运行,就是这种情况。但是,最好还是不时地重建所有内容。\n> \n\n> [!WARNING]\n> 如果您执行重建所有内容,请确保所有设备都已同步。尽管如此,插件会尽可能地合并\n", + zh: "**您的数据库正在变大!** 但别担心,我们现在可以解决它。在远程存储空间用完之前还有时间。\n\n| 测量大小 | 配置大小 |\n| --- | --- |\n| ${estimatedSize} | ${maxSize} |\n\n> [!MORE]-\n> 如果您已经使用了很多年,数据库中可能会积累未引用的 chunks——也就是垃圾。因此,我们建议重建所有内容。它可能会变得小得多。\n>\n> 如果您的库容量只是在增加,最好在整理文件后重建所有内容。即使您为了加速过程删除了文件,Self-hosted LiveSync 也不会删除实际数据。这大致[有文档记录](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md)。\n>\n> 如果您不介意增加,可以将通知限制增加 100MB。如果您在自己的服务器上运行,就是这种情况。但是,最好还是不时地重建所有内容。\n>\n\n> [!WARNING]\n> 如果您执行重建所有内容,请确保所有设备都已同步。尽管如此,插件会尽可能地合并\n", }, "moduleCheckRemoteSize.msgSetDBCapacity": { def: "We can set a maximum database capacity warning, **to take action before running out of space on the remote storage**.\nDo you want to enable this?\n\n> [!MORE]-\n> - 0: Do not warn about storage size.\n> This is recommended if you have enough space on the remote storage especially you have self-hosted. And you can check the storage size and rebuild manually.\n> - 800: Warn if the remote storage size exceeds 800MB.\n> This is recommended if you are using fly.io with 1GB limit or IBM Cloudant.\n> - 2000: Warn if the remote storage size exceeds 2GB.\n\nIf we have reached the limit, we will be asked to enlarge the limit step by step.\n", @@ -2626,9 +2697,11 @@ export const allMessages: Readonly[!INFO]- Details\n> ## Create a local database once before fetching.\n> **Low Traffic**, **High CPU**, **Low Risk**\n> This option first creates a local database using existing local files before fetching data from the remote source.\n> If matching files exist both locally and remotely, only the differences between them will be transferred.\n> However, files present in both locations will initially be handled as conflicted files. They will be resolved automatically if they are not actually conflicted, but this process may take time.\n> This is generally the safest method, minimizing data loss risk.\n> ## Create local file chunks before fetching.\n> **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk** (depending operation)\n> This option first creates chunks from local files for the database, then fetches data. Consequently, only chunks missing locally are transferred. However, all metadata is taken from the remote source.\n> Local files are then compared against this metadata at launch. The content considered newer will overwrite the older one (by modified time). This outcome is then synchronised back to the remote database.\n> This is generally safe if local files are genuinely the latest timestamp. However, it can cause problems if a file has a newer timestamp but older content (like the initial `welcome.md`).\n> This uses less CPU and faster than \"Create a local database once before fetching\", but it may lead to data loss if not used carefully.\n> ## Fetch everything from the remote.\n> **High Traffic**, **Low CPU**, **Low to Moderate Risk** (depending operation)\n> All things will be fetched from the remote.\n> Similar to the Create local file chunks before fetching, but all chunks are fetched from the remote source.\n> This is the most traditional way to fetch, typically consuming the most network traffic and time. It also carries a similar risk of overwriting remote files to the 'Create local file chunks before fetching' option.\n> However, it is often considered the most stable method because it is the longest-established and most straightforward approach.", + es: "¿Cómo quieres obtener los datos?\n- Crear una base de datos local antes de obtener los datos.\n **Poco tráfico**, **mucha CPU**, **riesgo bajo**\n Recomendado si...\n - Los archivos podrían ser inconsistentes\n - No hay demasiados archivos\n- Crear los chunks de los archivos locales antes de obtener los datos.\n **Poco tráfico**, **CPU moderada**, **riesgo bajo o moderado**\n Recomendado si...\n - Los archivos son probablemente consistentes\n - Tienes muchos archivos\n- Obtener todo del remoto.\n **Mucho tráfico**, **poca CPU**, **riesgo bajo o moderado**\n\n>[!INFO]- Detalles\n> ## Crear una base de datos local antes de obtener los datos.\n> **Poco tráfico**, **mucha CPU**, **riesgo bajo**\n> Esta opción crea primero una base de datos local a partir de los archivos locales existentes antes de obtener los datos del remoto.\n> Si un archivo existe tanto en local como en remoto, solo se transferirán las diferencias.\n> Sin embargo, los archivos presentes en ambos sitios se tratarán inicialmente como archivos en conflicto. Se resolverán automáticamente si en realidad no lo están, pero el proceso puede tardar.\n> En general es el método más seguro y el que menos riesgo de pérdida de datos conlleva.\n> ## Crear los chunks de los archivos locales antes de obtener los datos.\n> **Poco tráfico**, **CPU moderada**, **riesgo bajo o moderado** (según la operación)\n> Esta opción crea primero los chunks de los archivos locales para la base de datos y después obtiene los datos. Así solo se transfieren los chunks que faltan en local. Aun así, todos los metadatos se toman del remoto.\n> Al iniciar, los archivos locales se comparan con esos metadatos. El contenido considerado más reciente sobrescribirá al más antiguo (según la fecha de modificación) y el resultado se sincroniza de vuelta a la base de datos remota.\n> Es seguro si los archivos locales son realmente los de fecha más reciente, pero puede dar problemas si un archivo tiene una fecha más nueva y un contenido más antiguo (como el `welcome.md` inicial).\n> Usa menos CPU y es más rápido que «Crear una base de datos local antes de obtener los datos», pero puede provocar pérdida de datos si no se usa con cuidado.\n> ## Obtener todo del remoto.\n> **Mucho tráfico**, **poca CPU**, **riesgo bajo o moderado** (según la operación)\n> Se obtiene todo del remoto.\n> Similar a Crear los chunks de los archivos locales antes de obtener los datos, pero todos los chunks se descargan del remoto.\n> Es la forma más tradicional de obtener los datos y normalmente la que más tráfico y tiempo consume. Conlleva un riesgo de sobrescribir archivos remotos parecido al de «Crear los chunks de los archivos locales antes de obtener los datos».\n> Aun así, suele considerarse el método más estable, por ser el más antiguo y directo.", fr: "Comment voulez-vous récupérer ?\n- Créer une base locale avant de récupérer.\n **Trafic faible**, **CPU élevé**, **Risque faible**\n Recommandé si ...\n - Fichiers possiblement incohérents\n - Fichiers peu nombreux\n- Créer des fragments de fichiers locaux avant de récupérer.\n **Trafic faible**, **CPU modéré**, **Risque faible à modéré**\n Recommandé si ...\n - Fichiers probablement cohérents\n - Vous avez beaucoup de fichiers.\n- Tout récupérer depuis le distant.\n **Trafic élevé**, **CPU faible**, **Risque faible à modéré**\n\n>[!INFO]- Détails\n> ## Créer une base locale avant de récupérer.\n> **Trafic faible**, **CPU élevé**, **Risque faible**\n> Cette option crée d'abord une base locale à partir des fichiers locaux existants avant de récupérer les données depuis la source distante.\n> Si des fichiers correspondants existent à la fois localement et à distance, seules les différences entre eux seront transférées.\n> Toutefois, les fichiers présents aux deux emplacements seront initialement traités comme en conflit. Ils seront résolus automatiquement s'ils ne le sont pas réellement, mais ce processus peut prendre du temps.\n> C'est généralement la méthode la plus sûre, minimisant le risque de perte de données.\n> ## Créer des fragments de fichiers locaux avant de récupérer.\n> **Trafic faible**, **CPU modéré**, **Risque faible à modéré** (selon l'opération)\n> Cette option crée d'abord des fragments à partir des fichiers locaux pour la base, puis récupère les données. Par conséquent, seuls les fragments manquants localement sont transférés. Cependant, toutes les métadonnées sont prises de la source distante.\n> Les fichiers locaux sont ensuite comparés à ces métadonnées au lancement. Le contenu considéré comme plus récent écrasera le plus ancien (selon la date de modification). Le résultat est ensuite synchronisé vers la base distante.\n> C'est généralement sûr si les fichiers locaux ont bien l'horodatage le plus récent. Cela peut toutefois poser problème si un fichier a un horodatage plus récent mais un contenu plus ancien (comme le `welcome.md` initial).\n> Cette méthode utilise moins de CPU et est plus rapide que « Créer une base locale avant de récupérer », mais peut entraîner une perte de données si elle n'est pas utilisée avec précaution.\n> ## Tout récupérer depuis le distant.\n> **Trafic élevé**, **CPU faible**, **Risque faible à modéré** (selon l'opération)\n> Tout sera récupéré depuis le distant.\n> Similaire à Créer des fragments de fichiers locaux avant de récupérer, mais tous les fragments sont récupérés depuis la source distante.\n> C'est la façon la plus traditionnelle de récupérer, consommant généralement le plus de trafic réseau et de temps. Elle comporte également un risque similaire d'écraser les fichiers distants à l'option « Créer des fragments de fichiers locaux avant de récupérer ».\n> Elle est toutefois souvent considérée comme la méthode la plus stable car c'est la plus ancienne et la plus directe.", he: 'כיצד ברצונך למשוך?\n- %{RedFlag.Fetch.Method.FetchSafer}.\n **תעבורה נמוכה**, **מעבד גבוה**, **סיכון נמוך**\n מומלץ אם...\n - קבצים עשויים להיות לא עקביים\n - אין הרבה קבצים\n- %{RedFlag.Fetch.Method.FetchSmoother}.\n **תעבורה נמוכה**, **מעבד בינוני**, **סיכון נמוך עד בינוני**\n מומלץ אם...\n - הקבצים ככל הנראה עקביים\n - יש לך הרבה קבצים.\n- %{RedFlag.Fetch.Method.FetchTraditional}.\n **תעבורה גבוהה**, **מעבד נמוך**, **סיכון נמוך עד בינוני**\n\n>[!INFO]- פרטים\n> ## %{RedFlag.Fetch.Method.FetchSafer}.\n> **תעבורה נמוכה**, **מעבד גבוה**, **סיכון נמוך**\n> אפשרות זו יוצרת תחילה מסד נתונים מקומי תוך שימוש בקבצים מקומיים קיימים לפני משיכת נתונים מהמקור המרוחד.\n> אם קיימים קבצים תואמים גם מקומית וגם מרחוק, רק ההפרשים ביניהם יועברו.\n> עם זאת, קבצים הקיימים בשני המקומות יטופלו תחילה כקבצים מתנגשים. הם ייפתרו אוטומטית אם לא מתנגשים בפועל, אך תהליך זה עשוי לקחת זמן.\n> זוהי בדרך כלל השיטה הבטוחה ביותר, ממזערת סיכון לאובדן נתונים.\n> ## %{RedFlag.Fetch.Method.FetchSmoother}.\n> **תעבורה נמוכה**, **מעבד בינוני**, **סיכון נמוך עד בינוני** (תלוי בפעולה)\n> אפשרות זו יוצרת תחילה נתחים מקבצים מקומיים למסד הנתונים, ואז מושכת נתונים. כתוצאה מכך, רק נתחים חסרים מקומית מועברים. עם זאת, כל המטה-נתונים נלקחים מהמקור המרוחד.\n> קבצים מקומיים נבדקים לאחר מכן מול מטה-נתונים אלה בעת ההפעלה. התוכן שנחשב חדש יותר ידרוס את הישן יותר (לפי זמן שינוי).\n> בדרך כלל בטוח אם הקבצים המקומיים הם אכן חדשים ביותר. עם זאת, עלול לגרום לבעיות אם לקובץ יש חותמת זמן חדשה יותר אך תוכן ישן יותר (כמו `welcome.md` ראשוני).\n> שיטה זו משתמשת בפחות מעבד ומהירה יותר מ-"%{RedFlag.Fetch.Method.FetchSafer}", אך עלולה להוביל לאובדן נתונים אם לא משתמשים בה בזהירות.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **תעבורה גבוהה**, **מעבד נמוך**, **סיכון נמוך עד בינוני** (תלוי בפעולה)\n> הכל יימשך מהשרת המרוחד.\n> דומה ל-%{RedFlag.Fetch.Method.FetchSmoother}, אך כל הנתחים נמשכים מהמקור המרוחד.\n> זוהי הדרך המסורתית ביותר למשיכה, צורכת בדרך כלל את רוב תעבורת הרשת והזמן.\n> עם זאת, היא נחשבת לעתים קרובות לשיטה היציבה ביותר מכיוון שהיא הוותיקה והישירה ביותר.', ja: "どのようにフェッチしますか?\n- フェッチ前にローカルデータベースを作成\n **低トラフィック**, **高CPU負荷**, **低リスク**\n 推奨条件...\n - ファイルの整合性に不安がある\n - ファイル数がそれほど多くない\n- フェッチ前にローカルファイルチャンクを作成\n **低トラフィック**, **中程CPU負荷**, **低~中リスク**\n 推奨条件...\n - ファイルがおそらく整合している\n - ファイル数が多い\n- リモートからすべてをフェッチ\n **高トラフィック**, **低CPU負荷**, **低~中リスク**\n\n>[!INFO]- 詳細\n> ## フェッチ前にローカルデータベースを作成\n> **低トラフィック**, **高CPU負荷**, **低リスク**\n> このオプションは、リモートからデータをフェッチする前に、既存のローカルファイルを使用してローカルデータベースを作成します。\n> ローカルとリモートの両方に一致するファイルがある場合、差分のみが転送されます。\n> ただし、両方の場所に存在するファイルは最初は競合ファイルとして処理されます。実際に競合していなければ自動的に解決されますが、この処理には時間がかかる場合があります。\n> これは一般的に最も安全な方法で、データ損失のリスクを最小限に抑えます。\n> ## フェッチ前にローカルファイルチャンクを作成\n> **低トラフィック**, **中程CPU負荷**, **低~中リスク**(操作による)\n> このオプションは、最初にローカルファイルからデータベース用のチャンクを作成し、その後データをフェッチします。そのため、ローカルにないチャンクのみが転送されます。ただし、すべてのメタデータはリモートから取得されます。\n> ローカルファイルは起動時にこのメタデータと比較されます。新しいと判断されたコンテンツ(更新日時による)が古いものを上書きします。この結果はリモートデータベースに同期されます。\n> ローカルファイルが本当に最新のタイムスタンプであれば一般的に安全です。ただし、ファイルのタイムスタンプが新しくてもコンテンツが古い場合(初期の`welcome.md`など)は問題が発生する可能性があります。\n> これは\"フェッチ前にローカルデータベースを作成\"よりCPU使用量が少なく高速ですが、注意しないとデータ損失につながる可能性があります。\n> ## リモートからすべてをフェッチ\n> **高トラフィック**, **低CPU負荷**, **低~中リスク**(操作による)\n> すべてのデータがリモートからフェッチされます。\n> フェッチ前にローカルファイルチャンクを作成と似ていますが、すべてのチャンクがリモートからフェッチされます。\n> これは最も従来のフェッチ方法で、通常最もネットワークトラフィックと時間を消費します。'フェッチ前にローカルファイルチャンクを作成'オプションと同様のリモートファイル上書きのリスクがあります。\n> ただし、最も歴史があり簡単なアプローチであるため、最も安定した方法と見なされることが多いです。", @@ -5914,6 +6048,7 @@ export const allMessages: Readonly[!FOR YOUR EYES ONLY]-\n>
${qr_image}
', + es: 'Hemos generado un código QR para transferir los ajustes. Escanéalo con tu móvil u otro dispositivo.\nNota: el código QR no está cifrado, así que ten cuidado al abrirlo.\n\n>[!SOLO PARA TUS OJOS]-\n>
${qr_image}
', fr: "Nous avons généré un QR code pour transférer les paramètres. Scannez-le avec votre téléphone ou un autre appareil.\nNote : le QR code n'est pas chiffré, soyez prudent en l'affichant.\n\n>[!POUR VOS YEUX SEULEMENT]-\n>
${qr_image}
", he: 'יצרנו קוד QR להעברת ההגדרות. אנא סרוק את קוד ה-QR עם הטלפון או מכשיר אחר.\nהערה: קוד ה-QR אינו מוצפן, אז היה זהיר בפתיחתו.\n\n>[!FOR YOUR EYES ONLY]-\n>
${qr_image}
', ja: '設定を転送するためのQRコードを生成しました。スマートフォンや他のデバイスでQRコードをスキャンしてください。\n注意: QRコードは暗号化されていないため、開く際は注意してください。\n\n>[!FOR YOUR EYES ONLY]-\n>
${qr_image}
', @@ -7103,6 +7291,7 @@ export const allMessages: Readonly Database": { def: "Storage -> Database", + es: "Almacenamiento -> Base de datos", "zh-tw": "儲存空間 -> 資料庫", }, "Suppress notification of hidden files change": { @@ -7568,6 +7762,7 @@ export const allMessages: Readonly[!TIP]\n> If you want to synchronise all settings, please use `Sync settings via markdown` after applying minimal configuration with this feature.\n\n${additionalMessage}", + es: "\nLos ajustes de la base de datos remota son los siguientes. Los han configurado otros dispositivos que se han sincronizado con este al menos una vez.\n\nSi quieres usar estos ajustes, selecciona Usar los ajustes configurados.\nSi prefieres conservar los de este dispositivo, selecciona Descartar.\n\n${table}\n\n>[!TIP]\n> Si quieres sincronizar todos los ajustes, usa «Sync settings via markdown» después de aplicar la configuración mínima con esta función.\n\n${additionalMessage}", fr: "\nLes paramètres de la base distante sont les suivants. Ces valeurs sont configurées par d'autres appareils, synchronisés au moins une fois avec celui-ci.\n\nPour utiliser ces paramètres, sélectionnez Utiliser les paramètres configurés.\nPour conserver les paramètres de cet appareil, sélectionnez Ignorer.\n\n${table}\n\n>[!ASTUCE]\n> Pour synchroniser tous les paramètres, utilisez « Synchroniser les paramètres via markdown » après application de la configuration minimale avec cette fonctionnalité.\n\n${additionalMessage}", he: "\nההגדרות במסד הנתונים המרוחד הן כדלקמן. ערכים אלה הוגדרו על ידי מכשירים אחרים, אשר סונכרנו עם מכשיר זה לפחות פעם אחת.\n\nאם ברצונך להשתמש בהגדרות אלה, אנא בחר %{TweakMismatchResolve.Action.UseConfigured}.\nאם ברצונך לשמור את הגדרות מכשיר זה, אנא בחר %{TweakMismatchResolve.Action.Dismiss}.\n\n${table}\n\n>[!TIP]\n> אם ברצונך לסנכרן את כל ההגדרות, אנא השתמש ב-`סנכרון הגדרות דרך Markdown` לאחר החלת תצורה מינימלית עם תכונה זו.\n\n${additionalMessage}", ja: "\nリモートデータベースの設定は以下の通りです。これらの値は、このデバイスと少なくとも1回同期された他のデバイスによって設定されています。\n\nこれらの設定を使用する場合は、設定済みの設定を使用を選択してください。\nこのデバイスの設定を維持する場合は、無視を選択してください。\n\n${table}\n\n>[!TIP]\n> すべての設定を同期したい場合は、この機能で最小限の設定を適用した後、`Sync settings via markdown`を使用してください。\n\n${additionalMessage}", @@ -7782,6 +7991,7 @@ export const allMessages: Readonly[!NOTICE]\n> Some changes are compatible but may consume extra storage and transfer volumes. A rebuild is recommended. However, a rebuild may not be performed at present, but may be implemented in future maintenance.\n> ***Please ensure that you have time and are connected to a stable network to apply!***", + es: "\n>[!NOTICE]\n> Algunos cambios son compatibles, pero pueden consumir almacenamiento y transferencia de más. Se recomienda reconstruir. De momento puede que no se reconstruya, pero podría hacerse en un mantenimiento futuro.\n> ***Asegúrate de tener tiempo y una red estable antes de aplicarlo.***", fr: "\n>[!AVIS]\n> Certains changements sont compatibles mais peuvent consommer du stockage et du trafic supplémentaires. Une reconstruction est recommandée. Cependant, elle peut ne pas être effectuée maintenant, mais pourra l'être lors d'une maintenance future.\n> ***Assurez-vous d'avoir du temps et une connexion stable pour appliquer !***", he: "\n>[!NOTICE]\n> חלק מהשינויים תואמים אך עלולים לצרוך אחסון ותעבורה נוספים. מומלצת בנייה מחדש. עם זאת, ייתכן שבנייה מחדש לא תתבצע כעת, אך תיושם בתחזוקה עתידית.\n> ***ודא שיש לך זמן ושאתה מחובר לרשת יציבה לפני ההחלה!***", ja: "\n>[!NOTICE]\n> 一部の変更は互換性がありますが、追加のストレージと転送量を消費する可能性があります。再構築をお勧めします。ただし、再構築は現時点では実行されない場合がありますが、将来のメンテナンスで実装される可能性があります。\n> ***適用には時間と安定したネットワーク接続が必要です!***", @@ -7806,6 +8019,7 @@ export const allMessages: Readonly[!WARNING]\n> Some remote configurations are not compatible with the local database of this device. Rebuilding the local database will be required.\n> ***Please ensure that you have time and are connected to a stable network to apply!***", + es: "\n>[!WARNING]\n> Algunas configuraciones remotas no son compatibles con la base de datos local de este dispositivo. Habrá que reconstruirla.\n> ***Asegúrate de tener tiempo y una red estable antes de aplicarlo.***", fr: "\n>[!AVERTISSEMENT]\n> Certaines configurations distantes ne sont pas compatibles avec la base locale de cet appareil. Une reconstruction de la base locale sera requise.\n> ***Assurez-vous d'avoir du temps et une connexion stable pour appliquer !***", he: "\n>[!WARNING]\n> חלק מהתצורות המרוחקות אינן תואמות למסד הנתונים המקומי של מכשיר זה. נדרשת בנייה מחדש של מסד הנתונים המקומי.\n> ***ודא שיש לך זמן ושאתה מחובר לרשת יציבה לפני ההחלה!***", ja: "\n>[!WARNING]\n> 一部のリモート設定はこのデバイスのローカルデータベースと互換性がありません。ローカルデータベースの再構築が必要です。\n> ***適用には時間と安定したネットワーク接続が必要です!***", @@ -7815,6 +8029,7 @@ export const allMessages: Readonly[!NOTICE]\n> We have detected that some of the values are different to make incompatible the local database with the remote database.\n> Some changes are compatible but may consume extra storage and transfer volumes. A rebuild is recommended. However, a rebuild may not be performed at present, but may be implemented in future maintenance.\n> If you want to rebuild, it takes a few minutes or more. **Make sure it is safe to perform it now.**", + es: "\n>[!NOTICE]\n> Hemos detectado que algunos valores difieren de forma que hacen incompatible la base de datos local con la remota.\n> Algunos cambios son compatibles, pero pueden consumir almacenamiento y transferencia de más. Se recomienda reconstruir. De momento puede que no se reconstruya, pero podría hacerse en un mantenimiento futuro.\n> Si decides reconstruir, tardará unos minutos o más. **Asegúrate de que es seguro hacerlo ahora.**", fr: "\n>[!AVIS]\n> Nous avons détecté que certaines valeurs diffèrent et rendent la base locale incompatible avec la base distante.\n> Certains changements sont compatibles mais peuvent consommer du stockage et du trafic supplémentaires. Une reconstruction est recommandée. Cependant, elle peut ne pas être effectuée maintenant, mais pourra l'être lors d'une maintenance future.\n> Si vous souhaitez reconstruire, cela prend quelques minutes ou plus. **Assurez-vous qu'il est sûr de le faire maintenant.**", he: "\n>[!NOTICE]\n> זיהינו שחלק מהערכים שונים, מה שגורם לאי-תאימות בין מסד הנתונים המקומי למרוחד.\n> חלק מהשינויים תואמים אך עלולים לצרוך אחסון ותעבורה נוספים. מומלצת בנייה מחדש. עם זאת, ייתכן שבנייה מחדש לא תתבצע כעת, אך תיושם בתחזוקה עתידית.\n> אם ברצונך לבנות מחדש, הדבר ייקח כמה דקות או יותר. **ודא שבטוח לבצע זאת עכשיו.**", ja: "\n>[!NOTICE]\n> ローカルデータベースとリモートデータベースの非互換性を引き起こす値の違いが検出されました。\n> 一部の変更は互換性がありますが、追加のストレージと転送量を消費する可能性があります。再構築をお勧めします。ただし、再構築は現時点では実行されない場合がありますが、将来のメンテナンスで実装される可能性があります。\n> 再構築を行う場合は数分以上かかります。**今実行しても安全か確認してください。**", @@ -7824,6 +8039,7 @@ export const allMessages: Readonly[!WARNING]\n> We have detected that some of the values are different to make incompatible the local database with the remote database.\n> Either local or remote rebuilds are required. Both of them takes a few minutes or more. **Make sure it is safe to perform it now.**", + es: "\n>[!WARNING]\n> Hemos detectado que algunos valores difieren de forma que hacen incompatible la base de datos local con la remota.\n> Hay que reconstruir la local o la remota. Ambas cosas tardan unos minutos o más. **Asegúrate de que es seguro hacerlo ahora.**", fr: "\n>[!AVERTISSEMENT]\n> Nous avons détecté que certaines valeurs diffèrent et rendent la base locale incompatible avec la base distante.\n> Une reconstruction locale ou distante est nécessaire. L'une comme l'autre prend quelques minutes ou plus. **Assurez-vous qu'il est sûr de le faire maintenant.**", he: "\n>[!WARNING]\n> זיהינו שחלק מהערכים שונים, מה שגורם לאי-תאימות בין מסד הנתונים המקומי למרוחד.\n> נדרשת בנייה מחדש של המסד המקומי או המרוחד. שניהם ייקחו כמה דקות או יותר. **ודא שבטוח לבצע זאת עכשיו.**", ja: "\n>[!WARNING]\n> ローカルデータベースとリモートデータベースの非互換性を引き起こす値の違いが検出されました。\n> ローカルまたはリモートの再構築が必要です。どちらも数分以上かかります。**今実行しても安全か確認してください。**", @@ -7833,6 +8049,7 @@ export const allMessages: Readonly Storage", + es: "Base de datos -> Almacenamiento", zh: "数据库 -> 存储", }, "Ui.Settings.Hatch.DeleteCustomizationSyncData": { def: "Delete all customization sync data", + es: "Eliminar todos los datos de la sincronización de personalizaciones", zh: "删除所有自定义同步数据", }, "Ui.Settings.Hatch.GeneratedReport": { def: "Generated report", + es: "Informe generado", zh: "已生成的报告", }, "Ui.Settings.Hatch.Missing": { def: "Missing", + es: "Falta", zh: "缺失", }, "Ui.Settings.Hatch.ModifiedSize": { def: "Modified: ${modified}, Size: ${size}", + es: "Modificado: ${modified}, tamaño: ${size}", zh: "修改时间:${modified},大小:${size}", }, "Ui.Settings.Hatch.ModifiedSizeActual": { def: "Modified: ${modified}, Size: ${size} (actual size: ${actualSize})", + es: "Modificado: ${modified}, tamaño: ${size} (tamaño real: ${actualSize})", zh: "修改时间:${modified},大小:${size}(实际大小:${actualSize})", }, "Ui.Settings.Hatch.PrepareIssueReport": { def: "Prepare the 'report' to create an issue", + es: "Preparar el «informe» para abrir una incidencia", zh: "准备用于提交问题的报告", }, "Ui.Settings.Hatch.RecoveryAndRepair": { def: "Recovery and Repair", + es: "Recuperación y reparación", zh: "恢复与修复", }, "Ui.Settings.Hatch.RecreateAll": { def: "Recreate all", + es: "Recrear todo", zh: "全部重建", }, "Ui.Settings.Hatch.RecreateMissingChunks": { def: "Recreate missing chunks for all files", + es: "Recrear los chunks que faltan de todos los archivos", zh: "为所有文件重新创建缺失的数据块", }, "Ui.Settings.Hatch.RecreateMissingChunksDesc": { def: "This will recreate chunks for all files. If there were missing chunks, this may fix the errors.", + es: "Recrea los chunks de todos los archivos. Si faltaban chunks, esto puede corregir los errores.", zh: "此操作会为所有文件重新创建数据块。如果存在缺失的数据块,可能会修复相关错误。", }, "Ui.Settings.Hatch.ResetPanel": { def: "Reset", + es: "Restablecer", zh: "重置", }, "Ui.Settings.Hatch.ResetRemoteUsage": { def: "Reset notification threshold and check the remote database usage", + es: "Restablecer el umbral de aviso y comprobar el uso de la base de datos remota", zh: "重置通知阈值并检查远程数据库使用情况", }, "Ui.Settings.Hatch.ResetRemoteUsageDesc": { def: "Reset the remote storage size threshold and check the remote storage size again.", + es: "Restablece el umbral de tamaño del almacenamiento remoto y vuelve a comprobar su tamaño.", zh: "重置远程存储大小阈值,并再次检查远程存储大小。", }, "Ui.Settings.Hatch.ResolveAllConflictedFiles": { def: "Resolve all conflicted files by the newer one", + es: "Resolver todos los archivos en conflicto con el más reciente", zh: "使用较新的版本解决所有冲突文件", }, "Ui.Settings.Hatch.ResolveAllConflictedFilesDesc": { def: "Resolve all conflicted files by the newer one. Caution: This will overwrite the older one, and cannot resurrect the overwritten one.", + es: "Resuelve todos los archivos en conflicto quedándose con el más reciente. Atención: esto sobrescribe el más antiguo y no se puede recuperar.", zh: "使用较新的版本解决所有冲突文件。注意:此操作会覆盖较旧版本,且无法恢复被覆盖的内容。", }, "Ui.Settings.Hatch.RunDoctor": { def: "Run Doctor", + es: "Ejecutar el Doctor", zh: "运行诊断", }, "Ui.Settings.Hatch.ScanBrokenFiles": { def: "Scan for broken files", + es: "Buscar archivos dañados", zh: "扫描损坏文件", }, "Ui.Settings.Hatch.ScramSwitches": { def: "Scram Switches", + es: "Interruptores de emergencia", zh: "紧急开关", }, "Ui.Settings.Hatch.ShowHistory": { def: "Show history", + es: "Mostrar el historial", zh: "查看历史", }, "Ui.Settings.Hatch.StorageLabel": { def: "Storage: ${details}", + es: "Almacenamiento: ${details}", zh: "存储:${details}", }, "Ui.Settings.Hatch.StorageToDatabase": { def: "Storage -> Database", + es: "Almacenamiento -> Base de datos", zh: "存储 -> 数据库", }, "Ui.Settings.Hatch.VerifyAndRepairAllFiles": { def: "Verify and repair all files", + es: "Verificar y reparar todos los archivos", zh: "校验并修复所有文件", }, "Ui.Settings.Hatch.VerifyAndRepairAllFilesDesc": { def: "Compare the content of files between the local database and storage. If they do not match, you will be asked which one to keep.", + es: "Compara el contenido de los archivos entre la base de datos local y el almacenamiento. Si no coinciden, se te preguntará cuál conservar.", zh: "比较本地数据库与存储中的文件内容。如果内容不一致,系统会询问你保留哪一份。", }, "Ui.Settings.Maintenance.Cleanup": { def: "Perform cleanup", + es: "Realizar limpieza", zh: "执行清理", }, "Ui.Settings.Maintenance.CleanupDesc": { def: "Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.", + es: "Reduce el espacio de almacenamiento descartando todas las revisiones que no sean la última. Requiere la misma cantidad de espacio libre en el servidor remoto y en el cliente local.", zh: "丢弃所有非最新修订版本,以减少存储空间占用。此操作要求远程服务器和本地客户端都具备同等大小的可用空间。", }, "Ui.Settings.Maintenance.DeleteLocalDatabase": { def: "Delete local database to reset or uninstall Self-hosted LiveSync", + es: "Eliminar la base de datos local para restablecer o desinstalar Self-hosted LiveSync", zh: "删除本地数据库以重置或卸载 Self-hosted LiveSync", }, "Ui.Settings.Maintenance.EmergencyRestart": { def: "Emergency restart", + es: "Reinicio de emergencia", zh: "紧急重启", }, "Ui.Settings.Maintenance.EmergencyRestartDesc": { def: "Disable all synchronisation and restart.", + es: "Desactiva toda la sincronización y reinicia.", zh: "禁用所有同步并重新启动。", }, "Ui.Settings.Maintenance.FreshStartWipe": { def: "Fresh Start Wipe", + es: "Borrado para empezar de cero", zh: "全新开始清空", }, "Ui.Settings.Maintenance.FreshStartWipeDesc": { def: "Delete all data on the remote server.", + es: "Elimina todos los datos del servidor remoto.", zh: "删除远程服务器上的所有数据。", }, "Ui.Settings.Maintenance.GarbageCollection": { def: "Garbage Collection V3 (Beta)", + es: "Recolección de basura V3 (beta)", zh: "垃圾回收 V3(测试版)", }, "Ui.Settings.Maintenance.GarbageCollectionAction": { def: "Perform Garbage Collection", + es: "Realizar la recolección de basura", zh: "执行垃圾回收", }, "Ui.Settings.Maintenance.GarbageCollectionDesc": { def: "Perform Garbage Collection to remove unused chunks and reduce database size.", + es: "Realiza una recolección de basura para eliminar los chunks sin usar y reducir el tamaño de la base de datos.", zh: "执行垃圾回收以移除未使用的数据块并减少数据库大小。", }, "Ui.Settings.Maintenance.LockServer": { def: "Lock Server", + es: "Bloquear el servidor", zh: "锁定服务器", }, "Ui.Settings.Maintenance.LockServerDesc": { def: "Lock the remote server to prevent synchronisation with other devices.", + es: "Bloquea el servidor remoto para impedir la sincronización con otros dispositivos.", zh: "锁定远程服务器,防止与其他设备继续同步。", }, "Ui.Settings.Maintenance.OverwriteRemote": { def: "Overwrite remote", + es: "Sobrescribir el remoto", zh: "覆盖远程端", }, "Ui.Settings.Maintenance.OverwriteRemoteDesc": { def: "Overwrite remote with local DB and passphrase.", + es: "Sobrescribe el remoto con la base de datos local y la frase de contraseña.", zh: "使用本地数据库和密码短语覆盖远程端数据。", }, "Ui.Settings.Maintenance.OverwriteServerData": { def: "Overwrite Server Data with This Device's Files", + es: "Sobrescribir los datos del servidor con los archivos de este dispositivo", zh: "用此设备的文件覆盖服务器数据", }, "Ui.Settings.Maintenance.OverwriteServerDataDesc": { def: "Rebuild the local and remote database with files from this device.", + es: "Reconstruye la base de datos local y la remota con los archivos de este dispositivo.", zh: "使用此设备上的文件重建本地和远程数据库。", }, "Ui.Settings.Maintenance.PurgeAllJournalCounter": { def: "Purge all journal counter", + es: "Purgar todos los contadores del diario", zh: "清空全部日志计数器", }, "Ui.Settings.Maintenance.PurgeAllJournalCounterDesc": { def: "Purge all download and upload caches.", + es: "Purga todas las cachés de descarga y de subida.", zh: "清空所有下载与上传缓存。", }, "Ui.Settings.Maintenance.RebuildingOperations": { def: "Rebuilding Operations (Remote Only)", + es: "Operaciones de reconstrucción (solo remoto)", zh: "重建操作(仅远程端)", }, "Ui.Settings.Maintenance.Resend": { def: "Resend", + es: "Reenviar", zh: "重新发送", }, "Ui.Settings.Maintenance.ResendDesc": { def: "Resend all chunks to the remote.", + es: "Reenvía todos los chunks al remoto.", zh: "将所有数据块重新发送到远程端。", }, "Ui.Settings.Maintenance.Reset": { def: "Reset", + es: "Restablecer", zh: "重置", }, "Ui.Settings.Maintenance.ResetAllJournalCounter": { def: "Reset all journal counter", + es: "Restablecer todos los contadores del diario", zh: "重置全部日志计数器", }, "Ui.Settings.Maintenance.ResetAllJournalCounterDesc": { def: "Initialise all journal history. On the next sync, every item will be received and sent again.", + es: "Inicializa todo el historial del diario. En la próxima sincronización se volverán a recibir y enviar todos los elementos.", zh: "初始化全部日志历史。下次同步时,所有项目都会重新接收并重新发送。", }, "Ui.Settings.Maintenance.ResetJournalReceived": { def: "Reset journal received history", + es: "Restablecer el historial de recepción del diario", zh: "重置日志接收历史", }, "Ui.Settings.Maintenance.ResetJournalReceivedDesc": { def: "Initialise journal received history. On the next sync, every item except those sent by this device will be downloaded again.", + es: "Inicializa el historial de recepción del diario. En la próxima sincronización se volverán a descargar todos los elementos salvo los enviados por este dispositivo.", zh: "初始化日志接收历史。下次同步时,除当前设备发送的项目外,其余项目都会重新下载。", }, "Ui.Settings.Maintenance.ResetJournalSent": { def: "Reset journal sent history", + es: "Restablecer el historial de envío del diario", zh: "重置日志发送历史", }, "Ui.Settings.Maintenance.ResetJournalSentDesc": { def: "Initialise journal sent history. On the next sync, every item except those received by this device will be sent again.", + es: "Inicializa el historial de envío del diario. En la próxima sincronización se volverán a enviar todos los elementos salvo los recibidos por este dispositivo.", zh: "初始化日志发送历史。下次同步时,除当前设备已接收的项目外,其余项目都会重新发送。", }, "Ui.Settings.Maintenance.ResetLocalSyncInfo": { def: "Reset Synchronisation information", + es: "Restablecer la información de sincronización", zh: "重置同步信息", }, "Ui.Settings.Maintenance.ResetLocalSyncInfoDesc": { def: "Restore or reconstruct local database from remote.", + es: "Restaura o reconstruye la base de datos local a partir del remoto.", zh: "从远程端恢复或重建本地数据库。", }, "Ui.Settings.Maintenance.ResetReceived": { def: "Reset received", + es: "Restablecer lo recibido", zh: "重置接收记录", }, "Ui.Settings.Maintenance.ResetSentHistory": { def: "Reset sent history", + es: "Restablecer el historial de envíos", zh: "重置发送记录", }, "Ui.Settings.Maintenance.ResetThisDevice": { def: "Reset Synchronisation on This Device", + es: "Restablecer la sincronización en este dispositivo", zh: "重置此设备上的同步状态", }, "Ui.Settings.Maintenance.ScheduleAndRestart": { def: "Schedule and Restart", + es: "Programar y reiniciar", zh: "计划执行并重启", }, "Ui.Settings.Maintenance.Scram": { def: "Scram!", + es: "¡Parada de emergencia!", zh: "紧急处理", }, "Ui.Settings.Maintenance.SendChunks": { def: "Send chunks", + es: "Enviar los chunks", zh: "发送数据块", }, "Ui.Settings.Maintenance.Syncing": { def: "Syncing", + es: "Sincronización", zh: "同步", }, "Ui.Settings.Maintenance.WarningLockedReadyAction": { def: "I am ready, unlock the database", + es: "Estoy listo, desbloquear la base de datos", zh: "我已准备好,立即解锁数据库", }, "Ui.Settings.Maintenance.WarningLockedReadyText": { def: "To prevent unwanted vault corruption, the remote database has been locked for synchronisation. (This device is marked as 'resolved'.) When all your devices are marked as 'resolved', unlock the database. This warning will continue to appear until replication confirms the device is resolved.", + es: "Para evitar que el vault se corrompa, la base de datos remota se ha bloqueado para la sincronización. (Este dispositivo está marcado como «resuelto».) Cuando todos tus dispositivos estén marcados como «resueltos», desbloquea la base de datos. Este aviso seguirá apareciendo hasta que la replicación confirme que el dispositivo está resuelto.", zh: "为防止意外的数据仓库损坏,远程数据库已被锁定,暂停同步。(此设备已被标记为“已确认”)当你的所有设备都标记为“已确认”后,再解锁数据库。在复制过程确认此设备已完成确认之前,此警告会持续显示。", }, "Ui.Settings.Maintenance.WarningLockedResolveAction": { def: "I have made a backup, mark this device as resolved", + es: "He hecho una copia de seguridad, marcar este dispositivo como resuelto", zh: "我已完成备份,将此设备标记为“已确认”", }, "Ui.Settings.Maintenance.WarningLockedResolveText": { def: "The remote database is locked for synchronisation to prevent vault corruption because this device is not marked as 'resolved'. Please back up your vault, reset the local database, and select 'Mark this device as resolved'. This warning will persist until replication confirms the device is resolved.", + es: "La base de datos remota está bloqueada para la sincronización a fin de evitar que el vault se corrompa, porque este dispositivo no está marcado como «resuelto». Haz una copia de seguridad de tu vault, restablece la base de datos local y selecciona «Marcar este dispositivo como resuelto». Este aviso seguirá apareciendo hasta que la replicación confirme que el dispositivo está resuelto.", zh: "为防止数据仓库损坏,由于此设备尚未标记为“已确认”,远程数据库已被锁定,暂停同步。请先备份你的仓库、重置本地数据库,然后选择“将此设备标记为已确认”。在复制过程确认此设备已完成确认之前,此警告会持续显示。", }, "Ui.Settings.Maintenance.WriteRedFlagAndRestart": { def: "Flag and restart", + es: "Marcar y reiniciar", zh: "标记并重启", }, "Ui.Settings.Patches.CompatibilityConflict": { def: "Compatibility (Conflict Behaviour)", + es: "Compatibilidad (comportamiento ante conflictos)", zh: "兼容性(冲突行为)", }, "Ui.Settings.Patches.CompatibilityDatabase": { def: "Compatibility (Database structure)", + es: "Compatibilidad (estructura de la base de datos)", zh: "兼容性(数据库结构)", }, "Ui.Settings.Patches.CompatibilityInternalApi": { def: "Compatibility (Internal API Usage)", + es: "Compatibilidad (uso de la API interna)", zh: "兼容性(内部 API 使用)", }, "Ui.Settings.Patches.CompatibilityMetadata": { def: "Compatibility (Metadata)", + es: "Compatibilidad (metadatos)", zh: "兼容性(元数据)", }, "Ui.Settings.Patches.CompatibilityRemote": { def: "Compatibility (Remote Database)", + es: "Compatibilidad (base de datos remota)", zh: "兼容性(远程数据库)", }, "Ui.Settings.Patches.CompatibilityTrouble": { def: "Compatibility (Trouble addressed)", + es: "Compatibilidad (problemas resueltos)", zh: "兼容性(已处理问题)", }, "Ui.Settings.Patches.CurrentAdapter": { def: "Current adapter: ${adapter}", + es: "Adaptador actual: ${adapter}", zh: "当前适配器:${adapter}", }, "Ui.Settings.Patches.DatabaseAdapter": { def: "Database Adapter", + es: "Adaptador de base de datos", zh: "数据库适配器", }, "Ui.Settings.Patches.DatabaseAdapterDesc": { def: "Select the database adapter to use.", + es: "Selecciona el adaptador de base de datos que se va a usar.", zh: "选择要使用的数据库适配器。", }, "Ui.Settings.Patches.EdgeCaseBehaviour": { def: "Edge case addressing (Behaviour)", + es: "Casos límite (comportamiento)", zh: "边界情况处理(行为)", }, "Ui.Settings.Patches.EdgeCaseDatabase": { def: "Edge case addressing (Database)", + es: "Casos límite (base de datos)", zh: "边界情况处理(数据库)", }, "Ui.Settings.Patches.EdgeCaseProcessing": { def: "Edge case addressing (Processing)", + es: "Casos límite (procesamiento)", zh: "边界情况处理(处理流程)", }, "Ui.Settings.Patches.IndexedDbWarning": { def: "The IndexedDB adapter often offers superior performance in certain scenarios, but it has been found to cause memory leaks when used with LiveSync mode. When using LiveSync mode, please use the IDB adapter instead.", + es: "El adaptador IndexedDB suele ofrecer mejor rendimiento en ciertos casos, pero se ha comprobado que provoca fugas de memoria con el modo LiveSync. Si usas el modo LiveSync, utiliza en su lugar el adaptador IDB.", zh: "IndexedDB 适配器在某些场景下通常具有更好的性能,但在 LiveSync 模式下已发现可能导致内存泄漏。使用 LiveSync 模式时,请改用 IDB 适配器。", }, "Ui.Settings.Patches.MigratingToIdb": { def: "Migrating all data to IDB...", + es: "Migrando todos los datos a IDB...", zh: "正在将所有数据迁移到 IDB...", }, "Ui.Settings.Patches.MigratingToIndexedDb": { def: "Migrating all data to IndexedDB...", + es: "Migrando todos los datos a IndexedDB...", zh: "正在将所有数据迁移到 IndexedDB...", }, "Ui.Settings.Patches.MigrationIdbCompleted": { def: "Migration to IDB completed. Obsidian will be restarted with the new configuration immediately.", + es: "Migración a IDB completada. Obsidian se reiniciará de inmediato con la nueva configuración.", zh: "已完成迁移到 IDB。Obsidian 将立即使用新配置重新启动。", }, "Ui.Settings.Patches.MigrationIdbCompletedFollowUp": { def: "Migration to IDB completed. Please switch the adapter and restart Obsidian.", + es: "Migración a IDB completada. Cambia el adaptador y reinicia Obsidian.", zh: "已完成迁移到 IDB。请切换适配器并重新启动 Obsidian。", }, "Ui.Settings.Patches.MigrationIndexedDbCompleted": { def: "Migration to IndexedDB completed. Obsidian will be restarted with the new configuration immediately.", + es: "Migración a IndexedDB completada. Obsidian se reiniciará de inmediato con la nueva configuración.", zh: "已完成迁移到 IndexedDB。Obsidian 将立即使用新配置重新启动。", }, "Ui.Settings.Patches.MigrationIndexedDbCompletedFollowUp": { def: "Migration to IndexedDB completed. Please switch the adapter and restart Obsidian.", + es: "Migración a IndexedDB completada. Cambia el adaptador y reinicia Obsidian.", zh: "已完成迁移到 IndexedDB。请切换适配器并重新启动 Obsidian。", }, "Ui.Settings.Patches.MigrationWarning": { def: "Changing this setting requires migrating existing data, which may take some time, and restarting Obsidian. Please make sure to back up your data before proceeding.", + es: "Cambiar este ajuste requiere migrar los datos existentes, lo que puede tardar un rato, y reiniciar Obsidian. Asegúrate de hacer una copia de seguridad de tus datos antes de continuar.", zh: "修改此设置需要迁移现有数据(可能需要一些时间)并重新启动 Obsidian。请先备份你的数据后再继续。", }, "Ui.Settings.Patches.OperationToIdb": { def: "to IDB", + es: "a IDB", zh: "迁移到 IDB", }, "Ui.Settings.Patches.OperationToIndexedDb": { def: "to IndexedDB", + es: "a IndexedDB", zh: "迁移到 IndexedDB", }, "Ui.Settings.Patches.Remediation": { def: "Remediation", + es: "Remediación", zh: "修正", }, "Ui.Settings.Patches.RemediationChanged": { def: "Remediation Setting Changed", + es: "Se ha cambiado el ajuste de remediación", zh: "修正设置已更改", }, "Ui.Settings.Patches.RemediationNoLimit": { def: "No limit configured", + es: "Sin límite configurado", zh: "未设置限制", }, "Ui.Settings.Patches.RemediationRestarting": { def: "Remediation setting changed. Restarting Obsidian...", + es: "Se ha cambiado el ajuste de remediación. Reiniciando Obsidian...", zh: "修正设置已更改,正在重新启动 Obsidian...", }, "Ui.Settings.Patches.RemediationRestartLater": { def: "Later", + es: "Más tarde", zh: "稍后", }, "Ui.Settings.Patches.RemediationRestartMessage": { def: "Restarting Obsidian is strongly recommended. Until restart, some changes may not take effect, and the display may be inconsistent. Are you sure you want to restart now?", + es: "Se recomienda encarecidamente reiniciar Obsidian. Hasta que lo hagas, puede que algunos cambios no surtan efecto y que la interfaz se muestre de forma inconsistente. ¿Seguro que quieres reiniciar ahora?", zh: "强烈建议重新启动 Obsidian。在重启之前,部分更改可能不会生效,界面显示也可能不一致。确定要现在重启吗?", }, "Ui.Settings.Patches.RemediationRestartNow": { def: "Restart Now", + es: "Reiniciar ahora", zh: "立即重启", }, "Ui.Settings.Patches.RemediationSuffixChanged": { def: "Suffix has been changed. Reopening database...", + es: "El sufijo ha cambiado. Reabriendo la base de datos...", zh: "后缀已更改,正在重新打开数据库...", }, "Ui.Settings.Patches.RemediationWithValue": { def: "Limit: ${date} (${timestamp})", + es: "Límite: ${date} (${timestamp})", zh: "限制:${date}(${timestamp})", }, "Ui.Settings.Patches.RemoteDatabaseSunset": { def: "Remote Database Tweak (In sunset)", + es: "Ajuste fino de la base de datos remota (en desuso)", zh: "远程数据库调整(即将弃用)", }, "Ui.Settings.Patches.SwitchToIDB": { def: "Switch to IDB", + es: "Cambiar a IDB", zh: "切换到 IDB", }, "Ui.Settings.Patches.SwitchToIndexedDb": { def: "Switch to IndexedDB", + es: "Cambiar a IndexedDB", zh: "切换到 IndexedDB", }, "Ui.Settings.PowerUsers.ConfigurationEncryption": { def: "Configuration Encryption", + es: "Cifrado de la configuración", zh: "配置加密", }, "Ui.Settings.PowerUsers.ConnectionTweak": { def: "CouchDB Connection Tweak", + es: "Ajuste fino de la conexión con CouchDB", zh: "CouchDB 连接调整", }, "Ui.Settings.PowerUsers.ConnectionTweakDesc": { def: "If you reached the payload size limit when using IBM Cloudant, please decrease batch size and batch limit to a lower value.", + es: "Si alcanzas el límite de tamaño de carga al usar IBM Cloudant, reduce el tamaño de lote y el límite de lote.", zh: "如果你在使用 IBM Cloudant 时遇到负载大小限制,请将 batch size 和 batch limit 调低。", }, "Ui.Settings.PowerUsers.Default": { def: "Default", + es: "Predeterminado", zh: "默认", }, "Ui.Settings.PowerUsers.Developer": { def: "Developer", + es: "Desarrollo", zh: "开发者", }, "Ui.Settings.PowerUsers.EncryptSensitiveConfig": { def: "Encrypt sensitive configuration items", + es: "Cifrar los elementos sensibles de la configuración", zh: "加密敏感配置项", }, "Ui.Settings.PowerUsers.PromptPassphraseEveryLaunch": { def: "Ask for a passphrase at every launch", + es: "Solicitar la frase de contraseña en cada inicio", zh: "每次启动时询问密码短语", }, "Ui.Settings.PowerUsers.UseCustomPassphrase": { def: "Use a custom passphrase", + es: "Usar una frase de contraseña personalizada", zh: "使用自定义密码短语", }, "Ui.Settings.Remote.Activate": { def: "Activate", + es: "Activar", zh: "启用", }, "Ui.Settings.Remote.ActiveSuffix": { def: " (Active)", + es: " (activo)", zh: "(当前启用)", }, "Ui.Settings.Remote.AddConnection": { def: "Add new connection", + es: "Añadir conexión", zh: "新增连接", }, "Ui.Settings.Remote.AddRemoteDefaultName": { def: "New Remote", + es: "Remoto nuevo", zh: "新远程端", }, "Ui.Settings.Remote.ConfigureAndChangeRemote": { def: "Configure and change remote", + es: "Configurar y cambiar el remoto", zh: "配置并切换远程端", }, "Ui.Settings.Remote.ConfigureE2EE": { def: "Configure E2EE", + es: "Configurar el E2EE", zh: "配置端到端加密", }, "Ui.Settings.Remote.ConfigureRemote": { def: "Configure Remote", + es: "Configurar el remoto", zh: "配置远程端", }, "Ui.Settings.Remote.DeleteRemoteConfirm": { def: "Delete remote configuration '${name}'?", + es: "¿Eliminar la configuración remota «${name}»?", zh: "确定要删除远程配置“${name}”吗?", }, "Ui.Settings.Remote.DeleteRemoteTitle": { def: "Delete Remote Configuration", + es: "Eliminar la configuración remota", zh: "删除远程配置", }, "Ui.Settings.Remote.DisplayName": { def: "Display name", + es: "Nombre visible", zh: "显示名称", }, "Ui.Settings.Remote.DuplicateRemote": { def: "Duplicate remote", + es: "Duplicar el remoto", zh: "复制远程配置", }, "Ui.Settings.Remote.DuplicateRemoteSuffix": { def: "${name} (Copy)", + es: "${name} (copia)", zh: "${name}(副本)", }, "Ui.Settings.Remote.E2EEConfiguration": { def: "E2EE Configuration", + es: "Configuración del E2EE", zh: "端到端加密配置", }, "Ui.Settings.Remote.Export": { def: "Export", + es: "Exportar", zh: "导出", }, "Ui.Settings.Remote.FetchRemoteSettings": { def: "Fetch remote settings", + es: "Obtener los ajustes remotos", zh: "获取远程设置", }, "Ui.Settings.Remote.ImportConnection": { def: "Import connection", + es: "Importar conexión", zh: "导入连接", }, "Ui.Settings.Remote.ImportConnectionPrompt": { def: "Paste a connection string", + es: "Pega una cadena de conexión", zh: "粘贴连接字符串", }, "Ui.Settings.Remote.ImportedCouchDb": { def: "Imported CouchDB", + es: "CouchDB importado", zh: "已导入的 CouchDB", }, "Ui.Settings.Remote.ImportedRemote": { def: "Remote", + es: "Remoto", zh: "远程端", }, "Ui.Settings.Remote.MoreActions": { def: "More actions", + es: "Más acciones", zh: "更多操作", }, "Ui.Settings.Remote.PeerToPeerPanel": { def: "Peer-to-Peer Synchronisation", + es: "Sincronización punto a punto", zh: "点对点同步", }, "Ui.Settings.Remote.RemoteConfigurationPrefix": { def: "Remote configuration", + es: "Configuración remota", zh: "远程配置", }, "Ui.Settings.Remote.RemoteDatabases": { def: "Remote Databases", + es: "Bases de datos remotas", zh: "远程数据库", }, "Ui.Settings.Remote.RemoteName": { def: "Remote name", + es: "Nombre del remoto", zh: "远程名称", }, "Ui.Settings.Remote.RemoteNameCouchDb": { def: "CouchDB ${host}", + es: "CouchDB ${host}", zh: "CouchDB ${host}", }, "Ui.Settings.Remote.RemoteNameP2P": { def: "P2P ${room}", + es: "P2P ${room}", zh: "P2P ${room}", }, "Ui.Settings.Remote.RemoteNameS3": { def: "S3 ${bucket}", + es: "S3 ${bucket}", zh: "S3 ${bucket}", }, "Ui.Settings.Remote.Rename": { def: "Rename", + es: "Cambiar el nombre", zh: "重命名", }, "Ui.Settings.Selector.AddDefaultPatterns": { def: "Add default patterns", + es: "Añadir patrones predeterminados", zh: "添加默认模式", }, "Ui.Settings.Selector.CrossPlatform": { def: "Cross-platform", + es: "Multiplataforma", zh: "跨平台", }, "Ui.Settings.Selector.Default": { def: "Default", + es: "Predeterminado", zh: "默认", }, "Ui.Settings.Selector.HiddenFiles": { def: "Hidden Files", + es: "Archivos ocultos", zh: "隐藏文件", }, "Ui.Settings.Selector.IgnorePatterns": { def: "Ignore patterns", + es: "Patrones de exclusión", zh: "忽略模式", }, "Ui.Settings.Selector.NonSynchronisingFiles": { def: "Non-Synchronising files", + es: "Archivos que no se sincronizan", zh: "不同步文件", }, "Ui.Settings.Selector.NonSynchronisingFilesDesc": { def: "(RegExp) If this is set, any changes to local and remote files that match this will be skipped.", + es: "(RegExp) Si se establece, se omitirá cualquier cambio en archivos locales y remotos que coincida con este patrón.", zh: "(RegExp)如果设置了该项,则本地和远程中匹配这些规则的文件变更将被跳过。", }, "Ui.Settings.Selector.NormalFiles": { def: "Normal Files", + es: "Archivos normales", zh: "普通文件", }, "Ui.Settings.Selector.OverwritePatterns": { def: "Overwrite patterns", + es: "Patrones de sobrescritura", zh: "覆盖模式", }, "Ui.Settings.Selector.OverwritePatternsDesc": { def: "Patterns to match files for overwriting instead of merging", + es: "Patrones de los archivos que se sobrescriben en lugar de combinarse", zh: "匹配后将执行覆盖而非合并的文件模式", }, "Ui.Settings.Selector.SynchronisingFiles": { def: "Synchronising files", + es: "Archivos que se sincronizan", zh: "同步文件", }, "Ui.Settings.Selector.SynchronisingFilesDesc": { def: "(RegExp) Empty to sync all files. Set a regular expression filter to limit synchronised files.", + es: "(RegExp) Déjalo vacío para sincronizar todos los archivos. Define un filtro como expresión regular para limitar los archivos sincronizados.", zh: "(RegExp)留空则同步所有文件。可设置正则表达式以限制需要同步的文件。", }, "Ui.Settings.Selector.TargetPatterns": { def: "Target patterns", + es: "Patrones de inclusión", zh: "目标模式", }, "Ui.Settings.Selector.TargetPatternsDesc": { def: "Patterns to match files for syncing", + es: "Patrones de los archivos que se van a sincronizar", zh: "用于匹配需要同步文件的模式", }, "Ui.Settings.Setup.RerunWizardButton": { def: "Rerun Wizard", + es: "Volver a ejecutar el asistente", zh: "重新运行向导", }, "Ui.Settings.Setup.RerunWizardDesc": { def: "Rerun the onboarding wizard to set up Self-hosted LiveSync again.", + es: "Vuelve a ejecutar el asistente de configuración inicial para configurar Self-hosted LiveSync de nuevo.", zh: "重新运行引导向导,再次设置 Self-hosted LiveSync。", }, "Ui.Settings.Setup.RerunWizardName": { def: "Rerun Onboarding Wizard", + es: "Volver a ejecutar el asistente de configuración inicial", zh: "重新运行引导向导", }, "Ui.Settings.SyncSettings.Fetch": { def: "Fetch", + es: "Obtener", zh: "获取", }, "Ui.Settings.SyncSettings.Merge": { def: "Merge", + es: "Combinar", zh: "合并", }, "Ui.Settings.SyncSettings.Overwrite": { def: "Overwrite", + es: "Sobrescribir", zh: "覆盖", }, "Ui.SetupWizard.Common.Back": { def: "No, please take me back", + es: "No, volver atrás", zh: "不,带我返回", }, "Ui.SetupWizard.Common.Cancel": { def: "Cancel", + es: "Cancelar", zh: "取消", }, "Ui.SetupWizard.Common.ProceedSelectOption": { def: "Please select an option to proceed", + es: "Selecciona una opción para continuar", zh: "请选择一个选项后继续", }, "Ui.SetupWizard.Intro.ExistingOption": { def: "I am adding a device to an existing synchronisation setup", + es: "Estoy añadiendo un dispositivo a una configuración de sincronización existente", zh: "将此设备加入已有同步配置", }, "Ui.SetupWizard.Intro.ExistingOptionDesc": { def: "Select this if you are already using synchronisation on another computer or smartphone. Use this option to connect this device to that existing setup.", + es: "Elige esto si ya usas la sincronización en otro ordenador o móvil. Usa esta opción para conectar este dispositivo a esa configuración existente.", zh: "如果你已经在另一台电脑或手机上使用同步,请选择此项。此选项用于将当前设备连接到既有同步配置。", }, "Ui.SetupWizard.Intro.Guidance": { def: "We will now guide you through a few questions to simplify the synchronisation setup.", + es: "Te guiaremos con unas cuantas preguntas para simplificar la configuración de la sincronización.", zh: "接下来我们会通过几个问题,帮助你更轻松地完成同步配置。", }, "Ui.SetupWizard.Intro.NewOption": { def: "I am setting this up for the first time", + es: "Lo estoy configurando por primera vez", zh: "首次设置同步", }, "Ui.SetupWizard.Intro.NewOptionDesc": { def: "Select this if you are configuring this device as the first synchronisation device.", + es: "Elige esto si estás configurando este dispositivo como el primero de la sincronización.", zh: "如果你正把这台设备作为第一台同步设备进行配置,请选择此项。", }, "Ui.SetupWizard.Intro.ProceedExisting": { def: "Yes, I want to add this device to my existing synchronisation", + es: "Sí, quiero añadir este dispositivo a mi sincronización existente", zh: "是的,我要将此设备加入现有同步", }, "Ui.SetupWizard.Intro.ProceedNew": { def: "Yes, I want to set up a new synchronisation", + es: "Sí, quiero configurar una sincronización nueva", zh: "是的,我要开始新的同步配置", }, "Ui.SetupWizard.Intro.Question": { def: "First, please select the option that best describes your current situation.", + es: "Primero, selecciona la opción que mejor describa tu situación actual.", zh: "首先,请选择最符合你当前情况的选项。", }, "Ui.SetupWizard.Intro.Title": { def: "Welcome to Self-hosted LiveSync", + es: "Bienvenido a Self-hosted LiveSync", zh: "欢迎使用 Self-hosted LiveSync", }, "Ui.SetupWizard.Invitation.Start": { def: "Start setup", + es: "Comenzar la configuración", }, "Ui.SetupWizard.OutroAskUserMode.CompatibleOption": { def: "The remote is already set up, and the configuration is compatible (or became compatible through this operation).", + es: "El remoto ya está configurado y la configuración es compatible (o pasa a serlo con esta operación).", zh: "远程端已配置完成,且当前配置兼容(或已通过本次操作变为兼容)。", }, "Ui.SetupWizard.OutroAskUserMode.CompatibleOptionDesc": { def: "Unless you are certain, selecting this option is risky. It assumes the server configuration is compatible with this device. If that is not the case, data loss may occur. Please make sure you understand the consequences.", + es: "Si no estás seguro, elegir esta opción es arriesgado. Da por supuesto que la configuración del servidor es compatible con este dispositivo. Si no lo es, puede haber pérdida de datos. Asegúrate de entender las consecuencias.", zh: "除非你非常确定,否则选择此项存在风险。它假定服务器配置与当前设备兼容。如果事实并非如此,可能会导致数据丢失。请确认你了解后果。", }, "Ui.SetupWizard.OutroAskUserMode.ExistingOption": { def: "My remote server is already set up. I want to join this device.", + es: "Mi servidor remoto ya está configurado. Quiero añadir este dispositivo.", zh: "远程服务器已经配置完成,我想让此设备加入同步。", }, "Ui.SetupWizard.OutroAskUserMode.ExistingOptionDesc": { def: "Selecting this option will make this device join the existing server. You need to fetch the existing synchronisation data from the server to this device.", + es: "Al elegir esta opción, este dispositivo se unirá al servidor existente. Tendrás que obtener del servidor los datos de sincronización ya existentes.", zh: "选择此项后,此设备会加入已有服务器。你需要将服务器上的现有同步数据获取到此设备。", }, "Ui.SetupWizard.OutroAskUserMode.Guidance": { def: "The connection to the server has been configured successfully. As the next step, the local database, in other words the synchronisation information, must be rebuilt.", + es: "La conexión con el servidor se ha configurado correctamente. Como paso siguiente hay que reconstruir la base de datos local, es decir, la información de sincronización.", zh: "服务器连接已成功配置。下一步需要重建本地数据库,也就是同步状态信息。", }, "Ui.SetupWizard.OutroAskUserMode.NewOption": { def: "I am setting up a new server for the first time / I want to reset my existing server.", + es: "Estoy configurando un servidor nuevo por primera vez / quiero restablecer mi servidor actual.", zh: "我是第一次配置新服务器 / 我想重置现有服务器。", }, "Ui.SetupWizard.OutroAskUserMode.NewOptionDesc": { def: "Selecting this option will initialise the server using the current data on this device. Any existing data on the server will be completely overwritten.", + es: "Al elegir esta opción, el servidor se inicializará con los datos actuales de este dispositivo. Cualquier dato existente en el servidor se sobrescribirá por completo.", zh: "选择此项后,服务器会使用当前设备上的数据进行初始化。服务器上的现有数据将被完全覆盖。", }, "Ui.SetupWizard.OutroAskUserMode.ProceedApplySettings": { def: "Apply the settings", + es: "Aplicar los ajustes", zh: "应用这些设置", }, "Ui.SetupWizard.OutroAskUserMode.ProceedNext": { def: "Proceed to the next step.", + es: "Continuar al paso siguiente.", zh: "继续下一步", }, "Ui.SetupWizard.OutroAskUserMode.Question": { def: "Please select your situation.", + es: "Selecciona tu situación.", zh: "请选择你的当前情况。", }, "Ui.SetupWizard.OutroAskUserMode.Title": { def: "Mostly Complete: Decision Required", + es: "Casi terminado: se requiere una decisión", zh: "即将完成:还需要做出选择", }, "Ui.SetupWizard.OutroNewP2PUser.GuidanceNotice": { def: "P2P has no central server copy to overwrite. This step prepares only this device; keep it online when another device fetches its initial data.", + es: "En P2P no hay una copia en un servidor central que sobrescribir. Este paso prepara solo este dispositivo; mantenlo conectado cuando otro dispositivo obtenga sus datos iniciales.", }, "Ui.SetupWizard.OutroNewP2PUser.GuidancePrimary": { def: "The peer-to-peer connection has been configured successfully. Next, the local LiveSync database will be built from the current files in this Vault.", + es: "La conexión punto a punto se ha configurado correctamente. A continuación, la base de datos local de LiveSync se construirá a partir de los archivos actuales de este Vault.", }, "Ui.SetupWizard.OutroNewP2PUser.Important": { def: "PLEASE NOTE", + es: "TEN EN CUENTA", }, "Ui.SetupWizard.OutroNewP2PUser.Proceed": { def: "Restart and Prepare This Device", + es: "Reiniciar y preparar este dispositivo", }, "Ui.SetupWizard.OutroNewP2PUser.Question": { def: "Please select the button below to restart and proceed to the local initialisation confirmation.", + es: "Pulsa el botón de abajo para reiniciar y pasar a la confirmación de la inicialización local.", }, "Ui.SetupWizard.OutroNewP2PUser.Title": { def: "Setup Complete: Preparing This P2P Device", + es: "Configuración completada: preparando este dispositivo P2P", }, "Ui.SetupWizard.OutroNewUser.GuidancePrimary": { def: "The connection to the server has been configured successfully. As the next step, the synchronisation data on the server will be built from the current data on this device.", + es: "La conexión con el servidor se ha configurado correctamente. Como paso siguiente, los datos de sincronización del servidor se construirán a partir de los datos actuales de este dispositivo.", zh: "服务器连接已成功配置。下一步将根据当前设备上的数据,在服务器端建立同步数据。", }, "Ui.SetupWizard.OutroNewUser.GuidanceWarning": { def: "After restarting, the data on this device will be uploaded to the server as the master copy. Please note that any unintended data currently on the server will be completely overwritten.", + es: "Tras reiniciar, los datos de este dispositivo se subirán al servidor como copia maestra. Ten en cuenta que cualquier dato no deseado que haya ahora en el servidor se sobrescribirá por completo.", zh: "重启后,当前设备上的数据会作为主副本上传到服务器。请注意,服务器上现有的非预期数据将被完全覆盖。", }, "Ui.SetupWizard.OutroNewUser.Important": { def: "IMPORTANT", + es: "IMPORTANTE", zh: "重要", }, "Ui.SetupWizard.OutroNewUser.Proceed": { def: "Restart and Initialise Server", + es: "Reiniciar e inicializar el servidor", zh: "重启并初始化服务器", }, "Ui.SetupWizard.OutroNewUser.Question": { def: "Please select the button below to restart and proceed to the final confirmation.", + es: "Pulsa el botón de abajo para reiniciar y pasar a la confirmación final.", zh: "请选择下方按钮,重启并进入最终确认步骤。", }, "Ui.SetupWizard.OutroNewUser.Title": { def: "Setup Complete: Preparing to Initialise Server", + es: "Configuración completada: preparando la inicialización del servidor", zh: "设置完成:准备初始化服务器", }, "Ui.SetupWizard.RebuildEverythingP2P.ConfirmLocalReset": { def: "I understand that this resets only this device's local synchronisation database.", + es: "Entiendo que esto restablece únicamente la base de datos de sincronización local de este dispositivo.", }, "Ui.SetupWizard.RebuildEverythingP2P.ConfirmLocalResetNote": { def: "The files currently in this Vault are used to rebuild it.", + es: "Se usarán los archivos que hay ahora en este Vault para reconstruirla.", }, "Ui.SetupWizard.RebuildEverythingP2P.ConfirmTitle": { def: "⚠️ Please Confirm the Following", + es: "⚠️ Confirma lo siguiente", }, "Ui.SetupWizard.RebuildEverythingP2P.Guidance": { def: "This procedure will discard the local LiveSync database on this device and rebuild it from the current files in this Vault. It does not delete or overwrite data on another device.", + es: "Este procedimiento descartará la base de datos local de LiveSync de este dispositivo y la reconstruirá a partir de los archivos actuales de este Vault. No elimina ni sobrescribe datos de otro dispositivo.", }, "Ui.SetupWizard.RebuildEverythingP2P.Note": { def: "Keep this device online after initialisation so that another device can fetch the Vault from it.", + es: "Mantén este dispositivo conectado después de la inicialización para que otro dispositivo pueda obtener el Vault desde él.", }, "Ui.SetupWizard.RebuildEverythingP2P.Proceed": { def: "I Understand, Prepare This Device", + es: "Lo entiendo, preparar este dispositivo", }, "Ui.SetupWizard.RebuildEverythingP2P.Title": { def: "Final Confirmation: Prepare This Device for P2P", + es: "Confirmación final: preparar este dispositivo para P2P", }, "Ui.SetupWizard.SelectExisting.Guidance": { def: "You are adding this device to an existing synchronisation setup.", + es: "Estás añadiendo este dispositivo a una configuración de sincronización existente.", zh: "你正在将此设备加入已有同步配置。", }, "Ui.SetupWizard.SelectExisting.ManualOption": { def: "Configure a remote manually", + es: "Configurar un remoto manualmente", zh: "手动输入服务器信息", }, "Ui.SetupWizard.SelectExisting.ManualOptionDesc": { def: "Configure the same remote as your other devices again manually. This is intended only for advanced users.", + es: "Vuelve a configurar manualmente el mismo remoto que en tus otros dispositivos. Está pensado solo para usuarios avanzados.", zh: "手动重新配置与你其他设备相同的服务器信息。此方式仅适用于高级用户。", }, "Ui.SetupWizard.SelectExisting.ProceedManual": { def: "Proceed with manual configuration", + es: "Continuar con la configuración manual", zh: "我知道服务器信息,让我手动输入", }, "Ui.SetupWizard.SelectExisting.ProceedQr": { def: "Scan the QR code displayed on an active device using this device's camera.", + es: "Escanea con la cámara de este dispositivo el código QR mostrado en un dispositivo activo.", zh: "使用本设备摄像头扫描活动设备上显示的二维码", }, "Ui.SetupWizard.SelectExisting.ProceedSetupUri": { def: "Proceed with Setup URI", + es: "Continuar con el Setup URI", zh: "使用 Setup URI 继续", }, "Ui.SetupWizard.SelectExisting.QrOption": { def: "Scan a QR Code (Recommended for mobile)", + es: "Escanear un código QR (recomendado en móvil)", zh: "扫描二维码(移动端推荐)", }, "Ui.SetupWizard.SelectExisting.QrOptionDesc": { def: "Scan the QR code displayed on an active device using this device's camera.", + es: "Escanea con la cámara de este dispositivo el código QR mostrado en un dispositivo activo.", zh: "使用本设备摄像头扫描活动设备上显示的二维码。", }, "Ui.SetupWizard.SelectExisting.Question": { def: "Please select a method to import the settings from another device.", + es: "Selecciona un método para importar los ajustes desde otro dispositivo.", zh: "请选择一种从其他设备导入设置的方法。", }, "Ui.SetupWizard.SelectExisting.SetupUriOption": { def: "Use a Setup URI (Recommended)", + es: "Usar un Setup URI (recomendado)", zh: "使用 Setup URI(推荐)", }, "Ui.SetupWizard.SelectExisting.SetupUriOptionDesc": { def: "Paste the Setup URI generated from one of your active devices.", + es: "Pega el Setup URI generado en uno de tus dispositivos activos.", zh: "粘贴从某台已启用设备生成的 Setup URI。", }, "Ui.SetupWizard.SelectExisting.Title": { def: "Device Setup Method", + es: "Método de configuración del dispositivo", zh: "设备设置方式", }, "Ui.SetupWizard.SelectNew.Guidance": { def: "We will now configure the synchronisation connection.", + es: "Vamos a configurar la conexión de sincronización.", zh: "接下来将继续配置服务器连接信息。", }, "Ui.SetupWizard.SelectNew.ManualOption": { def: "Configure a remote manually", + es: "Configurar un remoto manualmente", zh: "手动输入服务器信息", }, "Ui.SetupWizard.SelectNew.ManualOptionDesc": { def: "This is an advanced option for users who do not have a Setup URI or who want to configure detailed settings. You can also use it for P2P synchronisation instead of CouchDB or S3-compatible Object Storage.", + es: "Es una opción avanzada para quienes no tienen un Setup URI o quieren ajustar la configuración en detalle. También puedes usarla para la sincronización P2P en lugar de CouchDB o de un almacenamiento de objetos compatible con S3.", zh: "如果你没有 Setup URI,或希望自行配置更详细的参数,可选择此高级选项。", }, "Ui.SetupWizard.SelectNew.ProceedManual": { def: "Proceed with manual configuration", + es: "Continuar con la configuración manual", zh: "我知道服务器信息,让我手动输入", }, "Ui.SetupWizard.SelectNew.ProceedSetupUri": { def: "Proceed with Setup URI", + es: "Continuar con el Setup URI", zh: "使用 Setup URI 继续", }, "Ui.SetupWizard.SelectNew.Question": { def: "How would you like to configure this synchronisation connection?", + es: "¿Cómo quieres configurar esta conexión de sincronización?", zh: "你希望如何配置服务器连接?", }, "Ui.SetupWizard.SelectNew.SetupUriOption": { def: "Use a Setup URI (Recommended)", + es: "Usar un Setup URI (recomendado)", zh: "使用 Setup URI(推荐)", }, "Ui.SetupWizard.SelectNew.SetupUriOptionDesc": { def: "A Setup URI is a single string containing connection and authentication details. When one is available from a setup script, it provides a simple and secure configuration method.", + es: "Un Setup URI es una única cadena que contiene los datos de conexión y autenticación. Cuando un script de instalación te proporciona uno, es la forma más sencilla y segura de configurarlo.", zh: "Setup URI 是一段包含服务器地址和认证信息的文本。如果你的服务器安装脚本已经生成了它,这是最简单且安全的配置方式。", }, "Ui.SetupWizard.SelectNew.Title": { def: "Connection Method", + es: "Método de conexión", zh: "连接方式", }, "Ui.SetupWizard.SetupRemote.BucketOption": { def: "S3-compatible Object Storage", + es: "Almacenamiento de objetos compatible con S3", zh: "S3/MinIO/R2 对象存储", }, "Ui.SetupWizard.SetupRemote.BucketOptionDesc": { def: "Synchronisation using journal files. You must already have an S3-compatible Object Storage service set up, such as Amazon S3, MinIO, or Cloudflare R2.", + es: "Sincronización mediante archivos de diario. Necesitas tener ya un servicio de almacenamiento de objetos compatible con S3, como Amazon S3, MinIO o Cloudflare R2.", zh: "使用日志文件进行同步。你需要先准备好兼容 S3/MinIO/R2 的对象存储服务。", }, "Ui.SetupWizard.SetupRemote.CouchDbOptionDesc": { def: "This is the most suitable synchronisation method for the current design. All features are available. You must already have a CouchDB instance set up.", + es: "Es el método de sincronización más adecuado para el diseño actual y ofrece todas las funciones. Necesitas tener ya una instancia de CouchDB en marcha.", zh: "这是当前设计下最适合的同步方式,所有功能都可用。你需要先准备好 CouchDB 实例。", }, "Ui.SetupWizard.SetupRemote.Guidance": { def: "Select the remote type for this synchronisation setup.", + es: "Selecciona el tipo de remoto para esta configuración de sincronización.", zh: "请选择你要连接的服务器类型。", }, "Ui.SetupWizard.SetupRemote.P2POption": { def: "Peer-to-Peer (P2P)", + es: "Punto a punto (P2P)", zh: "仅点对点", }, "Ui.SetupWizard.SetupRemote.P2POptionDesc": { def: "This enables direct synchronisation between devices. No server is required, but both devices must be online at the same time and some features may be limited. Internet connectivity is required only for signalling, not for data transfer.", + es: "Permite la sincronización directa entre dispositivos. No hace falta servidor, pero ambos dispositivos deben estar conectados a la vez y algunas funciones pueden estar limitadas. Solo se necesita internet para la señalización, no para transferir los datos.", zh: "启用设备之间的直接同步。无需服务器,但两台设备必须同时在线,且部分功能可能受限。互联网连接仅用于信令,不用于传输数据。", }, "Ui.SetupWizard.SetupRemote.ProceedBucket": { def: "Continue to Object Storage setup", + es: "Continuar con la configuración del almacenamiento de objetos", zh: "继续配置 S3/MinIO/R2", }, "Ui.SetupWizard.SetupRemote.ProceedCouchDb": { def: "Continue to CouchDB setup", + es: "Continuar con la configuración de CouchDB", zh: "继续配置 CouchDB", }, "Ui.SetupWizard.SetupRemote.ProceedP2P": { def: "Continue to P2P setup", + es: "Continuar con la configuración de P2P", zh: "继续配置仅点对点模式", }, "Ui.SetupWizard.SetupRemote.Title": { def: "Choose a synchronisation remote", + es: "Elige un remoto de sincronización", zh: "输入服务器信息", }, "Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": { diff --git a/src/common/messagesJson/es.json b/src/common/messagesJson/es.json index e266da80..5b6275a0 100644 --- a/src/common/messagesJson/es.json +++ b/src/common/messagesJson/es.json @@ -12,12 +12,18 @@ "(RegExp) If this is set, any changes to local and remote files that match this will be skipped.": "(RegExp) Si se establece, se omitirá cualquier cambio en archivos locales y remotos que coincida con este patrón.", "(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": "(Seleccione esto si ya utiliza la sincronización en otro ordenador o teléfono). Esta opción es adecuada si desea añadir este dispositivo a una configuración de LiveSync existente。", "(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": "(Seleccione esto si está configurando este dispositivo como el primer dispositivo de sincronización). Esta opción es adecuada si es nuevo en LiveSync y desea configurarlo desde cero。", + "> [!INFO]- The connected devices have been detected as follows:\n${devices}": "> [!INFO]- Se han detectado los siguientes dispositivos conectados:\n${devices}", "A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.": "Un URI de configuración es una única cadena de texto que contiene la dirección del servidor y los datos de autenticación. Si el script de instalación de su servidor generó un URI, usarlo proporciona una configuración sencilla y segura。", "Access Key": "Clave de acceso", "Activate": "Activar", + "Active Remote Configuration": "Configuración remota activa", "Add default patterns": "Añadir patrones predeterminados", "Add new connection": "Añadir conexión", + "All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": "Todos los dispositivos tienen el mismo valor de progreso (${progress}). Parece que están sincronizados, por lo que se puede continuar con la recolección de basura.", "Always prompt merge conflicts": "Siempre preguntar en conflictos", + "Analyse": "Analizar", + "Analyse database usage": "Analizar el uso de la base de datos", + "Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.": "Analiza el uso de la base de datos y genera un informe TSV para que puedas diagnosticarlo tú mismo. Puedes pegar el informe generado en la hoja de cálculo que prefieras.", "Apply Latest Change if Conflicting": "Aplicar último cambio en conflictos", "Apply preset configuration": "Aplicar configuración predefinida", "Ask a passphrase at every launch": "Solicitar la frase de contraseña en cada inicio", @@ -31,10 +37,17 @@ "Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding. Please disable this toggle when you have enough time. If leave it enabled, also while fetching from the remote database, you will be asked to disable this.": "Antes de v0.17.16 usábamos adaptador antiguo. Nuevo adaptador requiere reconstruir BD local. Desactive cuando pueda", "Bucket Name": "Nombre del bucket", "Cancel": "Cancelar", + "Cancel Garbage Collection": "Cancelar la recolección de basura", + "Changing this setting requires migrating existing data (a bit time may be taken) and restarting Obsidian. Please make sure to back up your data before proceeding.": "Cambiar este ajuste requiere migrar los datos existentes (puede tardar un poco) y reiniciar Obsidian. Asegúrate de hacer una copia de seguridad de tus datos antes de continuar.", + "Check": "Comprobar", "Check and convert non-path-obfuscated files": "Comprobar y convertir archivos sin ofuscación de ruta", "Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.": "Comprueba los documentos que aún no se hayan convertido a identificadores con ruta ofuscada y conviértelos si es necesario.", "cmdConfigSync.showCustomizationSync": "Mostrar sincronización de personalización", "Comma separated `.gitignore, .dockerignore`": "Separados por comas: `.gitignore, .dockerignore`", + "Compaction in progress on remote database...": "Compactación en curso en la base de datos remota...", + "Compaction on remote database completed successfully.": "La compactación de la base de datos remota se ha completado correctamente.", + "Compaction on remote database failed.": "La compactación de la base de datos remota ha fallado.", + "Compaction on remote database timed out.": "La compactación de la base de datos remota ha superado el tiempo de espera.", "Compare the content of files between on local database and storage. If not matched, you will be asked which one you want to keep.": "Compara el contenido de los archivos entre la base de datos local y el almacenamiento. Si no coinciden, se te preguntará cuál deseas conservar.", "Compatibility (Conflict Behaviour)": "Compatibilidad (comportamiento de conflictos)", "Compatibility (Database structure)": "Compatibilidad (estructura de la base de datos)", @@ -42,6 +55,7 @@ "Compatibility (Metadata)": "Compatibilidad (metadatos)", "Compatibility (Remote Database)": "Compatibilidad (base de datos remota)", "Compatibility (Trouble addressed)": "Compatibilidad (problemas corregidos)", + "Compute revisions for chunks": "Calcular revisiones para los chunks", "Compute revisions for chunks (Previous behaviour)": "Calcular revisiones para chunks (comportamiento anterior)", "Configuration Encryption": "Cifrado de configuración", "Configure": "Configurar", @@ -54,12 +68,14 @@ "Continue to Peer-to-Peer only setup": "Continuar con la configuración solo Peer-to-Peer", "Continue to S3/MinIO/R2 setup": "Continuar con la configuración de S3/MinIO/R2", "Copy": "Copiar", + "Copy Report to clipboard": "Copiar el informe al portapapeles", "CouchDB Connection Tweak": "Ajustes de conexión de CouchDB", "Cross-platform": "Multiplataforma", "Current adapter: {adapter}": "Adaptador actual: {adapter}", "Customization Sync": "Sincronización de personalización", "Customization Sync (Beta3)": "Sincronización de personalización (Beta3)", "Data Compression": "Compresión de datos", + "Database -> Storage": "Base de datos -> Almacenamiento", "Database Adapter": "Adaptador de base de datos", "Database Name": "Nombre de la base de datos", "Database suffix": "Sufijo de base de datos", @@ -75,8 +91,12 @@ "Delete remote configuration '{name}'?": "¿Eliminar la configuración remota '{name}'?", "desktop": "equipo de escritorio", "Developer": "Desarrollador", + "Device": "Dispositivo", "Device name": "Nombre del dispositivo", "Device Setup Method": "Método de configuración del dispositivo", + "dialog.yourLanguageAvailable": "Self-hosted LiveSync tenía traducciones para tu idioma, así que se ha activado el ajuste %{Display language}.\n\nNota: no todos los mensajes están traducidos. ¡Esperamos tus contribuciones!\nNota 2: si abres una incidencia, **vuelve antes a %{lang-def}** y luego haz las capturas de pantalla y recoge los mensajes y registros. Puedes hacerlo desde el diálogo de ajustes.\n¡Que lo disfrutes!", + "dialog.yourLanguageAvailable.btnRevertToDefault": "Mantener %{lang-def}", + "dialog.yourLanguageAvailable.Title": " ¡Hay traducción disponible!", "Disables all synchronization and restart.": "Desactiva toda la sincronización y reinicia la aplicación.", "Disables logging, only shows notifications. Please disable if you report an issue.": "Desactiva registros, solo muestra notificaciones. Desactívelo si reporta un problema.", "Display Language": "Idioma de visualización", @@ -85,6 +105,27 @@ "Do not keep metadata of deleted files.": "No conservar metadatos de archivos borrados", "Do not split chunks in the background": "No dividir chunks en segundo plano", "Do not use internal API": "No usar API interna", + "Doctor.Button.DismissThisVersion": "No, y no volver a preguntar hasta la próxima versión", + "Doctor.Button.Fix": "Corregirlo", + "Doctor.Button.FixButNoRebuild": "Corregirlo, pero sin reconstruir", + "Doctor.Button.No": "No", + "Doctor.Button.Skip": "Dejarlo como está", + "Doctor.Button.Yes": "Sí", + "Doctor.Dialogue.Main": "¡Hola! El Doctor de configuración se ha activado por ${activateReason}.\nPor desgracia, se han detectado algunos ajustes como posibles problemas.\nTranquilo: los resolveremos uno a uno.\n\nPara que lo sepas de antemano, te preguntaremos por los siguientes puntos.\n\n${issues}\n\n¿Empezamos?", + "Doctor.Dialogue.MainFix": "\n## ${name}\n\n| Actual | Ideal |\n|:---:|:---:|\n| ${current} | ${ideal} |\n\n**Nivel de recomendación:** ${level}\n\n### ¿Por qué se ha detectado?\n\n${reason}\n\n${note}\n\n¿Ajustarlo al valor ideal?", + "Doctor.Dialogue.Title": "Doctor de configuración de Self-hosted LiveSync", + "Doctor.Dialogue.TitleAlmostDone": "¡Casi hemos terminado!", + "Doctor.Dialogue.TitleFix": "Corregir el problema ${current}/${total}", + "Doctor.Level.Must": "Obligatorio", + "Doctor.Level.Necessary": "Necesario", + "Doctor.Level.Optional": "Opcional", + "Doctor.Level.Recommended": "Recomendado", + "Doctor.Message.NoIssues": "¡No se ha detectado ningún problema!", + "Doctor.Message.RebuildLocalRequired": "¡Atención! Hay que reconstruir la base de datos local para aplicar esto.", + "Doctor.Message.RebuildRequired": "¡Atención! Hay que reconstruir para aplicar esto.", + "Doctor.Message.SomeSkipped": "Hemos dejado algunos problemas sin resolver. ¿Quieres que te lo pregunte de nuevo en el próximo inicio?", + "Doctor.RULES.E2EE_V02500.REASON": "El cifrado de extremo a extremo es ahora más robusto y más rápido. Además, una nueva revisión del código reveló que el E2EE anterior estaba comprometido, por lo que conviene aplicarlo cuanto antes. Lamentamos de veras las molestias. Este ajuste no es compatible con versiones anteriores: todos los dispositivos sincronizados deben actualizarse a la v0.25.0 o superior. No es necesario reconstruir (los datos se convertirán al nuevo formato durante la transferencia), pero se recomienda hacerlo siempre que sea posible.", + "Document History": "Historial del documento", "Duplicate": "Duplicar", "Duplicate remote": "Duplicar remoto", "E2EE Configuration": "Configuración de E2EE", @@ -108,19 +149,32 @@ "Enter Server Information": "Introducir información del servidor", "Enter the server information manually": "Introducir manualmente la información del servidor", "Export": "Exportar", + "Failed to connect to remote for compaction.": "No se pudo conectar al remoto para la compactación.", + "Failed to connect to remote for compaction. ${reason}": "No se pudo conectar al remoto para la compactación. ${reason}", + "Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.": "No se pudo iniciar la replicación puntual previa a la recolección de basura. Recolección de basura cancelada.", + "Failed to start replication after Garbage Collection.": "No se pudo iniciar la replicación después de la recolección de basura.", "Fetch": "Obtener", "Fetch chunks on demand": "Obtener chunks bajo demanda", "Fetch database with previous behaviour": "Obtener BD con comportamiento anterior", "Fetch remote settings": "Obtener ajustes remotos", "File to resolve conflict": "Archivo para resolver el conflicto", + "File to view History": "Archivo cuyo historial se va a ver", "Filename": "Nombre de archivo", "First, please select the option that best describes your current situation.": "Primero, seleccione la opción que describa mejor su situación actual。", "Flag and restart": "Marcar y reiniciar", "Forces the file to be synced when opened.": "Forzar sincronización al abrir archivo", "Fresh Start Wipe": "Borrado para reinicio completo", + "Garbage Collection cancelled by user.": "Recolección de basura cancelada por el usuario.", + "Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": "Recolección de basura completada. Chunks eliminados: ${deletedChunks} / ${totalChunks}. Tiempo empleado: ${seconds} segundos.", + "Garbage Collection Confirmation": "Confirmación de la recolección de basura", "Garbage Collection V3 (Beta)": "Recolección de basura V3 (Beta)", + "Garbage Collection: Found ${unusedChunks} unused chunks to delete.": "Recolección de basura: se han encontrado ${unusedChunks} chunks sin usar para eliminar.", + "Garbage Collection: Scanned ${scanned} / ~${docCount}": "Recolección de basura: analizados ${scanned} / ~${docCount}", + "Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": "Recolección de basura: análisis completado. Chunks totales: ${totalChunks}, chunks en uso: ${usedChunks}", "Handle files as Case-Sensitive": "Manejar archivos como sensibles a mayúsculas", "Hidden Files": "Archivos ocultos", + "Hide completely": "Ocultar por completo", + "Highlight diff": "Resaltar las diferencias", "How to display network errors when the sync server is unreachable.": "Cómo mostrar los errores de red cuando el servidor de sincronización no está disponible.", "How would you like to configure the connection to your server?": "¿Cómo desea configurar la conexión con su servidor?", "I am adding a device to an existing synchronisation setup": "Estoy agregando un dispositivo a una configuración de sincronización existente", @@ -138,17 +192,32 @@ "If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.": "Divide chunks en segmentos semánticos. No todos los sistemas lo soportan", "If this is set, changes to local files which are matched by the ignore files will be skipped. Remote changes are determined using local ignore files.": "Saltar cambios en archivos locales que coincidan con ignore files. Cambios remotos usan ignore files locales", "If this option is enabled, PouchDB will hold the connection open for 60 seconds, and if no change arrives in that time, close and reopen the socket, instead of holding it open indefinitely. Useful when a proxy limits request duration but can increase resource usage.": "Mantiene conexión 60s. Si no hay cambios, reinicia socket. Útil con proxies limitantes", + "If you reached the payload size limit when using IBM Cloudant, please decrease batch size and batch limit to a lower value.": "Si alcanzas el límite de tamaño de carga al usar IBM Cloudant, reduce el tamaño de lote y el límite de lote.", + "Ignore and Proceed": "Ignorar y continuar", "Ignore files": "Archivos a ignorar", "Ignore patterns": "Patrones de exclusión", "Import connection": "Importar conexión", "Incubate Chunks in Document": "Incubar chunks en documento", "Initialise all journal history, On the next sync, every item will be received and sent.": "Restablece todo el historial del diario. En la próxima sincronización se recibirán y enviarán todos los elementos.", + "Initialise journal received history. On the next sync, every item except this device sent will be downloaded again.": "Inicializa el historial de recepción del diario. En la próxima sincronización se volverán a descargar todos los elementos salvo los enviados por este dispositivo.", + "Initialise journal sent history. On the next sync, every item except this device received will be sent again.": "Inicializa el historial de envío del diario. En la próxima sincronización se volverán a enviar todos los elementos salvo los recibidos por este dispositivo.", "Interval (sec)": "Intervalo (segundos)", + "K.exp": "Experimental", + "K.long_p2p_sync": "%{title_p2p_sync}", + "K.P2P": "%{Peer} a %{Peer}", + "K.Peer": "par", + "K.ScanCustomization": "Buscar personalizaciones", + "K.short_p2p_sync": "Sincronización P2P", + "K.title_p2p_sync": "Sincronización punto a punto", "Keep empty folder": "Mantener carpetas vacías", + "lang_def": "Predeterminado", "lang-de": "Alemán", + "lang-def": "%{lang_def}", "lang-es": "Español", "lang-fr": "Français", + "lang-he": "Hebreo", "lang-ja": "Japonés", + "lang-ko": "Coreano", "lang-ru": "Ruso", "lang-zh": "Chino simplificado", "lang-zh-tw": "Chino tradicional", @@ -158,7 +227,7 @@ "liveSyncReplicator.beforeLiveSync": "Antes de LiveSync, inicia OneShot...", "liveSyncReplicator.cantReplicateLowerValue": "No podemos replicar un valor más bajo.", "liveSyncReplicator.checkingLastSyncPoint": "Buscando el último punto sincronizado.", - "liveSyncReplicator.couldNotConnectTo": "No se pudo conectar a ${uri} : ${name} \n(${db})", + "liveSyncReplicator.couldNotConnectTo": "No se pudo conectar a ${uri} : ${name}\n(${db})", "liveSyncReplicator.couldNotConnectToRemoteDb": "No se pudo conectar a base de datos remota: ${d}", "liveSyncReplicator.couldNotConnectToServer": "No se pudo conectar al servidor.", "liveSyncReplicator.couldNotConnectToURI": "No se pudo conectar a ${uri}:${dbRet}", @@ -166,6 +235,7 @@ "liveSyncReplicator.liveSyncBegin": "Inicio de LiveSync...", "liveSyncReplicator.lockRemoteDb": "Bloquear base de datos remota para prevenir corrupción de datos", "liveSyncReplicator.markDeviceResolved": "Marcar este dispositivo como 'resuelto'.", + "liveSyncReplicator.mismatchedTweakDetected": "Se han detectado discrepancias en la configuración entre dispositivos. Ejecutar una replicación manual intentará resolverlo.", "liveSyncReplicator.oneShotSyncBegin": "Inicio de sincronización OneShot... (${syncMode})", "liveSyncReplicator.remoteDbCorrupted": "La base de datos remota es más nueva o está dañada, asegúrese de tener la última versión de self-hosted-livesync instalada", "liveSyncReplicator.remoteDbCreatedOrConnected": "Base de datos remota creada o conectada", @@ -200,6 +270,7 @@ "Memory cache size (by total items)": "Tamaño caché memoria (por ítems)", "Merge": "Fusionar", "Minimum delay for batch database updating": "Retraso mínimo para actualización por lotes", + "Minimum interval for syncing": "Intervalo mínimo de sincronización", "moduleCheckRemoteSize.logCheckingStorageSizes": "Comprobando tamaños de almacenamiento", "moduleCheckRemoteSize.logCurrentStorageSize": "Tamaño del almacenamiento remoto: ${measuredSize}", "moduleCheckRemoteSize.logExceededWarning": "Tamaño del almacenamiento remoto: ${measuredSize} superó ${notifySize}", @@ -207,6 +278,8 @@ "moduleCheckRemoteSize.msgConfirmRebuild": "Esto puede llevar un poco de tiempo. ¿Realmente quieres reconstruir todo ahora?", "moduleCheckRemoteSize.msgDatabaseGrowing": "**¡Tu base de datos está creciendo!** Pero no te preocupes, podemos abordarlo ahora. El tiempo antes de quedarse sin espacio en el almacenamiento remoto.\n\n| Tamaño medido | Tamaño configurado |\n| --- | --- |\n| ${estimatedSize} | ${maxSize} |\n\n> [!MORE]-\n> Si lo has estado utilizando durante muchos años, puede haber fragmentos no referenciados - es decir, basura - acumulándose en la base de datos. Por lo tanto, recomendamos reconstruir todo. Probablemente se volverá mucho más pequeño.\n>\n> Si el volumen de tu bóveda simplemente está aumentando, es mejor reconstruir todo después de organizar los archivos. Self-hosted LiveSync no elimina los datos reales incluso si los eliminas para acelerar el proceso. Está aproximadamente [documentado](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md).\n>\n> Si no te importa el aumento, puedes aumentar el límite de notificación en 100 MB. Este es el caso si lo estás ejecutando en tu propio servidor. Sin embargo, es mejor reconstruir todo de vez en cuando.\n>\n\n> [!WARNING]\n> Si realizas la reconstrucción completa, asegúrate de que todos los dispositivos estén sincronizados. El complemento fusionará tanto como sea posible, sin embargo.\n", "moduleCheckRemoteSize.msgSetDBCapacity": "Podemos configurar una advertencia de capacidad máxima de base de datos, **para tomar medidas antes de quedarse sin espacio en el almacenamiento remoto**.\n¿Quieres habilitar esto?\n\n> [!MORE]-\n> - 0: No advertir sobre el tamaño del almacenamiento.\n> Esto es recomendado si tienes suficiente espacio en el almacenamiento remoto, especialmente si lo tienes autoalojado. Y puedes comprobar el tamaño del almacenamiento y reconstruir manualmente.\n> - 800: Advertir si el tamaño del almacenamiento remoto supera los 800 MB.\n> Esto es recomendado si estás usando fly.io con un límite de 1 GB o IBM Cloudant.\n> - 2000: Advertir si el tamaño del almacenamiento remoto supera los 2 GB.\n\nSi hemos alcanzado el límite, se nos pedirá que aumentemos el límite paso a paso.\n", + "moduleCheckRemoteSize.noticeExceeded": "El tamaño del almacenamiento remoto es de ${measuredSize}, por encima del umbral de aviso configurado de ${notifySize}. {HERE}", + "moduleCheckRemoteSize.noticeNotConfigured": "Los avisos sobre el tamaño del almacenamiento remoto no están configurados. {HERE}", "moduleCheckRemoteSize.option2GB": "2GB (Estándar)", "moduleCheckRemoteSize.option800MB": "800MB (Cloudant, fly.io)", "moduleCheckRemoteSize.optionAskMeLater": "Pregúntame más tarde", @@ -214,6 +287,7 @@ "moduleCheckRemoteSize.optionIncreaseLimit": "aumentar a ${newMax}MB", "moduleCheckRemoteSize.optionNoWarn": "No, nunca advertir por favor", "moduleCheckRemoteSize.optionRebuildAll": "Reconstruir todo ahora", + "moduleCheckRemoteSize.optionReview": "Revisar las opciones", "moduleCheckRemoteSize.titleDatabaseSizeLimitExceeded": "El tamaño del almacenamiento remoto superó el límite", "moduleCheckRemoteSize.titleDatabaseSizeNotify": "Configuración de notificación de tamaño de base de datos", "moduleInputUIObsidian.defaultTitleConfirmation": "Confirmación", @@ -236,6 +310,18 @@ "moduleLocalDatabase.logWaitingForReady": "Esperando a que la base de datos esté lista...", "moduleLog.showLog": "Mostrar registro", "moduleMigration.docUri": "https://github.com/vrtmrz/obsidian-livesync/blob/main/README_ES.md#how-to-use", + "moduleMigration.fix0256.buttons.checkItLater": "Comprobarlo más tarde", + "moduleMigration.fix0256.buttons.DismissForever": "Ya lo he corregido, no volver a preguntar", + "moduleMigration.fix0256.buttons.fix": "Corregir", + "moduleMigration.fix0256.message": "Debido a un error reciente (en la v0.25.6), puede que algunos archivos no se hayan guardado correctamente en la base de datos de sincronización.\nHemos analizado tus archivos y hemos encontrado algunos que hay que corregir.\n\n**Archivos que se pueden corregir:**\n\n${files}\n\nEstos archivos tienen en el almacenamiento un original cuyo tamaño coincide, por lo que es probable que se puedan recuperar.\nPodemos usarlos para corregir la base de datos: pulsa el botón «Corregir» de abajo.\n\n${messageUnrecoverable}\n\nSi quieres volver a ejecutarlo, puedes hacerlo desde Hatch.\n", + "moduleMigration.fix0256.messageUnrecoverable": "**Archivos que no se pueden corregir en este dispositivo:**\n\n${filesNotRecoverable}\n\nEstos archivos tienen metadatos inconsistentes y no se pueden corregir en este dispositivo (por lo general no podemos determinar cuál es el correcto).\nPara restaurarlos, comprueba tus otros dispositivos (también con esta función) o restáuralos manualmente desde una copia de seguridad.\n", + "moduleMigration.fix0256.title": "Se han detectado archivos dañados", + "moduleMigration.insecureChunkExist.buttons.fetch": "Ya he reconstruido el remoto. Obtener desde el remoto", + "moduleMigration.insecureChunkExist.buttons.later": "Lo haré más tarde", + "moduleMigration.insecureChunkExist.buttons.rebuild": "Reconstruir todo", + "moduleMigration.insecureChunkExist.laterMessage": "¡Te recomendamos encarecidamente solucionarlo cuanto antes!", + "moduleMigration.insecureChunkExist.message": "Algunos chunks no se almacenan de forma segura y no están cifrados en las bases de datos.\n**Reconstruye la base de datos para solucionarlo**.\n\nSi tu base de datos remota no está configurada con SSL o usa credenciales poco seguras, **corres el riesgo de exponer datos sensibles**.\n\nNota: actualiza Self-hosted LiveSync a la v0.25.6 o superior en todos tus dispositivos y haz una copia de seguridad fiable de tu vault.\nNota 2: reconstruir todo y obtener los datos consume algo de tiempo y de tráfico; hazlo en horas de poco uso y con una conexión de red estable.\n", + "moduleMigration.insecureChunkExist.title": "¡Se han encontrado chunks no seguros!", "moduleMigration.logBulkSendCorrupted": "El envío de fragmentos en bloque se ha habilitado, sin embargo, esta función se ha corrompido. Disculpe las molestias. Deshabilitado automáticamente.", "moduleMigration.logFetchRemoteTweakFailed": "Error al obtener los valores de ajuste remoto", "moduleMigration.logLocalDatabaseNotReady": "¡Algo salió mal! La base de datos local no está lista", @@ -257,13 +343,24 @@ "moduleMigration.optionKeepPreviousBehaviour": "Mantener comportamiento anterior", "moduleMigration.optionManualSetup": "Configurarlo todo manualmente", "moduleMigration.optionNoAskAgain": "No, por favor pregúntame de nuevo", + "moduleMigration.optionNoSetupUri": "No, no tengo", + "moduleMigration.optionRemindNextLaunch": "Recordármelo en el próximo inicio", + "moduleMigration.optionSetupViaP2P": "Usar %{short_p2p_sync} para configurarlo", + "moduleMigration.optionSetupWizard": "Llévame al asistente de configuración", + "moduleMigration.optionYesFetchAgain": "Sí, obtener de nuevo", + "moduleMigration.titleCaseSensitivity": "Distinción de mayúsculas y minúsculas", + "moduleMigration.titleRecommendSetupUri": "Recomendación de usar un Setup URI", + "moduleMigration.titleWelcome": "Bienvenido a Self-hosted LiveSync", "moduleObsidianMenu.replicate": "Replicar", "More actions": "Más acciones", "Move remotely deleted files to the trash, instead of deleting.": "Mover archivos borrados remotos a papelera en lugar de eliminarlos", "Network warning style": "Estilo de advertencia de red", "New Remote": "Nuevo remoto", + "No connected device information found. Cancelling Garbage Collection.": "No se ha encontrado información de dispositivos conectados. Se cancela la recolección de basura.", "No limit configured": "Sin límite configurado", "No, please take me back": "No, volver atrás", + "Node ID": "ID de nodo", + "Node Information Missing": "Falta la información del nodo", "Non-Synchronising files": "Archivos no sincronizados", "Normal Files": "Archivos normales", "Not all messages have been translated. And, please revert to \"Default\" when reporting errors.": "No todos los mensajes están traducidos. Por favor, vuelva a \"Predeterminado\" al reportar errores.", @@ -273,6 +370,7 @@ "Notify when the estimated remote storage size exceeds on start up": "Notificar cuando el tamaño estimado del almacenamiento remoto exceda al iniciar", "Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time.": "Número de lotes a procesar. Default 40, mínimo 2. Controla documentos en memoria", "Number of changes to sync at a time. Defaults to 50. Minimum is 2.": "Número de cambios a sincronizar simultáneamente. Default 50, mínimo 2", + "Obsidian version": "Versión de Obsidian", "obsidianLiveSyncSettingTab.btnApply": "Aplicar", "obsidianLiveSyncSettingTab.btnCheck": "Verificar", "obsidianLiveSyncSettingTab.btnCopy": "Copiar", @@ -301,6 +399,7 @@ "obsidianLiveSyncSettingTab.errCorsNotAllowingCredentials": "CORS no permite credenciales", "obsidianLiveSyncSettingTab.errCorsOrigins": "❗ cors.origins es incorrecto", "obsidianLiveSyncSettingTab.errEnableCors": "❗ httpd.enable_cors es incorrecto", + "obsidianLiveSyncSettingTab.errEnableCorsChttpd": "❗ chttpd.enable_cors es incorrecto", "obsidianLiveSyncSettingTab.errMaxDocumentSize": "❗ couchdb.max_document_size es bajo)", "obsidianLiveSyncSettingTab.errMaxRequestSize": "❗ chttpd.max_http_request_size es bajo)", "obsidianLiveSyncSettingTab.errMissingWwwAuth": "❗ httpd.WWW-Authenticate falta", @@ -319,7 +418,7 @@ "obsidianLiveSyncSettingTab.logCheckingConfigDone": "Verificación de configuración completada", "obsidianLiveSyncSettingTab.logCheckingConfigFailed": "La verificación de configuración falló", "obsidianLiveSyncSettingTab.logCheckingDbConfig": "Verificando la configuración de la base de datos", - "obsidianLiveSyncSettingTab.logCheckPassphraseFailed": "ERROR: Error al comprobar la frase de contraseña con el servidor remoto: \n${db}.", + "obsidianLiveSyncSettingTab.logCheckPassphraseFailed": "ERROR: Error al comprobar la frase de contraseña con el servidor remoto:\n${db}.", "obsidianLiveSyncSettingTab.logConfiguredDisabled": "Modo de sincronización configurado: DESACTIVADO", "obsidianLiveSyncSettingTab.logConfiguredLiveSync": "Modo de sincronización configurado: Sincronización en Vivo", "obsidianLiveSyncSettingTab.logConfiguredPeriodic": "Modo de sincronización configurado: Periódico", @@ -345,6 +444,7 @@ "obsidianLiveSyncSettingTab.msgDiscardConfirmation": "¿Realmente deseas descartar las configuraciones y bases de datos existentes?", "obsidianLiveSyncSettingTab.msgDone": "--Hecho--", "obsidianLiveSyncSettingTab.msgEnableCors": "Configurar httpd.enable_cors", + "obsidianLiveSyncSettingTab.msgEnableCorsChttpd": "Establecer chttpd.enable_cors", "obsidianLiveSyncSettingTab.msgEnableEncryptionRecommendation": "Recomendamos habilitar el cifrado de extremo a extremo y la obfuscación de ruta. ¿Estás seguro de querer continuar sin cifrado?", "obsidianLiveSyncSettingTab.msgFetchConfigFromRemote": "¿Quieres obtener la configuración del servidor remoto?", "obsidianLiveSyncSettingTab.msgGenerateSetupURI": "¡Todo listo! ¿Quieres generar un URI de configuración para configurar otros dispositivos?", @@ -385,6 +485,7 @@ "obsidianLiveSyncSettingTab.okCorsOriginMatched": "✔ Origen de CORS correcto", "obsidianLiveSyncSettingTab.okCorsOrigins": "✔ cors.origins está correcto.", "obsidianLiveSyncSettingTab.okEnableCors": "✔ httpd.enable_cors está correcto.", + "obsidianLiveSyncSettingTab.okEnableCorsChttpd": "✔ chttpd.enable_cors es correcto.", "obsidianLiveSyncSettingTab.okMaxDocumentSize": "✔ couchdb.max_document_size está correcto.", "obsidianLiveSyncSettingTab.okMaxRequestSize": "✔ chttpd.max_http_request_size está correcto.", "obsidianLiveSyncSettingTab.okRequireValidUser": "✔ chttpd.require_valid_user está correcto.", @@ -409,6 +510,8 @@ "obsidianLiveSyncSettingTab.panelPrivacyEncryption": "Privacidad y Cifrado", "obsidianLiveSyncSettingTab.panelRemoteConfiguration": "Configuración remota", "obsidianLiveSyncSettingTab.panelSetup": "Configuración", + "obsidianLiveSyncSettingTab.serverVersion": "Información del servidor: ${info}", + "obsidianLiveSyncSettingTab.titleActiveRemoteServer": "Servidor remoto activo", "obsidianLiveSyncSettingTab.titleAppearance": "Apariencia", "obsidianLiveSyncSettingTab.titleConflictResolution": "Resolución de conflictos", "obsidianLiveSyncSettingTab.titleCongratulations": "¡Felicidades!", @@ -448,6 +551,24 @@ "Overwrite remote": "Sobrescribir remoto", "Overwrite remote with local DB and passphrase.": "Sobrescribe el remoto con la base de datos local y la frase de contraseña.", "Overwrite Server Data with This Device's Files": "Sobrescribir los datos del servidor con los archivos de este dispositivo", + "P2P.AskPassphraseForDecrypt": "El par remoto ha compartido la configuración. Introduce la frase de contraseña para descifrarla.", + "P2P.AskPassphraseForShare": "El par remoto ha solicitado la configuración de este dispositivo. Introduce la frase de contraseña para compartirla. Puedes ignorar la solicitud cancelando este diálogo.", + "P2P.DisabledButNeed": "%{title_p2p_sync} está desactivada. ¿Seguro que quieres activarla?", + "P2P.FailedToOpen": "No se pudo abrir la conexión P2P con el servidor de señalización.", + "P2P.NoAutoSyncPeers": "No se han encontrado pares de sincronización automática. Configúralos en el panel de %{long_p2p_sync}.", + "P2P.NoKnownPeers": "No se ha detectado ningún par; esperando a que se conecten otros...", + "P2P.Note.description": " Este replicador permite sincronizar el vault con otros dispositivos\nmediante una conexión punto a punto. Así se puede sincronizar con nuestros otros dispositivos sin usar un servicio en la nube.\nEl replicador se basa en Trystero. Usa además un servidor de señalización para establecer la conexión entre dispositivos. Ese servidor sirve para intercambiar la información de conexión y no conoce (ni debería almacenar) ninguno de nuestros datos.\n\nCualquiera puede alojar el servidor de señalización: es simplemente un relé Nostr. Por comodidad y para poder comprobar el comportamiento del replicador, vrtmrz aloja una instancia. Puedes usar ese servidor experimental o cualquier otro.\n\nPor cierto, aunque el servidor de señalización no almacene nuestros datos, sí puede ver la información de conexión de algunos de nuestros dispositivos. Tenlo en cuenta y ten precaución al usar un servidor de terceros.", + "P2P.Note.important_note": "Replicador punto a punto.", + "P2P.Note.important_note_sub": "Esta función sigue siendo muy experimental. Asegúrate de tener una copia de seguridad de tus datos antes de usarla. Y nos alegraría mucho que quisieras contribuir a su desarrollo.", + "P2P.Note.Summary": "¿Qué es esta función? (incluye notas importantes; léelas al menos una vez)", + "P2P.NotEnabled": "%{title_p2p_sync} no está activada. No se puede abrir una conexión nueva.", + "P2P.P2PReplication": "Replicación %{P2P}", + "P2P.PaneTitle": "%{long_p2p_sync}", + "P2P.ReplicatorInstanceMissing": "No se encuentra el replicador de sincronización P2P; puede que no esté configurado o activado.", + "P2P.SeemsOffline": "El par ${name} parece estar desconectado; se omite.", + "P2P.SyncAlreadyRunning": "La sincronización P2P ya está en marcha.", + "P2P.SyncCompleted": "Sincronización P2P completada.", + "P2P.SyncStartedWith": "Se ha iniciado la sincronización P2P con ${name}.", "paneMaintenance.markDeviceResolvedAfterBackup": "Marcar el dispositivo como resuelto después de hacer una copia de seguridad", "paneMaintenance.remoteLockedAndDeviceNotAccepted": "La base de datos remota está bloqueada y este dispositivo aún no ha sido aceptado.", "paneMaintenance.remoteLockedResolvedDevice": "La base de datos remota está bloqueada, pero este dispositivo ya fue aceptado.", @@ -470,21 +591,43 @@ "Perform Garbage Collection to remove unused chunks and reduce database size.": "Ejecuta la recolección de basura para eliminar chunks no usados y reducir el tamaño de la base de datos.", "Periodic Sync interval": "Intervalo de sincronización periódica", "Pick a file to resolve conflict": "Elegir un archivo para resolver el conflicto", + "Pick a file to show history": "Elige un archivo para ver su historial", + "Please disable 'Read chunks online' in settings to use Garbage Collection.": "Desactiva «Leer chunks en línea» en los ajustes para poder usar la recolección de basura.", + "Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.": "Activa «Calcular revisiones para los chunks» en los ajustes para poder usar la recolección de basura.", + "Please select 'Cancel' explicitly to cancel this operation.": "Selecciona «Cancelar» de forma explícita para cancelar esta operación.", "Please select a method to import the settings from another device.": "Seleccione un método para importar la configuración desde otro dispositivo。", "Please select an option to proceed": "Seleccione una opción para continuar", "Please select the type of server to which you are connecting.": "Seleccione el tipo de servidor al que se está conectando。", "Please set device name to identify this device. This name should be unique among your devices. While not configured, we cannot enable this feature.": "Define un nombre para identificar este dispositivo. Debe ser único entre tus dispositivos. Mientras no esté configurado, no podremos habilitar esta función.", "Please set this device name": "Define el nombre de este dispositivo", + "Plug-in version": "Versión del complemento", + "Prepare the 'report' to create an issue": "Preparar el «informe» para abrir una incidencia", "Presets": "Preconfiguraciones", + "Proceed Garbage Collection": "Continuar con la recolección de basura", "Proceed with Setup URI": "Continuar con el URI de configuración", + "Proceeding with Garbage Collection, ignoring missing nodes.": "Se continúa con la recolección de basura, ignorando los nodos ausentes.", + "Proceeding with Garbage Collection.": "Se continúa con la recolección de basura.", "Process small files in the foreground": "Procesar archivos pequeños en primer plano", + "Progress": "Progreso", + "Property Encryption": "Cifrado de propiedades", "PureJS fallback (Fast, W/O WebAssembly)": "Alternativa PureJS (rápida, sin WebAssembly)", "Purge all download/upload cache.": "Purga toda la caché de descarga y carga.", "Purge all journal counter": "Purgar todos los contadores del diario", "Rebuild local and remote database with local files.": "Reconstruye la base de datos local y remota usando los archivos locales.", "Rebuilding Operations (Remote Only)": "Operaciones de reconstrucción (solo remoto)", + "Recovery and Repair": "Recuperación y reparación", "Recreate all": "Recrear todo", "Recreate missing chunks for all files": "Recrear fragmentos faltantes para todos los archivos", + "RedFlag.Fetch.Method.Desc": "¿Cómo quieres obtener los datos?\n- %{RedFlag.Fetch.Method.FetchSafer}.\n **Poco tráfico**, **mucha CPU**, **riesgo bajo**\n Recomendado si...\n - Los archivos podrían ser inconsistentes\n - No hay demasiados archivos\n- %{RedFlag.Fetch.Method.FetchSmoother}.\n **Poco tráfico**, **CPU moderada**, **riesgo bajo o moderado**\n Recomendado si...\n - Los archivos son probablemente consistentes\n - Tienes muchos archivos\n- %{RedFlag.Fetch.Method.FetchTraditional}.\n **Mucho tráfico**, **poca CPU**, **riesgo bajo o moderado**\n\n>[!INFO]- Detalles\n> ## %{RedFlag.Fetch.Method.FetchSafer}.\n> **Poco tráfico**, **mucha CPU**, **riesgo bajo**\n> Esta opción crea primero una base de datos local a partir de los archivos locales existentes antes de obtener los datos del remoto.\n> Si un archivo existe tanto en local como en remoto, solo se transferirán las diferencias.\n> Sin embargo, los archivos presentes en ambos sitios se tratarán inicialmente como archivos en conflicto. Se resolverán automáticamente si en realidad no lo están, pero el proceso puede tardar.\n> En general es el método más seguro y el que menos riesgo de pérdida de datos conlleva.\n> ## %{RedFlag.Fetch.Method.FetchSmoother}.\n> **Poco tráfico**, **CPU moderada**, **riesgo bajo o moderado** (según la operación)\n> Esta opción crea primero los chunks de los archivos locales para la base de datos y después obtiene los datos. Así solo se transfieren los chunks que faltan en local. Aun así, todos los metadatos se toman del remoto.\n> Al iniciar, los archivos locales se comparan con esos metadatos. El contenido considerado más reciente sobrescribirá al más antiguo (según la fecha de modificación) y el resultado se sincroniza de vuelta a la base de datos remota.\n> Es seguro si los archivos locales son realmente los de fecha más reciente, pero puede dar problemas si un archivo tiene una fecha más nueva y un contenido más antiguo (como el `welcome.md` inicial).\n> Usa menos CPU y es más rápido que «%{RedFlag.Fetch.Method.FetchSafer}», pero puede provocar pérdida de datos si no se usa con cuidado.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **Mucho tráfico**, **poca CPU**, **riesgo bajo o moderado** (según la operación)\n> Se obtiene todo del remoto.\n> Similar a %{RedFlag.Fetch.Method.FetchSmoother}, pero todos los chunks se descargan del remoto.\n> Es la forma más tradicional de obtener los datos y normalmente la que más tráfico y tiempo consume. Conlleva un riesgo de sobrescribir archivos remotos parecido al de «%{RedFlag.Fetch.Method.FetchSmoother}».\n> Aun así, suele considerarse el método más estable, por ser el más antiguo y directo.", + "RedFlag.Fetch.Method.FetchSafer": "Crear una base de datos local antes de obtener los datos", + "RedFlag.Fetch.Method.FetchSmoother": "Crear los chunks de los archivos locales antes de obtener los datos", + "RedFlag.Fetch.Method.FetchTraditional": "Obtener todo del remoto", + "RedFlag.Fetch.Method.Title": "¿Cómo quieres obtener los datos?", + "RedFlag.FetchRemoteConfig.Buttons.Cancel": "No, usar los ajustes locales", + "RedFlag.FetchRemoteConfig.Buttons.Fetch": "Sí, obtener y aplicar los ajustes remotos", + "RedFlag.FetchRemoteConfig.Message": "¿Quieres obtener y aplicar en este dispositivo los ajustes de preferencias guardados en el remoto?", + "RedFlag.FetchRemoteConfig.Title": "Obtener la configuración remota", + "Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.": "Reduce el espacio de almacenamiento descartando todas las revisiones que no sean la última. Requiere la misma cantidad de espacio libre en el servidor remoto y en el cliente local.", "Reducing the frequency with which on-disk changes are reflected into the DB": "Reducir frecuencia de actualizaciones de disco a BD", "Region": "Región", "Remediation": "Remediación", @@ -495,8 +638,23 @@ "Remote server type": "Tipo de servidor remoto", "Remote Type": "Tipo de remoto", "Rename": "Renombrar", + "Replicator.Dialogue.Locked.Action.Dismiss": "Cancelar para volver a confirmarlo", + "Replicator.Dialogue.Locked.Action.Fetch": "Restablecer la sincronización en este dispositivo", + "Replicator.Dialogue.Locked.Action.Unlock": "Desbloquear la base de datos remota", + "Replicator.Dialogue.Locked.Message": "La base de datos remota está bloqueada porque se ha reconstruido en uno de los dispositivos.\nPor eso se pide a este dispositivo que no se conecte, para evitar corromper la base de datos.\n\nHay tres opciones posibles:\n\n- %{Replicator.Dialogue.Locked.Action.Fetch}\n La más recomendable y fiable. Descarta la base de datos local y vuelve a tomar toda la información de sincronización del remoto. En la mayoría de los casos se puede hacer sin riesgo, aunque lleva algo de tiempo y conviene hacerlo con una red estable.\n- %{Replicator.Dialogue.Locked.Action.Unlock}\n Solo se puede usar si ya estamos sincronizados de forma fiable por otros métodos de replicación. Esto no significa simplemente tener los mismos archivos. Si no estás seguro, evítala.\n- %{Replicator.Dialogue.Locked.Action.Dismiss}\n Cancela la operación. Se volverá a preguntar en la próxima solicitud.\n", + "Replicator.Dialogue.Locked.Message.Fetch": "Se ha programado la obtención completa. El complemento se reiniciará para llevarla a cabo.", + "Replicator.Dialogue.Locked.Message.Unlocked": "La base de datos remota se ha desbloqueado. Vuelve a intentar la operación.", + "Replicator.Dialogue.Locked.Title": "Bloqueada", + "Replicator.Message.Cleaned": "Se está limpiando la base de datos; la replicación se ha cancelado", + "Replicator.Message.InitialiseFatalError": "No hay ningún replicador disponible; se trata de un error grave.", + "Replicator.Message.Pending": "Hay eventos de archivo pendientes. La replicación se ha cancelado.", + "Replicator.Message.SomeModuleFailed": "La replicación se ha cancelado por el fallo de algún módulo", + "Replicator.Message.VersionUpFlash": "Se ha detectado una actualización. Abre el diálogo de ajustes y consulta el registro de cambios. La replicación se ha cancelado.", "Requires restart of Obsidian": "Requiere reiniciar Obsidian", "Requires restart of Obsidian.": "Requiere reiniciar Obsidian", + "Rerun Onboarding Wizard": "Volver a ejecutar el asistente de configuración inicial", + "Rerun the onboarding wizard to set up Self-hosted LiveSync again.": "Vuelve a ejecutar el asistente de configuración inicial para configurar Self-hosted LiveSync de nuevo.", + "Rerun Wizard": "Volver a ejecutar el asistente", "Resend": "Reenviar", "Resend all chunks to the remote.": "Reenvía todos los chunks al remoto.", "Reset": "Restablecer", @@ -504,16 +662,20 @@ "Reset all journal counter": "Restablecer todos los contadores del diario", "Reset journal received history": "Restablecer historial de recepción del diario", "Reset journal sent history": "Restablecer historial de envío del diario", + "Reset notification threshold and check the remote database usage": "Restablecer el umbral de aviso y comprobar el uso de la base de datos remota", "Reset received": "Restablecer recepción", "Reset sent history": "Restablecer historial de envío", "Reset Synchronisation information": "Restablecer información de sincronización", "Reset Synchronisation on This Device": "Restablecer sincronización en este dispositivo", + "Reset the remote storage size threshold and check the remote storage size again.": "Restablece el umbral de tamaño del almacenamiento remoto y vuelve a comprobar su tamaño.", "Resolve All": "Resolver todo", "Resolve all conflicted files": "Resolver todos los archivos en conflicto", "Resolve All conflicted files by the newer one": "Resolver todos los archivos en conflicto con la versión más reciente", "Resolve all conflicted files by the newer one. Caution: This will overwrite the older one, and cannot resurrect the overwritten one.": "Resuelve todos los archivos en conflicto conservando la versión más reciente. Precaución: esto sobrescribirá la versión anterior y no podrá recuperarse.", "Restart Now": "Reiniciar ahora", + "Restarting Obsidian is strongly recommended. Until restart, some changes may not take effect, and display may be inconsistent. Are you sure to restart now?": "Se recomienda encarecidamente reiniciar Obsidian. Hasta que lo hagas, puede que algunos cambios no surtan efecto y que la interfaz se muestre de forma inconsistente. ¿Seguro que quieres reiniciar ahora?", "Restore or reconstruct local database from remote.": "Restaura o reconstruye la base de datos local desde el remoto.", + "Run Doctor": "Ejecutar el Doctor", "S3/MinIO/R2 Object Storage": "Almacenamiento de objetos S3/MinIO/R2", "Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform.": "Guardar configuración en archivo markdown. Se notificarán nuevos ajustes. Puede definir diferentes archivos por plataforma", "Saving will be performed forcefully after this number of seconds.": "Guardado forzado tras esta cantidad de segundos", @@ -523,10 +685,12 @@ "Scan customization before replicating.": "Escanear personalización antes de replicar", "Scan customization every 1 minute.": "Escanear personalización cada 1 minuto", "Scan customization periodically": "Escanear personalización periódicamente", + "Scan for Broken files": "Buscar archivos dañados", "Scan for hidden files before replication": "Escanear archivos ocultos antes de replicar", "Scan hidden files periodically": "Escanear archivos ocultos periódicamente", "Scan the QR code displayed on an active device using this device's camera.": "Escanee con la cámara de este dispositivo el código QR mostrado en un dispositivo activo。", "Schedule and Restart": "Programar y reiniciar", + "Scram Switches": "Interruptores de emergencia", "Scram!": "Medidas de emergencia", "Seconds, 0 to disable": "Segundos, 0 para desactivar", "Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.": "Segundos. Guardado en BD local se retrasará hasta este valor tras dejar de escribir/guardar", @@ -537,18 +701,41 @@ "Server URI": "URI del servidor", "Setting.GenerateKeyPair.Desc": "Hemos generado un par de claves.\n\nNota: Este par de claves no volverá a mostrarse. Guárdalo en un lugar seguro. Si lo pierdes, tendrás que generar uno nuevo.\nNota 2: La clave pública está en formato spki y la clave privada en formato pkcs8. Para mayor comodidad, los saltos de línea de la clave pública se convierten en `\\n`.\nNota 3: La clave pública debe configurarse en la base de datos remota y la clave privada en los dispositivos locales.\n\n>[!SOLO PARA TUS OJOS]-\n>
\n>\n> ### Clave pública\n> ```\n${public_key}\n> ```\n>\n> ### Clave privada\n> ```\n${private_key}\n> ```\n>\n>
\n\n>[!Ambas para copiar]-\n>\n>
\n>\n> ```\n${public_key}\n${private_key}\n> ```\n>\n>
", "Setting.GenerateKeyPair.Title": "¡Se ha generado un nuevo par de claves!", + "Setting.TroubleShooting": "Resolución de problemas", + "Setting.TroubleShooting.Doctor": "Doctor de ajustes", + "Setting.TroubleShooting.Doctor.Desc": "Detecta ajustes no óptimos. (Igual que durante la migración)", + "Setting.TroubleShooting.ScanBrokenFiles": "Buscar archivos dañados", + "Setting.TroubleShooting.ScanBrokenFiles.Desc": "Busca archivos que no se hayan guardado correctamente en la base de datos.", + "SettingTab.Message.AskRebuild": "Tus cambios requieren obtener los datos de la base de datos remota. ¿Quieres continuar?", + "Setup URI dialog cancelled.": "Se ha cancelado el diálogo del Setup URI.", "Setup.> [!INFO]- The connected devices have been detected as follows:\n${devices}": "> [!INFO]- Se detectaron los siguientes dispositivos conectados:\n${devices}", "Setup.All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": "Todos los dispositivos tienen el mismo valor de progreso (${progress}). Parece que tus dispositivos están sincronizados y se puede continuar con la recolección de basura.", + "Setup.Apply.Buttons.ApplyAndFetch": "Aplicar y obtener", + "Setup.Apply.Buttons.ApplyAndMerge": "Aplicar y combinar", + "Setup.Apply.Buttons.ApplyAndRebuild": "Aplicar y reconstruir", + "Setup.Apply.Buttons.Cancel": "Descartar y cancelar", + "Setup.Apply.Buttons.OnlyApply": "Solo aplicar", + "Setup.Apply.Message": "La nueva configuración está lista. Vamos a aplicarla.\nHay varias formas de hacerlo:\n\n- Aplicar y obtener\n Configura este dispositivo como cliente nuevo. Tras aplicarla, sincroniza desde el servidor remoto.\n- Aplicar y combinar\n Para un dispositivo que ya tiene los archivos. Procesa los archivos locales y transfiere las diferencias. Pueden surgir conflictos.\n- Aplicar y reconstruir\n Reconstruye el remoto a partir de los archivos locales. Se hace normalmente si el servidor se ha corrompido o si se quiere empezar de cero.\n Los demás dispositivos quedarán bloqueados y tendrán que volver a obtener los datos.\n- Solo aplicar\n Solo aplica la configuración. Pueden surgir conflictos si hace falta reconstruir.", + "Setup.Apply.Title": "Aplicar la nueva configuración de ${method}", + "Setup.Apply.WarningRebuildRecommended": "NOTA: tras ajustar la configuración se ha determinado que hace falta reconstruir; no se recomienda «solo importar».", "Setup.Cancel Garbage Collection": "Cancelar la recolección de basura", "Setup.Compaction in progress on remote database...": "La compactación está en curso en la base de datos remota...", "Setup.Compaction on remote database completed successfully.": "La compactación en la base de datos remota se completó correctamente.", "Setup.Compaction on remote database failed.": "La compactación en la base de datos remota falló.", "Setup.Compaction on remote database timed out.": "La compactación en la base de datos remota agotó el tiempo de espera.", "Setup.Device": "Dispositivo", + "Setup.Doctor.Buttons.No": "No, usar los ajustes del URI tal cual", + "Setup.Doctor.Buttons.Yes": "Sí, consultar al doctor", + "Setup.Doctor.Message": "Self-hosted LiveSync tiene ya una historia larga y algunos ajustes recomendados han cambiado.\n\nLa configuración inicial es un momento muy bueno para revisarlos.\n\n¿Quieres ejecutar el Doctor para comprobar si los ajustes importados son los óptimos respecto al estado actual?", + "Setup.Doctor.Title": "¿Quieres consultar al doctor?", "Setup.Failed to connect to remote for compaction.": "No se pudo conectar a la base de datos remota para la compactación.", "Setup.Failed to connect to remote for compaction. ${reason}": "No se pudo conectar a la base de datos remota para la compactación. ${reason}", "Setup.Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.": "No se pudo iniciar la replicación de una sola vez antes de la recolección de basura. La recolección de basura se canceló.", "Setup.Failed to start replication after Garbage Collection.": "No se pudo iniciar la replicación después de la recolección de basura.", + "Setup.FetchRemoteConf.Buttons.Fetch": "Sí, obtener la configuración", + "Setup.FetchRemoteConf.Buttons.Skip": "No, usar los ajustes del URI", + "Setup.FetchRemoteConf.Message": "Si ya hemos sincronizado alguna vez con otro dispositivo, la base de datos remota guarda los valores de configuración adecuados para los dispositivos sincronizados. El complemento querría recuperarlos para lograr una configuración más sólida.\n\nAntes hay que asegurar una cosa: ¿estamos en una situación en la que se puede acceder a la red de forma segura y recuperar los ajustes?\n\nNota: normalmente puedes hacerlo sin riesgo si tu base de datos remota se sirve con un certificado SSL y tu red no está comprometida.", + "Setup.FetchRemoteConf.Title": "¿Obtener la configuración de la base de datos remota?", "Setup.Garbage Collection cancelled by user.": "El usuario canceló la recolección de basura.", "Setup.Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": "Recolección de basura completada. Chunks eliminados: ${deletedChunks} / ${totalChunks}. Tiempo empleado: ${seconds} segundos.", "Setup.Garbage Collection Confirmation": "Confirmación de recolección de basura", @@ -572,6 +759,7 @@ "Setup.Proceeding with Garbage Collection, ignoring missing nodes.": "Continuando con la recolección de basura e ignorando los nodos faltantes.", "Setup.Proceeding with Garbage Collection.": "Continuando con la recolección de basura.", "Setup.Progress": "Progreso", + "Setup.QRCode": "Hemos generado un código QR para transferir los ajustes. Escanéalo con tu móvil u otro dispositivo.\nNota: el código QR no está cifrado, así que ten cuidado al abrirlo.\n\n>[!SOLO PARA TUS OJOS]-\n>
${qr_image}
", "Setup.RemoteE2EE.AdvancedTitle": "Avanzado", "Setup.RemoteE2EE.AlgorithmWarning": "Cambiar el algoritmo de cifrado impedirá el acceso a cualquier dato cifrado anteriormente con otro algoritmo. Asegúrate de que todos tus dispositivos estén configurados para usar el mismo algoritmo y así mantener el acceso a tus datos.", "Setup.RemoteE2EE.ButtonCancel": "Cancelar", @@ -598,6 +786,8 @@ "Setup.ScanQRCode.Step4": "En este dispositivo, cambia a la cámara o usa un escáner QR para escanear el código mostrado.", "Setup.ScanQRCode.Title": "Escanear código QR", "Setup.Setup URI dialog cancelled.": "Se canceló el diálogo de Setup URI.", + "Setup.ShowQRCode": "Mostrar el código QR", + "Setup.ShowQRCode.Desc": "Muestra un código QR para transferir los ajustes.", "Setup.Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": "Algunos dispositivos tienen valores de progreso diferentes (máx.: ${maxProgress}, mín.: ${minProgress}).\nEsto puede indicar que algunos dispositivos no han completado la sincronización, lo que podría causar conflictos. Se recomienda encarecidamente confirmar que todos los dispositivos estén sincronizados antes de continuar.", "Setup.The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": "Los siguientes nodos aceptados no tienen información del nodo:\n- ${missingNodes}\n\nEsto indica que no se han conectado desde hace algún tiempo o que se han quedado en una versión anterior.\nSi es posible, es preferible actualizar todos los dispositivos. Si tienes dispositivos que ya no se usan, puedes borrar todos los nodos aceptados bloqueando el remoto una vez.", "Setup.titleCaseSensitivity": "Sensibilidad a mayúsculas", @@ -620,15 +810,19 @@ "Should we prompt you about conflicting files when a file is opened?": "¿Notificar sobre conflictos al abrir archivo?", "Should we prompt you for every single merge, even if we can safely merge automatcially?": "¿Preguntar en cada fusión aunque sea automática?", "Show full banner": "Mostrar banner completo", + "Show history": "Mostrar el historial", + "Show icon only": "Mostrar solo el icono", "Show only notifications": "Mostrar solo notificaciones", "Show status as icons only": "Mostrar estado solo con íconos", "Show status icon instead of file warnings banner": "Mostrar icono de estado en lugar del banner de advertencia de archivos", "Show status inside the editor": "Mostrar estado dentro del editor", "Show status on the status bar": "Mostrar estado en la barra de estado", "Show verbose log. Please enable if you report an issue.": "Mostrar registro detallado. Actívelo si reporta un problema.", + "Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": "Algunos dispositivos tienen valores de progreso distintos (máx.: ${maxProgress}, mín.: ${minProgress}).\nEsto puede indicar que algunos no han terminado de sincronizar, lo que podría provocar conflictos. Se recomienda encarecidamente confirmar que todos los dispositivos están sincronizados antes de continuar.", "Starts synchronisation when a file is saved.": "Inicia sincronización al guardar un archivo", "Stop reflecting database changes to storage files.": "Dejar de reflejar cambios de BD en archivos", "Stop watching for file changes.": "Dejar de monitorear cambios en archivos", + "Storage -> Database": "Almacenamiento -> Base de datos", "Suppress notification of hidden files change": "Suprimir notificaciones de cambios en archivos ocultos", "Suspend database reflecting": "Suspender reflejo de base de datos", "Suspend file watching": "Suspender monitorización de archivos", @@ -647,16 +841,310 @@ "Target patterns": "Patrones objetivo", "Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.": "Solo pruebas - Resolver conflictos sincronizando copias nuevas (puede sobrescribir modificaciones)", "The delay for consecutive on-demand fetches": "Retraso entre obtenciones consecutivas", + "The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": "A los siguientes nodos aceptados les falta su información de nodo:\n- ${missingNodes}\n\nEsto indica que llevan tiempo sin conectarse o que se han quedado en una versión antigua.\nSi es posible, conviene actualizar todos los dispositivos. Si tienes dispositivos que ya no usas, puedes borrar todos los nodos aceptados bloqueando el remoto una vez.", "The Hash algorithm for chunk IDs": "Algoritmo hash para IDs de chunks", + "The IndexedDB adapter often offers superior performance in certain scenarios, but it has been found to cause memory leaks when used with LiveSync mode. When using LiveSync mode, please use IDB adapter instead.": "El adaptador IndexedDB suele ofrecer mejor rendimiento en ciertos casos, pero se ha comprobado que provoca fugas de memoria con el modo LiveSync. Si usas el modo LiveSync, utiliza en su lugar el adaptador IDB.", "The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.": "Duración máxima para incubar chunks. Excedentes se independizan", "The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks.": "Número máximo de chunks que pueden incubarse en el documento. Excedentes se independizan", "The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks.": "Tamaño total máximo de chunks incubados. Excedentes se independizan", + "The minimum interval for automatic synchronisation on event.": "Intervalo mínimo para la sincronización automática al producirse un evento.", "This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.": "Esta función permite la sincronización directa entre dispositivos. No requiere servidor, pero ambos dispositivos deben estar en línea al mismo tiempo para que la sincronización se produzca, y algunas funciones pueden ser limitadas. La conexión a Internet solo se necesita para la señalización (detección de pares), no para la transferencia de datos。", "This is an advanced option for users who do not have a URI or who wish to configure detailed settings.": "Esta es una opción avanzada para usuarios que no disponen de un URI o que desean configurar parámetros detallados。", "This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.": "Este es el método de sincronización más adecuado para el diseño. Todas las funciones están disponibles. Debe tener configurada una instancia de CouchDB。", "This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.": "Esta frase no se copia a otros dispositivos. Usará `Default` hasta reconfigurar", "This will recreate chunks for all files. If there were missing chunks, this may fix the errors.": "Esto recreará los fragmentos de todos los archivos. Si faltaban fragmentos, esto puede corregir los errores.", "Transfer Tweak": "Ajustes de transferencia", + "TweakMismatchResolve.Action.DisableAutoAcceptCompatible": "Desactivar la aceptación automática", + "TweakMismatchResolve.Action.Dismiss": "Descartar", + "TweakMismatchResolve.Action.EnableAutoAcceptCompatible": "Activar la aceptación automática", + "TweakMismatchResolve.Action.UseConfigured": "Usar los ajustes configurados", + "TweakMismatchResolve.Action.UseMine": "Actualizar los ajustes de la base de datos remota", + "TweakMismatchResolve.Action.UseMineAcceptIncompatible": "Actualizar los ajustes de la base de datos remota, pero dejarlo como está", + "TweakMismatchResolve.Action.UseMineWithRebuild": "Actualizar los ajustes de la base de datos remota y reconstruir de nuevo", + "TweakMismatchResolve.Action.UseRemote": "Aplicar los ajustes a este dispositivo", + "TweakMismatchResolve.Action.UseRemoteAcceptIncompatible": "Aplicar los ajustes a este dispositivo e ignorar la incompatibilidad", + "TweakMismatchResolve.Action.UseRemoteWithRebuild": "Aplicar los ajustes a este dispositivo y volver a obtener los datos", + "TweakMismatchResolve.Message.AutoAcceptCompatibleUndefined": "\nParece que los ajustes son distintos en cada dispositivo. Ahora se pueden aplicar automáticamente los cambios compatibles a estas configuraciones.\n¿Quieres activar la aceptación automática (`auto-accept`)?", + "TweakMismatchResolve.Message.Main": "\nLos ajustes de la base de datos remota son los siguientes. Los han configurado otros dispositivos que se han sincronizado con este al menos una vez.\n\nSi quieres usar estos ajustes, selecciona %{TweakMismatchResolve.Action.UseConfigured}.\nSi prefieres conservar los de este dispositivo, selecciona %{TweakMismatchResolve.Action.Dismiss}.\n\n${table}\n\n>[!TIP]\n> Si quieres sincronizar todos los ajustes, usa «Sync settings via markdown» después de aplicar la configuración mínima con esta función.\n\n${additionalMessage}", + "TweakMismatchResolve.Message.MainTweakResolving": "Tu configuración no coincide con la del servidor remoto.\n\nLa siguiente configuración debería coincidir:\n\n${table}\n\nIndícanos qué decides.\n\n${additionalMessage}", + "TweakMismatchResolve.Message.mineUpdated": "Se ha ajustado la configuración del dispositivo.", + "TweakMismatchResolve.Message.remoteUpdated": "Se ha actualizado la configuración almacenada en el remoto.", + "TweakMismatchResolve.Message.UseRemote.WarningRebuildRecommended": "\n>[!NOTICE]\n> Algunos cambios son compatibles, pero pueden consumir almacenamiento y transferencia de más. Se recomienda reconstruir. De momento puede que no se reconstruya, pero podría hacerse en un mantenimiento futuro.\n> ***Asegúrate de tener tiempo y una red estable antes de aplicarlo.***", + "TweakMismatchResolve.Message.UseRemote.WarningRebuildRequired": "\n>[!WARNING]\n> Algunas configuraciones remotas no son compatibles con la base de datos local de este dispositivo. Habrá que reconstruirla.\n> ***Asegúrate de tener tiempo y una red estable antes de aplicarlo.***", + "TweakMismatchResolve.Message.WarningIncompatibleRebuildRecommended": "\n>[!NOTICE]\n> Hemos detectado que algunos valores difieren de forma que hacen incompatible la base de datos local con la remota.\n> Algunos cambios son compatibles, pero pueden consumir almacenamiento y transferencia de más. Se recomienda reconstruir. De momento puede que no se reconstruya, pero podría hacerse en un mantenimiento futuro.\n> Si decides reconstruir, tardará unos minutos o más. **Asegúrate de que es seguro hacerlo ahora.**", + "TweakMismatchResolve.Message.WarningIncompatibleRebuildRequired": "\n>[!WARNING]\n> Hemos detectado que algunos valores difieren de forma que hacen incompatible la base de datos local con la remota.\n> Hay que reconstruir la local o la remota. Ambas cosas tardan unos minutos o más. **Asegúrate de que es seguro hacerlo ahora.**", + "TweakMismatchResolve.Table": "| Nombre del valor | Este dispositivo | En el remoto |\n|: --- |: ---- :|: ---- :|\n${rows}\n\n", + "TweakMismatchResolve.Table.Row": "| ${name} | ${self} | ${remote} |", + "TweakMismatchResolve.Title": "Se ha detectado una discrepancia de configuración", + "TweakMismatchResolve.Title.AutoAcceptCompatible": "Aceptación automática disponible", + "TweakMismatchResolve.Title.TweakResolving": "Se ha detectado una discrepancia de configuración", + "TweakMismatchResolve.Title.UseRemoteConfig": "Usar la configuración remota", + "Ui.Common.Signal.Caution": "PRECAUCIÓN", + "Ui.Common.Signal.Danger": "PELIGRO", + "Ui.Common.Signal.Notice": "AVISO", + "Ui.Common.Signal.Warning": "ADVERTENCIA", + "Ui.Settings.Advanced.LocalDatabaseTweak": "Ajuste fino de la base de datos local", + "Ui.Settings.Advanced.MemoryCache": "Caché en memoria", + "Ui.Settings.Advanced.TransferTweak": "Ajuste fino de la transferencia", + "Ui.Settings.Common.Analyse": "Analizar", + "Ui.Settings.Common.Back": "Volver", + "Ui.Settings.Common.Check": "Comprobar", + "Ui.Settings.Common.Configure": "Configurar", + "Ui.Settings.Common.Continue": "Continuar", + "Ui.Settings.Common.Delete": "Eliminar", + "Ui.Settings.Common.Fetch": "Obtener", + "Ui.Settings.Common.Lock": "Bloquear", + "Ui.Settings.Common.Merge": "Combinar", + "Ui.Settings.Common.Open": "Abrir", + "Ui.Settings.Common.Overwrite": "Sobrescribir", + "Ui.Settings.Common.Perform": "Ejecutar", + "Ui.Settings.Common.ResetAll": "Restablecer todo", + "Ui.Settings.Common.ResolveAll": "Resolver todo", + "Ui.Settings.Common.Scan": "Analizar", + "Ui.Settings.Common.Send": "Enviar", + "Ui.Settings.Common.Use": "Usar", + "Ui.Settings.Common.VerifyAll": "Verificar todo", + "Ui.Settings.CustomizationSync.OpenDesc": "Abre el diálogo", + "Ui.Settings.CustomizationSync.Panel": "Sincronización de personalizaciones", + "Ui.Settings.CustomizationSync.WarnChangeDeviceName": "No se puede cambiar el nombre del dispositivo mientras esta función esté activada. Desactívala para poder cambiarlo.", + "Ui.Settings.CustomizationSync.WarnSetDeviceName": "Establece un nombre para identificar este dispositivo. Debe ser único entre tus dispositivos. Mientras no esté configurado, no se puede activar esta función.", + "Ui.Settings.Hatch.AnalyseDatabaseUsage": "Analizar el uso de la base de datos", + "Ui.Settings.Hatch.AnalyseDatabaseUsageDesc": "Analiza el uso de la base de datos y genera un informe TSV para que puedas diagnosticarlo tú mismo. Puedes pegar el informe generado en la hoja de cálculo que prefieras.", + "Ui.Settings.Hatch.BackToNonConfigured": "Volver al estado sin configurar", + "Ui.Settings.Hatch.ConvertNonObfuscated": "Comprobar y convertir los archivos sin ruta ofuscada", + "Ui.Settings.Hatch.ConvertNonObfuscatedDesc": "Comprueba si la base de datos local contiene archivos guardados sin ofuscación de ruta y los convierte si hace falta.", + "Ui.Settings.Hatch.CopyIssueReport": "Copiar el informe al portapapeles", + "Ui.Settings.Hatch.DatabaseLabel": "Base de datos: ${details}", + "Ui.Settings.Hatch.DatabaseToStorage": "Base de datos -> Almacenamiento", + "Ui.Settings.Hatch.DeleteCustomizationSyncData": "Eliminar todos los datos de la sincronización de personalizaciones", + "Ui.Settings.Hatch.GeneratedReport": "Informe generado", + "Ui.Settings.Hatch.Missing": "Falta", + "Ui.Settings.Hatch.ModifiedSize": "Modificado: ${modified}, tamaño: ${size}", + "Ui.Settings.Hatch.ModifiedSizeActual": "Modificado: ${modified}, tamaño: ${size} (tamaño real: ${actualSize})", + "Ui.Settings.Hatch.PrepareIssueReport": "Preparar el «informe» para abrir una incidencia", + "Ui.Settings.Hatch.RecoveryAndRepair": "Recuperación y reparación", + "Ui.Settings.Hatch.RecreateAll": "Recrear todo", + "Ui.Settings.Hatch.RecreateMissingChunks": "Recrear los chunks que faltan de todos los archivos", + "Ui.Settings.Hatch.RecreateMissingChunksDesc": "Recrea los chunks de todos los archivos. Si faltaban chunks, esto puede corregir los errores.", + "Ui.Settings.Hatch.ResetPanel": "Restablecer", + "Ui.Settings.Hatch.ResetRemoteUsage": "Restablecer el umbral de aviso y comprobar el uso de la base de datos remota", + "Ui.Settings.Hatch.ResetRemoteUsageDesc": "Restablece el umbral de tamaño del almacenamiento remoto y vuelve a comprobar su tamaño.", + "Ui.Settings.Hatch.ResolveAllConflictedFiles": "Resolver todos los archivos en conflicto con el más reciente", + "Ui.Settings.Hatch.ResolveAllConflictedFilesDesc": "Resuelve todos los archivos en conflicto quedándose con el más reciente. Atención: esto sobrescribe el más antiguo y no se puede recuperar.", + "Ui.Settings.Hatch.RunDoctor": "Ejecutar el Doctor", + "Ui.Settings.Hatch.ScanBrokenFiles": "Buscar archivos dañados", + "Ui.Settings.Hatch.ScramSwitches": "Interruptores de emergencia", + "Ui.Settings.Hatch.ShowHistory": "Mostrar el historial", + "Ui.Settings.Hatch.StorageLabel": "Almacenamiento: ${details}", + "Ui.Settings.Hatch.StorageToDatabase": "Almacenamiento -> Base de datos", + "Ui.Settings.Hatch.VerifyAndRepairAllFiles": "Verificar y reparar todos los archivos", + "Ui.Settings.Hatch.VerifyAndRepairAllFilesDesc": "Compara el contenido de los archivos entre la base de datos local y el almacenamiento. Si no coinciden, se te preguntará cuál conservar.", + "Ui.Settings.Maintenance.Cleanup": "Realizar limpieza", + "Ui.Settings.Maintenance.CleanupDesc": "Reduce el espacio de almacenamiento descartando todas las revisiones que no sean la última. Requiere la misma cantidad de espacio libre en el servidor remoto y en el cliente local.", + "Ui.Settings.Maintenance.DeleteLocalDatabase": "Eliminar la base de datos local para restablecer o desinstalar Self-hosted LiveSync", + "Ui.Settings.Maintenance.EmergencyRestart": "Reinicio de emergencia", + "Ui.Settings.Maintenance.EmergencyRestartDesc": "Desactiva toda la sincronización y reinicia.", + "Ui.Settings.Maintenance.FreshStartWipe": "Borrado para empezar de cero", + "Ui.Settings.Maintenance.FreshStartWipeDesc": "Elimina todos los datos del servidor remoto.", + "Ui.Settings.Maintenance.GarbageCollection": "Recolección de basura V3 (beta)", + "Ui.Settings.Maintenance.GarbageCollectionAction": "Realizar la recolección de basura", + "Ui.Settings.Maintenance.GarbageCollectionDesc": "Realiza una recolección de basura para eliminar los chunks sin usar y reducir el tamaño de la base de datos.", + "Ui.Settings.Maintenance.LockServer": "Bloquear el servidor", + "Ui.Settings.Maintenance.LockServerDesc": "Bloquea el servidor remoto para impedir la sincronización con otros dispositivos.", + "Ui.Settings.Maintenance.OverwriteRemote": "Sobrescribir el remoto", + "Ui.Settings.Maintenance.OverwriteRemoteDesc": "Sobrescribe el remoto con la base de datos local y la frase de contraseña.", + "Ui.Settings.Maintenance.OverwriteServerData": "Sobrescribir los datos del servidor con los archivos de este dispositivo", + "Ui.Settings.Maintenance.OverwriteServerDataDesc": "Reconstruye la base de datos local y la remota con los archivos de este dispositivo.", + "Ui.Settings.Maintenance.PurgeAllJournalCounter": "Purgar todos los contadores del diario", + "Ui.Settings.Maintenance.PurgeAllJournalCounterDesc": "Purga todas las cachés de descarga y de subida.", + "Ui.Settings.Maintenance.RebuildingOperations": "Operaciones de reconstrucción (solo remoto)", + "Ui.Settings.Maintenance.Resend": "Reenviar", + "Ui.Settings.Maintenance.ResendDesc": "Reenvía todos los chunks al remoto.", + "Ui.Settings.Maintenance.Reset": "Restablecer", + "Ui.Settings.Maintenance.ResetAllJournalCounter": "Restablecer todos los contadores del diario", + "Ui.Settings.Maintenance.ResetAllJournalCounterDesc": "Inicializa todo el historial del diario. En la próxima sincronización se volverán a recibir y enviar todos los elementos.", + "Ui.Settings.Maintenance.ResetJournalReceived": "Restablecer el historial de recepción del diario", + "Ui.Settings.Maintenance.ResetJournalReceivedDesc": "Inicializa el historial de recepción del diario. En la próxima sincronización se volverán a descargar todos los elementos salvo los enviados por este dispositivo.", + "Ui.Settings.Maintenance.ResetJournalSent": "Restablecer el historial de envío del diario", + "Ui.Settings.Maintenance.ResetJournalSentDesc": "Inicializa el historial de envío del diario. En la próxima sincronización se volverán a enviar todos los elementos salvo los recibidos por este dispositivo.", + "Ui.Settings.Maintenance.ResetLocalSyncInfo": "Restablecer la información de sincronización", + "Ui.Settings.Maintenance.ResetLocalSyncInfoDesc": "Restaura o reconstruye la base de datos local a partir del remoto.", + "Ui.Settings.Maintenance.ResetReceived": "Restablecer lo recibido", + "Ui.Settings.Maintenance.ResetSentHistory": "Restablecer el historial de envíos", + "Ui.Settings.Maintenance.ResetThisDevice": "Restablecer la sincronización en este dispositivo", + "Ui.Settings.Maintenance.ScheduleAndRestart": "Programar y reiniciar", + "Ui.Settings.Maintenance.Scram": "¡Parada de emergencia!", + "Ui.Settings.Maintenance.SendChunks": "Enviar los chunks", + "Ui.Settings.Maintenance.Syncing": "Sincronización", + "Ui.Settings.Maintenance.WarningLockedReadyAction": "Estoy listo, desbloquear la base de datos", + "Ui.Settings.Maintenance.WarningLockedReadyText": "Para evitar que el vault se corrompa, la base de datos remota se ha bloqueado para la sincronización. (Este dispositivo está marcado como «resuelto».) Cuando todos tus dispositivos estén marcados como «resueltos», desbloquea la base de datos. Este aviso seguirá apareciendo hasta que la replicación confirme que el dispositivo está resuelto.", + "Ui.Settings.Maintenance.WarningLockedResolveAction": "He hecho una copia de seguridad, marcar este dispositivo como resuelto", + "Ui.Settings.Maintenance.WarningLockedResolveText": "La base de datos remota está bloqueada para la sincronización a fin de evitar que el vault se corrompa, porque este dispositivo no está marcado como «resuelto». Haz una copia de seguridad de tu vault, restablece la base de datos local y selecciona «Marcar este dispositivo como resuelto». Este aviso seguirá apareciendo hasta que la replicación confirme que el dispositivo está resuelto.", + "Ui.Settings.Maintenance.WriteRedFlagAndRestart": "Marcar y reiniciar", + "Ui.Settings.Patches.CompatibilityConflict": "Compatibilidad (comportamiento ante conflictos)", + "Ui.Settings.Patches.CompatibilityDatabase": "Compatibilidad (estructura de la base de datos)", + "Ui.Settings.Patches.CompatibilityInternalApi": "Compatibilidad (uso de la API interna)", + "Ui.Settings.Patches.CompatibilityMetadata": "Compatibilidad (metadatos)", + "Ui.Settings.Patches.CompatibilityRemote": "Compatibilidad (base de datos remota)", + "Ui.Settings.Patches.CompatibilityTrouble": "Compatibilidad (problemas resueltos)", + "Ui.Settings.Patches.CurrentAdapter": "Adaptador actual: ${adapter}", + "Ui.Settings.Patches.DatabaseAdapter": "Adaptador de base de datos", + "Ui.Settings.Patches.DatabaseAdapterDesc": "Selecciona el adaptador de base de datos que se va a usar.", + "Ui.Settings.Patches.EdgeCaseBehaviour": "Casos límite (comportamiento)", + "Ui.Settings.Patches.EdgeCaseDatabase": "Casos límite (base de datos)", + "Ui.Settings.Patches.EdgeCaseProcessing": "Casos límite (procesamiento)", + "Ui.Settings.Patches.IndexedDbWarning": "El adaptador IndexedDB suele ofrecer mejor rendimiento en ciertos casos, pero se ha comprobado que provoca fugas de memoria con el modo LiveSync. Si usas el modo LiveSync, utiliza en su lugar el adaptador IDB.", + "Ui.Settings.Patches.MigratingToIdb": "Migrando todos los datos a IDB...", + "Ui.Settings.Patches.MigratingToIndexedDb": "Migrando todos los datos a IndexedDB...", + "Ui.Settings.Patches.MigrationIdbCompleted": "Migración a IDB completada. Obsidian se reiniciará de inmediato con la nueva configuración.", + "Ui.Settings.Patches.MigrationIdbCompletedFollowUp": "Migración a IDB completada. Cambia el adaptador y reinicia Obsidian.", + "Ui.Settings.Patches.MigrationIndexedDbCompleted": "Migración a IndexedDB completada. Obsidian se reiniciará de inmediato con la nueva configuración.", + "Ui.Settings.Patches.MigrationIndexedDbCompletedFollowUp": "Migración a IndexedDB completada. Cambia el adaptador y reinicia Obsidian.", + "Ui.Settings.Patches.MigrationWarning": "Cambiar este ajuste requiere migrar los datos existentes, lo que puede tardar un rato, y reiniciar Obsidian. Asegúrate de hacer una copia de seguridad de tus datos antes de continuar.", + "Ui.Settings.Patches.OperationToIdb": "a IDB", + "Ui.Settings.Patches.OperationToIndexedDb": "a IndexedDB", + "Ui.Settings.Patches.Remediation": "Remediación", + "Ui.Settings.Patches.RemediationChanged": "Se ha cambiado el ajuste de remediación", + "Ui.Settings.Patches.RemediationNoLimit": "Sin límite configurado", + "Ui.Settings.Patches.RemediationRestarting": "Se ha cambiado el ajuste de remediación. Reiniciando Obsidian...", + "Ui.Settings.Patches.RemediationRestartLater": "Más tarde", + "Ui.Settings.Patches.RemediationRestartMessage": "Se recomienda encarecidamente reiniciar Obsidian. Hasta que lo hagas, puede que algunos cambios no surtan efecto y que la interfaz se muestre de forma inconsistente. ¿Seguro que quieres reiniciar ahora?", + "Ui.Settings.Patches.RemediationRestartNow": "Reiniciar ahora", + "Ui.Settings.Patches.RemediationSuffixChanged": "El sufijo ha cambiado. Reabriendo la base de datos...", + "Ui.Settings.Patches.RemediationWithValue": "Límite: ${date} (${timestamp})", + "Ui.Settings.Patches.RemoteDatabaseSunset": "Ajuste fino de la base de datos remota (en desuso)", + "Ui.Settings.Patches.SwitchToIDB": "Cambiar a IDB", + "Ui.Settings.Patches.SwitchToIndexedDb": "Cambiar a IndexedDB", + "Ui.Settings.PowerUsers.ConfigurationEncryption": "Cifrado de la configuración", + "Ui.Settings.PowerUsers.ConnectionTweak": "Ajuste fino de la conexión con CouchDB", + "Ui.Settings.PowerUsers.ConnectionTweakDesc": "Si alcanzas el límite de tamaño de carga al usar IBM Cloudant, reduce el tamaño de lote y el límite de lote.", + "Ui.Settings.PowerUsers.Default": "Predeterminado", + "Ui.Settings.PowerUsers.Developer": "Desarrollo", + "Ui.Settings.PowerUsers.EncryptSensitiveConfig": "Cifrar los elementos sensibles de la configuración", + "Ui.Settings.PowerUsers.PromptPassphraseEveryLaunch": "Solicitar la frase de contraseña en cada inicio", + "Ui.Settings.PowerUsers.UseCustomPassphrase": "Usar una frase de contraseña personalizada", + "Ui.Settings.Remote.Activate": "Activar", + "Ui.Settings.Remote.ActiveSuffix": " (activo)", + "Ui.Settings.Remote.AddConnection": "Añadir conexión", + "Ui.Settings.Remote.AddRemoteDefaultName": "Remoto nuevo", + "Ui.Settings.Remote.ConfigureAndChangeRemote": "Configurar y cambiar el remoto", + "Ui.Settings.Remote.ConfigureE2EE": "Configurar el E2EE", + "Ui.Settings.Remote.ConfigureRemote": "Configurar el remoto", + "Ui.Settings.Remote.DeleteRemoteConfirm": "¿Eliminar la configuración remota «${name}»?", + "Ui.Settings.Remote.DeleteRemoteTitle": "Eliminar la configuración remota", + "Ui.Settings.Remote.DisplayName": "Nombre visible", + "Ui.Settings.Remote.DuplicateRemote": "Duplicar el remoto", + "Ui.Settings.Remote.DuplicateRemoteSuffix": "${name} (copia)", + "Ui.Settings.Remote.E2EEConfiguration": "Configuración del E2EE", + "Ui.Settings.Remote.Export": "Exportar", + "Ui.Settings.Remote.FetchRemoteSettings": "Obtener los ajustes remotos", + "Ui.Settings.Remote.ImportConnection": "Importar conexión", + "Ui.Settings.Remote.ImportConnectionPrompt": "Pega una cadena de conexión", + "Ui.Settings.Remote.ImportedCouchDb": "CouchDB importado", + "Ui.Settings.Remote.ImportedRemote": "Remoto", + "Ui.Settings.Remote.MoreActions": "Más acciones", + "Ui.Settings.Remote.PeerToPeerPanel": "Sincronización punto a punto", + "Ui.Settings.Remote.RemoteConfigurationPrefix": "Configuración remota", + "Ui.Settings.Remote.RemoteDatabases": "Bases de datos remotas", + "Ui.Settings.Remote.RemoteName": "Nombre del remoto", + "Ui.Settings.Remote.RemoteNameCouchDb": "CouchDB ${host}", + "Ui.Settings.Remote.RemoteNameP2P": "P2P ${room}", + "Ui.Settings.Remote.RemoteNameS3": "S3 ${bucket}", + "Ui.Settings.Remote.Rename": "Cambiar el nombre", + "Ui.Settings.Selector.AddDefaultPatterns": "Añadir patrones predeterminados", + "Ui.Settings.Selector.CrossPlatform": "Multiplataforma", + "Ui.Settings.Selector.Default": "Predeterminado", + "Ui.Settings.Selector.HiddenFiles": "Archivos ocultos", + "Ui.Settings.Selector.IgnorePatterns": "Patrones de exclusión", + "Ui.Settings.Selector.NonSynchronisingFiles": "Archivos que no se sincronizan", + "Ui.Settings.Selector.NonSynchronisingFilesDesc": "(RegExp) Si se establece, se omitirá cualquier cambio en archivos locales y remotos que coincida con este patrón.", + "Ui.Settings.Selector.NormalFiles": "Archivos normales", + "Ui.Settings.Selector.OverwritePatterns": "Patrones de sobrescritura", + "Ui.Settings.Selector.OverwritePatternsDesc": "Patrones de los archivos que se sobrescriben en lugar de combinarse", + "Ui.Settings.Selector.SynchronisingFiles": "Archivos que se sincronizan", + "Ui.Settings.Selector.SynchronisingFilesDesc": "(RegExp) Déjalo vacío para sincronizar todos los archivos. Define un filtro como expresión regular para limitar los archivos sincronizados.", + "Ui.Settings.Selector.TargetPatterns": "Patrones de inclusión", + "Ui.Settings.Selector.TargetPatternsDesc": "Patrones de los archivos que se van a sincronizar", + "Ui.Settings.Setup.RerunWizardButton": "Volver a ejecutar el asistente", + "Ui.Settings.Setup.RerunWizardDesc": "Vuelve a ejecutar el asistente de configuración inicial para configurar Self-hosted LiveSync de nuevo.", + "Ui.Settings.Setup.RerunWizardName": "Volver a ejecutar el asistente de configuración inicial", + "Ui.Settings.SyncSettings.Fetch": "Obtener", + "Ui.Settings.SyncSettings.Merge": "Combinar", + "Ui.Settings.SyncSettings.Overwrite": "Sobrescribir", + "Ui.SetupWizard.Common.Back": "No, volver atrás", + "Ui.SetupWizard.Common.Cancel": "Cancelar", + "Ui.SetupWizard.Common.ProceedSelectOption": "Selecciona una opción para continuar", + "Ui.SetupWizard.Intro.ExistingOption": "Estoy añadiendo un dispositivo a una configuración de sincronización existente", + "Ui.SetupWizard.Intro.ExistingOptionDesc": "Elige esto si ya usas la sincronización en otro ordenador o móvil. Usa esta opción para conectar este dispositivo a esa configuración existente.", + "Ui.SetupWizard.Intro.Guidance": "Te guiaremos con unas cuantas preguntas para simplificar la configuración de la sincronización.", + "Ui.SetupWizard.Intro.NewOption": "Lo estoy configurando por primera vez", + "Ui.SetupWizard.Intro.NewOptionDesc": "Elige esto si estás configurando este dispositivo como el primero de la sincronización.", + "Ui.SetupWizard.Intro.ProceedExisting": "Sí, quiero añadir este dispositivo a mi sincronización existente", + "Ui.SetupWizard.Intro.ProceedNew": "Sí, quiero configurar una sincronización nueva", + "Ui.SetupWizard.Intro.Question": "Primero, selecciona la opción que mejor describa tu situación actual.", + "Ui.SetupWizard.Intro.Title": "Bienvenido a Self-hosted LiveSync", + "Ui.SetupWizard.Invitation.Start": "Comenzar la configuración", + "Ui.SetupWizard.OutroAskUserMode.CompatibleOption": "El remoto ya está configurado y la configuración es compatible (o pasa a serlo con esta operación).", + "Ui.SetupWizard.OutroAskUserMode.CompatibleOptionDesc": "Si no estás seguro, elegir esta opción es arriesgado. Da por supuesto que la configuración del servidor es compatible con este dispositivo. Si no lo es, puede haber pérdida de datos. Asegúrate de entender las consecuencias.", + "Ui.SetupWizard.OutroAskUserMode.ExistingOption": "Mi servidor remoto ya está configurado. Quiero añadir este dispositivo.", + "Ui.SetupWizard.OutroAskUserMode.ExistingOptionDesc": "Al elegir esta opción, este dispositivo se unirá al servidor existente. Tendrás que obtener del servidor los datos de sincronización ya existentes.", + "Ui.SetupWizard.OutroAskUserMode.Guidance": "La conexión con el servidor se ha configurado correctamente. Como paso siguiente hay que reconstruir la base de datos local, es decir, la información de sincronización.", + "Ui.SetupWizard.OutroAskUserMode.NewOption": "Estoy configurando un servidor nuevo por primera vez / quiero restablecer mi servidor actual.", + "Ui.SetupWizard.OutroAskUserMode.NewOptionDesc": "Al elegir esta opción, el servidor se inicializará con los datos actuales de este dispositivo. Cualquier dato existente en el servidor se sobrescribirá por completo.", + "Ui.SetupWizard.OutroAskUserMode.ProceedApplySettings": "Aplicar los ajustes", + "Ui.SetupWizard.OutroAskUserMode.ProceedNext": "Continuar al paso siguiente.", + "Ui.SetupWizard.OutroAskUserMode.Question": "Selecciona tu situación.", + "Ui.SetupWizard.OutroAskUserMode.Title": "Casi terminado: se requiere una decisión", + "Ui.SetupWizard.OutroNewP2PUser.GuidanceNotice": "En P2P no hay una copia en un servidor central que sobrescribir. Este paso prepara solo este dispositivo; mantenlo conectado cuando otro dispositivo obtenga sus datos iniciales.", + "Ui.SetupWizard.OutroNewP2PUser.GuidancePrimary": "La conexión punto a punto se ha configurado correctamente. A continuación, la base de datos local de LiveSync se construirá a partir de los archivos actuales de este Vault.", + "Ui.SetupWizard.OutroNewP2PUser.Important": "TEN EN CUENTA", + "Ui.SetupWizard.OutroNewP2PUser.Proceed": "Reiniciar y preparar este dispositivo", + "Ui.SetupWizard.OutroNewP2PUser.Question": "Pulsa el botón de abajo para reiniciar y pasar a la confirmación de la inicialización local.", + "Ui.SetupWizard.OutroNewP2PUser.Title": "Configuración completada: preparando este dispositivo P2P", + "Ui.SetupWizard.OutroNewUser.GuidancePrimary": "La conexión con el servidor se ha configurado correctamente. Como paso siguiente, los datos de sincronización del servidor se construirán a partir de los datos actuales de este dispositivo.", + "Ui.SetupWizard.OutroNewUser.GuidanceWarning": "Tras reiniciar, los datos de este dispositivo se subirán al servidor como copia maestra. Ten en cuenta que cualquier dato no deseado que haya ahora en el servidor se sobrescribirá por completo.", + "Ui.SetupWizard.OutroNewUser.Important": "IMPORTANTE", + "Ui.SetupWizard.OutroNewUser.Proceed": "Reiniciar e inicializar el servidor", + "Ui.SetupWizard.OutroNewUser.Question": "Pulsa el botón de abajo para reiniciar y pasar a la confirmación final.", + "Ui.SetupWizard.OutroNewUser.Title": "Configuración completada: preparando la inicialización del servidor", + "Ui.SetupWizard.RebuildEverythingP2P.ConfirmLocalReset": "Entiendo que esto restablece únicamente la base de datos de sincronización local de este dispositivo.", + "Ui.SetupWizard.RebuildEverythingP2P.ConfirmLocalResetNote": "Se usarán los archivos que hay ahora en este Vault para reconstruirla.", + "Ui.SetupWizard.RebuildEverythingP2P.ConfirmTitle": "⚠️ Confirma lo siguiente", + "Ui.SetupWizard.RebuildEverythingP2P.Guidance": "Este procedimiento descartará la base de datos local de LiveSync de este dispositivo y la reconstruirá a partir de los archivos actuales de este Vault. No elimina ni sobrescribe datos de otro dispositivo.", + "Ui.SetupWizard.RebuildEverythingP2P.Note": "Mantén este dispositivo conectado después de la inicialización para que otro dispositivo pueda obtener el Vault desde él.", + "Ui.SetupWizard.RebuildEverythingP2P.Proceed": "Lo entiendo, preparar este dispositivo", + "Ui.SetupWizard.RebuildEverythingP2P.Title": "Confirmación final: preparar este dispositivo para P2P", + "Ui.SetupWizard.SelectExisting.Guidance": "Estás añadiendo este dispositivo a una configuración de sincronización existente.", + "Ui.SetupWizard.SelectExisting.ManualOption": "Configurar un remoto manualmente", + "Ui.SetupWizard.SelectExisting.ManualOptionDesc": "Vuelve a configurar manualmente el mismo remoto que en tus otros dispositivos. Está pensado solo para usuarios avanzados.", + "Ui.SetupWizard.SelectExisting.ProceedManual": "Continuar con la configuración manual", + "Ui.SetupWizard.SelectExisting.ProceedQr": "Escanea con la cámara de este dispositivo el código QR mostrado en un dispositivo activo.", + "Ui.SetupWizard.SelectExisting.ProceedSetupUri": "Continuar con el Setup URI", + "Ui.SetupWizard.SelectExisting.QrOption": "Escanear un código QR (recomendado en móvil)", + "Ui.SetupWizard.SelectExisting.QrOptionDesc": "Escanea con la cámara de este dispositivo el código QR mostrado en un dispositivo activo.", + "Ui.SetupWizard.SelectExisting.Question": "Selecciona un método para importar los ajustes desde otro dispositivo.", + "Ui.SetupWizard.SelectExisting.SetupUriOption": "Usar un Setup URI (recomendado)", + "Ui.SetupWizard.SelectExisting.SetupUriOptionDesc": "Pega el Setup URI generado en uno de tus dispositivos activos.", + "Ui.SetupWizard.SelectExisting.Title": "Método de configuración del dispositivo", + "Ui.SetupWizard.SelectNew.Guidance": "Vamos a configurar la conexión de sincronización.", + "Ui.SetupWizard.SelectNew.ManualOption": "Configurar un remoto manualmente", + "Ui.SetupWizard.SelectNew.ManualOptionDesc": "Es una opción avanzada para quienes no tienen un Setup URI o quieren ajustar la configuración en detalle. También puedes usarla para la sincronización P2P en lugar de CouchDB o de un almacenamiento de objetos compatible con S3.", + "Ui.SetupWizard.SelectNew.ProceedManual": "Continuar con la configuración manual", + "Ui.SetupWizard.SelectNew.ProceedSetupUri": "Continuar con el Setup URI", + "Ui.SetupWizard.SelectNew.Question": "¿Cómo quieres configurar esta conexión de sincronización?", + "Ui.SetupWizard.SelectNew.SetupUriOption": "Usar un Setup URI (recomendado)", + "Ui.SetupWizard.SelectNew.SetupUriOptionDesc": "Un Setup URI es una única cadena que contiene los datos de conexión y autenticación. Cuando un script de instalación te proporciona uno, es la forma más sencilla y segura de configurarlo.", + "Ui.SetupWizard.SelectNew.Title": "Método de conexión", + "Ui.SetupWizard.SetupRemote.BucketOption": "Almacenamiento de objetos compatible con S3", + "Ui.SetupWizard.SetupRemote.BucketOptionDesc": "Sincronización mediante archivos de diario. Necesitas tener ya un servicio de almacenamiento de objetos compatible con S3, como Amazon S3, MinIO o Cloudflare R2.", + "Ui.SetupWizard.SetupRemote.CouchDbOptionDesc": "Es el método de sincronización más adecuado para el diseño actual y ofrece todas las funciones. Necesitas tener ya una instancia de CouchDB en marcha.", + "Ui.SetupWizard.SetupRemote.Guidance": "Selecciona el tipo de remoto para esta configuración de sincronización.", + "Ui.SetupWizard.SetupRemote.P2POption": "Punto a punto (P2P)", + "Ui.SetupWizard.SetupRemote.P2POptionDesc": "Permite la sincronización directa entre dispositivos. No hace falta servidor, pero ambos dispositivos deben estar conectados a la vez y algunas funciones pueden estar limitadas. Solo se necesita internet para la señalización, no para transferir los datos.", + "Ui.SetupWizard.SetupRemote.ProceedBucket": "Continuar con la configuración del almacenamiento de objetos", + "Ui.SetupWizard.SetupRemote.ProceedCouchDb": "Continuar con la configuración de CouchDB", + "Ui.SetupWizard.SetupRemote.ProceedP2P": "Continuar con la configuración de P2P", + "Ui.SetupWizard.SetupRemote.Title": "Elige un remoto de sincronización", "Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": "Nombre único entre dispositivos sincronizados. Para editarlo, desactive sincronización de personalización", "Use a custom passphrase": "Usar una frase de contraseña personalizada", "Use a Setup URI (Recommended)": "Usar un URI de configuración (recomendado)", diff --git a/src/common/messagesJson/ko.json b/src/common/messagesJson/ko.json index b498d203..35c8b846 100644 --- a/src/common/messagesJson/ko.json +++ b/src/common/messagesJson/ko.json @@ -212,7 +212,7 @@ "liveSyncReplicator.beforeLiveSync": "LiveSync 전에 OneShot을 먼저 시작합니다...", "liveSyncReplicator.cantReplicateLowerValue": "더 낮은 값으로 복제할 수 없습니다.", "liveSyncReplicator.checkingLastSyncPoint": "마지막으로 동기화된 지점을 찾고 있습니다.", - "liveSyncReplicator.couldNotConnectTo": "${uri}에 연결할 수 없습니다: ${name} \n(${db})", + "liveSyncReplicator.couldNotConnectTo": "${uri}에 연결할 수 없습니다: ${name}\n(${db})", "liveSyncReplicator.couldNotConnectToRemoteDb": "원격 데이터베이스에 연결할 수 없습니다: ${d}", "liveSyncReplicator.couldNotConnectToServer": "서버에 연결할 수 없습니다.", "liveSyncReplicator.couldNotConnectToURI": "${uri}에 연결할 수 없습니다: ${dbRet}", @@ -260,7 +260,7 @@ "moduleCheckRemoteSize.logExceededWarning": "원격 스토리지 크기: ${measuredSize}가 ${notifySize}를 초과했습니다", "moduleCheckRemoteSize.logThresholdEnlarged": "임계값이 ${size}MB로 증가되었습니다", "moduleCheckRemoteSize.msgConfirmRebuild": "시간이 꽤 오래 걸릴 수 있습니다. 정말 지금 모든 것을 재구축하시겠습니까?", - "moduleCheckRemoteSize.msgDatabaseGrowing": "**데이터베이스 용량이 점점 커지고 있습니다!** 하지만 걱정하지 마세요. 아직 원격 스토리지 공간이 완전히 부족해진 건 아닙니다.\n\n| 측정된 크기 | 설정된 한도 |\n| --- | --- |\n| ${estimatedSize} | ${maxSize} |\n\n> [!MORE]-\n> 오랜 기간 사용했다면 참조되지 않는 청크, 즉 '쓰레기 데이터'가 쌓였을 수 있습니다. 이 경우 전체 재구성을 권장합니다. 용량이 훨씬 줄어들 수 있습니다.\n> \n> 단순히 볼트 자체 용량이 커지고 있는 것이라면, 먼저 파일을 정리한 후 전체를 재구성하는 것이 좋습니다. Self-hosted LiveSync는 처리 속도를 위해 삭제해도 실제 데이터를 바로 지우지 않습니다. 이 내용은 [기술 문서](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md)에 간략히 정리되어 있습니다.\n> \n> 용량 증가가 괜찮다면 알림 임계치를 100MB 단위로 높일 수 있습니다. 직접 서버를 운영하는 경우에 적합한 방법입니다. 다만, 가끔은 전체 재구성을 해주는 것이 바람직합니다.\n\n> [!WARNING]\n> 전체 재구성을 실행할 경우, 모든 기기가 반드시 동기화되어 있어야 합니다. 플러그인이 최대한 병합하려고 시도하긴 하지만 완전하지 않을 수 있습니다.", + "moduleCheckRemoteSize.msgDatabaseGrowing": "**데이터베이스 용량이 점점 커지고 있습니다!** 하지만 걱정하지 마세요. 아직 원격 스토리지 공간이 완전히 부족해진 건 아닙니다.\n\n| 측정된 크기 | 설정된 한도 |\n| --- | --- |\n| ${estimatedSize} | ${maxSize} |\n\n> [!MORE]-\n> 오랜 기간 사용했다면 참조되지 않는 청크, 즉 '쓰레기 데이터'가 쌓였을 수 있습니다. 이 경우 전체 재구성을 권장합니다. 용량이 훨씬 줄어들 수 있습니다.\n>\n> 단순히 볼트 자체 용량이 커지고 있는 것이라면, 먼저 파일을 정리한 후 전체를 재구성하는 것이 좋습니다. Self-hosted LiveSync는 처리 속도를 위해 삭제해도 실제 데이터를 바로 지우지 않습니다. 이 내용은 [기술 문서](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md)에 간략히 정리되어 있습니다.\n>\n> 용량 증가가 괜찮다면 알림 임계치를 100MB 단위로 높일 수 있습니다. 직접 서버를 운영하는 경우에 적합한 방법입니다. 다만, 가끔은 전체 재구성을 해주는 것이 바람직합니다.\n\n> [!WARNING]\n> 전체 재구성을 실행할 경우, 모든 기기가 반드시 동기화되어 있어야 합니다. 플러그인이 최대한 병합하려고 시도하긴 하지만 완전하지 않을 수 있습니다.", "moduleCheckRemoteSize.msgSetDBCapacity": "**원격 스토리지 공간이 부족해지기 전에 미리 조치할 수 있도록** 데이터베이스 용량 경고를 설정할 수 있습니다.\n이 기능을 활성화하시겠습니까?\n\n> [!MORE]-\n> - 0: 스토리지 용량에 대한 경고 없음\n> 자체 서버를 사용하는 등 여유 공간이 충분한 경우에 권장됩니다. 스토리지 용량을 직접 확인하고 수동으로 재구성할 수 있습니다.\n> - 800: 원격 스토리지 용량이 800MB를 초과하면 경고\n> 1GB 제한이 있는 fly.io나 IBM Cloudant 사용 시 권장됩니다.\n> - 2000: 원격 스토리지 용량이 2GB를 초과하면 경고\n\n설정한 용량 한도에 도달하면, 단계적으로 경고 한도를 늘릴지 여부를 묻게 됩니다.\n", "moduleCheckRemoteSize.option2GB": "2GB (표준)", "moduleCheckRemoteSize.option800MB": "800MB (Cloudant, fly.io)", @@ -386,7 +386,7 @@ "obsidianLiveSyncSettingTab.logCheckingConfigDone": "구성 확인 완료", "obsidianLiveSyncSettingTab.logCheckingConfigFailed": "구성 확인 실패", "obsidianLiveSyncSettingTab.logCheckingDbConfig": "데이터베이스 구성 확인 중", - "obsidianLiveSyncSettingTab.logCheckPassphraseFailed": "오류: 원격 서버와 패스프레이즈 확인에 실패했습니다: \n${db}.", + "obsidianLiveSyncSettingTab.logCheckPassphraseFailed": "오류: 원격 서버와 패스프레이즈 확인에 실패했습니다:\n${db}.", "obsidianLiveSyncSettingTab.logConfiguredDisabled": "구성된 동기화 모드: 비활성화됨", "obsidianLiveSyncSettingTab.logConfiguredLiveSync": "구성된 동기화 모드: LiveSync", "obsidianLiveSyncSettingTab.logConfiguredPeriodic": "구성된 동기화 모드: 주기적", diff --git a/src/common/messagesJson/zh.json b/src/common/messagesJson/zh.json index 7203005c..0a238406 100644 --- a/src/common/messagesJson/zh.json +++ b/src/common/messagesJson/zh.json @@ -263,7 +263,7 @@ "moduleCheckRemoteSize.logExceededWarning": "远程存储大小:${measuredSize} 超过 ${notifySize}", "moduleCheckRemoteSize.logThresholdEnlarged": "阈值已扩大到 ${size}MB", "moduleCheckRemoteSize.msgConfirmRebuild": "这可能需要一些时间。您真的想现在重建所有内容吗?", - "moduleCheckRemoteSize.msgDatabaseGrowing": "**您的数据库正在变大!** 但别担心,我们现在可以解决它。在远程存储空间用完之前还有时间。\n\n| 测量大小 | 配置大小 |\n| --- | --- |\n| ${estimatedSize} | ${maxSize} |\n\n> [!MORE]-\n> 如果您已经使用了很多年,数据库中可能会积累未引用的 chunks——也就是垃圾。因此,我们建议重建所有内容。它可能会变得小得多。\n> \n> 如果您的库容量只是在增加,最好在整理文件后重建所有内容。即使您为了加速过程删除了文件,Self-hosted LiveSync 也不会删除实际数据。这大致[有文档记录](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md)。\n> \n> 如果您不介意增加,可以将通知限制增加 100MB。如果您在自己的服务器上运行,就是这种情况。但是,最好还是不时地重建所有内容。\n> \n\n> [!WARNING]\n> 如果您执行重建所有内容,请确保所有设备都已同步。尽管如此,插件会尽可能地合并\n", + "moduleCheckRemoteSize.msgDatabaseGrowing": "**您的数据库正在变大!** 但别担心,我们现在可以解决它。在远程存储空间用完之前还有时间。\n\n| 测量大小 | 配置大小 |\n| --- | --- |\n| ${estimatedSize} | ${maxSize} |\n\n> [!MORE]-\n> 如果您已经使用了很多年,数据库中可能会积累未引用的 chunks——也就是垃圾。因此,我们建议重建所有内容。它可能会变得小得多。\n>\n> 如果您的库容量只是在增加,最好在整理文件后重建所有内容。即使您为了加速过程删除了文件,Self-hosted LiveSync 也不会删除实际数据。这大致[有文档记录](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md)。\n>\n> 如果您不介意增加,可以将通知限制增加 100MB。如果您在自己的服务器上运行,就是这种情况。但是,最好还是不时地重建所有内容。\n>\n\n> [!WARNING]\n> 如果您执行重建所有内容,请确保所有设备都已同步。尽管如此,插件会尽可能地合并\n", "moduleCheckRemoteSize.msgSetDBCapacity": "我们可以设置一个最大数据库容量警告,**以便在远程存储空间耗尽前采取行动**。\n您想启用这个功能吗?\n\n> [!MORE]-\n> - 0: 不警告存储大小。\n> 如果您在远程存储(尤其是自托管)上有足够的空间,则推荐此选项。您可以手动检查存储大小并重建。\n> - 800: 如果远程存储大小超过 800MB 则发出警告。\n> 如果您使用的是 fly.io(1GB 限制) 或 IBM Cloudant,则推荐此选项。\n> - 2000: 如果远程存储大小超过 2GB 则发出警告。\n\n如果达到限制,系统会要求我们逐步增大限制\n", "moduleCheckRemoteSize.option2GB": "2GB (标准)", "moduleCheckRemoteSize.option800MB": "800MB (Cloudant, fly.io)", @@ -317,7 +317,7 @@ "moduleMigration.msgFetchRemoteAgain": "您可能已经知道,Self-hosted LiveSync 更改了其默认行为和数据库结构。\n\n值得庆幸的是,在您的时间和努力下,远程数据库似乎已经迁移完成。恭喜!\n\n但是,我们还需要一点点操作。此设备的配置与远程数据库不兼容。我们需要再次从远程数据库获取。我们现在应该再次从远程获取吗?\n\n___注意:在更改配置并再次获取数据库之前,我们无法进行同步。___\n___注意2:chunks 是完全不可变的,我们只能获取元数据和差异", "moduleMigration.msgInitialSetup": "您的设备**尚未设置**。让我引导您完成设置过程。\n\n请记住,每个对话框内容都可以复制到剪贴板。如果以后需要参考,可以将其粘贴到 Obsidian 的笔记中。您也可以使用翻译工具将其翻译成您的语言。\n\n首先,您有**设置 URI** 吗?\n\n注意:如果您不知道这是什么,请参阅[文档](${URI_DOC})", "moduleMigration.msgRecommendSetupUri": "我们强烈建议您生成一个设置 URI 并使用它。\n如果您对此不了解,请参阅[文档](${URI_DOC})(再次抱歉,但这很重要)。\n\n您想如何手动设置?", - "moduleMigration.msgSinceV02321": "自 v0.23.21 起,Self-hosted LiveSync 更改了默认行为和数据库结构。进行了以下更改:\n\n1. **文件名的区分大小写** \n现在处理文件名时不区分大小写。这对于大多数平台来说是一个有益的更改,除了 Linux 和 iOS,它们不能有效地管理文件名的大小写敏感性。\n(在这些平台上,对于名称相同但大小写不同的文件将显示警告)。\n\n2. **chunks 的版本处理** \nchunks 是不可变的,这使得它们的版本可以固定。此更改将提高文件保存的性能。\n\n___然而,要启用这些更改中的任何一个,都需要重建远程和本地数据库。这个过程需要几分钟,我们建议您在有充足时间时进行。___\n\n- 如果您希望保持以前的行为,可以使用 `${KEEP}` 跳过此过程。\n- 如果您没有足够的时间,请选择 `${DISMISS}`。稍后会再次提示您。\n- 如果您已在另一台设备上重建了数据库,请选择 `${DISMISS}` 并尝试再次同步。由于检测到差异,系统会再次提示您", + "moduleMigration.msgSinceV02321": "自 v0.23.21 起,Self-hosted LiveSync 更改了默认行为和数据库结构。进行了以下更改:\n\n1. **文件名的区分大小写**\n现在处理文件名时不区分大小写。这对于大多数平台来说是一个有益的更改,除了 Linux 和 iOS,它们不能有效地管理文件名的大小写敏感性。\n(在这些平台上,对于名称相同但大小写不同的文件将显示警告)。\n\n2. **chunks 的版本处理**\nchunks 是不可变的,这使得它们的版本可以固定。此更改将提高文件保存的性能。\n\n___然而,要启用这些更改中的任何一个,都需要重建远程和本地数据库。这个过程需要几分钟,我们建议您在有充足时间时进行。___\n\n- 如果您希望保持以前的行为,可以使用 `${KEEP}` 跳过此过程。\n- 如果您没有足够的时间,请选择 `${DISMISS}`。稍后会再次提示您。\n- 如果您已在另一台设备上重建了数据库,请选择 `${DISMISS}` 并尝试再次同步。由于检测到差异,系统会再次提示您", "moduleMigration.optionAdjustRemote": "调整到远程设置", "moduleMigration.optionDecideLater": "稍后决定", "moduleMigration.optionEnableBoth": "启用两者", @@ -402,7 +402,7 @@ "obsidianLiveSyncSettingTab.logCheckingConfigDone": "配置检查完成", "obsidianLiveSyncSettingTab.logCheckingConfigFailed": "配置检查失败", "obsidianLiveSyncSettingTab.logCheckingDbConfig": "正在检查数据库配置", - "obsidianLiveSyncSettingTab.logCheckPassphraseFailed": "错误:无法使用远程服务器检查密码:\n${db} ", + "obsidianLiveSyncSettingTab.logCheckPassphraseFailed": "错误:无法使用远程服务器检查密码:\n${db}", "obsidianLiveSyncSettingTab.logConfiguredDisabled": "已配置的同步模式:已禁用", "obsidianLiveSyncSettingTab.logConfiguredLiveSync": "已配置的同步模式:LiveSync", "obsidianLiveSyncSettingTab.logConfiguredPeriodic": "已配置的同步模式:定期同步", diff --git a/src/common/messagesYAML/es.yaml b/src/common/messagesYAML/es.yaml index 7b686322..62427935 100644 --- a/src/common/messagesYAML/es.yaml +++ b/src/common/messagesYAML/es.yaml @@ -17,11 +17,25 @@ (RegExp) If this is set, any changes to local and remote files that match this will be skipped.: (RegExp) Si se establece, se omitirá cualquier cambio en archivos locales y remotos que coincida con este patrón. +"> [!INFO]- The connected devices have been detected as follows:\n${devices}": |- + > [!INFO]- Se han detectado los siguientes dispositivos conectados: + ${devices} Access Key: Clave de acceso Activate: Activar +Active Remote Configuration: Configuración remota activa Add default patterns: Añadir patrones predeterminados Add new connection: Añadir conexión +All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.: + Todos los dispositivos tienen el mismo valor de progreso (${progress}). Parece + que están sincronizados, por lo que se puede continuar con la recolección de + basura. Always prompt merge conflicts: Siempre preguntar en conflictos +Analyse: Analizar +Analyse database usage: Analizar el uso de la base de datos +Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.: + Analiza el uso de la base de datos y genera un informe TSV para que puedas + diagnosticarlo tú mismo. Puedes pegar el informe generado en la hoja de + cálculo que prefieras. Apply Latest Change if Conflicting: Aplicar último cambio en conflictos Apply preset configuration: Aplicar configuración predefinida Ask a passphrase at every launch: Solicitar la frase de contraseña en cada inicio @@ -37,6 +51,12 @@ Before v0.17.16, we used an old adapter for the local database. Now the new adap reconstruir BD local. Desactive cuando pueda Bucket Name: Nombre del bucket Cancel: Cancelar +Cancel Garbage Collection: Cancelar la recolección de basura +Changing this setting requires migrating existing data (a bit time may be taken) and restarting Obsidian. Please make sure to back up your data before proceeding.: + Cambiar este ajuste requiere migrar los datos existentes (puede tardar un + poco) y reiniciar Obsidian. Asegúrate de hacer una copia de seguridad de tus + datos antes de continuar. +Check: Comprobar Check and convert non-path-obfuscated files: Comprobar y convertir archivos sin ofuscación de ruta Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.: Comprueba los documentos que aún no se hayan convertido a identificadores con @@ -44,6 +64,10 @@ Check for documents that have not been converted to path-obfuscated IDs and conv cmdConfigSync: showCustomizationSync: Mostrar sincronización de personalización Comma separated `.gitignore, .dockerignore`: "Separados por comas: `.gitignore, .dockerignore`" +Compaction in progress on remote database...: Compactación en curso en la base de datos remota... +Compaction on remote database completed successfully.: La compactación de la base de datos remota se ha completado correctamente. +Compaction on remote database failed.: La compactación de la base de datos remota ha fallado. +Compaction on remote database timed out.: La compactación de la base de datos remota ha superado el tiempo de espera. Compare the content of files between on local database and storage. If not matched, you will be asked which one you want to keep.: Compara el contenido de los archivos entre la base de datos local y el almacenamiento. Si no coinciden, se te preguntará cuál deseas conservar. @@ -53,6 +77,7 @@ Compatibility (Internal API Usage): Compatibilidad (uso de la API interna) Compatibility (Metadata): Compatibilidad (metadatos) Compatibility (Remote Database): Compatibilidad (base de datos remota) Compatibility (Trouble addressed): Compatibilidad (problemas corregidos) +Compute revisions for chunks: Calcular revisiones para los chunks Compute revisions for chunks (Previous behaviour): Calcular revisiones para chunks (comportamiento anterior) Configuration Encryption: Cifrado de configuración Configure: Configurar @@ -60,12 +85,14 @@ Configure And Change Remote: Configurar y cambiar remoto Configure E2EE: Configurar E2EE Configure Remote: Configurar remoto Copy: Copiar +Copy Report to clipboard: Copiar el informe al portapapeles CouchDB Connection Tweak: Ajustes de conexión de CouchDB Cross-platform: Multiplataforma "Current adapter: {adapter}": "Adaptador actual: {adapter}" Customization Sync: Sincronización de personalización Customization Sync (Beta3): Sincronización de personalización (Beta3) Data Compression: Compresión de datos +Database -> Storage: Base de datos -> Almacenamiento Database Adapter: Adaptador de base de datos Database Name: Nombre de la base de datos Database suffix: Sufijo de base de datos @@ -83,7 +110,25 @@ Delete Remote Configuration: Eliminar configuración remota Delete remote configuration '{name}'?: ¿Eliminar la configuración remota '{name}'? desktop: equipo de escritorio Developer: Desarrollador +Device: Dispositivo Device name: Nombre del dispositivo +dialog: + yourLanguageAvailable: + _value: >- + Self-hosted LiveSync tenía traducciones para tu idioma, así que se ha + activado el ajuste %{Display language}. + + + Nota: no todos los mensajes están traducidos. ¡Esperamos tus + contribuciones! + + Nota 2: si abres una incidencia, **vuelve antes a %{lang-def}** y luego + haz las capturas de pantalla y recoge los mensajes y registros. Puedes + hacerlo desde el diálogo de ajustes. + + ¡Que lo disfrutes! + Title: " ¡Hay traducción disponible!" + btnRevertToDefault: Mantener %{lang-def} Disables all synchronization and restart.: Desactiva toda la sincronización y reinicia la aplicación. Disables logging, only shows notifications. Please disable if you report an issue.: Desactiva registros, solo muestra notificaciones. Desactívelo si reporta un @@ -94,6 +139,67 @@ Do not check configuration mismatch before replication: No verificar incompatibi Do not keep metadata of deleted files.: No conservar metadatos de archivos borrados Do not split chunks in the background: No dividir chunks en segundo plano Do not use internal API: No usar API interna +Doctor: + Button: + DismissThisVersion: No, y no volver a preguntar hasta la próxima versión + Fix: Corregirlo + FixButNoRebuild: Corregirlo, pero sin reconstruir + No: No + Skip: Dejarlo como está + Yes: Sí + Dialogue: + Main: |- + ¡Hola! El Doctor de configuración se ha activado por ${activateReason}. + Por desgracia, se han detectado algunos ajustes como posibles problemas. + Tranquilo: los resolveremos uno a uno. + + Para que lo sepas de antemano, te preguntaremos por los siguientes puntos. + + ${issues} + + ¿Empezamos? + MainFix: |- + + ## ${name} + + | Actual | Ideal | + |:---:|:---:| + | ${current} | ${ideal} | + + **Nivel de recomendación:** ${level} + + ### ¿Por qué se ha detectado? + + ${reason} + + ${note} + + ¿Ajustarlo al valor ideal? + Title: Doctor de configuración de Self-hosted LiveSync + TitleAlmostDone: ¡Casi hemos terminado! + TitleFix: Corregir el problema ${current}/${total} + Level: + Must: Obligatorio + Necessary: Necesario + Optional: Opcional + Recommended: Recomendado + Message: + NoIssues: ¡No se ha detectado ningún problema! + RebuildLocalRequired: ¡Atención! Hay que reconstruir la base de datos local para aplicar esto. + RebuildRequired: ¡Atención! Hay que reconstruir para aplicar esto. + SomeSkipped: Hemos dejado algunos problemas sin resolver. ¿Quieres que te lo + pregunte de nuevo en el próximo inicio? + RULES: + E2EE_V02500: + REASON: "El cifrado de extremo a extremo es ahora más robusto y más rápido. + Además, una nueva revisión del código reveló que el E2EE anterior estaba + comprometido, por lo que conviene aplicarlo cuanto antes. Lamentamos de + veras las molestias. Este ajuste no es compatible con versiones + anteriores: todos los dispositivos sincronizados deben actualizarse a la + v0.25.0 o superior. No es necesario reconstruir (los datos se + convertirán al nuevo formato durante la transferencia), pero se + recomienda hacerlo siempre que sea posible." +Document History: Historial del documento Duplicate: Duplicar Duplicate remote: Duplicar remoto E2EE Configuration: Configuración de E2EE @@ -119,18 +225,39 @@ End-to-End Encryption: Cifrado de extremo a extremo Endpoint URL: URL del endpoint Enhance chunk size: Mejorar tamaño de chunks Export: Exportar +Failed to connect to remote for compaction.: No se pudo conectar al remoto para la compactación. +Failed to connect to remote for compaction. ${reason}: No se pudo conectar al remoto para la compactación. ${reason} +Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.: + No se pudo iniciar la replicación puntual previa a la recolección de basura. + Recolección de basura cancelada. +Failed to start replication after Garbage Collection.: No se pudo iniciar la replicación después de la recolección de basura. Fetch: Obtener Fetch chunks on demand: Obtener chunks bajo demanda Fetch database with previous behaviour: Obtener BD con comportamiento anterior Fetch remote settings: Obtener ajustes remotos File to resolve conflict: Archivo para resolver el conflicto +File to view History: Archivo cuyo historial se va a ver Filename: Nombre de archivo Flag and restart: Marcar y reiniciar Forces the file to be synced when opened.: Forzar sincronización al abrir archivo Fresh Start Wipe: Borrado para reinicio completo +Garbage Collection cancelled by user.: Recolección de basura cancelada por el usuario. +"Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": + "Recolección de basura completada. Chunks eliminados: ${deletedChunks} / + ${totalChunks}. Tiempo empleado: ${seconds} segundos." +Garbage Collection Confirmation: Confirmación de la recolección de basura Garbage Collection V3 (Beta): Recolección de basura V3 (Beta) +"Garbage Collection: Found ${unusedChunks} unused chunks to delete.": + "Recolección de basura: se han encontrado ${unusedChunks} chunks sin usar para + eliminar." +"Garbage Collection: Scanned ${scanned} / ~${docCount}": "Recolección de basura: analizados ${scanned} / ~${docCount}" +"Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": + "Recolección de basura: análisis completado. Chunks totales: ${totalChunks}, + chunks en uso: ${usedChunks}" Handle files as Case-Sensitive: Manejar archivos como sensibles a mayúsculas Hidden Files: Archivos ocultos +Hide completely: Ocultar por completo +Highlight diff: Resaltar las diferencias How to display network errors when the sync server is unreachable.: Cómo mostrar los errores de red cuando el servidor de sincronización no está disponible. @@ -158,6 +285,10 @@ If this is set, changes to local files which are matched by the ignore files wil If this option is enabled, PouchDB will hold the connection open for 60 seconds, and if no change arrives in that time, close and reopen the socket, instead of holding it open indefinitely. Useful when a proxy limits request duration but can increase resource usage.: Mantiene conexión 60s. Si no hay cambios, reinicia socket. Útil con proxies limitantes +If you reached the payload size limit when using IBM Cloudant, please decrease batch size and batch limit to a lower value.: + Si alcanzas el límite de tamaño de carga al usar IBM Cloudant, reduce el + tamaño de lote y el límite de lote. +Ignore and Proceed: Ignorar y continuar Ignore files: Archivos a ignorar Ignore patterns: Patrones de exclusión Import connection: Importar conexión @@ -165,12 +296,32 @@ Incubate Chunks in Document: Incubar chunks en documento Initialise all journal history, On the next sync, every item will be received and sent.: Restablece todo el historial del diario. En la próxima sincronización se recibirán y enviarán todos los elementos. +Initialise journal received history. On the next sync, every item except this device sent will be downloaded again.: + Inicializa el historial de recepción del diario. En la próxima sincronización + se volverán a descargar todos los elementos salvo los enviados por este + dispositivo. +Initialise journal sent history. On the next sync, every item except this device received will be sent again.: + Inicializa el historial de envío del diario. En la próxima sincronización se + volverán a enviar todos los elementos salvo los recibidos por este + dispositivo. Interval (sec): Intervalo (segundos) +K: + P2P: "%{Peer} a %{Peer}" + Peer: par + ScanCustomization: Buscar personalizaciones + exp: Experimental + long_p2p_sync: "%{title_p2p_sync}" + short_p2p_sync: Sincronización P2P + title_p2p_sync: Sincronización punto a punto Keep empty folder: Mantener carpetas vacías +lang_def: Predeterminado lang-de: Alemán +lang-def: "%{lang_def}" lang-es: Español lang-fr: Français +lang-he: Hebreo lang-ja: Japonés +lang-ko: Coreano lang-ru: Ruso lang-zh: Chino simplificado lang-zh-tw: Chino tradicional @@ -204,6 +355,8 @@ liveSyncReplicator: replicationInProgress: Replicación en curso retryLowerBatchSize: Reintentar con tamaño de lote más bajo:${batch_size}/${batches_limit} unlockRemoteDb: Desbloquear base de datos remota para prevenir corrupción de datos + mismatchedTweakDetected: Se han detectado discrepancias en la configuración + entre dispositivos. Ejecutar una replicación manual intentará resolverlo. liveSyncSetting: errorNoSuchSettingItem: "No existe el ajuste: ${key}" originalValue: "Original: ${value}" @@ -233,6 +386,7 @@ Memory cache size (by total characters): Tamaño caché memoria (por caracteres) Memory cache size (by total items): Tamaño caché memoria (por ítems) Merge: Fusionar Minimum delay for batch database updating: Retraso mínimo para actualización por lotes +Minimum interval for syncing: Intervalo mínimo de sincronización moduleCheckRemoteSize: logCheckingStorageSizes: Comprobando tamaños de almacenamiento logCurrentStorageSize: "Tamaño del almacenamiento remoto: ${measuredSize}" @@ -292,6 +446,11 @@ moduleCheckRemoteSize: optionRebuildAll: Reconstruir todo ahora titleDatabaseSizeLimitExceeded: El tamaño del almacenamiento remoto superó el límite titleDatabaseSizeNotify: Configuración de notificación de tamaño de base de datos + noticeExceeded: El tamaño del almacenamiento remoto es de ${measuredSize}, por + encima del umbral de aviso configurado de ${notifySize}. {HERE} + noticeNotConfigured: Los avisos sobre el tamaño del almacenamiento remoto no + están configurados. {HERE} + optionReview: Revisar las opciones moduleInputUIObsidian: defaultTitleConfirmation: Confirmación defaultTitleSelect: Seleccionar @@ -436,6 +595,299 @@ moduleMigration: optionKeepPreviousBehaviour: Mantener comportamiento anterior optionManualSetup: Configurarlo todo manualmente optionNoAskAgain: No, por favor pregúntame de nuevo + fix0256: + buttons: + DismissForever: Ya lo he corregido, no volver a preguntar + checkItLater: Comprobarlo más tarde + fix: Corregir + message: > + Debido a un error reciente (en la v0.25.6), puede que algunos archivos no + se hayan guardado correctamente en la base de datos de sincronización. + + Hemos analizado tus archivos y hemos encontrado algunos que hay que + corregir. + + + **Archivos que se pueden corregir:** + + + ${files} + + + Estos archivos tienen en el almacenamiento un original cuyo tamaño + coincide, por lo que es probable que se puedan recuperar. + + Podemos usarlos para corregir la base de datos: pulsa el botón «Corregir» + de abajo. + + + ${messageUnrecoverable} + + + Si quieres volver a ejecutarlo, puedes hacerlo desde Hatch. + messageUnrecoverable: > + **Archivos que no se pueden corregir en este dispositivo:** + + + ${filesNotRecoverable} + + + Estos archivos tienen metadatos inconsistentes y no se pueden corregir en + este dispositivo (por lo general no podemos determinar cuál es el + correcto). + + Para restaurarlos, comprueba tus otros dispositivos (también con esta + función) o restáuralos manualmente desde una copia de seguridad. + title: Se han detectado archivos dañados + insecureChunkExist: + buttons: + fetch: Ya he reconstruido el remoto. Obtener desde el remoto + later: Lo haré más tarde + rebuild: Reconstruir todo + laterMessage: ¡Te recomendamos encarecidamente solucionarlo cuanto antes! + message: > + Algunos chunks no se almacenan de forma segura y no están cifrados en las + bases de datos. + + **Reconstruye la base de datos para solucionarlo**. + + + Si tu base de datos remota no está configurada con SSL o usa credenciales + poco seguras, **corres el riesgo de exponer datos sensibles**. + + + Nota: actualiza Self-hosted LiveSync a la v0.25.6 o superior en todos tus + dispositivos y haz una copia de seguridad fiable de tu vault. + + Nota 2: reconstruir todo y obtener los datos consume algo de tiempo y de + tráfico; hazlo en horas de poco uso y con una conexión de red estable. + title: ¡Se han encontrado chunks no seguros! + optionNoSetupUri: No, no tengo + optionRemindNextLaunch: Recordármelo en el próximo inicio + optionSetupViaP2P: Usar %{short_p2p_sync} para configurarlo + optionSetupWizard: Llévame al asistente de configuración + optionYesFetchAgain: Sí, obtener de nuevo + titleCaseSensitivity: Distinción de mayúsculas y minúsculas + titleRecommendSetupUri: Recomendación de usar un Setup URI + titleWelcome: Bienvenido a Self-hosted LiveSync +No connected device information found. Cancelling Garbage Collection.: + No se ha encontrado información de dispositivos conectados. Se cancela la + recolección de basura. +Node ID: ID de nodo +Node Information Missing: Falta la información del nodo +Obsidian version: Versión de Obsidian +P2P: + AskPassphraseForDecrypt: El par remoto ha compartido la configuración. Introduce + la frase de contraseña para descifrarla. + AskPassphraseForShare: El par remoto ha solicitado la configuración de este + dispositivo. Introduce la frase de contraseña para compartirla. Puedes + ignorar la solicitud cancelando este diálogo. + DisabledButNeed: "%{title_p2p_sync} está desactivada. ¿Seguro que quieres activarla?" + FailedToOpen: No se pudo abrir la conexión P2P con el servidor de señalización. + NoAutoSyncPeers: No se han encontrado pares de sincronización automática. + Configúralos en el panel de %{long_p2p_sync}. + NoKnownPeers: No se ha detectado ningún par; esperando a que se conecten otros... + NotEnabled: "%{title_p2p_sync} no está activada. No se puede abrir una conexión nueva." + Note: + Summary: ¿Qué es esta función? (incluye notas importantes; léelas al menos una vez) + description: >2- + Este replicador permite sincronizar el vault con otros dispositivos + mediante una conexión punto a punto. Así se puede sincronizar con nuestros + otros dispositivos sin usar un servicio en la nube. + + El replicador se basa en Trystero. Usa además un servidor de señalización + para establecer la conexión entre dispositivos. Ese servidor sirve para + intercambiar la información de conexión y no conoce (ni debería almacenar) + ninguno de nuestros datos. + + + Cualquiera puede alojar el servidor de señalización: es simplemente un + relé Nostr. Por comodidad y para poder comprobar el comportamiento del + replicador, vrtmrz aloja una instancia. Puedes usar ese servidor + experimental o cualquier otro. + + + Por cierto, aunque el servidor de señalización no almacene nuestros datos, + sí puede ver la información de conexión de algunos de nuestros + dispositivos. Tenlo en cuenta y ten precaución al usar un servidor de + terceros. + important_note: Replicador punto a punto. + important_note_sub: Esta función sigue siendo muy experimental. Asegúrate de + tener una copia de seguridad de tus datos antes de usarla. Y nos alegraría + mucho que quisieras contribuir a su desarrollo. + P2PReplication: Replicación %{P2P} + PaneTitle: "%{long_p2p_sync}" + ReplicatorInstanceMissing: No se encuentra el replicador de sincronización P2P; + puede que no esté configurado o activado. + SeemsOffline: El par ${name} parece estar desconectado; se omite. + SyncAlreadyRunning: La sincronización P2P ya está en marcha. + SyncCompleted: Sincronización P2P completada. + SyncStartedWith: Se ha iniciado la sincronización P2P con ${name}. +Pick a file to show history: Elige un archivo para ver su historial +Please disable 'Read chunks online' in settings to use Garbage Collection.: + Desactiva «Leer chunks en línea» en los ajustes para poder usar la recolección + de basura. +Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.: + Activa «Calcular revisiones para los chunks» en los ajustes para poder usar la + recolección de basura. +Please select 'Cancel' explicitly to cancel this operation.: Selecciona «Cancelar» de forma explícita para cancelar esta operación. +Plug-in version: Versión del complemento +Prepare the 'report' to create an issue: Preparar el «informe» para abrir una incidencia +Proceed Garbage Collection: Continuar con la recolección de basura +Proceeding with Garbage Collection, ignoring missing nodes.: Se continúa con la recolección de basura, ignorando los nodos ausentes. +Proceeding with Garbage Collection.: Se continúa con la recolección de basura. +Progress: Progreso +Property Encryption: Cifrado de propiedades +Recovery and Repair: Recuperación y reparación +RedFlag: + Fetch: + Method: + Desc: >- + ¿Cómo quieres obtener los datos? + + - %{RedFlag.Fetch.Method.FetchSafer}. + **Poco tráfico**, **mucha CPU**, **riesgo bajo** + Recomendado si... + - Los archivos podrían ser inconsistentes + - No hay demasiados archivos + - %{RedFlag.Fetch.Method.FetchSmoother}. + **Poco tráfico**, **CPU moderada**, **riesgo bajo o moderado** + Recomendado si... + - Los archivos son probablemente consistentes + - Tienes muchos archivos + - %{RedFlag.Fetch.Method.FetchTraditional}. + **Mucho tráfico**, **poca CPU**, **riesgo bajo o moderado** + + >[!INFO]- Detalles + + > ## %{RedFlag.Fetch.Method.FetchSafer}. + + > **Poco tráfico**, **mucha CPU**, **riesgo bajo** + + > Esta opción crea primero una base de datos local a partir de los + archivos locales existentes antes de obtener los datos del remoto. + + > Si un archivo existe tanto en local como en remoto, solo se + transferirán las diferencias. + + > Sin embargo, los archivos presentes en ambos sitios se tratarán + inicialmente como archivos en conflicto. Se resolverán automáticamente + si en realidad no lo están, pero el proceso puede tardar. + + > En general es el método más seguro y el que menos riesgo de pérdida de + datos conlleva. + + > ## %{RedFlag.Fetch.Method.FetchSmoother}. + + > **Poco tráfico**, **CPU moderada**, **riesgo bajo o moderado** (según + la operación) + + > Esta opción crea primero los chunks de los archivos locales para la + base de datos y después obtiene los datos. Así solo se transfieren los + chunks que faltan en local. Aun así, todos los metadatos se toman del + remoto. + + > Al iniciar, los archivos locales se comparan con esos metadatos. El + contenido considerado más reciente sobrescribirá al más antiguo (según + la fecha de modificación) y el resultado se sincroniza de vuelta a la + base de datos remota. + + > Es seguro si los archivos locales son realmente los de fecha más + reciente, pero puede dar problemas si un archivo tiene una fecha más + nueva y un contenido más antiguo (como el `welcome.md` inicial). + + > Usa menos CPU y es más rápido que + «%{RedFlag.Fetch.Method.FetchSafer}», pero puede provocar pérdida de + datos si no se usa con cuidado. + + > ## %{RedFlag.Fetch.Method.FetchTraditional}. + + > **Mucho tráfico**, **poca CPU**, **riesgo bajo o moderado** (según la + operación) + + > Se obtiene todo del remoto. + + > Similar a %{RedFlag.Fetch.Method.FetchSmoother}, pero todos los chunks + se descargan del remoto. + + > Es la forma más tradicional de obtener los datos y normalmente la que + más tráfico y tiempo consume. Conlleva un riesgo de sobrescribir + archivos remotos parecido al de «%{RedFlag.Fetch.Method.FetchSmoother}». + + > Aun así, suele considerarse el método más estable, por ser el más + antiguo y directo. + FetchSafer: Crear una base de datos local antes de obtener los datos + FetchSmoother: Crear los chunks de los archivos locales antes de obtener los datos + FetchTraditional: Obtener todo del remoto + Title: ¿Cómo quieres obtener los datos? + FetchRemoteConfig: + Buttons: + Cancel: No, usar los ajustes locales + Fetch: Sí, obtener y aplicar los ajustes remotos + Message: ¿Quieres obtener y aplicar en este dispositivo los ajustes de + preferencias guardados en el remoto? + Title: Obtener la configuración remota +Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.: + Reduce el espacio de almacenamiento descartando todas las revisiones que no + sean la última. Requiere la misma cantidad de espacio libre en el servidor + remoto y en el cliente local. +Replicator: + Dialogue: + Locked: + Action: + Dismiss: Cancelar para volver a confirmarlo + Fetch: Restablecer la sincronización en este dispositivo + Unlock: Desbloquear la base de datos remota + Message: + _value: > + La base de datos remota está bloqueada porque se ha reconstruido en + uno de los dispositivos. + + Por eso se pide a este dispositivo que no se conecte, para evitar + corromper la base de datos. + + + Hay tres opciones posibles: + + + - %{Replicator.Dialogue.Locked.Action.Fetch} + La más recomendable y fiable. Descarta la base de datos local y vuelve a tomar toda la información de sincronización del remoto. En la mayoría de los casos se puede hacer sin riesgo, aunque lleva algo de tiempo y conviene hacerlo con una red estable. + - %{Replicator.Dialogue.Locked.Action.Unlock} + Solo se puede usar si ya estamos sincronizados de forma fiable por otros métodos de replicación. Esto no significa simplemente tener los mismos archivos. Si no estás seguro, evítala. + - %{Replicator.Dialogue.Locked.Action.Dismiss} + Cancela la operación. Se volverá a preguntar en la próxima solicitud. + Fetch: Se ha programado la obtención completa. El complemento se reiniciará para + llevarla a cabo. + Unlocked: La base de datos remota se ha desbloqueado. Vuelve a intentar la + operación. + Title: Bloqueada + Message: + Cleaned: Se está limpiando la base de datos; la replicación se ha cancelado + InitialiseFatalError: No hay ningún replicador disponible; se trata de un error grave. + Pending: Hay eventos de archivo pendientes. La replicación se ha cancelado. + SomeModuleFailed: La replicación se ha cancelado por el fallo de algún módulo + VersionUpFlash: Se ha detectado una actualización. Abre el diálogo de ajustes y + consulta el registro de cambios. La replicación se ha cancelado. +Rerun Onboarding Wizard: Volver a ejecutar el asistente de configuración inicial +Rerun the onboarding wizard to set up Self-hosted LiveSync again.: + Vuelve a ejecutar el asistente de configuración inicial para configurar + Self-hosted LiveSync de nuevo. +Rerun Wizard: Volver a ejecutar el asistente +Reset notification threshold and check the remote database usage: Restablecer el umbral de aviso y comprobar el uso de la base de datos remota +Reset the remote storage size threshold and check the remote storage size again.: + Restablece el umbral de tamaño del almacenamiento remoto y vuelve a comprobar + su tamaño. +Restarting Obsidian is strongly recommended. Until restart, some changes may not take effect, and display may be inconsistent. Are you sure to restart now?: + Se recomienda encarecidamente reiniciar Obsidian. Hasta que lo hagas, puede + que algunos cambios no surtan efecto y que la interfaz se muestre de forma + inconsistente. ¿Seguro que quieres reiniciar ahora? +Run Doctor: Ejecutar el Doctor +Scan for Broken files: Buscar archivos dañados +Scram Switches: Interruptores de emergencia +SettingTab: + Message: + AskRebuild: Tus cambios requieren obtener los datos de la base de datos remota. + ¿Quieres continuar? Setup: RemoteE2EE: Title: Cifrado de extremo a extremo @@ -443,87 +895,143 @@ Setup: LabelEncrypt: Cifrado de extremo a extremo PlaceholderPassphrase: Introduce tu frase de contraseña StronglyRecommendedTitle: Muy recomendable - StronglyRecommendedLine1: Al habilitar el cifrado de extremo a extremo, tus datos se cifran en tu dispositivo antes de enviarse al servidor remoto. Esto significa que, incluso si alguien obtiene acceso al servidor, no podrá leer tus datos sin la frase de contraseña. Asegúrate de recordarla, ya que también será necesaria para descifrar tus datos en otros dispositivos. - StronglyRecommendedLine2: Además, ten en cuenta que si estás usando sincronización Peer-to-Peer, esta configuración se utilizará cuando más adelante cambies a otros métodos y te conectes a un servidor remoto. - MultiDestinationWarning: Este ajuste debe ser el mismo incluso cuando te conectes a varios destinos de sincronización. + StronglyRecommendedLine1: Al habilitar el cifrado de extremo a extremo, tus + datos se cifran en tu dispositivo antes de enviarse al servidor remoto. + Esto significa que, incluso si alguien obtiene acceso al servidor, no + podrá leer tus datos sin la frase de contraseña. Asegúrate de recordarla, + ya que también será necesaria para descifrar tus datos en otros + dispositivos. + StronglyRecommendedLine2: Además, ten en cuenta que si estás usando + sincronización Peer-to-Peer, esta configuración se utilizará cuando más + adelante cambies a otros métodos y te conectes a un servidor remoto. + MultiDestinationWarning: Este ajuste debe ser el mismo incluso cuando te + conectes a varios destinos de sincronización. LabelObfuscateProperties: Ofuscar propiedades - ObfuscatePropertiesDesc: Ofuscar propiedades (por ejemplo, la ruta del archivo, el tamaño y las fechas de creación y modificación) añade una capa adicional de seguridad al dificultar la identificación de la estructura y los nombres de tus archivos y carpetas en el servidor remoto. Esto ayuda a proteger tu privacidad y dificulta que usuarios no autorizados deduzcan información sobre tus datos. + ObfuscatePropertiesDesc: Ofuscar propiedades (por ejemplo, la ruta del archivo, + el tamaño y las fechas de creación y modificación) añade una capa + adicional de seguridad al dificultar la identificación de la estructura y + los nombres de tus archivos y carpetas en el servidor remoto. Esto ayuda a + proteger tu privacidad y dificulta que usuarios no autorizados deduzcan + información sobre tus datos. AdvancedTitle: Avanzado LabelEncryptionAlgorithm: Algoritmo de cifrado - DefaultAlgorithmDesc: En la mayoría de los casos, debes mantener el algoritmo predeterminado (${algorithm}). Este ajuste solo es necesario si ya tienes un Vault cifrado con un formato diferente. - AlgorithmWarning: Cambiar el algoritmo de cifrado impedirá el acceso a cualquier dato cifrado anteriormente con otro algoritmo. Asegúrate de que todos tus dispositivos estén configurados para usar el mismo algoritmo y así mantener el acceso a tus datos. - PassphraseValidationLine1: Ten en cuenta que la frase de contraseña del cifrado de extremo a extremo no se valida hasta que el proceso de sincronización comienza realmente. Esta es una medida de seguridad diseñada para proteger tus datos. - PassphraseValidationLine2: Por lo tanto, te pedimos que tengas muchísimo cuidado al configurar manualmente la información del servidor. Si introduces una frase de contraseña incorrecta, los datos del servidor se corromperán. Ten en cuenta que este comportamiento es intencionado. + DefaultAlgorithmDesc: En la mayoría de los casos, debes mantener el algoritmo + predeterminado (${algorithm}). Este ajuste solo es necesario si ya tienes + un Vault cifrado con un formato diferente. + AlgorithmWarning: Cambiar el algoritmo de cifrado impedirá el acceso a cualquier + dato cifrado anteriormente con otro algoritmo. Asegúrate de que todos tus + dispositivos estén configurados para usar el mismo algoritmo y así + mantener el acceso a tus datos. + PassphraseValidationLine1: Ten en cuenta que la frase de contraseña del cifrado + de extremo a extremo no se valida hasta que el proceso de sincronización + comienza realmente. Esta es una medida de seguridad diseñada para proteger + tus datos. + PassphraseValidationLine2: Por lo tanto, te pedimos que tengas muchísimo cuidado + al configurar manualmente la información del servidor. Si introduces una + frase de contraseña incorrecta, los datos del servidor se corromperán. Ten + en cuenta que este comportamiento es intencionado. ButtonProceed: Continuar ButtonCancel: Cancelar UseSetupURI: Title: Introducir URI de configuración - GuidanceLine1: Introduce la URI de configuración que se generó durante la instalación del servidor o en otro dispositivo, junto con la frase de contraseña del Vault. - GuidanceLine2: Ten en cuenta que puedes generar una nueva URI de configuración ejecutando el comando "Copiar ajustes como nueva URI de configuración" desde la paleta de comandos. + GuidanceLine1: Introduce la URI de configuración que se generó durante la + instalación del servidor o en otro dispositivo, junto con la frase de + contraseña del Vault. + GuidanceLine2: Ten en cuenta que puedes generar una nueva URI de configuración + ejecutando el comando "Copiar ajustes como nueva URI de configuración" + desde la paleta de comandos. LabelSetupURI: URI de configuración ValidInfo: La URI de configuración es válida y está lista para usarse. InvalidInfo: La URI de configuración no es válida. Revísala e inténtalo de nuevo. LabelPassphrase: Frase de contraseña del Vault PlaceholderPassphrase: Introduce la frase de contraseña del Vault ErrorPassphraseRequired: Introduce la frase de contraseña del Vault. - ErrorFailedToParse: No se pudo procesar la URI de configuración. Revisa la URI y la frase de contraseña. + ErrorFailedToParse: No se pudo procesar la URI de configuración. Revisa la URI y + la frase de contraseña. ButtonProceed: Probar ajustes y continuar ButtonCancel: Cancelar ScanQRCode: Title: Escanear código QR - Guidance: Sigue los pasos de abajo para importar los ajustes desde tu dispositivo actual. + Guidance: Sigue los pasos de abajo para importar los ajustes desde tu + dispositivo actual. Step1: En este dispositivo, mantén este Vault abierto. Step2: En el dispositivo de origen, abre Obsidian. - Step3: En el dispositivo de origen, ejecuta desde la paleta de comandos la orden "Mostrar ajustes como código QR". - Step4: En este dispositivo, cambia a la cámara o usa un escáner QR para escanear el código mostrado. + Step3: En el dispositivo de origen, ejecuta desde la paleta de comandos la orden + "Mostrar ajustes como código QR". + Step4: En este dispositivo, cambia a la cámara o usa un escáner QR para escanear + el código mostrado. ButtonClose: Cerrar este diálogo - "Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.": Activa "Compute revisions for chunks" en los ajustes para usar la recolección de basura. - "Please disable 'Read chunks online' in settings to use Garbage Collection.": Desactiva "Read chunks online" en los ajustes para usar la recolección de basura. - "Setup URI dialog cancelled.": Se canceló el diálogo de Setup URI. - "Please select 'Cancel' explicitly to cancel this operation.": Selecciona explícitamente "Cancelar" para cancelar esta operación. - "Failed to connect to remote for compaction.": No se pudo conectar a la base de datos remota para la compactación. - "Failed to connect to remote for compaction. ${reason}": No se pudo conectar a la base de datos remota para la compactación. ${reason} - "Compaction in progress on remote database...": La compactación está en curso en la base de datos remota... - "Compaction on remote database timed out.": La compactación en la base de datos remota agotó el tiempo de espera. - "Compaction on remote database completed successfully.": La compactación en la base de datos remota se completó correctamente. - "Compaction on remote database failed.": La compactación en la base de datos remota falló. - "Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.": No se pudo iniciar la replicación de una sola vez antes de la recolección de basura. La recolección de basura se canceló. - "Cancel Garbage Collection": Cancelar la recolección de basura - "No connected device information found. Cancelling Garbage Collection.": No se encontró información de dispositivos conectados. Cancelando la recolección de basura. - "The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": |- + Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.: + Activa "Compute revisions for chunks" en los ajustes para usar la + recolección de basura. + Please disable 'Read chunks online' in settings to use Garbage Collection.: + Desactiva "Read chunks online" en los ajustes para usar la recolección de + basura. + Setup URI dialog cancelled.: Se canceló el diálogo de Setup URI. + Please select 'Cancel' explicitly to cancel this operation.: Selecciona explícitamente "Cancelar" para cancelar esta operación. + Failed to connect to remote for compaction.: No se pudo conectar a la base de datos remota para la compactación. + Failed to connect to remote for compaction. ${reason}: No se pudo conectar a la base de datos remota para la compactación. ${reason} + Compaction in progress on remote database...: La compactación está en curso en la base de datos remota... + Compaction on remote database timed out.: La compactación en la base de datos remota agotó el tiempo de espera. + Compaction on remote database completed successfully.: La compactación en la base de datos remota se completó correctamente. + Compaction on remote database failed.: La compactación en la base de datos remota falló. + Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.: + No se pudo iniciar la replicación de una sola vez antes de la recolección de + basura. La recolección de basura se canceló. + Cancel Garbage Collection: Cancelar la recolección de basura + No connected device information found. Cancelling Garbage Collection.: + No se encontró información de dispositivos conectados. Cancelando la + recolección de basura. + "The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": >- Los siguientes nodos aceptados no tienen información del nodo: + - ${missingNodes} - Esto indica que no se han conectado desde hace algún tiempo o que se han quedado en una versión anterior. - Si es posible, es preferible actualizar todos los dispositivos. Si tienes dispositivos que ya no se usan, puedes borrar todos los nodos aceptados bloqueando el remoto una vez. - "Ignore and Proceed": Ignorar y continuar - "Node Information Missing": Falta información del nodo - "Garbage Collection cancelled by user.": El usuario canceló la recolección de basura. - "Proceeding with Garbage Collection, ignoring missing nodes.": Continuando con la recolección de basura e ignorando los nodos faltantes. - "Proceed Garbage Collection": Continuar con la recolección de basura + + Esto indica que no se han conectado desde hace algún tiempo o que se han + quedado en una versión anterior. + + Si es posible, es preferible actualizar todos los dispositivos. Si tienes + dispositivos que ya no se usan, puedes borrar todos los nodos aceptados + bloqueando el remoto una vez. + Ignore and Proceed: Ignorar y continuar + Node Information Missing: Falta información del nodo + Garbage Collection cancelled by user.: El usuario canceló la recolección de basura. + Proceeding with Garbage Collection, ignoring missing nodes.: Continuando con la recolección de basura e ignorando los nodos faltantes. + Proceed Garbage Collection: Continuar con la recolección de basura "> [!INFO]- The connected devices have been detected as follows:\n${devices}": |- > [!INFO]- Se detectaron los siguientes dispositivos conectados: ${devices} - "Device": Dispositivo - "Node ID": ID del nodo - "Obsidian version": Versión de Obsidian - "Plug-in version": Versión del complemento - "Progress": Progreso - "Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": |- - Algunos dispositivos tienen valores de progreso diferentes (máx.: ${maxProgress}, mín.: ${minProgress}). - Esto puede indicar que algunos dispositivos no han completado la sincronización, lo que podría causar conflictos. Se recomienda encarecidamente confirmar que todos los dispositivos estén sincronizados antes de continuar. - "All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": Todos los dispositivos tienen el mismo valor de progreso (${progress}). Parece que tus dispositivos están sincronizados y se puede continuar con la recolección de basura. - "Garbage Collection Confirmation": Confirmación de recolección de basura - "Proceeding with Garbage Collection.": Continuando con la recolección de basura. - "Garbage Collection: Scanned ${scanned} / ~${docCount}": |- - Recolección de basura: escaneados ${scanned} / ~${docCount} - "Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": |- - Recolección de basura: escaneo completado. Chunks totales: ${totalChunks}, chunks usados: ${usedChunks} - "Garbage Collection: Found ${unusedChunks} unused chunks to delete.": |- - Recolección de basura: se encontraron ${unusedChunks} chunks no usados para eliminar. - "Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": |- - Recolección de basura completada. Chunks eliminados: ${deletedChunks} / ${totalChunks}. Tiempo empleado: ${seconds} segundos. - "Failed to start replication after Garbage Collection.": No se pudo iniciar la replicación después de la recolección de basura. + Device: Dispositivo + Node ID: ID del nodo + Obsidian version: Versión de Obsidian + Plug-in version: Versión del complemento + Progress: Progreso + "Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": >- + Algunos dispositivos tienen valores de progreso diferentes (máx.: + ${maxProgress}, mín.: ${minProgress}). + + Esto puede indicar que algunos dispositivos no han completado la + sincronización, lo que podría causar conflictos. Se recomienda + encarecidamente confirmar que todos los dispositivos estén sincronizados + antes de continuar. + All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.: + Todos los dispositivos tienen el mismo valor de progreso (${progress}). + Parece que tus dispositivos están sincronizados y se puede continuar con la + recolección de basura. + Garbage Collection Confirmation: Confirmación de recolección de basura + Proceeding with Garbage Collection.: Continuando con la recolección de basura. + "Garbage Collection: Scanned ${scanned} / ~${docCount}": "Recolección de basura: escaneados ${scanned} / ~${docCount}" + "Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": + "Recolección de basura: escaneo completado. Chunks totales: ${totalChunks}, + chunks usados: ${usedChunks}" + "Garbage Collection: Found ${unusedChunks} unused chunks to delete.": + "Recolección de basura: se encontraron ${unusedChunks} chunks no usados para + eliminar." + "Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": + "Recolección de basura completada. Chunks eliminados: ${deletedChunks} / + ${totalChunks}. Tiempo empleado: ${seconds} segundos." + Failed to start replication after Garbage Collection.: No se pudo iniciar la replicación después de la recolección de basura. optionNoSetupUri: No, no tengo optionRemindNextLaunch: Recordármelo en el próximo inicio optionSetupWizard: Llévame al asistente de configuración @@ -531,6 +1039,77 @@ Setup: titleCaseSensitivity: Sensibilidad a mayúsculas titleRecommendSetupUri: Recomendación de uso de URI de configuración titleWelcome: Bienvenido a Self-hosted LiveSync + Apply: + Buttons: + ApplyAndFetch: Aplicar y obtener + ApplyAndMerge: Aplicar y combinar + ApplyAndRebuild: Aplicar y reconstruir + Cancel: Descartar y cancelar + OnlyApply: Solo aplicar + Message: >- + La nueva configuración está lista. Vamos a aplicarla. + + Hay varias formas de hacerlo: + + + - Aplicar y obtener + Configura este dispositivo como cliente nuevo. Tras aplicarla, sincroniza desde el servidor remoto. + - Aplicar y combinar + Para un dispositivo que ya tiene los archivos. Procesa los archivos locales y transfiere las diferencias. Pueden surgir conflictos. + - Aplicar y reconstruir + Reconstruye el remoto a partir de los archivos locales. Se hace normalmente si el servidor se ha corrompido o si se quiere empezar de cero. + Los demás dispositivos quedarán bloqueados y tendrán que volver a obtener los datos. + - Solo aplicar + Solo aplica la configuración. Pueden surgir conflictos si hace falta reconstruir. + Title: Aplicar la nueva configuración de ${method} + WarningRebuildRecommended: "NOTA: tras ajustar la configuración se ha + determinado que hace falta reconstruir; no se recomienda «solo importar»." + Doctor: + Buttons: + No: No, usar los ajustes del URI tal cual + Yes: Sí, consultar al doctor + Message: >- + Self-hosted LiveSync tiene ya una historia larga y algunos ajustes + recomendados han cambiado. + + + La configuración inicial es un momento muy bueno para revisarlos. + + + ¿Quieres ejecutar el Doctor para comprobar si los ajustes importados son + los óptimos respecto al estado actual? + Title: ¿Quieres consultar al doctor? + FetchRemoteConf: + Buttons: + Fetch: Sí, obtener la configuración + Skip: No, usar los ajustes del URI + Message: >- + Si ya hemos sincronizado alguna vez con otro dispositivo, la base de datos + remota guarda los valores de configuración adecuados para los dispositivos + sincronizados. El complemento querría recuperarlos para lograr una + configuración más sólida. + + + Antes hay que asegurar una cosa: ¿estamos en una situación en la que se + puede acceder a la red de forma segura y recuperar los ajustes? + + + Nota: normalmente puedes hacerlo sin riesgo si tu base de datos remota se + sirve con un certificado SSL y tu red no está comprometida. + Title: ¿Obtener la configuración de la base de datos remota? + QRCode: >- + Hemos generado un código QR para transferir los ajustes. Escanéalo con tu + móvil u otro dispositivo. + + Nota: el código QR no está cifrado, así que ten cuidado al abrirlo. + + + >[!SOLO PARA TUS OJOS]- + + >
${qr_image}
+ ShowQRCode: + _value: Mostrar el código QR + Desc: Muestra un código QR para transferir los ajustes. moduleObsidianMenu: replicate: Replicar More actions: Más acciones @@ -810,6 +1389,11 @@ obsidianLiveSyncSettingTab: titleUpdateThinning: Actualización de adelgazamiento warnCorsOriginUnmatched: "⚠ El origen de CORS no coincide: {from}->{to}" warnNoAdmin: ⚠ No tienes privilegios de administrador. + errEnableCorsChttpd: ❗ chttpd.enable_cors es incorrecto + msgEnableCorsChttpd: Establecer chttpd.enable_cors + okEnableCorsChttpd: ✔ chttpd.enable_cors es correcto. + serverVersion: "Información del servidor: ${info}" + titleActiveRemoteServer: Servidor remoto activo Ok: Aceptar Old Algorithm: Algoritmo antiguo Older fallback (Slow, W/O WebAssembly): Alternativa anterior (lenta, sin WebAssembly) @@ -978,20 +1562,39 @@ Setting: > Title: ¡Se ha generado un nuevo par de claves! + TroubleShooting: + _value: Resolución de problemas + Doctor: + _value: Doctor de ajustes + Desc: Detecta ajustes no óptimos. (Igual que durante la migración) + ScanBrokenFiles: + _value: Buscar archivos dañados + Desc: Busca archivos que no se hayan guardado correctamente en la base de datos. +Setup URI dialog cancelled.: Se ha cancelado el diálogo del Setup URI. Should we keep folders that don't have any files inside?: ¿Mantener carpetas vacías? Should we only check for conflicts when a file is opened?: ¿Solo comprobar conflictos al abrir archivo? Should we prompt you about conflicting files when a file is opened?: ¿Notificar sobre conflictos al abrir archivo? Should we prompt you for every single merge, even if we can safely merge automatcially?: ¿Preguntar en cada fusión aunque sea automática? Show full banner: Mostrar banner completo +Show history: Mostrar el historial +Show icon only: Mostrar solo el icono Show only notifications: Mostrar solo notificaciones Show status as icons only: Mostrar estado solo con íconos Show status icon instead of file warnings banner: Mostrar icono de estado en lugar del banner de advertencia de archivos Show status inside the editor: Mostrar estado dentro del editor Show status on the status bar: Mostrar estado en la barra de estado Show verbose log. Please enable if you report an issue.: Mostrar registro detallado. Actívelo si reporta un problema. +"Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": >- + Algunos dispositivos tienen valores de progreso distintos (máx.: + ${maxProgress}, mín.: ${minProgress}). + + Esto puede indicar que algunos no han terminado de sincronizar, lo que podría + provocar conflictos. Se recomienda encarecidamente confirmar que todos los + dispositivos están sincronizados antes de continuar. Starts synchronisation when a file is saved.: Inicia sincronización al guardar un archivo Stop reflecting database changes to storage files.: Dejar de reflejar cambios de BD en archivos Stop watching for file changes.: Dejar de monitorear cambios en archivos +Storage -> Database: Almacenamiento -> Base de datos Suppress notification of hidden files change: Suprimir notificaciones de cambios en archivos ocultos Suspend database reflecting: Suspender reflejo de base de datos Suspend file watching: Suspender monitorización de archivos @@ -1011,17 +1614,530 @@ Testing only - Resolve file conflicts by syncing newer copies of the file, this Solo pruebas - Resolver conflictos sincronizando copias nuevas (puede sobrescribir modificaciones) The delay for consecutive on-demand fetches: Retraso entre obtenciones consecutivas +"The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": >- + A los siguientes nodos aceptados les falta su información de nodo: + + - ${missingNodes} + + + Esto indica que llevan tiempo sin conectarse o que se han quedado en una + versión antigua. + + Si es posible, conviene actualizar todos los dispositivos. Si tienes + dispositivos que ya no usas, puedes borrar todos los nodos aceptados + bloqueando el remoto una vez. The Hash algorithm for chunk IDs: Algoritmo hash para IDs de chunks +The IndexedDB adapter often offers superior performance in certain scenarios, but it has been found to cause memory leaks when used with LiveSync mode. When using LiveSync mode, please use IDB adapter instead.: + El adaptador IndexedDB suele ofrecer mejor rendimiento en ciertos casos, pero + se ha comprobado que provoca fugas de memoria con el modo LiveSync. Si usas el + modo LiveSync, utiliza en su lugar el adaptador IDB. The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.: Duración máxima para incubar chunks. Excedentes se independizan The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks.: Número máximo de chunks que pueden incubarse en el documento. Excedentes se independizan The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks.: Tamaño total máximo de chunks incubados. Excedentes se independizan +The minimum interval for automatic synchronisation on event.: Intervalo mínimo para la sincronización automática al producirse un evento. This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.: Esta frase no se copia a otros dispositivos. Usará `Default` hasta reconfigurar This will recreate chunks for all files. If there were missing chunks, this may fix the errors.: Esto recreará los fragmentos de todos los archivos. Si faltaban fragmentos, esto puede corregir los errores. Transfer Tweak: Ajustes de transferencia +TweakMismatchResolve: + Action: + DisableAutoAcceptCompatible: Desactivar la aceptación automática + Dismiss: Descartar + EnableAutoAcceptCompatible: Activar la aceptación automática + UseConfigured: Usar los ajustes configurados + UseMine: Actualizar los ajustes de la base de datos remota + UseMineAcceptIncompatible: Actualizar los ajustes de la base de datos remota, pero dejarlo como está + UseMineWithRebuild: Actualizar los ajustes de la base de datos remota y reconstruir de nuevo + UseRemote: Aplicar los ajustes a este dispositivo + UseRemoteAcceptIncompatible: Aplicar los ajustes a este dispositivo e ignorar la incompatibilidad + UseRemoteWithRebuild: Aplicar los ajustes a este dispositivo y volver a obtener los datos + Message: + AutoAcceptCompatibleUndefined: >- + + Parece que los ajustes son distintos en cada dispositivo. Ahora se pueden + aplicar automáticamente los cambios compatibles a estas configuraciones. + + ¿Quieres activar la aceptación automática (`auto-accept`)? + Main: >- + + Los ajustes de la base de datos remota son los siguientes. Los han + configurado otros dispositivos que se han sincronizado con este al menos + una vez. + + + Si quieres usar estos ajustes, selecciona + %{TweakMismatchResolve.Action.UseConfigured}. + + Si prefieres conservar los de este dispositivo, selecciona + %{TweakMismatchResolve.Action.Dismiss}. + + + ${table} + + + >[!TIP] + + > Si quieres sincronizar todos los ajustes, usa «Sync settings via + markdown» después de aplicar la configuración mínima con esta función. + + + ${additionalMessage} + MainTweakResolving: |- + Tu configuración no coincide con la del servidor remoto. + + La siguiente configuración debería coincidir: + + ${table} + + Indícanos qué decides. + + ${additionalMessage} + UseRemote: + WarningRebuildRecommended: >- + + >[!NOTICE] + + > Algunos cambios son compatibles, pero pueden consumir almacenamiento y + transferencia de más. Se recomienda reconstruir. De momento puede que no + se reconstruya, pero podría hacerse en un mantenimiento futuro. + + > ***Asegúrate de tener tiempo y una red estable antes de aplicarlo.*** + WarningRebuildRequired: >- + + >[!WARNING] + + > Algunas configuraciones remotas no son compatibles con la base de + datos local de este dispositivo. Habrá que reconstruirla. + + > ***Asegúrate de tener tiempo y una red estable antes de aplicarlo.*** + WarningIncompatibleRebuildRecommended: >- + + >[!NOTICE] + + > Hemos detectado que algunos valores difieren de forma que hacen + incompatible la base de datos local con la remota. + + > Algunos cambios son compatibles, pero pueden consumir almacenamiento y + transferencia de más. Se recomienda reconstruir. De momento puede que no + se reconstruya, pero podría hacerse en un mantenimiento futuro. + + > Si decides reconstruir, tardará unos minutos o más. **Asegúrate de que + es seguro hacerlo ahora.** + WarningIncompatibleRebuildRequired: >- + + >[!WARNING] + + > Hemos detectado que algunos valores difieren de forma que hacen + incompatible la base de datos local con la remota. + + > Hay que reconstruir la local o la remota. Ambas cosas tardan unos + minutos o más. **Asegúrate de que es seguro hacerlo ahora.** + mineUpdated: Se ha ajustado la configuración del dispositivo. + remoteUpdated: Se ha actualizado la configuración almacenada en el remoto. + Table: + _value: |+ + | Nombre del valor | Este dispositivo | En el remoto | + |: --- |: ---- :|: ---- :| + ${rows} + + Row: "| ${name} | ${self} | ${remote} |" + Title: + _value: Se ha detectado una discrepancia de configuración + AutoAcceptCompatible: Aceptación automática disponible + TweakResolving: Se ha detectado una discrepancia de configuración + UseRemoteConfig: Usar la configuración remota +Ui: + Common: + Signal: + Caution: PRECAUCIÓN + Danger: PELIGRO + Notice: AVISO + Warning: ADVERTENCIA + Settings: + Advanced: + LocalDatabaseTweak: Ajuste fino de la base de datos local + MemoryCache: Caché en memoria + TransferTweak: Ajuste fino de la transferencia + Common: + Analyse: Analizar + Back: Volver + Check: Comprobar + Configure: Configurar + Continue: Continuar + Delete: Eliminar + Fetch: Obtener + Lock: Bloquear + Merge: Combinar + Open: Abrir + Overwrite: Sobrescribir + Perform: Ejecutar + ResetAll: Restablecer todo + ResolveAll: Resolver todo + Scan: Analizar + Send: Enviar + Use: Usar + VerifyAll: Verificar todo + CustomizationSync: + OpenDesc: Abre el diálogo + Panel: Sincronización de personalizaciones + WarnChangeDeviceName: No se puede cambiar el nombre del dispositivo mientras + esta función esté activada. Desactívala para poder cambiarlo. + WarnSetDeviceName: Establece un nombre para identificar este dispositivo. Debe + ser único entre tus dispositivos. Mientras no esté configurado, no se + puede activar esta función. + Hatch: + AnalyseDatabaseUsage: Analizar el uso de la base de datos + AnalyseDatabaseUsageDesc: Analiza el uso de la base de datos y genera un informe + TSV para que puedas diagnosticarlo tú mismo. Puedes pegar el informe + generado en la hoja de cálculo que prefieras. + BackToNonConfigured: Volver al estado sin configurar + ConvertNonObfuscated: Comprobar y convertir los archivos sin ruta ofuscada + ConvertNonObfuscatedDesc: Comprueba si la base de datos local contiene archivos + guardados sin ofuscación de ruta y los convierte si hace falta. + CopyIssueReport: Copiar el informe al portapapeles + DatabaseLabel: "Base de datos: ${details}" + DatabaseToStorage: Base de datos -> Almacenamiento + DeleteCustomizationSyncData: Eliminar todos los datos de la sincronización de personalizaciones + GeneratedReport: Informe generado + Missing: Falta + ModifiedSize: "Modificado: ${modified}, tamaño: ${size}" + ModifiedSizeActual: "Modificado: ${modified}, tamaño: ${size} (tamaño real: ${actualSize})" + PrepareIssueReport: Preparar el «informe» para abrir una incidencia + RecoveryAndRepair: Recuperación y reparación + RecreateAll: Recrear todo + RecreateMissingChunks: Recrear los chunks que faltan de todos los archivos + RecreateMissingChunksDesc: Recrea los chunks de todos los archivos. Si faltaban + chunks, esto puede corregir los errores. + ResetPanel: Restablecer + ResetRemoteUsage: Restablecer el umbral de aviso y comprobar el uso de la base + de datos remota + ResetRemoteUsageDesc: Restablece el umbral de tamaño del almacenamiento remoto y + vuelve a comprobar su tamaño. + ResolveAllConflictedFiles: Resolver todos los archivos en conflicto con el más reciente + ResolveAllConflictedFilesDesc: "Resuelve todos los archivos en conflicto + quedándose con el más reciente. Atención: esto sobrescribe el más + antiguo y no se puede recuperar." + RunDoctor: Ejecutar el Doctor + ScanBrokenFiles: Buscar archivos dañados + ScramSwitches: Interruptores de emergencia + ShowHistory: Mostrar el historial + StorageLabel: "Almacenamiento: ${details}" + StorageToDatabase: Almacenamiento -> Base de datos + VerifyAndRepairAllFiles: Verificar y reparar todos los archivos + VerifyAndRepairAllFilesDesc: Compara el contenido de los archivos entre la base + de datos local y el almacenamiento. Si no coinciden, se te preguntará + cuál conservar. + Maintenance: + Cleanup: Realizar limpieza + CleanupDesc: Reduce el espacio de almacenamiento descartando todas las + revisiones que no sean la última. Requiere la misma cantidad de espacio + libre en el servidor remoto y en el cliente local. + DeleteLocalDatabase: Eliminar la base de datos local para restablecer o + desinstalar Self-hosted LiveSync + EmergencyRestart: Reinicio de emergencia + EmergencyRestartDesc: Desactiva toda la sincronización y reinicia. + FreshStartWipe: Borrado para empezar de cero + FreshStartWipeDesc: Elimina todos los datos del servidor remoto. + GarbageCollection: Recolección de basura V3 (beta) + GarbageCollectionAction: Realizar la recolección de basura + GarbageCollectionDesc: Realiza una recolección de basura para eliminar los + chunks sin usar y reducir el tamaño de la base de datos. + LockServer: Bloquear el servidor + LockServerDesc: Bloquea el servidor remoto para impedir la sincronización con + otros dispositivos. + OverwriteRemote: Sobrescribir el remoto + OverwriteRemoteDesc: Sobrescribe el remoto con la base de datos local y la frase + de contraseña. + OverwriteServerData: Sobrescribir los datos del servidor con los archivos de este dispositivo + OverwriteServerDataDesc: Reconstruye la base de datos local y la remota con los + archivos de este dispositivo. + PurgeAllJournalCounter: Purgar todos los contadores del diario + PurgeAllJournalCounterDesc: Purga todas las cachés de descarga y de subida. + RebuildingOperations: Operaciones de reconstrucción (solo remoto) + Resend: Reenviar + ResendDesc: Reenvía todos los chunks al remoto. + Reset: Restablecer + ResetAllJournalCounter: Restablecer todos los contadores del diario + ResetAllJournalCounterDesc: Inicializa todo el historial del diario. En la + próxima sincronización se volverán a recibir y enviar todos los + elementos. + ResetJournalReceived: Restablecer el historial de recepción del diario + ResetJournalReceivedDesc: Inicializa el historial de recepción del diario. En la + próxima sincronización se volverán a descargar todos los elementos salvo + los enviados por este dispositivo. + ResetJournalSent: Restablecer el historial de envío del diario + ResetJournalSentDesc: Inicializa el historial de envío del diario. En la próxima + sincronización se volverán a enviar todos los elementos salvo los + recibidos por este dispositivo. + ResetLocalSyncInfo: Restablecer la información de sincronización + ResetLocalSyncInfoDesc: Restaura o reconstruye la base de datos local a partir del remoto. + ResetReceived: Restablecer lo recibido + ResetSentHistory: Restablecer el historial de envíos + ResetThisDevice: Restablecer la sincronización en este dispositivo + ScheduleAndRestart: Programar y reiniciar + Scram: ¡Parada de emergencia! + SendChunks: Enviar los chunks + Syncing: Sincronización + WarningLockedReadyAction: Estoy listo, desbloquear la base de datos + WarningLockedReadyText: Para evitar que el vault se corrompa, la base de datos + remota se ha bloqueado para la sincronización. (Este dispositivo está + marcado como «resuelto».) Cuando todos tus dispositivos estén marcados + como «resueltos», desbloquea la base de datos. Este aviso seguirá + apareciendo hasta que la replicación confirme que el dispositivo está + resuelto. + WarningLockedResolveAction: He hecho una copia de seguridad, marcar este dispositivo como resuelto + WarningLockedResolveText: La base de datos remota está bloqueada para la + sincronización a fin de evitar que el vault se corrompa, porque este + dispositivo no está marcado como «resuelto». Haz una copia de seguridad + de tu vault, restablece la base de datos local y selecciona «Marcar este + dispositivo como resuelto». Este aviso seguirá apareciendo hasta que la + replicación confirme que el dispositivo está resuelto. + WriteRedFlagAndRestart: Marcar y reiniciar + Patches: + CompatibilityConflict: Compatibilidad (comportamiento ante conflictos) + CompatibilityDatabase: Compatibilidad (estructura de la base de datos) + CompatibilityInternalApi: Compatibilidad (uso de la API interna) + CompatibilityMetadata: Compatibilidad (metadatos) + CompatibilityRemote: Compatibilidad (base de datos remota) + CompatibilityTrouble: Compatibilidad (problemas resueltos) + CurrentAdapter: "Adaptador actual: ${adapter}" + DatabaseAdapter: Adaptador de base de datos + DatabaseAdapterDesc: Selecciona el adaptador de base de datos que se va a usar. + EdgeCaseBehaviour: Casos límite (comportamiento) + EdgeCaseDatabase: Casos límite (base de datos) + EdgeCaseProcessing: Casos límite (procesamiento) + IndexedDbWarning: El adaptador IndexedDB suele ofrecer mejor rendimiento en + ciertos casos, pero se ha comprobado que provoca fugas de memoria con el + modo LiveSync. Si usas el modo LiveSync, utiliza en su lugar el + adaptador IDB. + MigratingToIdb: Migrando todos los datos a IDB... + MigratingToIndexedDb: Migrando todos los datos a IndexedDB... + MigrationIdbCompleted: Migración a IDB completada. Obsidian se reiniciará de + inmediato con la nueva configuración. + MigrationIdbCompletedFollowUp: Migración a IDB completada. Cambia el adaptador y reinicia Obsidian. + MigrationIndexedDbCompleted: Migración a IndexedDB completada. Obsidian se + reiniciará de inmediato con la nueva configuración. + MigrationIndexedDbCompletedFollowUp: Migración a IndexedDB completada. Cambia el + adaptador y reinicia Obsidian. + MigrationWarning: Cambiar este ajuste requiere migrar los datos existentes, lo + que puede tardar un rato, y reiniciar Obsidian. Asegúrate de hacer una + copia de seguridad de tus datos antes de continuar. + OperationToIdb: a IDB + OperationToIndexedDb: a IndexedDB + Remediation: Remediación + RemediationChanged: Se ha cambiado el ajuste de remediación + RemediationNoLimit: Sin límite configurado + RemediationRestartLater: Más tarde + RemediationRestartMessage: Se recomienda encarecidamente reiniciar Obsidian. + Hasta que lo hagas, puede que algunos cambios no surtan efecto y que la + interfaz se muestre de forma inconsistente. ¿Seguro que quieres + reiniciar ahora? + RemediationRestartNow: Reiniciar ahora + RemediationRestarting: Se ha cambiado el ajuste de remediación. Reiniciando Obsidian... + RemediationSuffixChanged: El sufijo ha cambiado. Reabriendo la base de datos... + RemediationWithValue: "Límite: ${date} (${timestamp})" + RemoteDatabaseSunset: Ajuste fino de la base de datos remota (en desuso) + SwitchToIDB: Cambiar a IDB + SwitchToIndexedDb: Cambiar a IndexedDB + PowerUsers: + ConfigurationEncryption: Cifrado de la configuración + ConnectionTweak: Ajuste fino de la conexión con CouchDB + ConnectionTweakDesc: Si alcanzas el límite de tamaño de carga al usar IBM + Cloudant, reduce el tamaño de lote y el límite de lote. + Default: Predeterminado + Developer: Desarrollo + EncryptSensitiveConfig: Cifrar los elementos sensibles de la configuración + PromptPassphraseEveryLaunch: Solicitar la frase de contraseña en cada inicio + UseCustomPassphrase: Usar una frase de contraseña personalizada + Remote: + Activate: Activar + ActiveSuffix: " (activo)" + AddConnection: Añadir conexión + AddRemoteDefaultName: Remoto nuevo + ConfigureAndChangeRemote: Configurar y cambiar el remoto + ConfigureE2EE: Configurar el E2EE + ConfigureRemote: Configurar el remoto + DeleteRemoteConfirm: ¿Eliminar la configuración remota «${name}»? + DeleteRemoteTitle: Eliminar la configuración remota + DisplayName: Nombre visible + DuplicateRemote: Duplicar el remoto + DuplicateRemoteSuffix: ${name} (copia) + E2EEConfiguration: Configuración del E2EE + Export: Exportar + FetchRemoteSettings: Obtener los ajustes remotos + ImportConnection: Importar conexión + ImportConnectionPrompt: Pega una cadena de conexión + ImportedCouchDb: CouchDB importado + ImportedRemote: Remoto + MoreActions: Más acciones + PeerToPeerPanel: Sincronización punto a punto + RemoteConfigurationPrefix: Configuración remota + RemoteDatabases: Bases de datos remotas + RemoteName: Nombre del remoto + RemoteNameCouchDb: CouchDB ${host} + RemoteNameP2P: P2P ${room} + RemoteNameS3: S3 ${bucket} + Rename: Cambiar el nombre + Selector: + AddDefaultPatterns: Añadir patrones predeterminados + CrossPlatform: Multiplataforma + Default: Predeterminado + HiddenFiles: Archivos ocultos + IgnorePatterns: Patrones de exclusión + NonSynchronisingFiles: Archivos que no se sincronizan + NonSynchronisingFilesDesc: (RegExp) Si se establece, se omitirá cualquier cambio + en archivos locales y remotos que coincida con este patrón. + NormalFiles: Archivos normales + OverwritePatterns: Patrones de sobrescritura + OverwritePatternsDesc: Patrones de los archivos que se sobrescriben en lugar de combinarse + SynchronisingFiles: Archivos que se sincronizan + SynchronisingFilesDesc: (RegExp) Déjalo vacío para sincronizar todos los + archivos. Define un filtro como expresión regular para limitar los + archivos sincronizados. + TargetPatterns: Patrones de inclusión + TargetPatternsDesc: Patrones de los archivos que se van a sincronizar + Setup: + RerunWizardButton: Volver a ejecutar el asistente + RerunWizardDesc: Vuelve a ejecutar el asistente de configuración inicial para + configurar Self-hosted LiveSync de nuevo. + RerunWizardName: Volver a ejecutar el asistente de configuración inicial + SyncSettings: + Fetch: Obtener + Merge: Combinar + Overwrite: Sobrescribir + SetupWizard: + Common: + Back: No, volver atrás + Cancel: Cancelar + ProceedSelectOption: Selecciona una opción para continuar + Intro: + ExistingOption: Estoy añadiendo un dispositivo a una configuración de + sincronización existente + ExistingOptionDesc: Elige esto si ya usas la sincronización en otro ordenador o + móvil. Usa esta opción para conectar este dispositivo a esa + configuración existente. + Guidance: Te guiaremos con unas cuantas preguntas para simplificar la + configuración de la sincronización. + NewOption: Lo estoy configurando por primera vez + NewOptionDesc: Elige esto si estás configurando este dispositivo como el primero + de la sincronización. + ProceedExisting: Sí, quiero añadir este dispositivo a mi sincronización existente + ProceedNew: Sí, quiero configurar una sincronización nueva + Question: Primero, selecciona la opción que mejor describa tu situación actual. + Title: Bienvenido a Self-hosted LiveSync + Invitation: + Start: Comenzar la configuración + OutroAskUserMode: + CompatibleOption: El remoto ya está configurado y la configuración es compatible + (o pasa a serlo con esta operación). + CompatibleOptionDesc: Si no estás seguro, elegir esta opción es arriesgado. Da + por supuesto que la configuración del servidor es compatible con este + dispositivo. Si no lo es, puede haber pérdida de datos. Asegúrate de + entender las consecuencias. + ExistingOption: Mi servidor remoto ya está configurado. Quiero añadir este dispositivo. + ExistingOptionDesc: Al elegir esta opción, este dispositivo se unirá al servidor + existente. Tendrás que obtener del servidor los datos de sincronización + ya existentes. + Guidance: La conexión con el servidor se ha configurado correctamente. Como paso + siguiente hay que reconstruir la base de datos local, es decir, la + información de sincronización. + NewOption: Estoy configurando un servidor nuevo por primera vez / quiero + restablecer mi servidor actual. + NewOptionDesc: Al elegir esta opción, el servidor se inicializará con los datos + actuales de este dispositivo. Cualquier dato existente en el servidor se + sobrescribirá por completo. + ProceedApplySettings: Aplicar los ajustes + ProceedNext: Continuar al paso siguiente. + Question: Selecciona tu situación. + Title: "Casi terminado: se requiere una decisión" + OutroNewP2PUser: + GuidanceNotice: En P2P no hay una copia en un servidor central que sobrescribir. + Este paso prepara solo este dispositivo; mantenlo conectado cuando otro + dispositivo obtenga sus datos iniciales. + GuidancePrimary: La conexión punto a punto se ha configurado correctamente. A + continuación, la base de datos local de LiveSync se construirá a partir + de los archivos actuales de este Vault. + Important: TEN EN CUENTA + Proceed: Reiniciar y preparar este dispositivo + Question: Pulsa el botón de abajo para reiniciar y pasar a la confirmación de la + inicialización local. + Title: "Configuración completada: preparando este dispositivo P2P" + OutroNewUser: + GuidancePrimary: La conexión con el servidor se ha configurado correctamente. + Como paso siguiente, los datos de sincronización del servidor se + construirán a partir de los datos actuales de este dispositivo. + GuidanceWarning: Tras reiniciar, los datos de este dispositivo se subirán al + servidor como copia maestra. Ten en cuenta que cualquier dato no deseado + que haya ahora en el servidor se sobrescribirá por completo. + Important: IMPORTANTE + Proceed: Reiniciar e inicializar el servidor + Question: Pulsa el botón de abajo para reiniciar y pasar a la confirmación final. + Title: "Configuración completada: preparando la inicialización del servidor" + RebuildEverythingP2P: + ConfirmLocalReset: Entiendo que esto restablece únicamente la base de datos de + sincronización local de este dispositivo. + ConfirmLocalResetNote: Se usarán los archivos que hay ahora en este Vault para reconstruirla. + ConfirmTitle: ⚠️ Confirma lo siguiente + Guidance: Este procedimiento descartará la base de datos local de LiveSync de + este dispositivo y la reconstruirá a partir de los archivos actuales de + este Vault. No elimina ni sobrescribe datos de otro dispositivo. + Note: Mantén este dispositivo conectado después de la inicialización para que + otro dispositivo pueda obtener el Vault desde él. + Proceed: Lo entiendo, preparar este dispositivo + Title: "Confirmación final: preparar este dispositivo para P2P" + SelectExisting: + Guidance: Estás añadiendo este dispositivo a una configuración de sincronización + existente. + ManualOption: Configurar un remoto manualmente + ManualOptionDesc: Vuelve a configurar manualmente el mismo remoto que en tus + otros dispositivos. Está pensado solo para usuarios avanzados. + ProceedManual: Continuar con la configuración manual + ProceedQr: Escanea con la cámara de este dispositivo el código QR mostrado en un + dispositivo activo. + ProceedSetupUri: Continuar con el Setup URI + QrOption: Escanear un código QR (recomendado en móvil) + QrOptionDesc: Escanea con la cámara de este dispositivo el código QR mostrado en + un dispositivo activo. + Question: Selecciona un método para importar los ajustes desde otro dispositivo. + SetupUriOption: Usar un Setup URI (recomendado) + SetupUriOptionDesc: Pega el Setup URI generado en uno de tus dispositivos activos. + Title: Método de configuración del dispositivo + SelectNew: + Guidance: Vamos a configurar la conexión de sincronización. + ManualOption: Configurar un remoto manualmente + ManualOptionDesc: Es una opción avanzada para quienes no tienen un Setup URI o + quieren ajustar la configuración en detalle. También puedes usarla para + la sincronización P2P en lugar de CouchDB o de un almacenamiento de + objetos compatible con S3. + ProceedManual: Continuar con la configuración manual + ProceedSetupUri: Continuar con el Setup URI + Question: ¿Cómo quieres configurar esta conexión de sincronización? + SetupUriOption: Usar un Setup URI (recomendado) + SetupUriOptionDesc: Un Setup URI es una única cadena que contiene los datos de + conexión y autenticación. Cuando un script de instalación te proporciona + uno, es la forma más sencilla y segura de configurarlo. + Title: Método de conexión + SetupRemote: + BucketOption: Almacenamiento de objetos compatible con S3 + BucketOptionDesc: Sincronización mediante archivos de diario. Necesitas tener ya + un servicio de almacenamiento de objetos compatible con S3, como Amazon + S3, MinIO o Cloudflare R2. + CouchDbOptionDesc: Es el método de sincronización más adecuado para el diseño + actual y ofrece todas las funciones. Necesitas tener ya una instancia de + CouchDB en marcha. + Guidance: Selecciona el tipo de remoto para esta configuración de sincronización. + P2POption: Punto a punto (P2P) + P2POptionDesc: Permite la sincronización directa entre dispositivos. No hace + falta servidor, pero ambos dispositivos deben estar conectados a la vez + y algunas funciones pueden estar limitadas. Solo se necesita internet + para la señalización, no para transferir los datos. + ProceedBucket: Continuar con la configuración del almacenamiento de objetos + ProceedCouchDb: Continuar con la configuración de CouchDB + ProceedP2P: Continuar con la configuración de P2P + Title: Elige un remoto de sincronización Unique name between all synchronized devices. To edit this setting, please disable customization sync once.: Nombre único entre dispositivos sincronizados. Para editarlo, desactive sincronización de personalización @@ -1085,3 +2201,4 @@ xxhash64 (Fastest): xxhash64 (el más rápido) "Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.": "Sincronización mediante archivos de registro. Debe haber configurado un almacenamiento de objetos compatible con S3/MinIO/R2。" "Peer-to-Peer only": "Solo Peer-to-Peer" "This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.": "Esta función permite la sincronización directa entre dispositivos. No requiere servidor, pero ambos dispositivos deben estar en línea al mismo tiempo para que la sincronización se produzca, y algunas funciones pueden ser limitadas. La conexión a Internet solo se necesita para la señalización (detección de pares), no para la transferencia de datos。" +