diff --git a/app/appearance/langs/ar_SA.json b/app/appearance/langs/ar_SA.json index c3cf1a82b..73ac11446 100644 --- a/app/appearance/langs/ar_SA.json +++ b/app/appearance/langs/ar_SA.json @@ -1373,6 +1373,7 @@ "undo": "تراجع", "up": "أعلى", "update": "تحديث", + "updateVersion": "⬆️ تحديث", "insertAsset": "إدراج صورة أو ملف", "uploadError": "خطأ في الرفع", "uploading": "يتم الرفع...", @@ -1499,7 +1500,7 @@ "58": "‫[%d/%d] جارٍ التحقق من الفهرس...‬", "59": "فشل في تعيين قائمة تجاهل المزامنة", "60": "‫فشل في الحصول على حزمة التحديث: %s‬", - "61": "⬆️ حزمة تثبيت الإصدار الجديد جاهزة، هل تريد تثبيت الإصدار الجديد الآن؟", + "61": "حزمة تثبيت الإصدار الجديد جاهزة، هل تريد تثبيت الإصدار الجديد الآن؟

يرجى ملاحظة أنه يجب الانتظار حتى يتم إغلاق SiYuan بالكامل قبل التثبيت", "62": "⬆️ حزمة تثبيت الإصدار الجديد جاهزة. عند الخروج من التطبيق، سوف تُسأل ما إذا كنت تريد تثبيت الإصدار الجديد", "63": "جارٍ الاسترجاع, الرجاء الانتظار...", "64": "‫هناك [%d] ملفات في المجموع، سوف يستغرق الأمر بعض الوقت للفهرسة، الرجاء الانتظار...‬", @@ -1541,7 +1542,7 @@ "100": "جارٍ تنظيف البيانات...", "101": "‫تم إعداد تذكير [%s]‬", "102": "اكتملت المعالجة", - "103": "تم تنزيل حزمة التحديث تلقائياً في الخلفية. عند الخروج، سوف تُسأل ما إذا كنت تريد تثبيت الإصدار الجديد", + "103": "تم بدء تنزيل حزمة التحديث تلقائياً، سيتم عرض تقدم التنزيل في الشريط السفلي", "104": "فشل تنزيل حزمة التحديث، الرجاء التحقق من اتصال الشبكة", "105": "بدون عنوان", "106": "الحد الأقصى للطول هو 512 حرفاً", diff --git a/app/appearance/langs/de_DE.json b/app/appearance/langs/de_DE.json index 1dce43b1e..3cb466318 100644 --- a/app/appearance/langs/de_DE.json +++ b/app/appearance/langs/de_DE.json @@ -1373,6 +1373,7 @@ "undo": "Rückgängig", "up": "Nach oben", "update": "Aktualisieren", + "updateVersion": "⬆️ Aktualisieren", "insertAsset": "Bild oder Datei einfügen", "uploadError": "Upload-Fehler", "uploading": "Hochladen...", @@ -1499,7 +1500,7 @@ "58": "[%d/%d] Überprüfen des Index...", "59": "Fehler beim Festlegen der Ignorierliste für die Synchronisation", "60": "Fehler beim Abrufen des Update-Pakets: %s", - "61": "⬆️ Das neue Versionsinstallationspaket ist bereit, möchten Sie die neue Version jetzt installieren?", + "61": "Das neue Versionsinstallationspaket ist bereit, möchten Sie die neue Version jetzt installieren?

Bitte beachten Sie, dass Sie warten müssen, bis SiYuan vollständig beendet ist, bevor Sie die Installation durchführen", "62": "⬆️ Das neue Versionsinstallationspaket ist bereit. Beim Beenden werden Sie gefragt, ob Sie die neue Version installieren möchten", "63": "Wiederherstellung, bitte warten...", "64": "Insgesamt [%d] Dateien, es dauert etwas Zeit, um zu indizieren, bitte warten...", @@ -1541,7 +1542,7 @@ "100": "Daten bereinigen...", "101": "Erinnerung [%s] eingestellt", "102": "Bearbeitung abgeschlossen", - "103": "Das Update-Installationspaket wurde automatisch im Hintergrund heruntergeladen. Beim Beenden werden Sie gefragt, ob Sie die neue Version installieren möchten", + "103": "Der Download des Update-Installationspakets wurde automatisch gestartet, der Download-Fortschritt wird in der unteren Leiste angezeigt", "104": "Das Update-Installationspaket konnte nicht heruntergeladen werden, bitte überprüfen Sie die Netzwerkverbindung", "105": "Ohne Titel", "106": "Maximale Länge ist auf 512 Zeichen begrenzt", diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index a99ef37db..0826f8770 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -1373,6 +1373,7 @@ "undo": "Undo", "up": "Up", "update": "Update", + "updateVersion": "⬆️ Update", "insertAsset": "Insert image or file", "uploadError": "upload error", "uploading": "Uploading...", @@ -1499,7 +1500,7 @@ "58": "[%d/%d] Verifying index...", "59": "Failed to set sync ignore list", "60": "Failed to get the update package: %s", - "61": "⬆️ The new version installation package is ready, do you want to install the new version now?", + "61": "The new version installation package is ready, do you want to install the new version now?

Please note that you need to wait for SiYuan to fully exit before installing", "62": "⬆️ The new version installation package is ready. When exiting, you will be asked whether to install the new version", "63": "Recovering, please wait...", "64": "There are [%d] files in total, it will take some time to index, please wait...", @@ -1541,7 +1542,7 @@ "100": "Cleaning data...", "101": "Done setting reminder [%s]", "102": "Processing completed", - "103": "The update installation package has been automatically downloaded in the background. When exiting, you will be asked whether to install the new version", + "103": "The update installation package has been automatically started downloading, download progress will be displayed in the bottom bar", "104": "The update installation package failed to download, please check the network connection", "105": "Untitled", "106": "Maximum length is limited to 512 characters", diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index e10f2cbb8..8dcecafd4 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -1373,6 +1373,7 @@ "undo": "Deshacer", "up": "Arriba", "update": "Actualización", + "updateVersion": "⬆️ Actualizar", "insertAsset": "Insertar imagen o archivo", "uploadError": "error de subida", "uploading": "Subiendo...", @@ -1499,7 +1500,7 @@ "58": "[%d/%d] Verificando índice...", "59": " Falló la configuración de sincronización de la lista de ignorados", "60": "Fallo al obtener el paquete de actualización: %s", - "61": "⬆️ El paquete de instalación de la nueva versión está listo, ¿quieres instalar la nueva versión ahora?", + "61": "El paquete de instalación de la nueva versión está listo, ¿quieres instalar la nueva versión ahora?

Tenga en cuenta que debe esperar a que SiYuan se cierre completamente antes de instalar", "62": "⬆️ El paquete de instalación de la nueva versión está listo. Al salir, se le preguntará si desea instalar la nueva versión", "63": "Recuperando, por favor espere...", "64": "Hay [%d] archivos en total, tardará un tiempo en indexarse, por favor espere...", @@ -1541,7 +1542,7 @@ "100": "Limpieza de datos...", "101": "El recordatorio de configuración [%s] se ha completado", "102": "Procesamiento completado", - "103": "El paquete de instalación de la actualización se ha descargado automáticamente en segundo plano. Al salir, se le preguntará si desea instalar la nueva versión", + "103": "La descarga del paquete de instalación de la actualización se ha iniciado automáticamente, el progreso de la descarga se mostrará en la barra inferior", "104": "El paquete de instalación de la actualización no se pudo descargar, verifique la conexión de red", "105": "Sin título", "106": "La longitud máxima está limitada a 512 caracteres", diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index c7d1046d8..16e28926e 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -1373,6 +1373,7 @@ "undo": "Retiré", "up": "en haut", "update": "Mises à jour", + "updateVersion": "⬆️ Mettre à jour", "insertAsset": "Insérer une image ou un fichier", "uploadError": "erreur de transfert", "uploading": "Transfert en cours", @@ -1499,7 +1500,7 @@ "58": "[%d/%d] Vérification de l'index...", "59": "Échec de la définition de la liste des ignores de synchronisation", "60": "Échec de la récupération du paquet de mise à jour : %s", - "61": "⬆️ Le package d'installation de la nouvelle version est prêt, voulez-vous installer la nouvelle version maintenant ?", + "61": "Le package d'installation de la nouvelle version est prêt, voulez-vous installer la nouvelle version maintenant ?

Veuillez noter que vous devez attendre que SiYuan se ferme complètement avant d'installer", "62": "⬆️ Le package d'installation de la nouvelle version est prêt. En quittant, il vous sera demandé si vous souhaitez installer la nouvelle version", "63": "Récupération, veuillez patienter...", "64": "Il y a [%d] fichiers au total, l'indexation prendra un certain temps, veuillez patienter...", @@ -1541,7 +1542,7 @@ "100": "Nettoyage des données...", "101": "Rappel de réglage terminé [%s]", "102": "Traitement terminé", - "103": "Le package d'installation de la mise à jour a été automatiquement téléchargé en arrière-plan. En quittant, il vous sera demandé si vous souhaitez installer la nouvelle version", + "103": "Le téléchargement du package d'installation de la mise à jour a été automatiquement démarré, la progression du téléchargement sera affichée dans la barre inférieure", "104": "Le package d'installation de la mise à jour n'a pas pu être téléchargé, veuillez vérifier la connexion réseau", "105": "Sans titre", "106": "La longueur maximale est limitée à 512 caractères", diff --git a/app/appearance/langs/he_IL.json b/app/appearance/langs/he_IL.json index 11c6bce10..ed348caf1 100644 --- a/app/appearance/langs/he_IL.json +++ b/app/appearance/langs/he_IL.json @@ -1373,6 +1373,7 @@ "undo": "ביטול", "up": "למעלה", "update": "עדכן", + "updateVersion": "⬆️ עדכן", "insertAsset": "הכנס תמונה או קובץ", "uploadError": "שגיאת העלאה", "uploading": "מעלה...", @@ -1499,7 +1500,7 @@ "58": "[%d/%d] בודק אינדקס...", "59": "נכשל בהגדרת רשימת ההזנחה בסנכרון", "60": "נכשל לקבל את חבילת העדכון: %s", - "61": "⬆️ חבילת העדכון החדשה מוכנה, האם אתה רוצה להתקין את הגרסה החדשה עכשיו?", + "61": "חבילת העדכון החדשה מוכנה, האם אתה רוצה להתקין את הגרסה החדשה עכשיו?

שימו לב: יש להמתין עד ש-SiYuan ייסגר לחלוטין לפני ההתקנה", "62": "⬆️ חבילת העדכון החדשה מוכנה. בעת היציאה, תישאל אם להתקין את הגרסה החדשה", "63": "מוקם, אנא המתן...", "64": "יש בסך הכל [%d] קבצים, יידרש זמן מה לאינדיקציה, אנא המתן...", @@ -1541,7 +1542,7 @@ "100": "מנקה נתונים...", "101": "הושלמה הגדרת תזכורת [%s]", "102": "העיבוד הושלם", - "103": "חבילת ההתקנה לעדכון הושלמה ברקע אוטומטית. בעת היציאה, תישאל אם להתקין את הגרסה החדשה", + "103": "הורדת חבילת ההתקנה לעדכון החלה אוטומטית, התקדמות ההורדה תוצג בשורת התחתית", "104": "חבילת ההתקנה לעדכון נכשלת בהורדה, אנא בדוק את החיבור לרשת", "105": "ללא כותרת", "106": "אורך מרבי מוגבל ל-512 תווים", diff --git a/app/appearance/langs/it_IT.json b/app/appearance/langs/it_IT.json index ee44ea10a..937e0a000 100644 --- a/app/appearance/langs/it_IT.json +++ b/app/appearance/langs/it_IT.json @@ -1373,6 +1373,7 @@ "undo": "Annulla", "up": "Su", "update": "Aggiorna", + "updateVersion": "⬆️ Aggiorna", "insertAsset": "Inserisci immagine o file", "uploadError": "Errore di caricamento", "uploading": "Caricamento in corso.", @@ -1499,7 +1500,7 @@ "58": "[%d/%d] Verifica dell'indice in corso...", "59": "Impossibile impostare la lista di ignoranza della sincronizzazione", "60": "Impossibile ottenere il pacchetto di aggiornamento: %s", - "61": "⬆️ Il pacchetto di installazione della nuova versione è pronto, vuoi installarlo ora?", + "61": "Il pacchetto di installazione della nuova versione è pronto, vuoi installarlo ora?

Si prega di notare che è necessario attendere che SiYuan si chiuda completamente prima di installare", "62": "⬆️ Il pacchetto di installazione della nuova versione è pronto. Quando esci, ti verrà chiesto se installare la nuova versione", "63": "Recupero in corso, attendere prego...", "64": "Ci sono [%d] file in totale, ci vorrà del tempo per indicizzare, attendere prego...", @@ -1541,7 +1542,7 @@ "100": "Pulizia dei dati in corso...", "101": "Promemoria impostato [%s] completato", "102": "Elaborazione completata", - "103": "Il pacchetto di installazione dell'aggiornamento è stato scaricato automaticamente in background. Uscendo, ti verrà chiesto se installare la nuova versione", + "103": "Il download del pacchetto di installazione dell'aggiornamento è stato avviato automaticamente, il progresso del download verrà visualizzato nella barra inferiore", "104": "Il pacchetto di installazione dell'aggiornamento non è riuscito a scaricarsi, verifica la connessione di rete", "105": "Senza titolo", "106": "La lunghezza massima è limitata a 512 caratteri", diff --git a/app/appearance/langs/ja_JP.json b/app/appearance/langs/ja_JP.json index 7b271b371..4952b16eb 100644 --- a/app/appearance/langs/ja_JP.json +++ b/app/appearance/langs/ja_JP.json @@ -1373,6 +1373,7 @@ "undo": "元に戻す", "up": "上へ", "update": "更新", + "updateVersion": "⬆️ 更新", "insertAsset": "画像またはファイルを挿入", "uploadError": "アップロードエラー", "uploading": "アップロード中...", @@ -1499,7 +1500,7 @@ "58": "[%d/%d] インデックスを検証しています...", "59": "同期除外リストの設定に失敗しました", "60": "更新パッケージの取得に失敗しました: %s", - "61": "⬆️ 新しいバージョンをインストールする準備ができました。今すぐ新しいバージョンをインストールしますか?", + "61": "新しいバージョンをインストールする準備ができました。今すぐ新しいバージョンをインストールしますか?

ご注意:思源ノートが完全に終了してからインストールしてください", "62": "⬆️ 新しいバージョンをインストールする準備できました。終了するときに新しいバージョンをインストールするかどうかを確認します", "63": "復元中です。お待ちください...", "64": "合計 [%d] 個のファイルがあります。インデックスの作成には時間がかかりますので、しばらくお待ちください...", @@ -1541,7 +1542,7 @@ "100": "データをクリーニングしています...", "101": "リマインダーの設定が完了しました [%s]", "102": "処理が完了しました", - "103": "更新インストールパッケージがバックグラウンドで自動的にダウンロードされました。終了時に新バージョンをインストールするかどうかを確認するメッセージが表示されます", + "103": "更新インストールパッケージの自動ダウンロードが開始されました。ダウンロードの進捗は下部バーに表示されます", "104": "更新インストールパッケージのダウンロードに失敗しました。ネットワーク接続を確認してください", "105": "タイトルなし", "106": "最大長は 512 文字に制限されています", diff --git a/app/appearance/langs/ko_KR.json b/app/appearance/langs/ko_KR.json index b0bceb9ea..17240aef9 100644 --- a/app/appearance/langs/ko_KR.json +++ b/app/appearance/langs/ko_KR.json @@ -1373,6 +1373,7 @@ "undo": "실행 취소", "up": "위", "update": "업데이트", + "updateVersion": "⬆️ 업데이트", "insertAsset": "이미지 또는 파일 삽입", "uploadError": "업로드 오류", "uploading": "업로드 중...", @@ -1499,7 +1500,7 @@ "58": "[%d/%d] 인덱스 확인 중...", "59": "동기화 무시 목록 설정 실패", "60": "업데이트 패키지 가져오기 실패: %s", - "61": "⬆️ 새 버전 설치 패키지가 준비되었습니다. 지금 새 버전을 설치하시겠습니까?", + "61": "새 버전 설치 패키지가 준비되었습니다. 지금 새 버전을 설치하시겠습니까?

주의: 시유안이 완전히 종료될 때까지 기다린 후 설치해야 합니다", "62": "⬆️ 새 버전 설치 패키지가 준비되었습니다. 종료할 때 새 버전 설치 여부를 묻습니다", "63": "복구 중, 잠시만 기다려 주세요...", "64": "총 [%d]개의 파일이 있으며 인덱싱하는 데 시간이 걸립니다. 잠시만 기다려 주세요...", @@ -1541,7 +1542,7 @@ "100": "데이터 정리 중...", "101": "알림 설정 완료 [%s]", "102": "처리 완료", - "103": "업데이트 설치 패키지가 백그라운드에서 자동으로 다운로드되었습니다. 종료할 때 새 버전 설치 여부를 묻습니다", + "103": "업데이트 설치 패키지 자동 다운로드가 시작되었습니다. 다운로드 진행률은 하단 바에 표시됩니다", "104": "업데이트 설치 패키지 다운로드 실패, 네트워크 연결을 확인하세요", "105": "제목 없음", "106": "최대 길이는 512자로 제한됩니다", diff --git a/app/appearance/langs/pl_PL.json b/app/appearance/langs/pl_PL.json index 8665ab9a4..bbbb270f3 100644 --- a/app/appearance/langs/pl_PL.json +++ b/app/appearance/langs/pl_PL.json @@ -1373,6 +1373,7 @@ "undo": "Cofnij", "up": "W górę", "update": "Aktualizuj", + "updateVersion": "⬆️ Aktualizuj", "insertAsset": "Wstaw obraz lub plik", "uploadError": "błąd przesyłania", "uploading": "Przesyłanie...", @@ -1499,7 +1500,7 @@ "58": "[%d/%d] Weryfikacja indeksu...", "59": "Nie udało się ustawić listy pomijania synchronizacji", "60": "Nie udało się uzyskać pakietu aktualizacji: %s", - "61": "⬆️ Instalacja nowego pakietu wersji jest gotowa, czy chcesz teraz zainstalować nową wersję?", + "61": "Instalacja nowego pakietu wersji jest gotowa, czy chcesz teraz zainstalować nową wersję?

Uwaga: należy poczekać, aż SiYuan całkowicie się zamknie przed instalacją", "62": "⬆️ Instalacja nowego pakietu wersji jest gotowa. Przy wyjściu zapytasz, czy zainstalować nową wersję", "63": "Odzyskiwanie, proszę czekać...", "64": "Całkowita liczba plików wynosi [%d], zajmie trochę czasu na indeksowanie, proszę czekać...", @@ -1541,7 +1542,7 @@ "100": "Czyszczenie danych...", "101": "Zakończono ustawienie przypomnienia [%s]", "102": "Przetwarzanie zakończone", - "103": "Pakiet instalacyjny aktualizacji został automatycznie pobrany w tle. Przy wyjściu zostanie zapytane, czy zainstalować nową wersję", + "103": "Pobieranie pakietu instalacyjnego aktualizacji zostało automatycznie uruchomione, postęp pobierania będzie wyświetlany na dolnym pasku", "104": "Pobranie pakietu instalacyjnego nie powiodło się, proszę sprawdzić połączenie sieciowe", "105": "Bez tytułu", "106": "Maksymalna długość jest ograniczona do 512 znaków", diff --git a/app/appearance/langs/pt_BR.json b/app/appearance/langs/pt_BR.json index a8eb5332b..254253c38 100644 --- a/app/appearance/langs/pt_BR.json +++ b/app/appearance/langs/pt_BR.json @@ -1373,6 +1373,7 @@ "undo": "Desfazer", "up": "Para cima", "update": "Atualizar", + "updateVersion": "⬆️ Atualizar", "insertAsset": "Inserir imagem ou arquivo", "uploadError": "erro de upload", "uploading": "Enviando...", @@ -1499,7 +1500,7 @@ "58": "[%d/%d] Verificando índice...", "59": "Falha ao definir lista de ignorados de sincronização", "60": "Falha ao obter o pacote de atualização: %s", - "61": "⬆️ O pacote de instalação da nova versão está pronto, deseja instalar a nova versão agora?", + "61": "O pacote de instalação da nova versão está pronto, deseja instalar a nova versão agora?

Por favor, note que você precisa aguardar o SiYuan fechar completamente antes de instalar", "62": "⬆️ O pacote de instalação da nova versão está pronto. Ao sair, você será perguntado se deseja instalar a nova versão", "63": "Recuperando, por favor aguarde...", "64": "Há [%d] arquivos no total, levará algum tempo para indexar, por favor aguarde...", @@ -1541,7 +1542,7 @@ "100": "Limpando dados...", "101": "Lembrete definido [%s]", "102": "Processamento concluído", - "103": "O pacote de instalação da atualização foi baixado automaticamente em segundo plano. Ao sair, você será perguntado se deseja instalar a nova versão", + "103": "O download do pacote de instalação da atualização foi iniciado automaticamente, o progresso do download será exibido na barra inferior", "104": "Falha ao baixar o pacote de instalação da atualização, por favor verifique a conexão de rede", "105": "Sem título", "106": "Comprimento máximo limitado a 512 caracteres", diff --git a/app/appearance/langs/ru_RU.json b/app/appearance/langs/ru_RU.json index 4f8056ca5..3d02d777c 100644 --- a/app/appearance/langs/ru_RU.json +++ b/app/appearance/langs/ru_RU.json @@ -1373,6 +1373,7 @@ "undo": "Отменить", "up": "Вверх", "update": "Обновить", + "updateVersion": "⬆️ Обновить", "insertAsset": "Вставить изображение или файл", "uploadError": "Ошибка закачивания", "uploading": "Закачивание...", @@ -1499,7 +1500,7 @@ "58": "[%d/%d] Проверка индекса...", "59": "Не удалось установить список игнорирования синхронизации", "60": "Не удалось получить пакет обновления: %s", - "61": "⬆️ Установочный пакет новой версии готов, вы хотите установить новую версию сейчас?", + "61": "Установочный пакет новой версии готов, вы хотите установить новую версию сейчас?

Обратите внимание, что необходимо дождаться полного завершения работы SiYuan перед установкой", "62": "⬆️ Установочный пакет новой версии готов. При выходе вас спросят, хотите ли вы установить новую версию", "63": "Восстановление, пожалуйста, подождите...", "64": "Всего [%d] файлов, потребуется некоторое время для индексации, пожалуйста, подождите...", @@ -1541,7 +1542,7 @@ "100": "Очистка данных...", "101": "Задание напоминания завершено [%s]", "102": "Обработка завершена", - "103": "Установочный пакет обновления был загружен автоматически в фоновом режиме. При выходе вас спросят, хотите ли вы установить новую версию", + "103": "Загрузка установочного пакета обновления была автоматически запущена, прогресс загрузки будет отображаться в нижней панели", "104": "Не удалось скачать установочный пакет обновления, пожалуйста, проверьте сетевое подключение", "105": "Без названия", "106": "Максимальная длина ограничена 512 символами", diff --git a/app/appearance/langs/tr_TR.json b/app/appearance/langs/tr_TR.json index c0dcd2b40..21b3ead1a 100644 --- a/app/appearance/langs/tr_TR.json +++ b/app/appearance/langs/tr_TR.json @@ -1373,6 +1373,7 @@ "undo": "Geri al", "up": "Yukarı", "update": "Güncelle", + "updateVersion": "⬆️ Güncelle", "insertAsset": "Görsel veya dosya ekle", "uploadError": "Yükleme hatası", "uploading": "Yükleniyor...", @@ -1499,7 +1500,7 @@ "58": "[%d/%d] Dizin doğrulanıyor...", "59": "Senkronizasyon yok sayma listesi ayarlanamadı", "60": "Güncelleme paketi alınamadı: %s", - "61": "⬆️ Yeni sürüm paketi hazır, şimdi yüklemek ister misin?", + "61": "Yeni sürüm paketi hazır, şimdi yüklemek ister misin?

Lütfen dikkat: Kurulumdan önce SiYuan'ın tamamen kapanmasını beklemeniz gerekir", "62": "⬆️ Yeni sürüm paketi hazır, çıkarken yükleme seçeneği sunulacak", "63": "Kurtarılıyor, lütfen bekle...", "64": "Toplam [%d] dosya var, indeksleme biraz sürebilir, lütfen bekle...", @@ -1541,7 +1542,7 @@ "100": "Veri temizleniyor...", "101": "Hatırlatıcı ayarlandı [%s]", "102": "İşlem tamamlandı", - "103": "Güncelleme paketi arka planda indirildi. Çıkarken yeni sürüm kurulumu sorulacak", + "103": "Güncelleme paketi indirmesi otomatik olarak başlatıldı, indirme ilerlemesi alt çubukta gösterilecek", "104": "Güncelleme paketi indirilemedi, ağ bağlantısını kontrol et", "105": "Başlıksız", "106": "Maksimum uzunluk 512 karakter ile sınırlı", diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index a8a134c92..aecae2644 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -1373,6 +1373,7 @@ "undo": "撤銷", "up": "上", "update": "更新", + "updateVersion": "⬆️ 更新", "insertAsset": "插入圖片或檔", "uploadError": "上傳錯誤", "uploading": "上傳中...", @@ -1499,7 +1500,7 @@ "58": "[%d/%d] 正在校驗索引...", "59": "設置同步忽略列表失敗", "60": "獲取更新檔失敗:%s", - "61": "⬆️ 新版本安裝檔已經準備就緒,是否現在安裝新版本?", + "61": "新版本安裝檔已經準備就緒,是否現在安裝新版本?

請注意,需要先等待思源筆記完全退出再進行安裝", "62": "⬆️ 新版本安裝檔已經準備就緒,退出時將詢問是否安裝新版本", "63": "正在恢復,請稍等...", "64": "共有檔 [%d] 個,需要一些時間進行索引,請稍等...", @@ -1541,7 +1542,7 @@ "100": "正在清理資料...", "101": "設置提醒完畢 [%s]", "102": "處理完畢", - "103": "已經在後台開始自動下載更新安裝檔,退出時將詢問是否安裝新版本", + "103": "已經自動開始下載更新安裝檔,下載進度將在底欄顯示", "104": "更新安裝檔下載失敗,請檢查網絡連接", "105": "未命名", "106": "最大長度限制為 512 字元", diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index 61bcb8713..cfa98a644 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -1373,6 +1373,7 @@ "undo": "撤销", "up": "上", "update": "更新", + "updateVersion": "⬆️ 更新", "insertAsset": "插入图片或文件", "uploadError": "上传错误", "uploading": "上传中...", @@ -1499,7 +1500,7 @@ "58": "[%d/%d] 正在校验索引...", "59": "设置同步忽略列表失败", "60": "获取更新包失败:%s", - "61": "⬆️ 新版本安装包已经准备就绪,是否现在安装新版本?", + "61": "新版本安装包已经准备就绪,是否现在安装新版本?

请注意,需要先等待思源笔记完全退出再进行安装", "62": "⬆️ 新版本安装包已经准备就绪,退出时将询问是否安装新版本", "63": "正在恢复,请稍等...", "64": "共有文件 [%d] 个,需要一些时间进行索引,请稍等...", @@ -1541,7 +1542,7 @@ "100": "正在清理数据...", "101": "设置提醒完毕 [%s]", "102": "处理完毕", - "103": "已经在后台开始自动下载更新安装包,退出时将询问是否安装新版本", + "103": "已经自动开始下载更新安装包,下载进度将在底栏显示", "104": "更新安装包下载失败,请检查网络连接", "105": "未命名", "106": "最大长度限制为 512 字符", diff --git a/app/src/dialog/processSystem.ts b/app/src/dialog/processSystem.ts index 4b48ce90b..016d6c636 100644 --- a/app/src/dialog/processSystem.ts +++ b/app/src/dialog/processSystem.ts @@ -305,7 +305,6 @@ export const exitSiYuan = async (setCurrentWorkspace = true) => { window.webkit.messageHandlers.exit.postMessage(""); return; } - if (isInHarmony()) { window.JSHarmony.exit(); return; @@ -321,7 +320,7 @@ export const exitSiYuan = async (setCurrentWorkspace = true) => { ipcRenderer.send(Constants.SIYUAN_SHOW_WINDOW); } - confirmDialog(window.siyuan.languages.tip, response.msg, () => { + confirmDialog(window.siyuan.languages.updateVersion, response.msg, () => { fetchPost("/api/system/exit", { force: true, setCurrentWorkspace, diff --git a/kernel/model/cloud_service.go b/kernel/model/cloud_service.go index 430826995..9b9a14c65 100644 --- a/kernel/model/cloud_service.go +++ b/kernel/model/cloud_service.go @@ -272,9 +272,6 @@ func refreshCheckDownloadInstallPkg() { time.Sleep(3 * time.Minute) checkDownloadInstallPkg() - if "" != getNewVerInstallPkgPath() { - util.PushMsg(Conf.Language(62), 15*1000) - } } func refreshAnnouncement() { diff --git a/kernel/model/conf.go b/kernel/model/conf.go index fd3b32196..6871f946a 100644 --- a/kernel/model/conf.go +++ b/kernel/model/conf.go @@ -711,6 +711,7 @@ func Close(force, setCurrentWorkspace bool, execInstallPkg int) (exitCode int) { util.IsExiting.Store(true) waitSecondForExecInstallPkg := false + newVerInstallPkgPath := getNewVerInstallPkgPath() if !skipNewVerInstallPkg() && "" != newVerInstallPkgPath { if 2 == execInstallPkg || (force && 0 == execInstallPkg) { // 执行新版本安装 waitSecondForExecInstallPkg = true diff --git a/kernel/model/updater.go b/kernel/model/updater.go index 747972b63..e29a75637 100644 --- a/kernel/model/updater.go +++ b/kernel/model/updater.go @@ -26,7 +26,6 @@ import ( "path" "path/filepath" "runtime" - "strconv" "strings" "sync" "time" @@ -35,6 +34,7 @@ import ( "github.com/imroc/req/v3" "github.com/siyuan-note/logging" "github.com/siyuan-note/siyuan/kernel/util" + "golang.org/x/mod/semver" ) func execNewVerInstallPkg(newVerInstallPkgPath string) { @@ -45,6 +45,9 @@ func execNewVerInstallPkg(newVerInstallPkgPath string) { } else if gulu.OS.IsDarwin() { exec.Command("chmod", "+x", newVerInstallPkgPath).CombinedOutput() cmd = exec.Command("open", newVerInstallPkgPath) + } else { + logging.LogErrorf("unsupported platform for auto-installing package") + return } gulu.CmdAttr(cmd) cmdErr := cmd.Run() @@ -54,28 +57,23 @@ func execNewVerInstallPkg(newVerInstallPkgPath string) { } } -var newVerInstallPkgPath string - func getNewVerInstallPkgPath() string { if skipNewVerInstallPkg() { - newVerInstallPkgPath = "" return "" } downloadPkgURLs, checksum, err := getUpdatePkg() - if err != nil || 1 > len(downloadPkgURLs) || "" == checksum { - newVerInstallPkgPath = "" + if err != nil { return "" } pkg := path.Base(downloadPkgURLs[0]) - newVerInstallPkgPath = filepath.Join(util.TempDir, "install", pkg) - localChecksum, _ := sha256Hash(newVerInstallPkgPath) + pkgPath := filepath.Join(util.TempDir, "install", pkg) + localChecksum, _ := sha256Hash(pkgPath) if checksum != localChecksum { - newVerInstallPkgPath = "" return "" } - return newVerInstallPkgPath + return pkgPath } var checkDownloadInstallPkgLock = sync.Mutex{} @@ -93,22 +91,30 @@ func checkDownloadInstallPkg() { defer checkDownloadInstallPkgLock.Unlock() downloadPkgURLs, checksum, err := getUpdatePkg() - if err != nil || 1 > len(downloadPkgURLs) || "" == checksum { + if err != nil { return } - msgId := util.PushMsg(Conf.Language(103), 1000*7) - succ := false + existingPkgPath := getNewVerInstallPkgPath() + if "" != existingPkgPath { + // 存在经过 sha256Hash 检查的安装包 + util.PushUpdateMsg("update-pkg-ready", Conf.Language(62), 15*1000) + return + } + + util.PushUpdateMsg("update-pkg-downloading", Conf.Language(103), 1000*7) + success := false for _, downloadPkgURL := range downloadPkgURLs { err = downloadInstallPkg(downloadPkgURL, checksum) if err == nil { - succ = true + success = true break - } } - if !succ { - util.PushUpdateMsg(msgId, Conf.Language(104), 7000) + if success { + util.PushUpdateMsg("update-pkg-ready", Conf.Language(62), 15*1000) + } else { + util.PushUpdateMsg("update-pkg-downloading", Conf.Language(104), 7000) } } @@ -121,6 +127,7 @@ func getUpdatePkg() (downloadPkgURLs []string, checksum string, err error) { ver := result["ver"].(string) if isVersionUpToDate(ver) { + err = fmt.Errorf("version is up to date") return } @@ -158,6 +165,11 @@ func getUpdatePkg() (downloadPkgURLs []string, checksum string, err error) { checksums := result["checksums"].(map[string]interface{}) checksum = checksums[pkg].(string) + + if "" == checksum { + err = fmt.Errorf("checksum is empty") + return + } return } @@ -277,88 +289,42 @@ func CheckUpdate(showMsg bool) { releaseLang = releaseLangArg.(string) } - var msg string - var timeout int if isVersionUpToDate(ver) { - msg = Conf.Language(10) - timeout = 3000 + util.PushUpdateMsg("update-notify", Conf.Language(10), 3000) } else { - msg = fmt.Sprintf(Conf.Language(9), ""+releaseLang+"") - showMsg = true - timeout = 15000 - } - if showMsg { - util.PushMsg(msg, timeout) - go func() { - defer logging.Recover() - checkDownloadInstallPkg() - if "" != getNewVerInstallPkgPath() { - util.PushMsg(Conf.Language(62), 15*1000) - } - }() + util.PushUpdateMsg("update-notify", fmt.Sprintf(Conf.Language(9), ""+releaseLang+""), 15000) } + go func() { + defer logging.Recover() + checkDownloadInstallPkg() + }() } func isVersionUpToDate(releaseVer string) bool { - return ver2num(releaseVer) <= ver2num(util.Ver) + return semver.Compare("v"+releaseVer, "v"+util.Ver) <= 0 } +// skipInstallPkgPlatformCached 缓存平台相关判断,-1 未初始化,0 表示不跳过,1 表示跳过 +var skipInstallPkgPlatformCached = -1 + func skipNewVerInstallPkg() bool { - if !gulu.OS.IsWindows() && !gulu.OS.IsDarwin() { - return true - } - if util.ISMicrosoftStore || util.ContainerStd != util.Container { - return true - } - if !Conf.System.DownloadInstallPkg { - return true - } - if gulu.OS.IsWindows() { - plat := strings.ToLower(Conf.System.OSPlatform) - // Windows 7, 8 and Server 2012 are no longer supported https://github.com/siyuan-note/siyuan/issues/7347 - if strings.Contains(plat, " 7 ") || strings.Contains(plat, " 8 ") || strings.Contains(plat, "2012") { - return true + if skipInstallPkgPlatformCached == -1 { + skipInstallPkgPlatformCached = 0 + if !gulu.OS.IsWindows() && !gulu.OS.IsDarwin() { + skipInstallPkgPlatformCached = 1 + } else if util.ISMicrosoftStore || util.ContainerStd != util.Container { + skipInstallPkgPlatformCached = 1 + } else if gulu.OS.IsWindows() { + plat := strings.ToLower(Conf.System.OSPlatform) + // Windows 7, 8 and Server 2012 are no longer supported https://github.com/siyuan-note/siyuan/issues/7347 + if strings.Contains(plat, " 7 ") || strings.Contains(plat, " 8 ") || strings.Contains(plat, "2012") { + skipInstallPkgPlatformCached = 1 + } } } + + if skipInstallPkgPlatformCached == 1 || !Conf.System.DownloadInstallPkg { + return true + } return false } - -func ver2num(a string) int { - var version string - var suffixpos int - var suffixStr string - var suffix string - a = strings.Trim(a, " ") - if strings.Contains(a, "alpha") { - suffixpos = strings.Index(a, "-alpha") - version = a[0:suffixpos] - suffixStr = a[suffixpos+6 : len(a)] - suffix = "0" + fmt.Sprintf("%03s", suffixStr) - } else if strings.Contains(a, "beta") { - suffixpos = strings.Index(a, "-beta") - version = a[0:suffixpos] - suffixStr = a[suffixpos+5 : len(a)] - suffix = "1" + fmt.Sprintf("%03s", suffixStr) - } else { - version = a - suffix = "5000" - } - split := strings.Split(version, ".") - var verArr []string - - verArr = append(verArr, "1") - var tmp string - for i := 0; i < 3; i++ { - if i < len(split) { - tmp = split[i] - } else { - tmp = "0" - } - verArr = append(verArr, fmt.Sprintf("%04s", tmp)) - } - verArr = append(verArr, suffix) - - ver := strings.Join(verArr, "") - verNum, _ := strconv.Atoi(ver) - return verNum -}