Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Vanessa 2024-11-22 20:38:26 +08:00
commit 590b088f69
32 changed files with 97 additions and 76 deletions

View file

@ -58,4 +58,10 @@ Note: In the development environment, the kernel process will not be automatical
* `gomobile bind --tags fts5 -ldflags '-s -w' -v -o kernel.aar -target='android/arm64' -androidapi 24 ./mobile/`
* https://github.com/siyuan-note/siyuan-android
For the mobile-end, please refer to the corresponding project repository.
### Harmony
Only support compilation under Linux, need to install Harmony SDK, and need to modify Go source code, please refer to https://github.com/siyuan-note/siyuan/issues/13184
* `cd kernel/harmony`
* `./build.sh` (`./build-win.sh` for Windows Emulator)
* https://github.com/siyuan-note/siyuan-harmony

View file

@ -60,4 +60,10 @@ NPM 镜像:
* `gomobile bind --tags fts5 -ldflags '-s -w' -v -o kernel.aar -target='android/arm64' -androidapi 24 ./mobile/`
* https://github.com/siyuan-note/siyuan-android
移动端请参考对应项目仓库。
### Harmony
仅支持在 Linux 下编译,需要安装鸿蒙 SDK并且需要修改 Go 源码,详情请参考 https://github.com/siyuan-note/siyuan/issues/13184
* `cd kernel/harmony`
* `./build.sh` Windows 模拟器使用 `./build-win.sh`
* https://github.com/siyuan-note/siyuan-harmony

View file

@ -100,7 +100,7 @@ Most features are free, even for commercial use.
* Multi-tab, drag and drop to split screen
* Template snippet
* JavaScript/CSS snippet
* Android/iOS App
* Android/iOS/HarmonyOS App
* Docker deployment
* [API](https://github.com/siyuan-note/siyuan/blob/master/API.md)
* Community marketplace
@ -120,6 +120,7 @@ Some features are only available to paid members, for more details please refer
| [petal](https://github.com/siyuan-note/petal) | Plugin API | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/petal) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/petal) |
| [android](https://github.com/siyuan-note/siyuan-android) | Android App | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/siyuan-android) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/siyuan-android) |
| [ios](https://github.com/siyuan-note/siyuan-ios) | iOS App | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/siyuan-ios) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/siyuan-ios) |
| [harmony](https://github.com/siyuan-note/siyuan-harmony) | HarmonyOS App | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/siyuan-harmony) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/siyuan-harmony) |
| [riff](https://github.com/siyuan-note/riff) | Spaced repetition | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/riff) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/riff) |
## 🌟 Star History
@ -346,6 +347,7 @@ SiYuan is completely open source, and contributions are welcome:
* [User Interface and Kernel](https://github.com/siyuan-note/siyuan)
* [Android](https://github.com/siyuan-note/siyuan-android)
* [iOS](https://github.com/siyuan-note/siyuan-ios)
* [HarmonyOS](https://github.com/siyuan-note/siyuan-harmony)
* [Chrome Clipping Extension](https://github.com/siyuan-note/siyuan-chrome)
For more details, please refer to [Development Guide](https://github.com/siyuan-note/siyuan/blob/master/.github/CONTRIBUTING.md).

View file

@ -99,7 +99,7 @@ SiYuanは、プライバシーを最優先とする個人の知識管理シス
* マルチタブ、ドラッグアンドドロップで分割画面
* テンプレートスニペット
* JavaScript/CSSスニペット
* Android/iOSアプリ
* Android/iOS/HarmonyOSアプリ
* Dockerデプロイメント
* [API](https://github.com/siyuan-note/siyuan/blob/master/API.md)
* コミュニティマーケットプレイス
@ -110,16 +110,17 @@ SiYuanは、プライバシーを最優先とする個人の知識管理シス
![SiYuan Arch](https://b3logfile.com/file/2023/05/SiYuan_Arch-Sgu8vXT.png "SiYuan Arch")
| プロジェクト | 説明 | フォーク | スター |
|----------------------------------------------------------|-----------------------|---------------------------------------------------------------------------------|--------------------------------------------------------------------------------------|
| [lute](https://github.com/88250/lute) | エディタエンジン | ![GitHub forks](https://img.shields.io/github/forks/88250/lute) | ![GitHub Repo stars](https://img.shields.io/github/stars/88250/lute) |
| [chrome](https://github.com/siyuan-note/siyuan-chrome) | Chrome/Edge拡張 | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/siyuan-chrome) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/siyuan-chrome) |
| プロジェクト | 説明 | フォーク | スター |
|----------------------------------------------------------|-----------------|---------------------------------------------------------------------------------|--------------------------------------------------------------------------------------|
| [lute](https://github.com/88250/lute) | エディタエンジン | ![GitHub forks](https://img.shields.io/github/forks/88250/lute) | ![GitHub Repo stars](https://img.shields.io/github/stars/88250/lute) |
| [chrome](https://github.com/siyuan-note/siyuan-chrome) | Chrome/Edge拡張 | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/siyuan-chrome) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/siyuan-chrome) |
| [bazaar](https://github.com/siyuan-note/bazaar) | コミュニティマーケットプレイス | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/bazaar) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/bazaar) |
| [dejavu](https://github.com/siyuan-note/dejavu) | データリポジトリ | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/dejavu) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/dejavu) |
| [petal](https://github.com/siyuan-note/petal) | プラグインAPI | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/petal) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/petal) |
| [android](https://github.com/siyuan-note/siyuan-android) | Androidアプリ | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/siyuan-android) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/siyuan-android) |
| [ios](https://github.com/siyuan-note/siyuan-ios) | iOSアプリ | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/siyuan-ios) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/siyuan-ios) |
| [riff](https://github.com/siyuan-note/riff) | 間隔反復 | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/riff) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/riff) |
| [dejavu](https://github.com/siyuan-note/dejavu) | データリポジトリ | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/dejavu) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/dejavu) |
| [petal](https://github.com/siyuan-note/petal) | プラグインAPI | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/petal) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/petal) |
| [android](https://github.com/siyuan-note/siyuan-android) | Androidアプリ | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/siyuan-android) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/siyuan-android) |
| [ios](https://github.com/siyuan-note/siyuan-ios) | iOSアプリ | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/siyuan-ios) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/siyuan-ios) |
| [harmony](https://github.com/siyuan-note/siyuan-harmony) | HarmonyOSアプリ | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/siyuan-harmony) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/siyuan-harmony) |
| [riff](https://github.com/siyuan-note/riff) | 間隔反復 | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/riff) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/riff) |
## 🌟 スター履歴
@ -345,6 +346,7 @@ SiYuanは完全にオープンソースであり、貢献を歓迎します
* [ユーザーインターフェースとカーネル](https://github.com/siyuan-note/siyuan)
* [Android](https://github.com/siyuan-note/siyuan-android)
* [iOS](https://github.com/siyuan-note/siyuan-ios)
* [harmony](https://github.com/siyuan-note/siyuan-harmony)
* [Chromeクリッピング拡張](https://github.com/siyuan-note/siyuan-chrome)
詳細については[開発ガイド](https://github.com/siyuan-note/siyuan/blob/master/.github/CONTRIBUTING.md)をご覧ください。

View file

@ -101,7 +101,7 @@
* Tesseract OCR
* 模板片段
* JavaScript/CSS 代码片段
* Android/iOS App
* Android/iOS/鸿蒙 App
* Docker 部署
* [API](API_zh_CN.md)
* 社区集市
@ -112,16 +112,17 @@
![思源笔记架构设计](https://b3logfile.com/file/2023/05/SiYuan_Arch-Sgu8vXT.png "思源笔记架构设计")
| Project | Description | Forks | Stars |
|----------------------------------------------------------|----------------|---------------------------------------------------------------------------------|--------------------------------------------------------------------------------------|
| [lute](https://github.com/88250/lute) | 编辑器引擎 | ![GitHub forks](https://img.shields.io/github/forks/88250/lute) | ![GitHub Repo stars](https://img.shields.io/github/stars/88250/lute) |
| Project | Description | Forks | Stars |
|----------------------------------------------------------|--------------|---------------------------------------------------------------------------------|--------------------------------------------------------------------------------------|
| [lute](https://github.com/88250/lute) | 编辑器引擎 | ![GitHub forks](https://img.shields.io/github/forks/88250/lute) | ![GitHub Repo stars](https://img.shields.io/github/stars/88250/lute) |
| [chrome](https://github.com/siyuan-note/siyuan-chrome) | Chrome/Edge 扩展 | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/siyuan-chrome) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/siyuan-chrome) |
| [bazaar](https://github.com/siyuan-note/bazaar) | 社区集市 | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/bazaar) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/bazaar) |
| [dejavu](https://github.com/siyuan-note/dejavu) | 数据仓库 | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/dejavu) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/dejavu) |
| [petal](https://github.com/siyuan-note/petal) | 插件 API | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/petal) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/petal) |
| [android](https://github.com/siyuan-note/siyuan-android) | Android App | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/siyuan-android) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/siyuan-android) |
| [ios](https://github.com/siyuan-note/siyuan-ios) | iOS App | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/siyuan-ios) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/siyuan-ios) |
| [riff](https://github.com/siyuan-note/riff) | 间隔重复 | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/riff) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/riff) |
| [bazaar](https://github.com/siyuan-note/bazaar) | 社区集市 | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/bazaar) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/bazaar) |
| [dejavu](https://github.com/siyuan-note/dejavu) | 数据仓库 | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/dejavu) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/dejavu) |
| [petal](https://github.com/siyuan-note/petal) | 插件 API | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/petal) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/petal) |
| [android](https://github.com/siyuan-note/siyuan-android) | Android App | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/siyuan-android) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/siyuan-android) |
| [ios](https://github.com/siyuan-note/siyuan-ios) | iOS App | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/siyuan-ios) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/siyuan-ios) |
| [harmony](https://github.com/siyuan-note/siyuan-harmony) | 鸿蒙 App | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/siyuan-harmony) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/siyuan-harmony) |
| [riff](https://github.com/siyuan-note/riff) | 间隔重复 | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/riff) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/riff) |
## 🌟 星标历史
@ -381,6 +382,7 @@ Publish parameters: --accessAuthCode=******(访问授权码)
* [界面和内核](https://github.com/siyuan-note/siyuan)
* [Android 端](https://github.com/siyuan-note/siyuan-android)
* [iOS 端](https://github.com/siyuan-note/siyuan-ios)
* [鸿蒙端](https://github.com/siyuan-note/siyuan-harmony)
* [Chrome 剪藏扩展](https://github.com/siyuan-note/siyuan-chrome)
更多细节请参考[开发指南](https://github.com/siyuan-note/siyuan/blob/master/.github/CONTRIBUTING_zh_CN.md)。

View file

@ -504,7 +504,7 @@
"editReadonly": "Schreibgeschützter Modus",
"editReadonlyTip": "Nach der Aktivierung wird das Dokument im schreibgeschützten Modus geladen.",
"generateConflictDoc": "Konfliktdokument generieren, wenn Synchronisationskonflikte auftreten.",
"generateConflictDocTip": "Nach der Aktivierung wird ein Konfliktdokument generiert, wenn ein Synchronisationskonflikt auftritt, sodass es direkt geöffnet und angezeigt werden kann. Egal ob aktiviert oder nicht, die Datenhistorie wird das Konfliktdokument aufzeichnen.",
"generateConflictDocTip": "Nach der Aktivierung wird ein Konfliktdokument generiert, wenn ein Synchronisationskonflikt auftritt, sodass es direkt geöffnet und angezeigt werden kann. Egal ob aktiviert oder nicht, die [Datenhistorie] wird das Konfliktdokument aufzeichnen.",
"deleteOpConfirm": "⚠️ Bestätigung der Löschoperation",
"filterKeywordEnter": "Keyword-Filter eingeben",
"defBlock": "Def Block",
@ -576,7 +576,7 @@
"key": "Schlüssel",
"genKey": "Automatisch generieren",
"genKeyByPW": "Schlüssel nach Passphrase generieren",
"dataRepoKeyTip1": "Das Daten-Repo wird verwendet, um Datenschnappschüsse zu verschlüsseln und zu speichern. Schnappschüsse können in der Datenhistorie erstellt und zurückgerollt werden.",
"dataRepoKeyTip1": "Das Daten-Repo wird verwendet, um Datenschnappschüsse zu verschlüsseln und zu speichern. Schnappschüsse können in der [Datenhistorie] erstellt und zurückgerollt werden.",
"dataRepoKeyTip2": "Alle Geräte müssen denselben Schlüssel verwenden, wenn die Schlüssel übereinstimmen, können die Daten nicht in die Cloud synchronisiert werden.",
"dataRepoKey": "Daten-Repo-Schlüssel",
"dataRepoPurge": "Daten-Repo bereinigen",
@ -948,7 +948,7 @@
"copyID": "ID kopieren",
"newBookmark": "Lesezeichenlabel erstellen",
"generateHistory": "Intervall der Historienerzeugung (Minuten, auf 0 setzen, um zu deaktivieren)",
"generateHistoryInterval": "Historien werden automatisch bei der Bearbeitung oder Löschung erstellt und können in der Datenhistorie eingesehen und zurückgerollt werden.",
"generateHistoryInterval": "Historien werden automatisch bei der Bearbeitung oder Löschung erstellt und können in der [Datenhistorie] eingesehen und zurückgerollt werden.",
"historyRetentionDays": "Aufbewahrungstage der Historien",
"historyRetentionDaysTip": "Historische Daten, die die Aufbewahrungstage überschreiten, werden automatisch und vollständig gelöscht.",
"clearHistory": "Alle Historien löschen",

View file

@ -504,7 +504,7 @@
"editReadonly": "Read-only mode",
"editReadonlyTip": "After enabling, the editor will load the document in read-only mode",
"generateConflictDoc": "Generate conflict documentation when syncing conflicts",
"generateConflictDocTip": "After enabling, a conflict document will be generated when a synchronization conflict occurs, so that it can be opened and viewed directly. Whether enabled or not, the data history will record the conflict document",
"generateConflictDocTip": "After enabling, a conflict document will be generated when a synchronization conflict occurs, so that it can be opened and viewed directly. Whether enabled or not, the [Data History] will record the conflict document",
"deleteOpConfirm": "⚠️ Delete operation confirmation",
"filterKeywordEnter": "Keyword filtering Enter",
"defBlock": "Def block",
@ -576,7 +576,7 @@
"key": "Key",
"genKey": "Auto-generate key",
"genKeyByPW": "Gen key by passphrase",
"dataRepoKeyTip1": "The data repo is used to encrypt and save data snapshots. Snapshots can be created and rolled back in the data history",
"dataRepoKeyTip1": "The data repo is used to encrypt and save data snapshots. Snapshots can be created and rolled back in the [Data History]",
"dataRepoKeyTip2": "All devices must use the same key, if the keys are inconsistent, the data cannot be synced to the cloud",
"dataRepoKey": "Data repo key",
"dataRepoPurge": "Data repo purge",
@ -948,7 +948,7 @@
"copyID": "Copy ID",
"newBookmark": "Create a bookmark label",
"generateHistory": "History Generation Interval (minutes, set to 0 to disable)",
"generateHistoryInterval": "History is automatically generated when editing or deleting, which can be viewed and rolled back in the data history",
"generateHistoryInterval": "History is automatically generated when editing or deleting, which can be viewed and rolled back in the [Data History]",
"historyRetentionDays": "History Retention Days",
"historyRetentionDaysTip": "Historical data exceeding the retention days will be automatically and completely deleted",
"clearHistory": "Clear all history",

View file

@ -504,7 +504,7 @@
"editReadonly": "Modo de solo lectura",
"editReadonlyTip": "Después de habilitarlo, el editor cargará el documento en modo de solo lectura",
"generateConflictDoc": "Generar documentación de conflicto al sincronizar conflictos",
"generateConflictDocTip": "Después de habilitarlo, se generará un documento de conflicto cuando ocurra un conflicto de sincronización, para que pueda abrirse y verse directamente. Ya sea que esté habilitado o no, el historial de datos registrará el documento de conflicto",
"generateConflictDocTip": "Después de habilitarlo, se generará un documento de conflicto cuando ocurra un conflicto de sincronización, para que pueda abrirse y verse directamente. Ya sea que esté habilitado o no, el [Historial de datos] registrará el documento de conflicto",
"deleteOpConfirm": "⚠️ Confirmación de operación de eliminación",
"filterKeywordEnter": "Filtrado de palabras clave Entrar",
"defBlock": "Definir bloque",
@ -576,7 +576,7 @@
"key": "Clave",
"genKey": "Gen clave auto",
"genKeyByPW": "Clave gen por contraseña",
"dataRepoKeyTip1": "El repositorio de datos se utiliza para cifrar y guardar instantáneas de datos. Las instantáneas pueden crearse y revertirse en el historial de datos",
"dataRepoKeyTip1": "El repositorio de datos se utiliza para cifrar y guardar instantáneas de datos. Las instantáneas pueden crearse y revertirse en el [Historial de datos]",
"dataRepoKeyTip2": "Todos los dispositivos deben usar la misma clave, si las claves son inconsistentes, los datos no se pueden sincronizar con la nube",
"dataRepoKey": "Clave del repositorio de datos",
"dataRepoPurge": "Purga del repositorio de datos",
@ -948,7 +948,7 @@
"copyID": "ID de copia",
"newBookmark": "Crear una etiqueta de marcador",
"generateHistory": "Intervalo de Generación de Historial (minutos, poner a 0 para desactivar)",
"generateHistoryInterval": "El historial se genera automáticamente cuando se edita o se borra, y se puede ver y retroceder en el historial de datos",
"generateHistoryInterval": "El historial se genera automáticamente cuando se edita o se borra, y se puede ver y retroceder en el [Historial de datos]",
"historyRetentionDays": "Días de retención del historial",
"historyRetentionDaysTip": "Los datos históricos que superen los días de retención se eliminarán automática y completamente",
"clearHistory": "Borrar todo el historial",

View file

@ -504,7 +504,7 @@
"editReadonly": "Modalità di sola lettura",
"editReadonlyTip": "Dopo l'abilitazione, l'editor caricherà il documento in modalità di sola lettura",
"generateConflictDoc": "Genera documento di conflitto quando si verificano conflitti di sincronizzazione",
"generateConflictDocTip": "Dopo l'abilitazione, verrà generato un documento di conflitto quando si verifica un conflitto di sincronizzazione, in modo che possa essere aperto e visualizzato direttamente. Sia che sia abilitato o meno, la cronologia dei dati registrerà il documento di conflitto",
"generateConflictDocTip": "Dopo l'abilitazione, verrà generato un documento di conflitto quando si verifica un conflitto di sincronizzazione, in modo che possa essere aperto e visualizzato direttamente. Sia che sia abilitato o meno, la [Cronologia dati] registrerà il documento di conflitto",
"deleteOpConfirm": "⚠️ Conferma operazione di eliminazione",
"filterKeywordEnter": "Parola chiave di filtraggio Invio",
"defBlock": "Blocco definito",
@ -576,7 +576,7 @@
"key": "Chiave",
"genKey": "Genera chiave automaticamente",
"genKeyByPW": "Genera chiave tramite passphrase",
"dataRepoKeyTip1": "Il repository dei dati è utilizzato per crittografare e salvare gli snapshot dei dati. Gli snapshot possono essere creati e ripristinati nella cronologia dei dati",
"dataRepoKeyTip1": "Il repository dei dati è utilizzato per crittografare e salvare gli snapshot dei dati. Gli snapshot possono essere creati e ripristinati nella [Cronologia dati]",
"dataRepoKeyTip2": "Tutti i dispositivi devono utilizzare la stessa chiave, se le chiavi non corrispondono i dati non possono essere sincronizzati nel cloud",
"dataRepoKey": "Chiave del repository dati",
"dataRepoPurge": "Pulizia repository dati",
@ -948,7 +948,7 @@
"copyID": "Copia ID",
"newBookmark": "Crea un'etichetta segnalibro",
"generateHistory": "Intervallo di generazione della cronologia (minuti, impostare a 0 per disabilitare)",
"generateHistoryInterval": "La cronologia viene generata automaticamente durante la modifica o l'eliminazione, può essere visualizzata e ripristinata nella cronologia dei dati",
"generateHistoryInterval": "La cronologia viene generata automaticamente durante la modifica o l'eliminazione, può essere visualizzata e ripristinata nella [Cronologia dati]",
"historyRetentionDays": "Giorni di conservazione della cronologia",
"historyRetentionDaysTip": "I dati storici che superano i giorni di conservazione verranno eliminati automaticamente e completamente",
"clearHistory": "Cancella tutta la cronologia",
@ -999,7 +999,7 @@
"account11": "Fino alla fine dello sconto per gli early bird",
"account12": "Compagno di vita",
"clickMeToRenew": "Vai al rinnovo",
"dataHistory": "Cronologia dei dati",
"dataHistory": "Cronologia dati",
"quitApp": "Esci?",
"reset": "Reimposta",
"siyuanNote": "SiYuan",

View file

@ -504,7 +504,7 @@
"editReadonly": "読み取り専用モード",
"editReadonlyTip": "エディタが読み取り専用モードでドキュメントを読み込みます",
"generateConflictDoc": "同期の競合時に競合ドキュメントを生成する",
"generateConflictDocTip": "同期の競合が発生した場合は競合ドキュメントが生成され、直接開いて表示できます。この設定に関わらずデータ履歴には競合ドキュメントが記録されます",
"generateConflictDocTip": "同期の競合が発生した場合は競合ドキュメントが生成され、直接開いて表示できます。この設定に関わらず [データ履歴] には競合ドキュメントが記録されます",
"deleteOpConfirm": "⚠️ 削除操作の確認",
"filterKeywordEnter": "フィルタキーワードを入力",
"defBlock": "定義ブロック",
@ -576,7 +576,7 @@
"key": "キー",
"genKey": "キーの自動生成",
"genKeyByPW": "パスワードからキーを生成",
"dataRepoKeyTip1": "データリポジトリはデータスナップショットの暗号化と保存に使用されます。スナップショットはデータ履歴で作成およびロールバックできます",
"dataRepoKeyTip1": "データリポジトリはデータスナップショットの暗号化と保存に使用されます。スナップショットは [データ履歴] で作成およびロールバックできます",
"dataRepoKeyTip2": "すべてのデバイスで同じキーを使用する必要があります。キーが一致しなければデータはクラウドに同期されません",
"dataRepoKey": "データリポジトリキー",
"dataRepoPurge": "データリポジトリのクリーンアップ",
@ -948,7 +948,7 @@
"copyID": "ID をコピー",
"newBookmark": "ブックマークラベルを作成",
"generateHistory": "履歴生成間隔 (分単位、無効にするには <code class='fn__code'>0</code> に設定)",
"generateHistoryInterval": "履歴は編集や削除時に自動的に生成され、データ履歴から閲覧およびロールバックが可能です",
"generateHistoryInterval": "履歴は編集や削除時に自動的に生成され、[データ履歴] から閲覧およびロールバックが可能です",
"historyRetentionDays": "履歴の保存日数",
"historyRetentionDaysTip": "保存日数を超える履歴データは自動的に削除されます",
"clearHistory": "すべての履歴を消去",

View file

@ -504,7 +504,7 @@
"editReadonly": "Tryb tylko do odczytu",
"editReadonlyTip": "Po włączeniu edytor załaduje dokument w trybie tylko do odczytu",
"generateConflictDoc": "Generuj dokument konfliktowy podczas synchronizacji konfliktów",
"generateConflictDocTip": "Po włączeniu, dokument konfliktowy zostanie wygenerowany, gdy wystąpi konflikt synchronizacji, aby można go było otworzyć i przeglądać bezpośrednio. Niezależnie od tego, czy włączone, historia danych zarejestruje dokument konfliktowy",
"generateConflictDocTip": "Po włączeniu, dokument konfliktowy zostanie wygenerowany, gdy wystąpi konflikt synchronizacji, aby można go było otworzyć i przeglądać bezpośrednio. Niezależnie od tego, czy włączone, [Historia danych] zarejestruje dokument konfliktowy",
"deleteOpConfirm": "⚠️ Potwierdzenie operacji usunięcia",
"filterKeywordEnter": "Filtrowanie słów kluczowych Wprowadź",
"defBlock": "Definicja bloku",
@ -576,7 +576,7 @@
"key": "Klucz",
"genKey": "Automatycznie wygeneruj klucz",
"genKeyByPW": "Gen klucz według hasła",
"dataRepoKeyTip1": "Repozytorium danych jest używane do szyfrowania i zapisywania zrzutów danych. Zrzuty mogą być tworzone i cofanięte w historii danych",
"dataRepoKeyTip1": "Repozytorium danych jest używane do szyfrowania i zapisywania zrzutów danych. Zrzuty mogą być tworzone i cofanięte w [Historia danych]",
"dataRepoKeyTip2": "Wszystkie urządzenia muszą używać tego samego klucza, jeśli klucze się różnią, dane nie mogą być synchronizowane do chmury",
"dataRepoKey": "Klucz repozytorium danych",
"dataRepoPurge": "Oczyszczanie repozytorium danych",
@ -948,7 +948,7 @@
"copyID": "Skopiuj ID",
"newBookmark": "Utwórz etykietę zakładki",
"generateHistory": "Interwał generacji historii (minuty, ustaw na 0, aby wyłączyć)",
"generateHistoryInterval": "Historia jest automatycznie generowana podczas edytowania lub usuwania, która może być wyświetlana i wycofywana w historii danych",
"generateHistoryInterval": "Historia jest automatycznie generowana podczas edytowania lub usuwania, która może być wyświetlana i wycofywana w [Historia danych]",
"historyRetentionDays": "Dni przechowywania historii",
"historyRetentionDaysTip": "Dane historyczne, które przekraczają dni przechowywania, będą automatycznie i całkowicie usuwane",
"clearHistory": "Wyczyść całą historię",

View file

@ -504,7 +504,7 @@
"editReadonly": "Режим только для чтения",
"editReadonlyTip": "После включения редактор загрузит документ в режиме только для чтения",
"generateConflictDoc": "Создавать документацию конфликтов при возникновении конфликтов синхронизации",
"generateConflictDocTip": "После включения при возникновении конфликта синхронизации будет генерироваться документ конфликта, чтобы его можно было открывать и просматривать напрямую. Независимо от включения или нет, история данных зарегистрирует документ конфликта",
"generateConflictDocTip": "После включения при возникновении конфликта синхронизации будет генерироваться документ конфликта, чтобы его можно было открывать и просматривать напрямую. Независимо от включения или нет, [История данных] зарегистрирует документ конфликта",
"deleteOpConfirm": "⚠️ Подтверждение операции удаления",
"filterKeywordEnter": "Ключевое слово фильтрации Ввод",
"defBlock": "Определить блок",
@ -576,7 +576,7 @@
"key": "Ключ",
"genKey": "Авто-сгенерировать ключ",
"genKeyByPW": "Создать ключ по паролю",
"dataRepoKeyTip1": "Репозиторий данных используется для шифрования и сохранения снимков данных. Снимки могут быть созданы и восстановлены в истории данных",
"dataRepoKeyTip1": "Репозиторий данных используется для шифрования и сохранения снимков данных. Снимки могут быть созданы и восстановлены в [Истории данных]",
"dataRepoKeyTip2": "Все устройства должны использовать один и тот же ключ, если ключи несовпадают, данные не могут синхронизироваться в облако",
"dataRepoKey": "Ключ репозитория данных",
"dataRepoPurge": "Очистка репозитория данных",
@ -948,7 +948,7 @@
"copyID": "Скопировать ID",
"newBookmark": "Создать метку закладки",
"generateHistory": "Интервал генерации истории (минуты, установите 0 для отключения)",
"generateHistoryInterval": "История автоматически генерируется при редактировании или удалении, которую можно просмотреть и откатить в истории данных",
"generateHistoryInterval": "История автоматически генерируется при редактировании или удалении, которую можно просмотреть и откатить в [Истории данных]",
"historyRetentionDays": "Дни хранения истории",
"historyRetentionDaysTip": "Исторические данные, превышающие дни хранения, будут автоматически и полностью удалены",
"clearHistory": "Очистить всю историю",

View file

@ -504,7 +504,7 @@
"editReadonly": "只讀模式",
"editReadonlyTip": "啟用後編輯器將以只讀模式載入文檔",
"generateConflictDoc": "同步衝突時生成衝突文檔",
"generateConflictDocTip": "啟用後當同步發生衝突時會生成衝突文檔,以便直接打開查看。無論是否啟用,資料歷史都會記錄衝突文檔",
"generateConflictDocTip": "啟用後當同步發生衝突時會生成衝突文檔,以便直接打開查看。無論是否啟用,[資料歷史] 都會記錄衝突文檔",
"deleteOpConfirm": "⚠️ Delete operation confirmation",
"filterKeywordEnter": "關鍵字過濾 Enter",
"defBlock": "定義塊",
@ -576,7 +576,7 @@
"key": "密鑰",
"genKey": "自動生成密鑰",
"genKeyByPW": "通過密碼生成密鑰",
"dataRepoKeyTip1": "資料倉庫用於加密保存資料快照,可在資料歷史中建立快照和回復快照",
"dataRepoKeyTip1": "資料倉庫用於加密保存資料快照,可在 [資料歷史] 中建立快照和回復快照",
"dataRepoKeyTip2": "所有設備必須使用相同的密鑰,如果密鑰不一致則無法雲端同步資料",
"dataRepoKey": "資料倉庫密鑰",
"dataRepoPurge": "資料倉庫清理",
@ -948,7 +948,7 @@
"copyID": "複製 ID",
"newBookmark": "新建書籤標識",
"generateHistory": "歷史生成間隔(分鐘,設置為 0 則禁用)",
"generateHistoryInterval": "編輯或刪除時會自動生成歷史,可在資料歷史中查看和回復",
"generateHistoryInterval": "編輯或刪除時會自動生成歷史,可在 [資料歷史] 中查看和回復",
"historyRetentionDays": "歷史保留天數",
"historyRetentionDaysTip": "超過保留天數的歷史資料會被自動徹底刪除",
"clearHistory": "清空所有歷史",

View file

@ -504,7 +504,7 @@
"editReadonly": "只读模式",
"editReadonlyTip": "启用后编辑器将以只读模式载入文档",
"generateConflictDoc": "同步冲突时生成冲突文档",
"generateConflictDocTip": "启用后当同步发生冲突时会生成冲突文档,以便直接打开查看。无论是否启用,数据历史都会记录冲突文档",
"generateConflictDocTip": "启用后当同步发生冲突时会生成冲突文档,以便直接打开查看。无论是否启用,[数据历史] 都会记录冲突文档",
"deleteOpConfirm": "⚠️ 删除操作确认",
"filterKeywordEnter": "关键字过滤 Enter",
"defBlock": "定义块",
@ -576,7 +576,7 @@
"key": "密钥",
"genKey": "自动生成密钥",
"genKeyByPW": "通过密码生成密钥",
"dataRepoKeyTip1": "数据仓库用于加密保存数据快照,可在数据历史中创建快照和回滚快照",
"dataRepoKeyTip1": "数据仓库用于加密保存数据快照,可在 [数据历史] 中创建快照和回滚快照",
"dataRepoKeyTip2": "所有设备必须使用相同的密钥,如果密钥不一致则无法云端同步数据",
"dataRepoKey": "数据仓库密钥",
"dataRepoPurge": "数据仓库清理",
@ -948,7 +948,7 @@
"copyID": "复制 ID",
"newBookmark": "新建书签标识",
"generateHistory": "历史生成间隔(分钟,设置为 0 则禁用)",
"generateHistoryInterval": "编辑或删除时会自动生成历史,可在数据历史中查看和回滚",
"generateHistoryInterval": "编辑或删除时会自动生成历史,可在 [数据历史] 中查看和回滚",
"historyRetentionDays": "历史保留天数",
"historyRetentionDaysTip": "超过保留天数的历史数据会被自动彻底删除",
"clearHistory": "清空所有历史",

View file

@ -1,8 +1,8 @@
Copyright 2020 The JetBrains Mono Project Authors (https://github.com/JetBrains/JetBrainsMono)
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at: https://scripts.sil.org/OFL
This license is copied below, and is also available with a FAQ at:
https://scripts.sil.org/OFL
-----------------------------------------------------------
@ -18,7 +18,7 @@ with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The

View file

@ -1,9 +1,9 @@
Copyright 2021-2023 LXGW (https://github.com/lxgw/LxgwWenKai)
Copyright 2021-2024 LXGW (https://github.com/lxgw/LxgwWenKai)
Copyright 2020 The Klee Project Authors (https://github.com/fontworks-fonts/Klee)
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
https://openfontlicense.org
-----------------------------------------------------------

View file

@ -1,6 +1,6 @@
@font-face {
font-family: 'JetBrainsMono-Regular';
src: url(../fonts/JetBrainsMono-1.0.3/JetBrainsMono-Regular.woff) format('woff');
src: url(../fonts/JetBrainsMono-2.304/JetBrainsMono-Regular.woff2) format('woff2');
}
.b3-typography,

View file

@ -69,10 +69,10 @@ export const appearanceMenu = (protyle: IProtyle, nodeElements?: Element[]) => {
const lastFontStatus = item.split(Constants.ZWSP);
switch (lastFontStatus[0]) {
case "color":
lastColorHTML += `<button class="color__square ariaLabel" data-position="3bottom" aria-label="${window.siyuan.languages.colorFont} ${lastFontStatus[1] ? "" : window.siyuan.languages.default}" ${lastFontStatus[1] ? `style="color:${lastFontStatus[1]}"` : ""} data-type="${lastFontStatus[0]}">A</button>`;
lastColorHTML += `<button class="color__square ariaLabel" data-position="3bottom" aria-label="${window.siyuan.languages.colorFont}${lastFontStatus[1] ? "" : " " + window.siyuan.languages.default}" ${lastFontStatus[1] ? `style="color:${lastFontStatus[1]}"` : ""} data-type="${lastFontStatus[0]}">A</button>`;
break;
case "backgroundColor":
lastColorHTML += `<button class="color__square ariaLabel" data-position="3bottom" aria-label="${window.siyuan.languages.colorPrimary} ${lastFontStatus[1] ? "" : window.siyuan.languages.default}" ${lastFontStatus[1] ? `style="background-color:${lastFontStatus[1]}"` : ""} data-type="${lastFontStatus[0]}"></button>`;
lastColorHTML += `<button class="color__square ariaLabel" data-position="3bottom" aria-label="${window.siyuan.languages.colorPrimary}${lastFontStatus[1] ? "" : " " + window.siyuan.languages.default}" ${lastFontStatus[1] ? `style="background-color:${lastFontStatus[1]}"` : ""} data-type="${lastFontStatus[0]}"></button>`;
break;
case "style2":
lastColorHTML += `<button data-type="${lastFontStatus[0]}" class="protyle-font__style" style="-webkit-text-stroke: 0.2px var(--b3-theme-on-background);-webkit-text-fill-color : transparent;">${window.siyuan.languages.hollow}</button>`;
@ -86,7 +86,7 @@ export const appearanceMenu = (protyle: IProtyle, nodeElements?: Element[]) => {
}
break;
case "style1":
lastColorHTML += `<button class="color__square ariaLabel" data-position="3bottom" aria-label="${window.siyuan.languages.color} ${lastFontStatus[1] ? "" : window.siyuan.languages.default}" ${lastFontStatus[1] ? `style="background-color:${lastFontStatus[1]};color:${lastFontStatus[2]}"` : ""} data-type="${lastFontStatus[0]}">A</button>`;
lastColorHTML += `<button class="color__square ariaLabel" data-position="3bottom" aria-label="${window.siyuan.languages.color}${lastFontStatus[1] ? "" : " " + window.siyuan.languages.default}" ${lastFontStatus[1] ? `style="background-color:${lastFontStatus[1]};color:${lastFontStatus[2]}"` : ""} data-type="${lastFontStatus[0]}">A</button>`;
break;
case "clear":
lastColorHTML += `<button style="height: 26px;display: flex;align-items: center;padding: 0 5px;" data-type="${lastFontStatus[0]}" class="protyle-font__style ariaLabel" aria-label="${window.siyuan.languages.clearFontStyle}"><svg class="svg--mid"><use xlink:href="#iconTrashcan"></use></svg></button>`;

View file

@ -195,7 +195,7 @@ func getMobileWorkspaces(c *gin.Context) {
ret := gulu.Ret.NewResult()
defer c.JSON(http.StatusOK, ret)
if util.ContainerIOS != util.Container && util.ContainerAndroid != util.Container {
if util.ContainerIOS != util.Container && util.ContainerAndroid != util.Container && util.ContainerHarmony != util.Container {
return
}
@ -315,7 +315,7 @@ func setWorkspaceDir(c *gin.Context) {
return
}
if util.ContainerAndroid == util.Container || util.ContainerIOS == util.Container {
if util.ContainerAndroid == util.Container || util.ContainerIOS == util.Container || util.ContainerHarmony == util.Container {
util.PushMsg(model.Conf.Language(42), 1000*15)
time.Sleep(time.Second * 1)
model.Close(false, false, 1)

View file

@ -269,6 +269,8 @@ func getCurrentBackend() string {
return "ios"
case util.ContainerAndroid:
return "android"
case util.ContainerHarmony:
return "harmony"
default:
return runtime.GOOS
}

View file

@ -765,7 +765,7 @@ func (parser *PdfAssetParser) getTextPageWorker(id int, instance pdfium.Pdfium,
// Parse will parse a PDF document using PDFium webassembly module using a worker pool
func (parser *PdfAssetParser) Parse(absPath string) (ret *AssetParseResult) {
if util.ContainerIOS == util.Container || util.ContainerAndroid == util.Container {
if util.ContainerIOS == util.Container || util.ContainerAndroid == util.Container || util.ContainerHarmony == util.Container {
// PDF asset content searching is not supported on mobile platforms
return
}

View file

@ -33,7 +33,7 @@ import (
var assetsWatcher *fsnotify.Watcher
func WatchAssets() {
if util.ContainerAndroid == util.Container || util.ContainerIOS == util.Container {
if util.ContainerAndroid == util.Container || util.ContainerIOS == util.Container || util.ContainerHarmony == util.Container {
return
}

View file

@ -284,7 +284,7 @@ func RecentUpdatedBlocks() (ret []*Block) {
ret = []*Block{}
sqlStmt := "SELECT * FROM blocks WHERE type = 'p' AND length > 1"
if util.ContainerIOS == util.Container || util.ContainerAndroid == util.Container {
if util.ContainerIOS == util.Container || util.ContainerAndroid == util.Container || util.ContainerHarmony == util.Container {
sqlStmt = "SELECT * FROM blocks WHERE type = 'd'"
}

View file

@ -134,7 +134,7 @@ func InitConf() {
if "" != util.Lang {
initialized := false
if util.ContainerAndroid == util.Container || util.ContainerIOS == util.Container {
if util.ContainerAndroid == util.Container || util.ContainerIOS == util.Container || util.ContainerHarmony == util.Container {
// 移动端以上次设置的外观语言为准
if "" != Conf.Lang && util.Lang != Conf.Lang {
util.Lang = Conf.Lang
@ -485,7 +485,7 @@ func InitConf() {
// 上次未正常完成数据索引
go func() {
util.WaitForUILoaded()
if util.ContainerIOS == util.Container || util.ContainerAndroid == util.Container {
if util.ContainerIOS == util.Container || util.ContainerAndroid == util.Container || util.ContainerHarmony == util.Container {
task.AppendAsyncTaskWithDelay(task.PushMsg, 2*time.Second, util.PushMsg, Conf.language(245), 15000)
} else {
task.AppendAsyncTaskWithDelay(task.PushMsg, 2*time.Second, util.PushMsg, Conf.language(244), 15000)

View file

@ -32,7 +32,7 @@ import (
var emojisWatcher *fsnotify.Watcher
func WatchEmojis() {
if util.ContainerAndroid == util.Container || util.ContainerIOS == util.Container {
if util.ContainerAndroid == util.Container || util.ContainerIOS == util.Container || util.ContainerHarmony == util.Container {
return
}

View file

@ -1076,7 +1076,7 @@ func processPDFWatermark(pdfCtx *pdfcpu.Context, watermark bool) {
desc = descBuilder.String()
desc = desc[:len(desc)-1]
fontPath := filepath.Join(util.AppearancePath, "fonts", "LxgwWenKai-Lite-1.311", "LXGWWenKaiLite-Regular.ttf")
fontPath := filepath.Join(util.AppearancePath, "fonts", "LxgwWenKai-Lite-1.501", "LXGWWenKaiLite-Regular.ttf")
err := api.InstallFonts([]string{fontPath})
if err != nil {
logging.LogErrorf("install font [%s] failed: %s", fontPath, err)

View file

@ -372,7 +372,7 @@ func subscribeSQLEvents() {
// util.ContextPushMsg(context, msg)
//})
eventbus.Subscribe(eventbus.EvtSQLInsertBlocksFTS, func(context map[string]interface{}, blockCount int, hash string) {
if util.ContainerAndroid == util.Container || util.ContainerIOS == util.Container {
if util.ContainerAndroid == util.Container || util.ContainerIOS == util.Container || util.ContainerHarmony == util.Container {
// Android/iOS 端不显示数据索引和搜索索引状态提示 https://github.com/siyuan-note/siyuan/issues/6392
return
}
@ -384,7 +384,7 @@ func subscribeSQLEvents() {
util.ContextPushMsg(context, msg)
})
eventbus.Subscribe(eventbus.EvtSQLDeleteBlocks, func(context map[string]interface{}, rootID string) {
if util.ContainerAndroid == util.Container || util.ContainerIOS == util.Container {
if util.ContainerAndroid == util.Container || util.ContainerIOS == util.Container || util.ContainerHarmony == util.Container {
return
}
@ -395,7 +395,7 @@ func subscribeSQLEvents() {
util.ContextPushMsg(context, msg)
})
eventbus.Subscribe(eventbus.EvtSQLUpdateBlocksHPaths, func(context map[string]interface{}, blockCount int, hash string) {
if util.ContainerAndroid == util.Container || util.ContainerIOS == util.Container {
if util.ContainerAndroid == util.Container || util.ContainerIOS == util.Container || util.ContainerHarmony == util.Container {
return
}
@ -407,7 +407,7 @@ func subscribeSQLEvents() {
})
eventbus.Subscribe(eventbus.EvtSQLInsertHistory, func(context map[string]interface{}) {
if util.ContainerAndroid == util.Container || util.ContainerIOS == util.Container {
if util.ContainerAndroid == util.Container || util.ContainerIOS == util.Container || util.ContainerHarmony == util.Container {
return
}
@ -419,7 +419,7 @@ func subscribeSQLEvents() {
})
eventbus.Subscribe(eventbus.EvtSQLInsertAssetContent, func(context map[string]interface{}) {
if util.ContainerAndroid == util.Container || util.ContainerIOS == util.Container {
if util.ContainerAndroid == util.Container || util.ContainerIOS == util.Container || util.ContainerHarmony == util.Container {
return
}

View file

@ -238,7 +238,7 @@ func CheckAuth(c *gin.Context) {
return
}
if strings.HasPrefix(c.Request.RequestURI, "/api/sync/performSync") {
if util.ContainerIOS == util.Container || util.ContainerAndroid == util.Container {
if util.ContainerIOS == util.Container || util.ContainerAndroid == util.Container || util.ContainerHarmony == util.Container {
c.Set(RoleContextKey, RoleAdministrator)
c.Next()
return

View file

@ -351,7 +351,7 @@ var (
AccessAuthCode string
Lang = ""
Container string // docker, android, ios, std
Container string // docker, android, ios, harmony, std
ISMicrosoftStore bool // 桌面端是否是微软商店版
)
@ -360,6 +360,7 @@ const (
ContainerDocker = "docker" // Docker 容器端
ContainerAndroid = "android" // Android 端
ContainerIOS = "ios" // iOS 端
ContainerHarmony = "harmony" // 鸿蒙端
LocalHost = "127.0.0.1" // 伺服地址
FixedPort = "6806" // 固定端口