diff --git a/devGuide/HowToAddNewLanguage.md b/devGuide/HowToAddNewLanguage.md index 6a9ed17f29..861772576d 100644 --- a/devGuide/HowToAddNewLanguage.md +++ b/devGuide/HowToAddNewLanguage.md @@ -8,36 +8,33 @@ Fork Stirling-PDF and create a new branch out of `main`. -Then add a reference to the language in the navbar by adding a new language entry to the dropdown: +## Frontend Translation Files (TOML Format) -- Edit the file: [languages.html](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/app/core/src/main/resources/templates/fragments/languages.html) +### Add Language Directory and Translation File +1. Create a new language directory in `frontend/public/locales/` + - Use hyphenated format: `pl-PL` (not underscore) -For example, to add Polish, you would add: +2. Copy the reference translation file: + - Source: `frontend/public/locales/en-GB/translation.toml` + - Destination: `frontend/public/locales/pl-PL/translation.toml` -```html -
-``` +3. Translate all entries in the TOML file + - Keep the TOML structure intact + - Preserve all placeholders like `{n}`, `{total}`, `{filename}`, `{{variable}}` + - See `scripts/translations/README.md` for translation tools and workflows -The `data-bs-language-code` is the code used to reference the file in the next step. +4. Update the language selector in the frontend to include your new language -### Add Language Property File - -Start by copying the existing English property file: - -- [messages_en_GB.properties](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/app/core/src/main/resources/messages_en_GB.properties) - -Copy and rename it to `messages_{your data-bs-language-code here}.properties`. In the Polish example, you would set the name to `messages_pl_PL.properties`. - -Then simply translate all property entries within that file and make a Pull Request (PR) into `main` for others to use! - -If you do not have a Java IDE, I am happy to verify that the changes work once you raise the PR (but I won't be able to verify the translations themselves). +Then make a Pull Request (PR) into `main` for others to use! ## Handling Untranslatable Strings -Sometimes, certain strings in the properties file may not require translation because they are the same in the target language or are universal (like names of protocols, certain terminologies, etc.). To ensure accurate statistics for language progress, these strings should be added to the `ignore_translation.toml` file located in the `scripts` directory. This will exclude them from the translation progress calculations. +Sometimes, certain strings may not require translation because they are the same in the target language or are universal (like names of protocols, certain terminologies, etc.). To ensure accurate statistics for language progress, these strings should be added to the `ignore_translation.toml` file located in the `scripts` directory. This will exclude them from the translation progress calculations. -For example, if the English string `error=Error` does not need translation in Polish, add it to the `ignore_translation.toml` under the Polish section: +For example, if the English string `error` does not need translation in Polish, add it to the `ignore_translation.toml` under the Polish section: + +**Note**: Use underscores in `ignore_translation.toml` even though frontend uses hyphens (e.g., `pl_PL` not `pl-PL`) ```toml [pl_PL] @@ -50,27 +47,27 @@ ignore = [ ## Add New Translation Tags > [!IMPORTANT] -> If you add any new translation tags, they must first be added to the `messages_en_GB.properties` file. This ensures consistency across all language files. +> If you add any new translation tags, they must first be added to the `en-GB/translation.toml` file. This ensures consistency across all language files. -- New translation tags **must be added** to the `messages_en_GB.properties` file to maintain a reference for other languages. -- After adding the new tags to `messages_en_GB.properties`, add and translate them in the respective language file (e.g., `messages_pl_PL.properties`). +- New translation tags **must be added** to `frontend/public/locales/en-GB/translation.toml` to maintain a reference for other languages. +- After adding the new tags to `en-GB/translation.toml`, add and translate them in the respective language file (e.g., `pl-PL/translation.toml`). +- Use the scripts in `scripts/translations/` to validate and manage translations (see `scripts/translations/README.md`) Make sure to place the entry under the correct language section. This helps maintain the accuracy of translation progress statistics and ensures that the translation tool or scripts do not misinterpret the completion rate. -### Use this code to perform a local check +### Validation Commands -#### Windows command - -```powershell -python .github/scripts/check_language_properties.py --reference-file app\core\src\main\resources\messages_en_GB.properties --branch "" --files app\core\src\main\resources\messages_pl_PL.properties - -python .github/scripts/check_language_properties.py --reference-file app\core\src\main\resources\messages_en_GB.properties --branch "" --check-file app\core\src\main\resources\messages_pl_PL.properties -``` - -#### Linux command +Use the translation scripts in `scripts/translations/` directory: ```bash -python3 .github/scripts/check_language_properties.py --reference-file app/core/src/main/resources/messages_en_GB.properties --branch "" --files app/core/src/main/resources/messages_pl_PL.properties +# Analyze translation progress +python3 scripts/translations/translation_analyzer.py --language pl-PL -python3 .github/scripts/check_language_properties.py --reference-file app/core/src/main/resources/messages_en_GB.properties --branch "" --check-file app/core/src/main/resources/messages_pl_PL.properties +# Validate TOML structure +python3 scripts/translations/validate_json_structure.py --language pl-PL + +# Validate placeholders +python3 scripts/translations/validate_placeholders.py --language pl-PL ``` + +See `scripts/translations/README.md` for complete documentation. diff --git a/frontend/public/locales/ar-AR/translation.toml b/frontend/public/locales/ar-AR/translation.toml index aedbc113f8..273c3deaff 100644 --- a/frontend/public/locales/ar-AR/translation.toml +++ b/frontend/public/locales/ar-AR/translation.toml @@ -163,6 +163,11 @@ unfavorite = "إزالة من المفضلة" fullscreen = "التبديل إلى وضع ملء الشاشة" sidebar = "التبديل إلى وضع الشريط الجانبي" +[backendStartup] +notFoundTitle = "لم يتم العثور على الخادم الخلفي" +retry = "إعادة المحاولة" +unreachable = "لا يمكن للتطبيق حالياً الاتصال بالخادم الخلفي. تحقق من حالة الخادم والاتصال بالشبكة، ثم حاول مرة أخرى." + [zipWarning] title = "ملف ZIP كبير" message = "هذا الملف ZIP يحتوي على {{count}} ملفات. هل تريد الاستخراج على أي حال؟" @@ -3441,6 +3446,9 @@ signinTitle = "الرجاء تسجيل الدخول" ssoSignIn = "تسجيل الدخول عبر تسجيل الدخول الأحادي" oAuth2AutoCreateDisabled = "تم تعطيل الإنشاء التلقائي لمستخدم OAuth2" oAuth2AdminBlockedUser = "تم حظر تسجيل أو تسجيل دخول المستخدمين غير المسجلين حاليًا. يرجى الاتصال بالمسؤول." +oAuth2RequiresLicense = "يتطلب تسجيل الدخول عبر OAuth/SSO ترخيصاً مدفوعاً (Server أو Enterprise). يرجى الاتصال بالمسؤول لترقية باقتك." +saml2RequiresLicense = "يتطلب تسجيل الدخول عبر SAML ترخيصاً مدفوعاً (Server أو Enterprise). يرجى الاتصال بالمسؤول لترقية باقتك." +maxUsersReached = "تم الوصول إلى الحد الأقصى لعدد المستخدمين ضمن ترخيصك الحالي. يرجى الاتصال بالمسؤول لترقية باقتك أو إضافة مقاعد إضافية." oauth2RequestNotFound = "لم يتم العثور على طلب التفويض" oauth2InvalidUserInfoResponse = "استجابة معلومات المستخدم غير صالحة" oauth2invalidRequest = "طلب غير صالح" @@ -3774,7 +3782,7 @@ version = "الإصدار الحالي" title = "توثيق API" header = "توثيق API" desc = "عرض واختبار نقاط نهاية Stirling PDF API" -tags = "api,documentation,swagger,endpoints,development" +tags = "api,توثيق,swagger,نقاط النهاية,تطوير" [cookieBanner.popUp] title = "كيف نستخدم ملفات تعريف الارتباط" @@ -3849,14 +3857,17 @@ fitToWidth = "ملاءمة للعرض" actualSize = "الحجم الفعلي" [viewer] +cannotPreviewFile = "لا يمكن معاينة الملف" +dualPageView = "عرض صفحتين" firstPage = "الصفحة الأولى" lastPage = "الصفحة الأخيرة" -previousPage = "الصفحة السابقة" nextPage = "الصفحة التالية" +onlyPdfSupported = "عارض الملفات يدعم ملفات PDF فقط. يبدو أن هذا الملف بتنسيق مختلف." +previousPage = "الصفحة السابقة" +singlePageView = "عرض صفحة واحدة" +unknownFile = "ملف غير معروف" zoomIn = "تكبير" zoomOut = "تصغير" -singlePageView = "عرض صفحة واحدة" -dualPageView = "عرض صفحتين" [rightRail] closeSelected = "إغلاق الصفحات المحددة" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} محدد" download = "تنزيل" delete = "حذف" unsupported = "غير مدعوم" +active = "نشط" addToUpload = "إضافة إلى الرفع" +closeFile = "إغلاق الملف" deleteAll = "حذف الكل" loadingFiles = "جارٍ تحميل الملفات..." noFiles = "لا توجد ملفات متاحة" @@ -5800,6 +5813,13 @@ submit = "تسجيل الدخول" signInWith = "تسجيل الدخول باستخدام" oauthPending = "جارٍ فتح المتصفح للمصادقة..." orContinueWith = "أو المتابعة بالبريد الإلكتروني" +serverRequirement = "ملاحظة: يجب أن يكون تسجيل الدخول مفعّلاً على الخادم." +showInstructions = "كيفية التمكين؟" +hideInstructions = "إخفاء الإرشادات" +instructions = "لتمكين تسجيل الدخول على خادم Stirling PDF الخاص بك:" +instructionsEnvVar = "عيّن متغيّر البيئة:" +instructionsOrYml = "أو في settings.yml:" +instructionsRestart = "ثم أعد تشغيل الخادم لتصبح التغييرات نافذة." [setup.login.username] label = "اسم المستخدم" diff --git a/frontend/public/locales/az-AZ/translation.toml b/frontend/public/locales/az-AZ/translation.toml index 6a02c2c96a..16d7c4bab9 100644 --- a/frontend/public/locales/az-AZ/translation.toml +++ b/frontend/public/locales/az-AZ/translation.toml @@ -163,6 +163,11 @@ unfavorite = "Seçilmişlərdən çıxar" fullscreen = "Tam ekran rejiminə keç" sidebar = "Yan panel rejiminə keç" +[backendStartup] +notFoundTitle = "Backend tapılmadı" +retry = "Yenidən cəhd et" +unreachable = "Tətbiq hazırda backend-ə qoşula bilmir. Backend-in vəziyyətini və şəbəkə bağlantısını yoxlayın, sonra yenidən cəhd edin." + [zipWarning] title = "Böyük ZIP faylı" message = "Bu ZIP {{count}} fayl ehtiva edir. Yenə də çıxarılsın?" @@ -3441,6 +3446,9 @@ signinTitle = "Zəhmət olmasa, daxil olun" ssoSignIn = "Single Sign-on vasitəsilə daxil olun" oAuth2AutoCreateDisabled = "OAUTH2 Auto-Create İstifadəçisi Deaktivləşdirilmişdir" oAuth2AdminBlockedUser = "Qeydiyyatdan keçməmiş istifadəçilərin qeydiyyatı və daxil olması hal-hazırda bloklanmışdır. Zəhmət olmasa, administratorla əlaqə saxlayın." +oAuth2RequiresLicense = "OAuth/SSO ilə giriş üçün ödənişli lisenziya (Server və ya Enterprise) tələb olunur. Planınızı yüksəltmək üçün administratorla əlaqə saxlayın." +saml2RequiresLicense = "SAML ilə giriş üçün ödənişli lisenziya (Server və ya Enterprise) tələb olunur. Planınızı yüksəltmək üçün administratorla əlaqə saxlayın." +maxUsersReached = "Mövcud lisenziyanız üçün maksimum istifadəçi sayına çatılıb. Planınızı yüksəltmək və ya əlavə yerlər əlavə etmək üçün administratorla əlaqə saxlayın." oauth2RequestNotFound = "Təsdiqlənmə sorğusu tapılmadı" oauth2InvalidUserInfoResponse = "Yanlış İstifadəçi Məlumatı Cavabı" oauth2invalidRequest = "Etibarsız Sorğu" @@ -3849,14 +3857,17 @@ fitToWidth = "Eninə sığdır" actualSize = "Həqiqi ölçü" [viewer] +cannotPreviewFile = "Faylın önizlənməsi mümkün deyil" +dualPageView = "İki Səhifə Görünüşü" firstPage = "Birinci səhifə" lastPage = "Son səhifə" -previousPage = "Əvvəlki səhifə" nextPage = "Növbəti səhifə" +onlyPdfSupported = "Görüntüləyici yalnız PDF fayllarını dəstəkləyir. Bu fayl fərqli formatda görünür." +previousPage = "Əvvəlki səhifə" +singlePageView = "Tək Səhifə Görünüşü" +unknownFile = "Naməlum fayl" zoomIn = "Böyüt" zoomOut = "Kiçilt" -singlePageView = "Tək Səhifə Görünüşü" -dualPageView = "İki Səhifə Görünüşü" [rightRail] closeSelected = "Seçilmiş faylları bağla" @@ -4410,7 +4421,7 @@ description = "Daha geniş sistem müvəqqəti qovluğunu təmizləyib-təmizlə label = "Proses İcraedicisi Limitləri" description = "Hər icraedici üçün sessiya limitlərini və taym-outları konfiqurasiya edin" libreOffice = "LibreOffice" -pdfToHtml = "PDF to HTML" +pdfToHtml = "PDF-dən HTML-ə" qpdf = "QPDF" tesseract = "Tesseract OCR" pythonOpenCv = "Python OpenCV" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} seçildi" download = "Endir" delete = "Sil" unsupported = "Dəstəklənmir" +active = "Aktiv" addToUpload = "Yükləməyə əlavə et" +closeFile = "Faylı bağla" deleteAll = "Hamısını sil" loadingFiles = "Fayllar yüklənir..." noFiles = "Fayl mövcud deyil" @@ -5291,8 +5304,8 @@ emailDisabled = "E-poçt dəvətləri üçün ayarlarda SMTP konfiqurasiyası v [workspace.people.license] users = "istifadəçi" availableSlots = "Mövcud yerlər" -grandfathered = "Grandfathered" -grandfatheredShort = "{{count}} grandfathered" +grandfathered = "Əvvəlki şərtlərlə" +grandfatheredShort = "{{count}} əvvəlki şərtlərlə" fromLicense = "lisenziyadan" slotsAvailable = "{{count}} istifadəçi yeri mövcuddur" noSlotsAvailable = "Mövcud yer yoxdur" @@ -5800,6 +5813,13 @@ submit = "Daxil ol" signInWith = "Bununla daxil ol" oauthPending = "Təsdiqləmə üçün brauzer açılır..." orContinueWith = "Və ya e-poçt ilə davam edin" +serverRequirement = "Qeyd: Serverdə giriş funksiyası aktiv olmalıdır." +showInstructions = "Necə aktivləşdirmək olar?" +hideInstructions = "Təlimatları gizlət" +instructions = "Stirling PDF serverinizdə girişi aktivləşdirmək üçün:" +instructionsEnvVar = "Mühit dəyişənini təyin edin:" +instructionsOrYml = "Və ya settings.yml faylında:" +instructionsRestart = "Dəyişikliklərin qüvvəyə minməsi üçün serveri yenidən başladın." [setup.login.username] label = "İstifadəçi adı" diff --git a/frontend/public/locales/bg-BG/translation.toml b/frontend/public/locales/bg-BG/translation.toml index f08ed7a19e..b1dfbeef48 100644 --- a/frontend/public/locales/bg-BG/translation.toml +++ b/frontend/public/locales/bg-BG/translation.toml @@ -163,6 +163,11 @@ unfavorite = "Премахване от любими" fullscreen = "Превключване към режим на цял екран" sidebar = "Превключване към режим със странична лента" +[backendStartup] +notFoundTitle = "Бекендът не е намерен" +retry = "Опитай отново" +unreachable = "Приложението в момента не може да се свърже с бекенда. Проверете състоянието на бекенда и мрежовата свързаност, след което опитайте отново." + [zipWarning] title = "Голям ZIP файл" message = "Този ZIP съдържа {{count}} файла. Да се извлече въпреки това?" @@ -3441,6 +3446,9 @@ signinTitle = "Моля впишете се" ssoSignIn = "Влизане чрез еднократно влизане" oAuth2AutoCreateDisabled = "OAUTH2 Автоматично създаване на потребител е деактивирано" oAuth2AdminBlockedUser = "Регистрацията или влизането на нерегистрирани потребители в момента е блокирано. Моля, свържете се с администратора." +oAuth2RequiresLicense = "Вход с OAuth/SSO изисква платен лиценз (Server или Enterprise). Моля, свържете се с администратора, за да надстроите плана си." +saml2RequiresLicense = "Вход със SAML изисква платен лиценз (Server или Enterprise). Моля, свържете се с администратора, за да надстроите плана си." +maxUsersReached = "Достигнат е максималният брой потребители за текущия ви лиценз. Моля, свържете се с администратора, за да надстроите плана си или да добавите още места." oauth2RequestNotFound = "Заявката за оторизация не е намерена" oauth2InvalidUserInfoResponse = "Невалидна информация за потребителя" oauth2invalidRequest = "Невалидна заявка" @@ -3849,14 +3857,17 @@ fitToWidth = "Побиране по ширина" actualSize = "Действителен размер" [viewer] +cannotPreviewFile = "Не може да се визуализира файлът" +dualPageView = "Изглед: две страници" firstPage = "Първа страница" lastPage = "Последна страница" -previousPage = "Предишна страница" nextPage = "Следваща страница" +onlyPdfSupported = "Прегледачът поддържа само PDF файлове. Този файл изглежда е в друг формат." +previousPage = "Предишна страница" +singlePageView = "Изглед: една страница" +unknownFile = "Непознат файл" zoomIn = "Увеличи" zoomOut = "Намали" -singlePageView = "Изглед: една страница" -dualPageView = "Изглед: две страници" [rightRail] closeSelected = "Затвори избраните файлове" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} избрани" download = "Изтегли" delete = "Изтрий" unsupported = "Неподдържано" +active = "Активен" addToUpload = "Добави към качването" +closeFile = "Затвори файла" deleteAll = "Изтрий всички" loadingFiles = "Зареждане на файлове..." noFiles = "Няма налични файлове" @@ -5800,6 +5813,13 @@ submit = "Вход" signInWith = "Вписване с" oauthPending = "Отваряне на браузър за удостоверяване..." orContinueWith = "Или продължете с имейл" +serverRequirement = "Забележка: Сървърът трябва да има активиран вход." +showInstructions = "Как да се активира?" +hideInstructions = "Скрий инструкциите" +instructions = "За да активирате вход на вашия Stirling PDF сървър:" +instructionsEnvVar = "Задайте променливата на средата:" +instructionsOrYml = "Или в settings.yml:" +instructionsRestart = "След това рестартирайте сървъра, за да влязат промените в сила." [setup.login.username] label = "Потребителско име" diff --git a/frontend/public/locales/ca-CA/translation.toml b/frontend/public/locales/ca-CA/translation.toml index b97d017e5c..63114700ea 100644 --- a/frontend/public/locales/ca-CA/translation.toml +++ b/frontend/public/locales/ca-CA/translation.toml @@ -163,6 +163,11 @@ unfavorite = "Elimina dels preferits" fullscreen = "Canvia al mode de pantalla completa" sidebar = "Canvia al mode de barra lateral" +[backendStartup] +notFoundTitle = "Backend no trobat" +retry = "Torneu-ho a intentar" +unreachable = "L'aplicació no pot connectar-se al backend ara mateix. Verifiqueu l'estat del backend i la connectivitat de xarxa i torneu-ho a intentar." + [zipWarning] title = "Fitxer ZIP gran" message = "Aquest ZIP conté {{count}} fitxers. Vols extreure'l igualment?" @@ -3441,6 +3446,9 @@ signinTitle = "Autenticat" ssoSignIn = "Inicia sessió mitjançant inici de sessió únic" oAuth2AutoCreateDisabled = "La creació automàtica d'usuaris OAUTH2 està desactivada" oAuth2AdminBlockedUser = "El registre o inici de sessió d'usuaris no registrats està actualment bloquejat. Si us plau, contacta amb l'administrador." +oAuth2RequiresLicense = "L'inici de sessió OAuth/SSO requereix una llicència de pagament (Server o Enterprise). Poseu-vos en contacte amb l'administrador per actualitzar el vostre pla." +saml2RequiresLicense = "L'inici de sessió SAML requereix una llicència de pagament (Server o Enterprise). Poseu-vos en contacte amb l'administrador per actualitzar el vostre pla." +maxUsersReached = "S'ha assolit el nombre màxim d'usuaris de la vostra llicència actual. Poseu-vos en contacte amb l'administrador per actualitzar el vostre pla o afegir més places." oauth2RequestNotFound = "Sol·licitud d'autorització no trobada" oauth2InvalidUserInfoResponse = "Resposta d'informació d'usuari no vàlida" oauth2invalidRequest = "Sol·licitud no vàlida" @@ -3849,14 +3857,17 @@ fitToWidth = "Ajusta a l'amplada" actualSize = "Mida real" [viewer] +cannotPreviewFile = "No es pot previsualitzar el fitxer" +dualPageView = "Vista de dues pàgines" firstPage = "Primera pàgina" lastPage = "Última pàgina" -previousPage = "Pàgina anterior" nextPage = "Pàgina següent" +onlyPdfSupported = "El visualitzador només admet fitxers PDF. Aquest fitxer sembla ser d'un format diferent." +previousPage = "Pàgina anterior" +singlePageView = "Vista d'una sola pàgina" +unknownFile = "Fitxer desconegut" zoomIn = "Amplia" zoomOut = "Redueix" -singlePageView = "Vista d'una sola pàgina" -dualPageView = "Vista de dues pàgines" [rightRail] closeSelected = "Tanca els fitxers seleccionats" @@ -3928,7 +3939,7 @@ files = "Fitxers" activity = "Registre" help = "Ajuda" account = "Compte" -config = "Config" +config = "Configuració" settings = "Ajustos" adminSettings = "Ajustos admin" allTools = "All Tools" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} seleccionats" download = "Descarrega" delete = "Esborra" unsupported = "No compatible" +active = "Actiu" addToUpload = "Afegeix a la pujada" +closeFile = "Tanca el fitxer" deleteAll = "Suprimeix-ho tot" loadingFiles = "Carregant fitxers..." noFiles = "No hi ha fitxers disponibles" @@ -5800,6 +5813,13 @@ submit = "Inicia sessió" signInWith = "Inicia sessió amb" oauthPending = "Obrint el navegador per autenticar-te..." orContinueWith = "O continua amb el correu electrònic" +serverRequirement = "Nota: el servidor ha de tenir l'inici de sessió habilitat." +showInstructions = "Com s'habilita?" +hideInstructions = "Amagueu les instruccions" +instructions = "Per habilitar l'inici de sessió al vostre servidor de Stirling PDF:" +instructionsEnvVar = "Establiu la variable d'entorn:" +instructionsOrYml = "O a settings.yml:" +instructionsRestart = "A continuació, reinicieu el servidor perquè els canvis tinguin efecte." [setup.login.username] label = "Nom d'usuari" diff --git a/frontend/public/locales/cs-CZ/translation.toml b/frontend/public/locales/cs-CZ/translation.toml index f4902d6342..147552390b 100644 --- a/frontend/public/locales/cs-CZ/translation.toml +++ b/frontend/public/locales/cs-CZ/translation.toml @@ -163,6 +163,11 @@ unfavorite = "Odebrat z oblíbených" fullscreen = "Přepnout na režim na celou obrazovku" sidebar = "Přepnout na režim postranního panelu" +[backendStartup] +notFoundTitle = "Backend nebyl nalezen" +retry = "Zkusit znovu" +unreachable = "Aplikace se nyní nemůže připojit k backendu. Ověřte stav backendu a síťové připojení a poté to zkuste znovu." + [zipWarning] title = "Velký soubor ZIP" message = "Tento ZIP obsahuje {{count}} souborů. Přesto rozbalit?" @@ -347,7 +352,7 @@ teams = "Týmy" title = "Konfigurace" systemSettings = "Systémová nastavení" features = "Funkce" -endpoints = "Endpoints" +endpoints = "Koncové body" database = "Databáze" advanced = "Pokročilé" @@ -3441,6 +3446,9 @@ signinTitle = "Prosím přihlaste se" ssoSignIn = "Přihlásit se přes Single Sign-on" oAuth2AutoCreateDisabled = "Automatické vytváření OAUTH2 uživatelů je zakázáno" oAuth2AdminBlockedUser = "Registrace nebo přihlášení neregistrovaných uživatelů je momentálně blokováno. Kontaktujte prosím správce." +oAuth2RequiresLicense = "Přihlášení pomocí OAuth/SSO vyžaduje placenou licenci (Server nebo Enterprise). Kontaktujte prosím administrátora kvůli upgradu vašeho plánu." +saml2RequiresLicense = "Přihlášení pomocí SAML vyžaduje placenou licenci (Server nebo Enterprise). Kontaktujte prosím administrátora kvůli upgradu vašeho plánu." +maxUsersReached = "Byl dosažen maximální počet uživatelů pro vaši aktuální licenci. Kontaktujte prosím administrátora kvůli upgradu vašeho plánu nebo přidání dalších míst." oauth2RequestNotFound = "Požadavek na autorizaci nebyl nalezen" oauth2InvalidUserInfoResponse = "Neplatná odpověď s informacemi o uživateli" oauth2invalidRequest = "Neplatný požadavek" @@ -3849,14 +3857,17 @@ fitToWidth = "Přizpůsobit šířce" actualSize = "Skutečná velikost" [viewer] +cannotPreviewFile = "Nelze zobrazit náhled souboru" +dualPageView = "Zobrazení dvou stránek" firstPage = "První stránka" lastPage = "Poslední stránka" -previousPage = "Předchozí stránka" nextPage = "Další stránka" +onlyPdfSupported = "Prohlížeč podporuje pouze soubory PDF. Tento soubor má zřejmě jiný formát." +previousPage = "Předchozí stránka" +singlePageView = "Zobrazení jedné stránky" +unknownFile = "Neznámý soubor" zoomIn = "Přiblížit" zoomOut = "Oddálit" -singlePageView = "Zobrazení jedné stránky" -dualPageView = "Zobrazení dvou stránek" [rightRail] closeSelected = "Zavřít vybrané soubory" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} vybráno" download = "Stáhnout" delete = "Smazat" unsupported = "Nepodporováno" +active = "Aktivní" addToUpload = "Přidat k nahrání" +closeFile = "Zavřít soubor" deleteAll = "Smazat vše" loadingFiles = "Načítání souborů..." noFiles = "Nejsou k dispozici žádné soubory" @@ -5712,7 +5725,7 @@ title = "Graf využití endpointů" [usage.table] title = "Podrobné statistiky" -endpoint = "Endpoint" +endpoint = "Koncový bod" visits = "Návštěvy" percentage = "Procenta" noData = "Žádná data nejsou k dispozici" @@ -5800,6 +5813,13 @@ submit = "Přihlásit se" signInWith = "Přihlásit se pomocí" oauthPending = "Otevírám prohlížeč pro ověření..." orContinueWith = "Nebo pokračovat e-mailem" +serverRequirement = "Poznámka: Na serveru musí být povoleno přihlášení." +showInstructions = "Jak povolit?" +hideInstructions = "Skrýt pokyny" +instructions = "Chcete-li povolit přihlášení na vašem serveru Stirling PDF:" +instructionsEnvVar = "Nastavte proměnnou prostředí:" +instructionsOrYml = "Nebo v settings.yml:" +instructionsRestart = "Poté restartujte server, aby se změny projevily." [setup.login.username] label = "Uživatelské jméno" @@ -5843,7 +5863,7 @@ paragraph = "Odstavcová stránka" sparse = "Řídký text" [pdfTextEditor.groupingMode] -auto = "Auto" +auto = "Automaticky" paragraph = "Odstavec" singleLine = "Jeden řádek" @@ -5935,13 +5955,13 @@ warnings = "Varování" suggestions = "Poznámky" currentPageFonts = "Fonty na této stránce" allFonts = "Všechny fonty" -fallback = "fallback" +fallback = "náhradní" missing = "chybí" perfectMessage = "Všechny fonty lze reprodukovat dokonale." warningMessage = "Některé fonty se nemusí vykreslit správně." infoMessage = "K dispozici jsou informace o reprodukci fontů." -perfect = "perfect" -subset = "subset" +perfect = "dokonalé" +subset = "podmnožina" [pdfTextEditor.errors] invalidJson = "Nelze přečíst soubor JSON. Ujistěte se, že byl vytvořen nástrojem PDF to JSON." diff --git a/frontend/public/locales/da-DK/translation.toml b/frontend/public/locales/da-DK/translation.toml index 9773d63e3a..e72fc734fb 100644 --- a/frontend/public/locales/da-DK/translation.toml +++ b/frontend/public/locales/da-DK/translation.toml @@ -163,6 +163,11 @@ unfavorite = "Fjern fra favoritter" fullscreen = "Skift til fuldskærmstilstand" sidebar = "Skift til sidepanel-tilstand" +[backendStartup] +notFoundTitle = "Backend ikke fundet" +retry = "Prøv igen" +unreachable = "Programmet kan i øjeblikket ikke forbinde til backend. Kontroller backend-status og netværksforbindelse, og prøv igen." + [zipWarning] title = "Stor ZIP-fil" message = "Denne ZIP indeholder {{count}} filer. Udpak alligevel?" @@ -347,7 +352,7 @@ teams = "Teams" title = "Konfiguration" systemSettings = "Systemindstillinger" features = "Funktioner" -endpoints = "Endpoints" +endpoints = "Slutpunkter" database = "Database" advanced = "Avanceret" @@ -359,7 +364,7 @@ connections = "Forbindelser" [settings.licensingAnalytics] title = "Licensering & Analytics" plan = "Plan" -audit = "Audit" +audit = "Revision" usageAnalytics = "Brugsanalyse" [settings.policiesPrivacy] @@ -556,7 +561,7 @@ totalEndpoints = "Endpoints i alt" totalVisits = "Besøg i alt" showing = "Viser" selectedVisits = "Valgte besøg" -endpoint = "Endpoint" +endpoint = "Slutpunkt" visits = "Besøg" percentage = "Procent" loading = "Laster..." @@ -3441,6 +3446,9 @@ signinTitle = "Log venligst ind" ssoSignIn = "Log ind via Single Sign-on" oAuth2AutoCreateDisabled = "OAUTH2 Auto-Opret Bruger Deaktiveret" oAuth2AdminBlockedUser = "Registrering eller login af ikke-registrerede brugere er i øjeblikket blokeret. Kontakt venligst administratoren." +oAuth2RequiresLicense = "OAuth/SSO-login kræver en betalt licens (Server eller Enterprise). Kontakt administratoren for at opgradere din plan." +saml2RequiresLicense = "SAML-login kræver en betalt licens (Server eller Enterprise). Kontakt administratoren for at opgradere din plan." +maxUsersReached = "Maksimalt antal brugere er nået for din nuværende licens. Kontakt administratoren for at opgradere din plan eller tilføje flere pladser." oauth2RequestNotFound = "Autorisationsanmodning ikke fundet" oauth2InvalidUserInfoResponse = "Ugyldigt Brugerinfo Svar" oauth2invalidRequest = "Ugyldig Anmodning" @@ -3849,14 +3857,17 @@ fitToWidth = "Tilpas til bredde" actualSize = "Faktisk størrelse" [viewer] +cannotPreviewFile = "Kan ikke forhåndsvise fil" +dualPageView = "To-siders visning" firstPage = "Første side" lastPage = "Sidste side" -previousPage = "Forrige side" nextPage = "Næste side" +onlyPdfSupported = "Visningen understøtter kun PDF-filer. Denne fil ser ud til at være et andet format." +previousPage = "Forrige side" +singlePageView = "Enkelt-sides visning" +unknownFile = "Ukendt fil" zoomIn = "Zoom ind" zoomOut = "Zoom ud" -singlePageView = "Enkelt-sides visning" -dualPageView = "To-siders visning" [rightRail] closeSelected = "Luk valgte filer" @@ -4346,7 +4357,7 @@ features = "Funktionsflag" processing = "Behandling" [admin.settings.advanced.endpoints] -label = "Endpoints" +label = "Slutpunkter" manage = "Administrer API-endpoints" description = "Endpointstyring konfigureres via YAML. Se dokumentationen for detaljer om aktivering/deaktivering af specifikke endpoints." @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} valgt" download = "Download" delete = "Slet" unsupported = "Ikke understøttet" +active = "Aktiv" addToUpload = "Føj til upload" +closeFile = "Luk fil" deleteAll = "Slet alle" loadingFiles = "Indlæser filer..." noFiles = "Ingen filer tilgængelige" @@ -5291,8 +5304,8 @@ emailDisabled = "E-mailinvitationer kræver SMTP-konfiguration og mail.enableInv [workspace.people.license] users = "brugere" availableSlots = "Tilgængelige pladser" -grandfathered = "Grandfathered" -grandfatheredShort = "{{count}} grandfathered" +grandfathered = "På gamle vilkår" +grandfatheredShort = "{{count}} på gamle vilkår" fromLicense = "fra licens" slotsAvailable = "{{count}} ledig(e) brugerplads(er)" noSlotsAvailable = "Ingen pladser tilgængelige" @@ -5712,7 +5725,7 @@ title = "Diagram over endpoint-brug" [usage.table] title = "Detaljeret statistik" -endpoint = "Endpoint" +endpoint = "Slutpunkt" visits = "Besøg" percentage = "Procent" noData = "Ingen data tilgængelige" @@ -5800,6 +5813,13 @@ submit = "Log ind" signInWith = "Log ind med" oauthPending = "Åbner browser for godkendelse..." orContinueWith = "Eller fortsæt med email" +serverRequirement = "Bemærk: Serveren skal have login aktiveret." +showInstructions = "Hvordan aktiveres det?" +hideInstructions = "Skjul instruktioner" +instructions = "Sådan aktiverer du login på din Stirling PDF-server:" +instructionsEnvVar = "Sæt miljøvariablen:" +instructionsOrYml = "Eller i settings.yml:" +instructionsRestart = "Genstart derefter serveren, så ændringerne træder i kraft." [setup.login.username] label = "Brugernavn" diff --git a/frontend/public/locales/de-DE/translation.toml b/frontend/public/locales/de-DE/translation.toml index db83b7ecbe..0414be3cbd 100644 --- a/frontend/public/locales/de-DE/translation.toml +++ b/frontend/public/locales/de-DE/translation.toml @@ -163,6 +163,11 @@ unfavorite = "Aus Favoriten entfernen" fullscreen = "In den Vollbildmodus wechseln" sidebar = "In den Seitenleistenmodus wechseln" +[backendStartup] +notFoundTitle = "Backend nicht gefunden" +retry = "Erneut versuchen" +unreachable = "Die Anwendung kann derzeit keine Verbindung zum Backend herstellen. Überprüfen Sie den Backend-Status und die Netzwerkverbindung und versuchen Sie es dann erneut." + [zipWarning] title = "Große ZIP-Datei" message = "Dieses ZIP enthält {{count}} Dateien. Trotzdem extrahieren?" @@ -347,7 +352,7 @@ teams = "Teams" title = "Konfiguration" systemSettings = "Systemeinstellungen" features = "Funktionen" -endpoints = "Endpoints" +endpoints = "Endpunkte" database = "Datenbank" advanced = "Erweitert" @@ -383,7 +388,7 @@ logout = "Abmelden" [settings.connection.mode] saas = "Stirling Cloud" -selfhosted = "Self-Hosted" +selfhosted = "Selbst gehostet" [settings.general] title = "Allgemein" @@ -612,7 +617,7 @@ desc = "Anzeigen, Kommentieren, Text oder Bilder hinzufügen" brandAlt = "Stirling PDF-Logo" openFiles = "Dateien öffnen" swipeHint = "Zum Wechseln der Ansicht nach links oder rechts wischen" -tools = "Tools" +tools = "Werkzeuge" toolsSlide = "Bereich für Toolauswahl" viewSwitcher = "Ansicht des Arbeitsbereichs wechseln" workbenchSlide = "Arbeitsbereichs-Panel" @@ -917,7 +922,7 @@ title = "PDF-Texteditor" desc = "Stirling PDF JSON-Exporte prüfen und bearbeiten – mit gruppierter Textbearbeitung und PDF-Neuerzeugung" [home.addText] -tags = "text,annotation,label" +tags = "text,anmerkung,beschriftung" title = "Text hinzufügen" desc = "Beliebigen Text überall in Ihrem PDF hinzufügen" @@ -2267,7 +2272,7 @@ noChanges = "Die aktuelle Unterschrift ist bereits gespeichert." [sign.saved.type] canvas = "Zeichnung" -image = "Upload" +image = "Hochladen" text = "Text" [sign.saved.status] @@ -3441,6 +3446,9 @@ signinTitle = "Bitte melden Sie sich an." ssoSignIn = "Anmeldung per Single Sign-On" oAuth2AutoCreateDisabled = "OAUTH2 Benutzer automatisch erstellen deaktiviert" oAuth2AdminBlockedUser = "Die Registrierung bzw. das anmelden von nicht registrierten Benutzern ist derzeit gesperrt. Bitte wenden Sie sich an den Administrator." +oAuth2RequiresLicense = "OAuth/SSO-Anmeldung erfordert eine kostenpflichtige Lizenz (Server oder Enterprise). Bitte wenden Sie sich an den Administrator, um Ihren Plan zu aktualisieren." +saml2RequiresLicense = "SAML-Anmeldung erfordert eine kostenpflichtige Lizenz (Server oder Enterprise). Bitte wenden Sie sich an den Administrator, um Ihren Plan zu aktualisieren." +maxUsersReached = "Die maximale Benutzeranzahl für Ihre aktuelle Lizenz wurde erreicht. Bitte wenden Sie sich an den Administrator, um Ihren Plan zu aktualisieren oder weitere Benutzerplätze hinzuzufügen." oauth2RequestNotFound = "Autorisierungsanfrage nicht gefunden" oauth2InvalidUserInfoResponse = "Ungültige Benutzerinformationsantwort" oauth2invalidRequest = "ungültige Anfrage" @@ -3849,14 +3857,17 @@ fitToWidth = "An Breite anpassen" actualSize = "Originalgröße" [viewer] +cannotPreviewFile = "Datei kann nicht in der Vorschau angezeigt werden" +dualPageView = "Doppelseitenansicht" firstPage = "Erste Seite" lastPage = "Letzte Seite" -previousPage = "Vorherige Seite" nextPage = "Nächste Seite" +onlyPdfSupported = "Der Viewer unterstützt nur PDF-Dateien. Diese Datei scheint ein anderes Format zu haben." +previousPage = "Vorherige Seite" +singlePageView = "Einzelseitenansicht" +unknownFile = "Unbekannte Datei" zoomIn = "Vergrößern" zoomOut = "Verkleinern" -singlePageView = "Einzelseitenansicht" -dualPageView = "Doppelseitenansicht" [rightRail] closeSelected = "Ausgewählte Dateien schließen" @@ -3931,7 +3942,7 @@ account = "Konto" config = "Konfig" settings = "Optionen" adminSettings = "Admin Optionen" -allTools = "Tools" +allTools = "Werkzeuge" reader = "Reader" [quickAccess.helpMenu] @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} ausgewählt" download = "Herunterladen" delete = "Löschen" unsupported = "Nicht unterstützt" +active = "Aktiv" addToUpload = "Zum Upload hinzufügen" +closeFile = "Datei schließen" deleteAll = "Alle löschen" loadingFiles = "Dateien werden geladen..." noFiles = "Keine Dateien verfügbar" @@ -5755,7 +5768,7 @@ label = "Server auswählen" description = "Self-Hosted-Server" [setup.step3] -label = "Login" +label = "Anmeldung" description = "Anmeldedaten eingeben" [setup.mode.saas] @@ -5796,10 +5809,17 @@ testFailed = "Verbindungstest fehlgeschlagen" title = "Anmelden" subtitle = "Geben Sie Ihre Anmeldedaten ein, um fortzufahren" connectingTo = "Verbinden mit:" -submit = "Login" +submit = "Anmelden" signInWith = "Anmelden mit" oauthPending = "Browser zur Authentifizierung wird geöffnet..." orContinueWith = "Oder mit E-Mail fortfahren" +serverRequirement = "Hinweis: Auf dem Server muss die Anmeldung aktiviert sein." +showInstructions = "Wie aktivieren?" +hideInstructions = "Anleitung ausblenden" +instructions = "So aktivieren Sie die Anmeldung auf Ihrem Stirling PDF-Server:" +instructionsEnvVar = "Setzen Sie die Umgebungsvariable:" +instructionsOrYml = "Oder in der settings.yml:" +instructionsRestart = "Starten Sie anschließend Ihren Server neu, damit die Änderungen wirksam werden." [setup.login.username] label = "Benutzername" @@ -5850,7 +5870,7 @@ singleLine = "Einzeilig" [pdfTextEditor.badges] unsaved = "Bearbeitet" modified = "Bearbeitet" -earlyAccess = "Early Access" +earlyAccess = "Früher Zugriff" [pdfTextEditor.actions] reset = "Änderungen zurücksetzen" diff --git a/frontend/public/locales/el-GR/translation.toml b/frontend/public/locales/el-GR/translation.toml index 64af6e5d63..12a0597ced 100644 --- a/frontend/public/locales/el-GR/translation.toml +++ b/frontend/public/locales/el-GR/translation.toml @@ -163,6 +163,11 @@ unfavorite = "Αφαίρεση από τα Αγαπημένα" fullscreen = "Μετάβαση σε λειτουργία πλήρους οθόνης" sidebar = "Μετάβαση σε λειτουργία πλευρικής γραμμής" +[backendStartup] +notFoundTitle = "Το backend δεν βρέθηκε" +retry = "Επανάληψη" +unreachable = "Η εφαρμογή δεν μπορεί προς το παρόν να συνδεθεί με το backend. Ελέγξτε την κατάσταση του backend και τη συνδεσιμότητα δικτύου, μετά δοκιμάστε ξανά." + [zipWarning] title = "Μεγάλο αρχείο ZIP" message = "Αυτό το ZIP περιέχει {{count}} αρχεία. Να γίνει αποσυμπίεση ούτως ή άλλως;" @@ -347,7 +352,7 @@ teams = "Ομάδες" title = "Διαμόρφωση" systemSettings = "Ρυθμίσεις συστήματος" features = "Δυνατότητες" -endpoints = "Endpoints" +endpoints = "Σημεία τερματισμού" database = "Βάση δεδομένων" advanced = "Προχωρημένα" @@ -369,7 +374,7 @@ privacy = "Απόρρητο" [settings.developer] title = "Προγραμματιστής" -apiKeys = "API Keys" +apiKeys = "Κλειδιά API" [settings.tooltips] enableLoginFirst = "Ενεργοποιήστε πρώτα τη λειτουργία σύνδεσης" @@ -383,7 +388,7 @@ logout = "Αποσύνδεση" [settings.connection.mode] saas = "Stirling Cloud" -selfhosted = "Self-Hosted" +selfhosted = "Αυτο-φιλοξενούμενο" [settings.general] title = "Γενικά" @@ -1176,7 +1181,7 @@ selectFilesPlaceholder = "Επιλέξτε αρχεία στην κύρια πρ settings = "Ρυθμίσεις" conversionCompleted = "Η μετατροπή ολοκληρώθηκε" results = "Αποτελέσματα" -defaultFilename = "converted_file" +defaultFilename = "μετατραπμένο_αρχείο" conversionResults = "Αποτελέσματα μετατροπής" convertFrom = "Μετατροπή από" convertTo = "Μετατροπή σε" @@ -1363,7 +1368,7 @@ title = "Προσθήκη υδατογραφήματος" desc = "Προσθέστε υδατογραφήματα κειμένου ή εικόνας σε αρχεία PDF" completed = "Το υδατογράφημα προστέθηκε" submit = "Προσθήκη υδατογραφήματος" -filenamePrefix = "watermarked" +filenamePrefix = "υδατογραφημένο" [watermark.error] failed = "Παρουσιάστηκε σφάλμα κατά την προσθήκη υδατογραφήματος στο PDF." @@ -2704,7 +2709,7 @@ header = "Αφαίρεση της ψηφιακής υπογραφής από τ selectPDF = "Επιλέξτε ένα αρχείο PDF:" submit = "Αφαίρεση υπογραφής" description = "Αυτό το εργαλείο θα αφαιρέσει τις υπογραφές ψηφιακού πιστοποιητικού από το PDF σας." -filenamePrefix = "unsigned" +filenamePrefix = "ανυπόγραφο" [removeCertSign.files] placeholder = "Επιλέξτε ένα αρχείο PDF στην κύρια προβολή για να ξεκινήσετε" @@ -3441,6 +3446,9 @@ signinTitle = "Παρακαλώ συνδεθείτε" ssoSignIn = "Σύνδεση μέσω Single Sign-on" oAuth2AutoCreateDisabled = "Η αυτόματη δημιουργία χρήστη OAUTH2 είναι απενεργοποιημένη" oAuth2AdminBlockedUser = "Η εγγραφή ή σύνδεση μη εγγεγραμμένων χρηστών είναι προς το παρόν αποκλεισμένη. Παρακαλώ επικοινωνήστε με τον διαχειριστή." +oAuth2RequiresLicense = "Η σύνδεση μέσω OAuth/SSO απαιτεί επί πληρωμή άδεια (Server ή Enterprise). Παρακαλούμε επικοινωνήστε με τον διαχειριστή για να αναβαθμίσετε το πλάνο σας." +saml2RequiresLicense = "Η σύνδεση μέσω SAML απαιτεί επί πληρωμή άδεια (Server ή Enterprise). Παρακαλούμε επικοινωνήστε με τον διαχειριστή για να αναβαθμίσετε το πλάνο σας." +maxUsersReached = "Έχει επιτευχθεί ο μέγιστος αριθμός χρηστών για την τρέχουσα άδειά σας. Παρακαλούμε επικοινωνήστε με τον διαχειριστή για να αναβαθμίσετε το πλάνο σας ή να προσθέσετε περισσότερες θέσεις." oauth2RequestNotFound = "Το αίτημα εξουσιοδότησης δεν βρέθηκε" oauth2InvalidUserInfoResponse = "Μη έγκυρη απόκριση πληροφοριών χρήστη" oauth2invalidRequest = "Μη έγκυρο αίτημα" @@ -3536,7 +3544,7 @@ title = "PDF σε μία σελίδα" header = "PDF σε μία σελίδα" submit = "Μετατροπή σε μία σελίδα" description = "Αυτό το εργαλείο θα συγχωνεύσει όλες τις σελίδες του PDF σας σε μία μεγάλη ενιαία σελίδα. Το πλάτος θα παραμείνει ίδιο με των αρχικών σελίδων, αλλά το ύψος θα είναι το άθροισμα όλων των υψών." -filenamePrefix = "single_page" +filenamePrefix = "μονοσέλιδο" [pdfToSinglePage.files] placeholder = "Επιλέξτε ένα αρχείο PDF στην κύρια προβολή για να ξεκινήσετε" @@ -3849,14 +3857,17 @@ fitToWidth = "Προσαρμογή στο πλάτος" actualSize = "Πραγματικό μέγεθος" [viewer] +cannotPreviewFile = "Δεν είναι δυνατή η προεπισκόπηση του αρχείου" +dualPageView = "Προβολή διπλής σελίδας" firstPage = "Πρώτη σελίδα" lastPage = "Τελευταία σελίδα" -previousPage = "Προηγούμενη σελίδα" nextPage = "Επόμενη σελίδα" +onlyPdfSupported = "Ο προβολέας υποστηρίζει μόνο αρχεία PDF. Αυτό το αρχείο φαίνεται να είναι διαφορετικής μορφής." +previousPage = "Προηγούμενη σελίδα" +singlePageView = "Προβολή μίας σελίδας" +unknownFile = "Άγνωστο αρχείο" zoomIn = "Μεγέθυνση" zoomOut = "Σμίκρυνση" -singlePageView = "Προβολή μίας σελίδας" -dualPageView = "Προβολή διπλής σελίδας" [rightRail] closeSelected = "Κλείσιμο επιλεγμένων αρχείων" @@ -4238,11 +4249,11 @@ label = "URL εκδότη" description = "Το URL εκδότη του παρόχου OAuth2" [admin.settings.connections.oauth2.clientId] -label = "Client ID" +label = "Αναγνωριστικό πελάτη (Client ID)" description = "Το Client ID OAuth2 από τον πάροχό σας" [admin.settings.connections.oauth2.clientSecret] -label = "Client Secret" +label = "Μυστικό πελάτη (Client Secret)" description = "Το Client Secret OAuth2 από τον πάροχό σας" [admin.settings.connections.oauth2.useAsUsername] @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} επιλεγμένα" download = "Λήψη" delete = "Διαγραφή" unsupported = "Μη υποστηριζόμενο" +active = "Ενεργό" addToUpload = "Προσθήκη στη μεταφόρτωση" +closeFile = "Κλείσιμο αρχείου" deleteAll = "Διαγραφή όλων" loadingFiles = "Φόρτωση αρχείων..." noFiles = "Δεν υπάρχουν διαθέσιμα αρχεία" @@ -5712,7 +5725,7 @@ title = "Διάγραμμα χρήσης Endpoints" [usage.table] title = "Αναλυτικά στατιστικά" -endpoint = "Endpoint" +endpoint = "Σημείο τερματισμού" visits = "Επισκέψεις" percentage = "Ποσοστό" noData = "Δεν υπάρχουν διαθέσιμα δεδομένα" @@ -5800,6 +5813,13 @@ submit = "Σύνδεση" signInWith = "Σύνδεση με" oauthPending = "Άνοιγμα προγράμματος περιήγησης για έλεγχο ταυτότητας..." orContinueWith = "Ή συνεχίστε με email" +serverRequirement = "Σημείωση: Ο διακομιστής πρέπει να έχει ενεργοποιημένη τη σύνδεση." +showInstructions = "Πώς ενεργοποιείται;" +hideInstructions = "Απόκρυψη οδηγιών" +instructions = "Για να ενεργοποιήσετε τη σύνδεση στον διακομιστή Stirling PDF:" +instructionsEnvVar = "Ορίστε τη μεταβλητή περιβάλλοντος:" +instructionsOrYml = "Ή στο settings.yml:" +instructionsRestart = "Στη συνέχεια, επανεκκινήστε τον διακομιστή σας για να εφαρμοστούν οι αλλαγές." [setup.login.username] label = "Όνομα χρήστη" diff --git a/frontend/public/locales/es-ES/translation.toml b/frontend/public/locales/es-ES/translation.toml index 29e0924ae4..9f390a12fa 100644 --- a/frontend/public/locales/es-ES/translation.toml +++ b/frontend/public/locales/es-ES/translation.toml @@ -163,6 +163,11 @@ unfavorite = "Quitar de favoritos" fullscreen = "Cambiar a modo pantalla completa" sidebar = "Cambiar a modo barra lateral" +[backendStartup] +notFoundTitle = "Backend no encontrado" +retry = "Reintentar" +unreachable = "La aplicación no puede conectarse actualmente al backend. Verifique el estado del backend y la conectividad de red, luego inténtelo de nuevo." + [zipWarning] title = "Archivo ZIP grande" message = "Este ZIP contiene {{count}} archivos. ¿Extraer de todos modos?" @@ -347,7 +352,7 @@ teams = "Equipos" title = "Configuración" systemSettings = "Ajustes del sistema" features = "Funciones" -endpoints = "Endpoints" +endpoints = "Puntos de conexión" database = "Base de datos" advanced = "Avanzado" @@ -3441,6 +3446,9 @@ signinTitle = "Por favor, inicie sesión" ssoSignIn = "Iniciar sesión a través del inicio de sesión único" oAuth2AutoCreateDisabled = "Usuario de creación automática de OAUTH2 DESACTIVADO" oAuth2AdminBlockedUser = "El registro o inicio de sesión de usuarios no registrados está actualmente bloqueado. Por favor, póngase en contacto con el administrador." +oAuth2RequiresLicense = "El inicio de sesión OAuth/SSO requiere una licencia de pago (Server o Enterprise). Póngase en contacto con el administrador para actualizar su plan." +saml2RequiresLicense = "El inicio de sesión SAML requiere una licencia de pago (Server o Enterprise). Póngase en contacto con el administrador para actualizar su plan." +maxUsersReached = "Se alcanzó el número máximo de usuarios para su licencia actual. Póngase en contacto con el administrador para actualizar su plan o añadir más plazas." oauth2RequestNotFound = "Solicitud de autorización no encontrada" oauth2InvalidUserInfoResponse = "Respuesta de información de usuario no válida" oauth2invalidRequest = "Solicitud no válida" @@ -3849,14 +3857,17 @@ fitToWidth = "Ajustar al Ancho" actualSize = "Tamaño Real" [viewer] +cannotPreviewFile = "No se puede previsualizar el archivo" +dualPageView = "Vista de Página Doble" firstPage = "Primera Página" lastPage = "Última Página" -previousPage = "Página Anterior" nextPage = "Página Siguiente" +onlyPdfSupported = "El visor solo admite archivos PDF. Este archivo parece ser de un formato diferente." +previousPage = "Página Anterior" +singlePageView = "Vista de Página Única" +unknownFile = "Archivo desconocido" zoomIn = "Acercar" zoomOut = "Alejar" -singlePageView = "Vista de Página Única" -dualPageView = "Vista de Página Doble" [rightRail] closeSelected = "Cerrar Archivos Seleccionados" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} seleccionados" download = "Descargar" delete = "Borrar" unsupported = "No Soportado" +active = "Activo" addToUpload = "Añadir a la subida" +closeFile = "Cerrar archivo" deleteAll = "Eliminar todo" loadingFiles = "Cargando archivos..." noFiles = "No hay archivos disponibles" @@ -5207,7 +5220,7 @@ user = "Usuario" [workspace.people.addMember] title = "Añadir miembro" username = "Nombre de usuario (correo)" -usernamePlaceholder = "user@example.com" +usernamePlaceholder = "usuario@ejemplo.com" password = "Contraseña" passwordPlaceholder = "Introduce la contraseña" role = "Rol" @@ -5244,7 +5257,7 @@ error = "No se pudo eliminar el usuario" tab = "Invitación por correo electrónico" description = "Escribe o pega correos a continuación, separados por comas. Los usuarios recibirán credenciales de inicio de sesión por correo electrónico." emails = "Direcciones de correo electrónico" -emailsPlaceholder = "user1@example.com, user2@example.com" +emailsPlaceholder = "usuario1@ejemplo.com, usuario2@ejemplo.com" emailsRequired = "Se requiere al menos una dirección de correo electrónico" submit = "Enviar invitaciones" success = "usuario(s) invitado(s) correctamente" @@ -5544,7 +5557,7 @@ emailInvalid = "Introduzca una dirección de correo válida" title = "Introduzca su correo electrónico" description = "Lo usaremos para enviar su clave de licencia y recibos." emailLabel = "Dirección de correo electrónico" -emailPlaceholder = "your@email.com" +emailPlaceholder = "su@email.com" continue = "Continuar" modalTitle = "Comenzar - {{planName}}" @@ -5800,13 +5813,20 @@ submit = "Iniciar sesión" signInWith = "Iniciar sesión con" oauthPending = "Abriendo el navegador para autenticación..." orContinueWith = "O continuar con email" +serverRequirement = "Nota: el servidor debe tener el inicio de sesión habilitado." +showInstructions = "¿Cómo habilitarlo?" +hideInstructions = "Ocultar instrucciones" +instructions = "Para habilitar el inicio de sesión en su servidor de Stirling PDF:" +instructionsEnvVar = "Establezca la variable de entorno:" +instructionsOrYml = "O en settings.yml:" +instructionsRestart = "Luego reinicie su servidor para que los cambios surtan efecto." [setup.login.username] label = "Nombre de usuario" placeholder = "Introduzca su nombre de usuario" [setup.login.email] -label = "Email" +label = "Correo electrónico" placeholder = "Introduzca su email" [setup.login.password] @@ -5843,7 +5863,7 @@ paragraph = "Página de párrafos" sparse = "Texto disperso" [pdfTextEditor.groupingMode] -auto = "Auto" +auto = "Automático" paragraph = "Párrafo" singleLine = "Línea única" diff --git a/frontend/public/locales/eu-ES/translation.toml b/frontend/public/locales/eu-ES/translation.toml index 7a06a08c5b..e99115493d 100644 --- a/frontend/public/locales/eu-ES/translation.toml +++ b/frontend/public/locales/eu-ES/translation.toml @@ -99,7 +99,7 @@ visitGithub = "Bisitatu Github biltegia" donate = "Dohaintza egin" color = "Color" sponsor = "Babestu" -info = "Info" +info = "Informazioa" pro = "Pro" page = "Orrialdea" pages = "Orrialdeak" @@ -131,7 +131,7 @@ unsupported = "Ez da onartzen" [toolPanel] placeholder = "Aukeratu tresna bat hasteko" -alpha = "Alpha" +alpha = "Alfa" premiumFeature = "Premium ezaugarria:" comingSoon = "Laster eskuragarri:" @@ -163,6 +163,11 @@ unfavorite = "Kendu gogokoetatik" fullscreen = "Aldatu pantaila osoko modura" sidebar = "Aldatu alboko barra modura" +[backendStartup] +notFoundTitle = "Backend-a ez da aurkitu" +retry = "Saiatu berriro" +unreachable = "Aplikazioak une honetan ezin du backend-arekin konektatu. Egiaztatu backend-aren egoera eta sare-konexioa, eta saiatu berriro." + [zipWarning] title = "ZIP fitxategi handia" message = "ZIP honek {{count}} fitxategi ditu. Erauzi hala ere?" @@ -274,7 +279,7 @@ iAgreeToThe = "Onartzen ditut honako hauek guztiak" terms = "Baldintzak eta erabilera-baldintzak" accessibility = "Irisgarritasuna" cookie = "Cookie politika" -impressum = "Impressum" +impressum = "Lege oharra" showCookieBanner = "Cookie-hobespenak" [pipeline] @@ -296,7 +301,7 @@ saveSettings = "Gorde eragiketa-ezarpenak" pipelineNamePrompt = "Sartu hemen pipeline izena" selectOperation = "Aukeratu eragiketa" addOperationButton = "Gehitu eragiketa" -pipelineHeader = "Pipeline:" +pipelineHeader = "Pipelinea:" saveButton = "Distira" validateButton = "Balidatu" @@ -364,7 +369,7 @@ usageAnalytics = "Erabilera-analitika" [settings.policiesPrivacy] title = "Politikak eta Pribatutasuna" -legal = "Legal" +legal = "Lege" privacy = "Pribatutasuna" [settings.developer] @@ -3441,6 +3446,9 @@ signinTitle = "Mesedez, hasi saioa" ssoSignIn = "Hasi saioa Saioa hasteko modu bakarraren bidez" oAuth2AutoCreateDisabled = "OAUTH2 Sortu automatikoki erabiltzailea desgaituta dago" oAuth2AdminBlockedUser = "Erregistratu gabeko erabiltzaileen erregistroa edo saio-hasiera une honetan blokeatuta dago. Jarri harremanetan administratzailearekin." +oAuth2RequiresLicense = "OAuth/SSO bidezko saio-hasierak lizentzia ordaindua behar du (Server edo Enterprise). Mesedez, jarri harremanetan administratzailearekin plana eguneratzeko." +saml2RequiresLicense = "SAML bidezko saio-hasierak lizentzia ordaindua behar du (Server edo Enterprise). Mesedez, jarri harremanetan administratzailearekin plana eguneratzeko." +maxUsersReached = "Zure uneko lizentziarekin erabiltzaile kopuru maximoa gainditu da. Mesedez, jarri harremanetan administratzailearekin plana eguneratzeko edo eserleku gehiago gehitzeko." oauth2RequestNotFound = "Baimen-eskaera ez da aurkitu" oauth2InvalidUserInfoResponse = "Erabiltzaile-informazioaren erantzun baliogabea" oauth2invalidRequest = "Eskaera baliogabea" @@ -3536,7 +3544,7 @@ title = "PDF Orrialde bakarrera" header = "PDF Orrialde bakarrera" submit = "Orrialde bakarrera bihurtu" description = "Tresna honek zure PDFko orri guztiak orri handi bakarrean batuko ditu. Zabalera bera izango du jatorrizko orrienarekin, baina altuera orri guztien altueren batura izango da." -filenamePrefix = "single_page" +filenamePrefix = "orrialde_bakarra" [pdfToSinglePage.files] placeholder = "Hautatu PDF fitxategi bat ikuspegi nagusian hasteko" @@ -3849,14 +3857,17 @@ fitToWidth = "Zabalera egokitu" actualSize = "Benetako tamaina" [viewer] +cannotPreviewFile = "Ezin da fitxategia aurreikusi" +dualPageView = "Orri biko ikuspegia" firstPage = "Lehen orria" lastPage = "Azken orria" -previousPage = "Aurreko orria" nextPage = "Hurrengo orria" +onlyPdfSupported = "Ikustaileak PDF fitxategiak bakarrik onartzen ditu. Fitxategi honek beste formatu batekoa dirudi." +previousPage = "Aurreko orria" +singlePageView = "Orri bakarreko ikuspegia" +unknownFile = "Fitxategi ezezaguna" zoomIn = "Zoom handitu" zoomOut = "Zoom txikitu" -singlePageView = "Orri bakarreko ikuspegia" -dualPageView = "Orri biko ikuspegia" [rightRail] closeSelected = "Itxi hautatutako fitxategiak" @@ -4490,7 +4501,7 @@ label = "Cookieen politika" description = "Cookieen politikara doan URLa edo fitxategi-izena" [admin.settings.legal.impressum] -label = "Impressum" +label = "Lege oharra" description = "Impressum-era doan URLa edo fitxategi-izena (beharrezkoa jurisdikzio batzuetan)" [admin.settings.premium] @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} hautatuta" download = "Distira" delete = "ezabatu" unsupported = "Ez da onartzen" +active = "Aktibo" addToUpload = "Gehitu igoerara" +closeFile = "Itxi fitxategia" deleteAll = "Ezabatu denak" loadingFiles = "Fitxategiak kargatzen..." noFiles = "Ez dago fitxategirik eskuragarri" @@ -5800,6 +5813,13 @@ submit = "Hasi saioa" signInWith = "Hasi saioa honekin" oauthPending = "Nabigatzailea irekitzen autentifikaziorako..." orContinueWith = "Edo jarraitu emailarekin" +serverRequirement = "Oharra: zerbitzariak saioa hastea gaituta eduki behar du." +showInstructions = "Nola gaitu?" +hideInstructions = "Ezkutatu argibideak" +instructions = "Saioa hastea gaitzeko zure Stirling PDF zerbitzarian:" +instructionsEnvVar = "Ezarri ingurune-aldagaia:" +instructionsOrYml = "Edo settings.yml fitxategian:" +instructionsRestart = "Ondoren, berrabiarazi zerbitzaria aldaketak indarrean sartzeko." [setup.login.username] label = "Erabiltzaile-izena" @@ -5843,7 +5863,7 @@ paragraph = "Paragrafo orria" sparse = "Testu sakabanatua" [pdfTextEditor.groupingMode] -auto = "Auto" +auto = "Automatikoa" paragraph = "Paragrafoa" singleLine = "Lerro bakarra" diff --git a/frontend/public/locales/fa-IR/translation.toml b/frontend/public/locales/fa-IR/translation.toml index 0088ee0451..7cfa9c6e3b 100644 --- a/frontend/public/locales/fa-IR/translation.toml +++ b/frontend/public/locales/fa-IR/translation.toml @@ -163,6 +163,11 @@ unfavorite = "حذف از علاقه‌مندی‌ها" fullscreen = "تغییر به حالت تمام‌صفحه" sidebar = "تغییر به حالت نوار کناری" +[backendStartup] +notFoundTitle = "بک‌اند یافت نشد" +retry = "تلاش مجدد" +unreachable = "برنامه در حال حاضر نمی‌تواند به بک‌اند متصل شود. وضعیت بک‌اند و اتصال شبکه را بررسی کرده و سپس دوباره تلاش کنید." + [zipWarning] title = "فایل ZIP بزرگ" message = "این ZIP شامل {{count}} فایل است. با این حال استخراج شود؟" @@ -3441,6 +3446,9 @@ signinTitle = "لطفاً وارد شوید" ssoSignIn = "ورود از طریق Single Sign-on" oAuth2AutoCreateDisabled = "ایجاد خودکار کاربر با OAUTH2 غیرفعال است" oAuth2AdminBlockedUser = "ثبت‌نام یا ورود کاربران ثبت‌نشده در حال حاضر مسدود است. لطفاً با مدیر تماس بگیرید." +oAuth2RequiresLicense = "ورود با OAuth/SSO به لایسنس پولی (Server یا Enterprise) نیاز دارد. لطفاً برای ارتقای طرح خود با مدیر تماس بگیرید." +saml2RequiresLicense = "ورود با SAML به لایسنس پولی (Server یا Enterprise) نیاز دارد. لطفاً برای ارتقای طرح خود با مدیر تماس بگیرید." +maxUsersReached = "حداکثر تعداد کاربران برای لایسنس کنونی شما به حد نصاب رسیده است. لطفاً برای ارتقای طرح یا افزودن کاربران بیشتر با مدیر تماس بگیرید." oauth2RequestNotFound = "درخواست احراز هویت پیدا نشد" oauth2InvalidUserInfoResponse = "پاسخ اطلاعات کاربری نامعتبر است" oauth2invalidRequest = "درخواست نامعتبر" @@ -3849,14 +3857,17 @@ fitToWidth = "تناسب با عرض" actualSize = "اندازه واقعی" [viewer] +cannotPreviewFile = "امکان پیش‌نمایش فایل نیست" +dualPageView = "نمای دوصفحه‌ای" firstPage = "صفحه نخست" lastPage = "صفحه آخر" -previousPage = "صفحه قبل" nextPage = "صفحه بعد" +onlyPdfSupported = "نمایشگر فقط فایل‌های PDF را پشتیبانی می‌کند. به نظر می‌رسد این فایل قالب متفاوتی دارد." +previousPage = "صفحه قبل" +singlePageView = "نمای تک‌صفحه‌ای" +unknownFile = "فایل ناشناخته" zoomIn = "بزرگ‌نمایی" zoomOut = "کوچک‌نمایی" -singlePageView = "نمای تک‌صفحه‌ای" -dualPageView = "نمای دوصفحه‌ای" [rightRail] closeSelected = "بستن فایل‌های انتخاب‌شده" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} مورد انتخاب‌شده" download = "دانلود" delete = "حذف" unsupported = "پشتیبانی‌نشده" +active = "فعال" addToUpload = "افزودن به بارگذاری" +closeFile = "بستن فایل" deleteAll = "حذف همه" loadingFiles = "در حال بارگذاری فایل‌ها..." noFiles = "فایلی موجود نیست" @@ -5800,6 +5813,13 @@ submit = "ورود" signInWith = "ورود با" oauthPending = "در حال باز کردن مرورگر برای احراز هویت..." orContinueWith = "یا با ایمیل ادامه دهید" +serverRequirement = "توجه: سرور باید ورود را فعال کرده باشد." +showInstructions = "نحوه فعال‌سازی؟" +hideInstructions = "مخفی کردن دستورالعمل‌ها" +instructions = "برای فعال‌سازی ورود در سرور Stirling PDF خود:" +instructionsEnvVar = "متغیر محیطی را تنظیم کنید:" +instructionsOrYml = "یا در settings.yml:" +instructionsRestart = "سپس سرور خود را راه‌اندازی مجدد کنید تا تغییرات اعمال شوند." [setup.login.username] label = "نام کاربری" diff --git a/frontend/public/locales/fr-FR/translation.toml b/frontend/public/locales/fr-FR/translation.toml index 8982ce7748..eefcf70993 100644 --- a/frontend/public/locales/fr-FR/translation.toml +++ b/frontend/public/locales/fr-FR/translation.toml @@ -163,6 +163,11 @@ unfavorite = "Retirer des favoris" fullscreen = "Passer en mode plein écran" sidebar = "Passer en mode barre latérale" +[backendStartup] +notFoundTitle = "Backend introuvable" +retry = "Réessayer" +unreachable = "L’application ne peut actuellement pas se connecter au backend. Vérifiez l’état du backend et la connectivité réseau, puis réessayez." + [zipWarning] title = "Fichier ZIP volumineux" message = "Ce ZIP contient {{count}} fichiers. Extraire quand même ?" @@ -347,7 +352,7 @@ teams = "Équipes" title = "Configuration" systemSettings = "Paramètres système" features = "Fonctionnalités" -endpoints = "Endpoints" +endpoints = "Points de terminaison" database = "Base de données" advanced = "Avancé" @@ -3441,6 +3446,9 @@ signinTitle = "Veuillez vous connecter" ssoSignIn = "Se connecter via l'authentification unique" oAuth2AutoCreateDisabled = "OAUTH2 Création automatique d'utilisateur désactivée" oAuth2AdminBlockedUser = "La création ou l'authentification d'utilisateurs non enregistrés est actuellement bloquée. Veuillez contacter l'administrateur." +oAuth2RequiresLicense = "La connexion OAuth/SSO nécessite une licence payante (Server ou Enterprise). Veuillez contacter l’administrateur pour mettre à niveau votre plan." +saml2RequiresLicense = "La connexion SAML nécessite une licence payante (Server ou Enterprise). Veuillez contacter l’administrateur pour mettre à niveau votre plan." +maxUsersReached = "Nombre maximal d’utilisateurs atteint pour votre licence actuelle. Veuillez contacter l’administrateur pour mettre à niveau votre plan ou ajouter des places." oauth2RequestNotFound = "Demande d'autorisation introuvable" oauth2InvalidUserInfoResponse = "Réponse contenant les informations de l'utilisateur est invalide" oauth2invalidRequest = "Requête invalide" @@ -3849,14 +3857,17 @@ fitToWidth = "Ajuster à la largeur" actualSize = "Taille réelle" [viewer] +cannotPreviewFile = "Impossible d’afficher un aperçu du fichier" +dualPageView = "Vue double page" firstPage = "Première page" lastPage = "Dernière page" -previousPage = "Page précédente" nextPage = "Page suivante" +onlyPdfSupported = "Le visualiseur prend uniquement en charge les fichiers PDF. Ce fichier semble être d’un autre format." +previousPage = "Page précédente" +singlePageView = "Vue page unique" +unknownFile = "Fichier inconnu" zoomIn = "Zoom avant" zoomOut = "Zoom arrière" -singlePageView = "Vue page unique" -dualPageView = "Vue double page" [rightRail] closeSelected = "Fermer les fichiers sélectionnés" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} sélectionné(s)" download = "Télécharger" delete = "Supprimer" unsupported = "Non pris en charge" +active = "Actif" addToUpload = "Ajouter au téléversement" +closeFile = "Fermer le fichier" deleteAll = "Tout supprimer" loadingFiles = "Chargement des fichiers..." noFiles = "Aucun fichier disponible" @@ -5181,7 +5194,7 @@ active = "Actif" disabled = "Désactivé" activeSession = "Session active" member = "Membre" -admin = "Admin" +admin = "Administrateur" editRole = "Modifier le rôle" enable = "Activer" disable = "Désactiver" @@ -5712,7 +5725,7 @@ title = "Graphique d’utilisation des endpoints" [usage.table] title = "Statistiques détaillées" -endpoint = "Endpoint" +endpoint = "Point de terminaison" visits = "Visites" percentage = "Pourcentage" noData = "Aucune donnée disponible" @@ -5800,13 +5813,20 @@ submit = "Se connecter" signInWith = "Se connecter avec" oauthPending = "Ouverture du navigateur pour l'authentification..." orContinueWith = "Ou continuer avec l’email" +serverRequirement = "Remarque : le serveur doit avoir la connexion activée." +showInstructions = "Comment l’activer ?" +hideInstructions = "Masquer les instructions" +instructions = "Pour activer la connexion sur votre serveur Stirling PDF :" +instructionsEnvVar = "Définissez la variable d’environnement :" +instructionsOrYml = "Ou dans settings.yml :" +instructionsRestart = "Redémarrez ensuite votre serveur pour que les modifications prennent effet." [setup.login.username] label = "Nom d’utilisateur" placeholder = "Entrez votre nom d’utilisateur" [setup.login.email] -label = "Email" +label = "E-mail" placeholder = "Saisissez votre email" [setup.login.password] diff --git a/frontend/public/locales/ga-IE/translation.toml b/frontend/public/locales/ga-IE/translation.toml index f38084088d..5e9c69ec80 100644 --- a/frontend/public/locales/ga-IE/translation.toml +++ b/frontend/public/locales/ga-IE/translation.toml @@ -163,6 +163,11 @@ unfavorite = "Bain den Cheanáin" fullscreen = "Athraigh go mód lánscáileáin" sidebar = "Athraigh go mód barra taoibh" +[backendStartup] +notFoundTitle = "Níor aimsíodh an cúlchóras" +retry = "Atriail" +unreachable = "Ní féidir leis an bhfeidhmchlár ceangal leis an gcúlchóras faoi láthair. Deimhnigh stádas an chúlchórais agus nascacht an líonra, ansin bain triail eile as." + [zipWarning] title = "Comhad ZIP Mór" message = "Tá {{count}} comhad sa ZIP seo. An mbaineann tú amach mar sin féin?" @@ -1638,7 +1643,7 @@ subtitle = "Íoslódáil an comhad próiseáilte nó cealaigh an oibríocht thí [removePages] tags = "Bain leathanaigh, scrios leathanaigh" title = "Bain" -filenamePrefix = "pages_removed" +filenamePrefix = "leathanaigh_bainte" submit = "Bain" [removePages.pageNumbers] @@ -1840,7 +1845,7 @@ title = "Bain Léamh-Amháin ó Réimsí Foirme" header = "Díghlasáil Foirmeacha PDF" submit = "Remove" description = "Bainfidh an uirlis seo srianta léamh-amáin ó réimsí foirme PDF, rud a fhágann go mbeidh siad in-eagarthóireachta agus inlíonta." -filenamePrefix = "unlocked_forms" +filenamePrefix = "foirmeacha_díghlasáilte" [unlockPDFForms.files] placeholder = "Roghnaigh comhad PDF sa phríomh-amharc chun tosú" @@ -1854,7 +1859,7 @@ title = "Torthaí Díghlasála Foirmeacha" [changeMetadata] header = "Athraigh Meiteashonraí" submit = "Athrú" -filenamePrefix = "metadata" +filenamePrefix = "meiteashonraí" [changeMetadata.settings] title = "Socruithe Meiteashonraí" @@ -2321,7 +2326,7 @@ title = "Comhcheangail" header = "PDF cothromú" flattenOnlyForms = "Flatten foirmeacha amháin" submit = "Comhcheangail" -filenamePrefix = "flattened" +filenamePrefix = "maolaithe" [flatten.files] placeholder = "Roghnaigh comhad PDF sa phríomh-amharc chun tosú" @@ -2369,7 +2374,7 @@ title = "Deisiúchán" header = "PDF a dheisiú" submit = "Deisiúchán" description = "Déanfaidh an uirlis seo iarracht comhaid PDF truaillithe nó damáiste a dheisiú. Níl aon socruithe breise ag teastáil." -filenamePrefix = "repaired" +filenamePrefix = "deisithe" [repair.files] placeholder = "Roghnaigh comhad PDF sa phríomh-amharc chun tosú" @@ -2570,7 +2575,7 @@ stopButton = "Stop comparáid" [certSign] tags = "fíordheimhnigh, PEM, P12, oifigiúil, criptigh" title = "Síniú Teastais" -filenamePrefix = "signed" +filenamePrefix = "síníthe" chooseCertificate = "Roghnaigh Comhad Teastais" chooseJksFile = "Roghnaigh Comhad JKS" chooseP12File = "Roghnaigh Comhad PKCS12" @@ -2704,7 +2709,7 @@ header = "Bain an deimhniú digiteach ó PDF" selectPDF = "Roghnaigh comhad PDF:" submit = "Bain Síniú" description = "Bainfidh an uirlis seo sínithe teastais dhigiteacha de do dhoiciméad PDF." -filenamePrefix = "unsigned" +filenamePrefix = "neamhshínithe" [removeCertSign.files] placeholder = "Roghnaigh comhad PDF sa phríomh-amharc chun tosú" @@ -3441,6 +3446,9 @@ signinTitle = "Sínigh isteach le do thoil" ssoSignIn = "Logáil isteach trí Chlárú Aonair" oAuth2AutoCreateDisabled = "OAUTH2 Uath-Chruthaigh Úsáideoir faoi Mhíchumas" oAuth2AdminBlockedUser = "Tá bac faoi láthair ar chlárú nó logáil isteach úsáideoirí neamhchláraithe. Déan teagmháil leis an riarthóir le do thoil." +oAuth2RequiresLicense = "Teastaíonn ceadúnas íoctha (Server nó Enterprise) chun logáil isteach le OAuth/SSO. Déan teagmháil leis an riarthóir chun do phlean a uasghrádú." +saml2RequiresLicense = "Teastaíonn ceadúnas íoctha (Server nó Enterprise) chun logáil isteach le SAML. Déan teagmháil leis an riarthóir chun do phlean a uasghrádú." +maxUsersReached = "Sroicheadh an líon uasta úsáideoirí do do cheadúnas reatha. Déan teagmháil leis an riarthóir chun do phlean a uasghrádú nó suíocháin bhreise a chur leis." oauth2RequestNotFound = "Níor aimsíodh iarratas údaraithe" oauth2InvalidUserInfoResponse = "Freagra Neamhbhailí Faisnéise Úsáideora" oauth2invalidRequest = "Iarratas Neamhbhailí" @@ -3536,7 +3544,7 @@ title = "PDF go leathanach amháin" header = "PDF go leathanach amháin" submit = "Tiontaigh go Leathanach Aonair" description = "Cuirfidh an uirlis seo gach leathanach de do PDF le chéile in aon leathanach mór amháin. Fanfaidh an leithead mar an gcéanna leis na leathanaigh bhunaidh, ach beidh an airde cothrom le suim airde na leathanach go léir." -filenamePrefix = "single_page" +filenamePrefix = "leathanach_aonair" [pdfToSinglePage.files] placeholder = "Roghnaigh comhad PDF sa phríomh-amharc chun tosú" @@ -3849,14 +3857,17 @@ fitToWidth = "Oiriúnaigh don Leithead" actualSize = "Fíormhéid" [viewer] +cannotPreviewFile = "Ní féidir an comhad a réamhamharc." +dualPageView = "Amharc Dhá Leathanach" firstPage = "An Chéad Leathanach" lastPage = "An Leathanach Deireanach" -previousPage = "Leathanach Roimhe Seo" nextPage = "Leathanach Ar Aghaidh" +onlyPdfSupported = "Ní thacaíonn an t-amharcán ach le comhaid PDF. Is cosúil gur formáid eile é an comhad seo." +previousPage = "Leathanach Roimhe Seo" +singlePageView = "Amharc Leathanach Aonair" +unknownFile = "Comhad anaithnid" zoomIn = "Súmáil Isteach" zoomOut = "Súmáil Amach" -singlePageView = "Amharc Leathanach Aonair" -dualPageView = "Amharc Dhá Leathanach" [rightRail] closeSelected = "Dún na Comhaid Roghnaithe" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} roghnaithe" download = "Íosluchtaigh" delete = "Scrios" unsupported = "Gan tacaíocht" +active = "Gníomhach" addToUpload = "Cuir leis an Uaslódáil" +closeFile = "Dún an comhad" deleteAll = "Scrios Uile" loadingFiles = "Comhaid á Luchtú..." noFiles = "Níl comhaid ar fáil" @@ -5800,6 +5813,13 @@ submit = "Logáil Isteach" signInWith = "Sínigh isteach le" oauthPending = "Brabhsálaí á oscailt le haghaidh fíordheimhnithe..." orContinueWith = "Nó lean ar aghaidh le ríomhphost" +serverRequirement = "Nóta: Ní mór an cumas logála isteach a bheith cumasaithe ar an bhfreastalaí." +showInstructions = "Conas é a chumasú?" +hideInstructions = "Folaigh na treoracha" +instructions = "Chun logáil isteach a chumasú ar do fhreastalaí Stirling PDF:" +instructionsEnvVar = "Socraigh an athróg chomhshaoil:" +instructionsOrYml = "Nó i settings.yml:" +instructionsRestart = "Ansin atosaigh do fhreastalaí chun go mbeidh na hathruithe i bhfeidhm." [setup.login.username] label = "Ainm Úsáideora" diff --git a/frontend/public/locales/hi-IN/translation.toml b/frontend/public/locales/hi-IN/translation.toml index f00655db04..2ddfc5d217 100644 --- a/frontend/public/locales/hi-IN/translation.toml +++ b/frontend/public/locales/hi-IN/translation.toml @@ -131,7 +131,7 @@ unsupported = "असमर्थित" [toolPanel] placeholder = "शुरू करने के लिए कोई टूल चुनें" -alpha = "Alpha" +alpha = "अल्फा" premiumFeature = "प्रीमियम फीचर:" comingSoon = "जल्द आ रहा है:" @@ -163,6 +163,11 @@ unfavorite = "पसंदीदा से हटाएं" fullscreen = "फुलस्क्रीन मोड पर स्विच करें" sidebar = "साइडबार मोड पर स्विच करें" +[backendStartup] +notFoundTitle = "बैकएंड नहीं मिला" +retry = "पुनः प्रयास करें" +unreachable = "एप्लिकेशन फिलहाल बैकएंड से कनेक्ट नहीं हो पा रहा है। कृपया बैकएंड की स्थिति और नेटवर्क कनेक्टिविटी जांचें, फिर पुनः प्रयास करें।" + [zipWarning] title = "बड़ी ZIP फ़ाइल" message = "इस ZIP में {{count}} फ़ाइलें हैं। फिर भी निकालें?" @@ -369,7 +374,7 @@ privacy = "गोपनीयता" [settings.developer] title = "डेवलपर" -apiKeys = "API Keys" +apiKeys = "API कुंजियाँ" [settings.tooltips] enableLoginFirst = "पहले लॉगिन मोड सक्षम करें" @@ -1176,7 +1181,7 @@ selectFilesPlaceholder = "शुरू करने के लिए मुख settings = "सेटिंग्स" conversionCompleted = "रूपांतरण पूरा हुआ" results = "परिणाम" -defaultFilename = "converted_file" +defaultFilename = "परिवर्तित_फ़ाइल" conversionResults = "रूपांतरण परिणाम" convertFrom = "से रूपांतरित करें" convertTo = "में रूपांतरित करें" @@ -1219,8 +1224,8 @@ wordDocExt = "Word दस्तावेज़ (.docx)" odtExt = "OpenDocument Text (.odt)" pptExt = "PowerPoint (.pptx)" odpExt = "OpenDocument Presentation (.odp)" -txtExt = "Plain Text (.txt)" -rtfExt = "Rich Text Format (.rtf)" +txtExt = "सादा पाठ (.txt)" +rtfExt = "रिच टेक्स्ट फ़ॉर्मेट (.rtf)" selectedFiles = "चयनित फ़ाइलें" noFileSelected = "कोई फ़ाइल चयनित नहीं। फ़ाइलें जोड़ने के लिए फ़ाइल पैनल का उपयोग करें।" convertFiles = "फ़ाइलें रूपांतरित करें" @@ -1363,7 +1368,7 @@ title = "वॉटरमार्क जोड़ें" desc = "PDF फ़ाइलों में टेक्स्ट या इमेज वॉटरमार्क जोड़ें" completed = "वॉटरमार्क जोड़ा गया" submit = "वॉटरमार्क जोड़ें" -filenamePrefix = "watermarked" +filenamePrefix = "वॉटरमार्क_युक्त" [watermark.error] failed = "PDF में वॉटरमार्क जोड़ते समय एक त्रुटि हुई।" @@ -1638,7 +1643,7 @@ subtitle = "प्रोसेस्ड फ़ाइल डाउनलोड [removePages] tags = "पृष्ठ निकालें,पृष्ठ हटाएं" title = "निकालें" -filenamePrefix = "pages_removed" +filenamePrefix = "पृष्ठ_हटाए_गए" submit = "निकालें" [removePages.pageNumbers] @@ -1840,7 +1845,7 @@ title = "फॉर्म फ़ील्ड से Read-Only हटाएं" header = "PDF फॉर्म अनलॉक करें" submit = "Remove" description = "यह टूल PDF फॉर्म फ़ील्ड से Read-Only प्रतिबंध हटाएगा, जिससे वे संपादन योग्य और भरने योग्य बनेंगे।" -filenamePrefix = "unlocked_forms" +filenamePrefix = "अनलॉक_फ़ॉर्म" [unlockPDFForms.files] placeholder = "शुरू करने के लिए मुख्य दृश्य में एक PDF फ़ाइल चुनें" @@ -1854,7 +1859,7 @@ title = "अनलॉक किए गए फॉर्म के परिणा [changeMetadata] header = "मेटाडेटा बदलें" submit = "बदलें" -filenamePrefix = "metadata" +filenamePrefix = "मेटाडेटा" [changeMetadata.settings] title = "मेटाडेटा सेटिंग्स" @@ -2321,7 +2326,7 @@ title = "समतल करें" header = "PDF समतल करें" flattenOnlyForms = "केवल फ़ॉर्म समतल करें" submit = "समतल करें" -filenamePrefix = "flattened" +filenamePrefix = "समतलीकृत" [flatten.files] placeholder = "शुरू करने के लिए मुख्य दृश्य में एक PDF फ़ाइल चुनें" @@ -2369,7 +2374,7 @@ title = "मरम्मत" header = "PDF मरम्मत" submit = "मरम्मत" description = "यह टूल भ्रष्ट या क्षतिग्रस्त PDF फ़ाइलों की मरम्मत करने का प्रयास करेगा। कोई अतिरिक्त सेटिंग्स आवश्यक नहीं हैं।" -filenamePrefix = "repaired" +filenamePrefix = "मरम्मत_किया" [repair.files] placeholder = "शुरू करने के लिए मुख्य दृश्य में एक PDF फ़ाइल चुनें" @@ -2570,7 +2575,7 @@ stopButton = "तुलना रोकें" [certSign] tags = "प्रमाणीकरण,PEM,P12,आधिकारिक,एन्क्रिप्ट" title = "प्रमाणपत्र हस्ताक्षर" -filenamePrefix = "signed" +filenamePrefix = "हस्ताक्षरित" chooseCertificate = "प्रमाणपत्र फ़ाइल चुनें" chooseJksFile = "JKS फ़ाइल चुनें" chooseP12File = "PKCS12 फ़ाइल चुनें" @@ -2704,7 +2709,7 @@ header = "PDF से डिजिटल प्रमाणपत्र हटा selectPDF = "PDF फ़ाइल चुनें:" submit = "हस्ताक्षर हटाएं" description = "यह टूल आपके PDF दस्तावेज़ से डिजिटल प्रमाणपत्र हस्ताक्षर हटाएगा।" -filenamePrefix = "unsigned" +filenamePrefix = "अनहस्ताक्षरित" [removeCertSign.files] placeholder = "शुरू करने के लिए मुख्य दृश्य में एक PDF फ़ाइल चुनें" @@ -3441,6 +3446,9 @@ signinTitle = "कृपया साइन इन करें" ssoSignIn = "सिंगल साइन-ऑन के माध्यम से लॉगिन करें" oAuth2AutoCreateDisabled = "OAUTH2 स्वतः उपयोगकर्ता निर्माण अक्षम है" oAuth2AdminBlockedUser = "गैर-पंजीकृत उपयोगकर्ताओं का पंजीकरण या लॉगिन वर्तमान में अवरुद्ध है। कृपया व्यवस्थापक से संपर्क करें।" +oAuth2RequiresLicense = "OAuth/SSO लॉगिन के लिए पेड लाइसेंस (Server या Enterprise) आवश्यक है। कृपया अपना प्लान अपग्रेड करने के लिए व्यवस्थापक से संपर्क करें।" +saml2RequiresLicense = "SAML लॉगिन के लिए पेड लाइसेंस (Server या Enterprise) आवश्यक है। कृपया अपना प्लान अपग्रेड करने के लिए व्यवस्थापक से संपर्क करें।" +maxUsersReached = "आपके वर्तमान लाइसेंस के लिए उपयोगकर्ताओं की अधिकतम सीमा पूरी हो चुकी है। कृपया अपना प्लान अपग्रेड करने या अधिक सीटें जोड़ने के लिए व्यवस्थापक से संपर्क करें।" oauth2RequestNotFound = "प्राधिकरण अनुरोध नहीं मिला" oauth2InvalidUserInfoResponse = "अमान्य उपयोगकर्ता जानकारी प्रतिक्रिया" oauth2invalidRequest = "अमान्य अनुरोध" @@ -3536,7 +3544,7 @@ title = "PDF को एकल पृष्ठ में" header = "PDF को एकल पृष्ठ में" submit = "एकल पृष्ठ में बदलें" description = "यह टूल आपके PDF के सभी पृष्ठों को एक बड़े एकल पृष्ठ में मिला देगा। चौड़ाई मूल पृष्ठों जैसी ही रहेगी, पर ऊँचाई सभी पृष्ठ ऊँचाइयों का योग होगी।" -filenamePrefix = "single_page" +filenamePrefix = "एकल_पृष्ठ" [pdfToSinglePage.files] placeholder = "शुरू करने के लिए मुख्य दृश्य में एक PDF फ़ाइल चुनें" @@ -3849,14 +3857,17 @@ fitToWidth = "चौड़ाई के अनुसार फिट करे actualSize = "वास्तविक आकार" [viewer] +cannotPreviewFile = "फ़ाइल का पूर्वावलोकन नहीं किया जा सकता" +dualPageView = "दोहरा पृष्ठ दृश्य" firstPage = "पहला पृष्ठ" lastPage = "अंतिम पृष्ठ" -previousPage = "पिछला पृष्ठ" nextPage = "अगला पृष्ठ" +onlyPdfSupported = "व्यूअर केवल PDF फ़ाइलों का समर्थन करता है। यह फ़ाइल किसी भिन्न फ़ॉर्मेट में प्रतीत होती है।" +previousPage = "पिछला पृष्ठ" +singlePageView = "एकल पृष्ठ दृश्य" +unknownFile = "अज्ञात फ़ाइल" zoomIn = "ज़ूम इन" zoomOut = "ज़ूम आउट" -singlePageView = "एकल पृष्ठ दृश्य" -dualPageView = "दोहरा पृष्ठ दृश्य" [rightRail] closeSelected = "चयनित फ़ाइलें बंद करें" @@ -4234,7 +4245,7 @@ label = "प्रदाता" description = "प्रमाणीकरण के लिए उपयोग किया जाने वाला OAuth2 प्रदाता" [admin.settings.connections.oauth2.issuer] -label = "Issuer URL" +label = "जारीकर्ता URL" description = "OAuth2 प्रदाता का Issuer URL" [admin.settings.connections.oauth2.clientId] @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} चयनित" download = "डाउनलोड करें" delete = "हटाएं" unsupported = "असमर्थित" +active = "सक्रिय" addToUpload = "अपलोड में जोड़ें" +closeFile = "फ़ाइल बंद करें" deleteAll = "सब हटाएँ" loadingFiles = "फ़ाइलें लोड हो रही हैं..." noFiles = "कोई फ़ाइल उपलब्ध नहीं" @@ -5800,6 +5813,13 @@ submit = "लॉगिन" signInWith = "इसके साथ साइन इन करें" oauthPending = "प्रमाणीकरण के लिए ब्राउज़र खुल रहा है..." orContinueWith = "या ईमेल के साथ जारी रखें" +serverRequirement = "ध्यान दें: सर्वर पर लॉगिन सक्षम होना चाहिए।" +showInstructions = "कैसे सक्षम करें?" +hideInstructions = "निर्देश छिपाएँ" +instructions = "अपने Stirling PDF सर्वर पर लॉगिन सक्षम करने के लिए:" +instructionsEnvVar = "एन्वायरनमेंट वेरिएबल सेट करें:" +instructionsOrYml = "या settings.yml में:" +instructionsRestart = "इसके बाद बदलाव प्रभावी करने के लिए अपना सर्वर पुनः प्रारंभ करें।" [setup.login.username] label = "उपयोगकर्ता नाम" diff --git a/frontend/public/locales/hr-HR/translation.toml b/frontend/public/locales/hr-HR/translation.toml index c165b4044d..cfedc2c2fb 100644 --- a/frontend/public/locales/hr-HR/translation.toml +++ b/frontend/public/locales/hr-HR/translation.toml @@ -163,6 +163,11 @@ unfavorite = "Ukloni iz omiljenih" fullscreen = "Prebaci na način cijelog zaslona" sidebar = "Prebaci na način bočne trake" +[backendStartup] +notFoundTitle = "Backend nije pronađen" +retry = "Pokušaj ponovno" +unreachable = "Aplikacija se trenutačno ne može povezati s backendom. Provjerite status backenda i mrežnu povezanost, zatim pokušajte ponovno." + [zipWarning] title = "Velika ZIP datoteka" message = "Ovaj ZIP sadrži {{count}} datoteka. Ipak izdvojiti?" @@ -3441,6 +3446,9 @@ signinTitle = "Molimo vas da se prijavite" ssoSignIn = "Prijavite se putem jedinstvene prijave" oAuth2AutoCreateDisabled = "OAUTH2 automatsko kreiranje korisnika je onemogućeno" oAuth2AdminBlockedUser = "Registracija ili prijava nekadreguiranih korisnika trenutno su blokirane. Molimo Vas da kontaktirate administratora." +oAuth2RequiresLicense = "Prijava putem OAuth/SSO zahtijeva plaćenu licencu (Server ili Enterprise). Obratite se administratoru radi nadogradnje vašeg plana." +saml2RequiresLicense = "Prijava putem SAML zahtijeva plaćenu licencu (Server ili Enterprise). Obratite se administratoru radi nadogradnje vašeg plana." +maxUsersReached = "Dosegnut je maksimalan broj korisnika za vašu trenutačnu licencu. Obratite se administratoru radi nadogradnje plana ili dodavanja dodatnih mjesta." oauth2RequestNotFound = "Zahtjev za autorizaciju nije pronađen" oauth2InvalidUserInfoResponse = "Nevažeće informacije o korisniku" oauth2invalidRequest = "Neispravan zahtjev" @@ -3849,14 +3857,17 @@ fitToWidth = "Prilagodi širini" actualSize = "Stvarna veličina" [viewer] +cannotPreviewFile = "Nije moguće pregledati datoteku" +dualPageView = "Prikaz dviju stranica" firstPage = "Prva stranica" lastPage = "Zadnja stranica" -previousPage = "Prethodna stranica" nextPage = "Sljedeća stranica" +onlyPdfSupported = "Preglednik podržava samo PDF datoteke. Čini se da je ova datoteka u drugačijem formatu." +previousPage = "Prethodna stranica" +singlePageView = "Prikaz jedne stranice" +unknownFile = "Nepoznata datoteka" zoomIn = "Povećaj" zoomOut = "Umanji" -singlePageView = "Prikaz jedne stranice" -dualPageView = "Prikaz dviju stranica" [rightRail] closeSelected = "Zatvori odabrane datoteke" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} odabrano" download = "Preuzmi datoteku" delete = "Izbriši" unsupported = "Nepodržano" +active = "Aktivno" addToUpload = "Dodaj za otpremu" +closeFile = "Zatvori datoteku" deleteAll = "Izbriši sve" loadingFiles = "Učitavanje datoteka..." noFiles = "Nema dostupnih datoteka" @@ -5800,6 +5813,13 @@ submit = "Prijava" signInWith = "Prijavite se pomoću" oauthPending = "Otvaranje preglednika za autentikaciju..." orContinueWith = "Ili nastavite s e-poštom" +serverRequirement = "Napomena: Poslužitelj mora imati omogućenu prijavu." +showInstructions = "Kako omogućiti?" +hideInstructions = "Sakrij upute" +instructions = "Da biste omogućili prijavu na svom Stirling PDF poslužitelju:" +instructionsEnvVar = "Postavite varijablu okruženja:" +instructionsOrYml = "Ili u settings.yml:" +instructionsRestart = "Zatim ponovno pokrenite poslužitelj kako bi promjene stupile na snagu." [setup.login.username] label = "Korisničko ime" @@ -5843,7 +5863,7 @@ paragraph = "Stranica s odlomcima" sparse = "Rijedak tekst" [pdfTextEditor.groupingMode] -auto = "Auto" +auto = "Automatski" paragraph = "Odlomak" singleLine = "Jedan redak" diff --git a/frontend/public/locales/hu-HU/translation.toml b/frontend/public/locales/hu-HU/translation.toml index 049c862073..bfa464f959 100644 --- a/frontend/public/locales/hu-HU/translation.toml +++ b/frontend/public/locales/hu-HU/translation.toml @@ -163,6 +163,11 @@ unfavorite = "Eltávolítás a kedvencekből" fullscreen = "Váltás teljes képernyős módra" sidebar = "Váltás oldalsáv módra" +[backendStartup] +notFoundTitle = "Backend nem található" +retry = "Próbálja újra" +unreachable = "Az alkalmazás jelenleg nem tud csatlakozni a Backendhez. Ellenőrizze a Backend állapotát és a hálózati kapcsolatot, majd próbálja újra." + [zipWarning] title = "Nagy ZIP fájl" message = "Ez a ZIP {{count}} fájlt tartalmaz. Mégis kibontja?" @@ -3441,6 +3446,9 @@ signinTitle = "Kérjük, jelentkezzen be" ssoSignIn = "Bejelentkezés egyszeri bejelentkezéssel" oAuth2AutoCreateDisabled = "OAuth2 automatikus felhasználólétrehozás letiltva" oAuth2AdminBlockedUser = "A nem regisztrált felhasználók regisztrációja vagy bejelentkezése jelenleg le van tiltva. Kérjük, forduljon a rendszergazdához." +oAuth2RequiresLicense = "Az OAuth/SSO bejelentkezés fizetős licencet igényel (Server vagy Enterprise). Kérjük, lépjen kapcsolatba az adminisztrátorral a csomag frissítéséhez." +saml2RequiresLicense = "A SAML bejelentkezés fizetős licencet igényel (Server vagy Enterprise). Kérjük, lépjen kapcsolatba az adminisztrátorral a csomag frissítéséhez." +maxUsersReached = "Elérte az aktuális licenchez tartozó felhasználók maximális számát. Kérjük, lépjen kapcsolatba az adminisztrátorral a csomag frissítéséhez vagy további felhasználói helyek hozzáadásához." oauth2RequestNotFound = "A hitelesítési kérés nem található" oauth2InvalidUserInfoResponse = "Érvénytelen felhasználói információ válasz" oauth2invalidRequest = "Érvénytelen kérés" @@ -3849,14 +3857,17 @@ fitToWidth = "Szélességhez igazítás" actualSize = "Tényleges méret" [viewer] +cannotPreviewFile = "A fájl előnézete nem lehetséges" +dualPageView = "Kétoldalas nézet" firstPage = "Első oldal" lastPage = "Utolsó oldal" -previousPage = "Előző oldal" nextPage = "Következő oldal" +onlyPdfSupported = "A megjelenítő csak PDF fájlokat támogat. Úgy tűnik, ez a fájl más formátumú." +previousPage = "Előző oldal" +singlePageView = "Egyoldalas nézet" +unknownFile = "Ismeretlen fájl" zoomIn = "Nagyítás" zoomOut = "Kicsinyítés" -singlePageView = "Egyoldalas nézet" -dualPageView = "Kétoldalas nézet" [rightRail] closeSelected = "Kijelölt fájlok bezárása" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} kiválasztva" download = "Letöltés" delete = "Törlés" unsupported = "Nem támogatott" +active = "Aktív" addToUpload = "Hozzáadás a feltöltéshez" +closeFile = "Fájl bezárása" deleteAll = "Összes törlése" loadingFiles = "Fájlok betöltése..." noFiles = "Nem állnak rendelkezésre fájlok" @@ -5800,6 +5813,13 @@ submit = "Bejelentkezés" signInWith = "Bejelentkezés ezzel" oauthPending = "Böngésző megnyitása hitelesítéshez..." orContinueWith = "Vagy folytassa e-maillel" +serverRequirement = "Megjegyzés: A szerveren engedélyezni kell a bejelentkezést." +showInstructions = "Hogyan engedélyezhető?" +hideInstructions = "Utasítások elrejtése" +instructions = "A bejelentkezés engedélyezéséhez a Stirling PDF szerverén:" +instructionsEnvVar = "Állítsa be a környezeti változót:" +instructionsOrYml = "Vagy a settings.yml-ben:" +instructionsRestart = "Ezután indítsa újra a szervert, hogy a módosítások életbe lépjenek." [setup.login.username] label = "Felhasználónév" diff --git a/frontend/public/locales/id-ID/translation.toml b/frontend/public/locales/id-ID/translation.toml index cd402800d0..98edabee01 100644 --- a/frontend/public/locales/id-ID/translation.toml +++ b/frontend/public/locales/id-ID/translation.toml @@ -163,6 +163,11 @@ unfavorite = "Hapus dari Favorit" fullscreen = "Beralih ke mode layar penuh" sidebar = "Beralih ke mode bilah sisi" +[backendStartup] +notFoundTitle = "Backend tidak ditemukan" +retry = "Coba lagi" +unreachable = "Aplikasi saat ini tidak dapat terhubung ke backend. Periksa status backend dan konektivitas jaringan, lalu coba lagi." + [zipWarning] title = "File ZIP Besar" message = "ZIP ini berisi {{count}} file. Tetap ekstrak?" @@ -544,8 +549,8 @@ usage = "Lihat Penggunaan" [endpointStatistics] title = "Statistik Endpoint" header = "Statistik Endpoint" -top10 = "Top 10" -top20 = "Top 20" +top10 = "10 Teratas" +top20 = "20 Teratas" all = "Semua" refresh = "Muat Ulang" dataTypeLabel = "Tipe Data:" @@ -1176,7 +1181,7 @@ selectFilesPlaceholder = "Pilih file di tampilan utama untuk memulai" settings = "Pengaturan" conversionCompleted = "Konversi selesai" results = "Hasil" -defaultFilename = "converted_file" +defaultFilename = "file_terkonversi" conversionResults = "Hasil Konversi" convertFrom = "Konversi dari" convertTo = "Konversi ke" @@ -1363,7 +1368,7 @@ title = "Tambahkan Watermark" desc = "Tambahkan tanda air teks atau gambar ke file PDF" completed = "Tanda air ditambahkan" submit = "Tambahkan Watermark" -filenamePrefix = "watermarked" +filenamePrefix = "bertanda_air" [watermark.error] failed = "Terjadi kesalahan saat menambahkan tanda air ke PDF." @@ -2704,7 +2709,7 @@ header = "Hapus sertifikat digital dari PDF" selectPDF = "Pilih file PDF:" submit = "Hapus Tanda Tangan" description = "Alat ini akan menghapus tanda tangan sertifikat digital dari dokumen PDF Anda." -filenamePrefix = "unsigned" +filenamePrefix = "tanpa_tanda_tangan" [removeCertSign.files] placeholder = "Pilih file PDF di tampilan utama untuk memulai" @@ -3441,6 +3446,9 @@ signinTitle = "Silakan masuk" ssoSignIn = "Masuk melalui Single Sign - on" oAuth2AutoCreateDisabled = "OAUTH2 Buat Otomatis Pengguna Dinonaktifkan" oAuth2AdminBlockedUser = "Registrasi atau login pengguna yang tidak terdaftar saat ini diblokir. Silakan hubungi administrator." +oAuth2RequiresLicense = "Login OAuth/SSO memerlukan lisensi berbayar (Server atau Enterprise). Silakan hubungi administrator untuk meningkatkan paket Anda." +saml2RequiresLicense = "Login SAML memerlukan lisensi berbayar (Server atau Enterprise). Silakan hubungi administrator untuk meningkatkan paket Anda." +maxUsersReached = "Jumlah pengguna maksimum untuk lisensi Anda saat ini telah tercapai. Silakan hubungi administrator untuk meningkatkan paket Anda atau menambah seat." oauth2RequestNotFound = "Permintaan otorisasi tidak ditemukan" oauth2InvalidUserInfoResponse = "Respons Info Pengguna Tidak Valid" oauth2invalidRequest = "Permintaan Tidak Valid" @@ -3536,7 +3544,7 @@ title = "PDF Ke Halaman Tunggal" header = "PDF Ke Halaman Tunggal" submit = "Konversi ke Halaman Tunggal" description = "Alat ini akan menggabungkan semua halaman PDF Anda menjadi satu halaman besar. Lebarnya akan tetap sama dengan halaman asli, tetapi tingginya merupakan penjumlahan dari semua tinggi halaman." -filenamePrefix = "single_page" +filenamePrefix = "halaman_tunggal" [pdfToSinglePage.files] placeholder = "Pilih file PDF di tampilan utama untuk memulai" @@ -3849,14 +3857,17 @@ fitToWidth = "Sesuaikan ke Lebar" actualSize = "Ukuran Asli" [viewer] +cannotPreviewFile = "Tidak dapat menampilkan pratinjau file" +dualPageView = "Tampilan Dua Halaman" firstPage = "Halaman Pertama" lastPage = "Halaman Terakhir" -previousPage = "Halaman Sebelumnya" nextPage = "Halaman Berikutnya" +onlyPdfSupported = "Penampil hanya mendukung file PDF. File ini tampaknya memiliki format yang berbeda." +previousPage = "Halaman Sebelumnya" +singlePageView = "Tampilan Satu Halaman" +unknownFile = "File tidak dikenal" zoomIn = "Perbesar" zoomOut = "Perkecil" -singlePageView = "Tampilan Satu Halaman" -dualPageView = "Tampilan Dua Halaman" [rightRail] closeSelected = "Tutup File Terpilih" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} dipilih" download = "Unduh" delete = "Hapus" unsupported = "Tidak didukung" +active = "Aktif" addToUpload = "Tambahkan ke Unggahan" +closeFile = "Tutup File" deleteAll = "Hapus Semua" loadingFiles = "Memuat file..." noFiles = "Tidak ada file tersedia" @@ -5800,6 +5813,13 @@ submit = "Login" signInWith = "Masuk dengan" oauthPending = "Membuka browser untuk autentikasi..." orContinueWith = "Atau lanjut dengan email" +serverRequirement = "Catatan: Server harus mengaktifkan login." +showInstructions = "Bagaimana cara mengaktifkannya?" +hideInstructions = "Sembunyikan instruksi" +instructions = "Untuk mengaktifkan login pada server Stirling PDF Anda:" +instructionsEnvVar = "Setel variabel lingkungan:" +instructionsOrYml = "Atau di settings.yml:" +instructionsRestart = "Kemudian mulai ulang server Anda agar perubahan diterapkan." [setup.login.username] label = "Nama pengguna" diff --git a/frontend/public/locales/it-IT/translation.toml b/frontend/public/locales/it-IT/translation.toml index cb0ea0b097..7f8f53376f 100644 --- a/frontend/public/locales/it-IT/translation.toml +++ b/frontend/public/locales/it-IT/translation.toml @@ -163,6 +163,11 @@ unfavorite = "Rimuovi dai preferiti" fullscreen = "Passa alla modalità a schermo intero" sidebar = "Passa alla modalità barra laterale" +[backendStartup] +notFoundTitle = "Backend non trovato" +retry = "Riprova" +unreachable = "L'applicazione al momento non riesce a connettersi al backend. Verificare lo stato del backend e la connettività di rete, quindi riprovare." + [zipWarning] title = "File ZIP di grandi dimensioni" message = "Questo ZIP contiene {{count}} file. Estrarre comunque?" @@ -339,7 +344,7 @@ popular = "Popolare" title = "Preferenze" [settings.workspace] -title = "Workspace" +title = "Area di lavoro" people = "Persone" teams = "Team" @@ -2844,8 +2849,8 @@ label = "Fattore di scala" [adjustPageScale.pageSize] label = "Dimensione pagina di destinazione" keep = "Mantieni dimensioni originali" -letter = "Letter" -legal = "Legal" +letter = "Lettera" +legal = "Legale" [adjustPageScale.error] failed = "Si è verificato un errore durante la regolazione della scala della pagina." @@ -3441,6 +3446,9 @@ signinTitle = "Per favore accedi" ssoSignIn = "Accedi tramite Single Sign-on" oAuth2AutoCreateDisabled = "Creazione automatica utente OAUTH2 DISABILITATA" oAuth2AdminBlockedUser = "La registrazione o l'accesso degli utenti non registrati è attualmente bloccata. Si prega di contattare l'amministratore." +oAuth2RequiresLicense = "L'accesso OAuth/SSO richiede una licenza a pagamento (Server o Enterprise). Contatta l'amministratore per aggiornare il tuo piano." +saml2RequiresLicense = "L'accesso SAML richiede una licenza a pagamento (Server o Enterprise). Contatta l'amministratore per aggiornare il tuo piano." +maxUsersReached = "Numero massimo di utenti raggiunto per la licenza corrente. Contatta l'amministratore per aggiornare il piano o aggiungere altri posti." oauth2RequestNotFound = "Richiesta di autorizzazione non trovata" oauth2InvalidUserInfoResponse = "Risposta relativa alle informazioni utente non valida" oauth2invalidRequest = "Richiesta non valida" @@ -3849,14 +3857,17 @@ fitToWidth = "Adatta alla larghezza" actualSize = "Dimensione reale" [viewer] +cannotPreviewFile = "Impossibile visualizzare l'anteprima del file" +dualPageView = "Vista doppia pagina" firstPage = "Prima pagina" lastPage = "Ultima pagina" -previousPage = "Pagina precedente" nextPage = "Pagina successiva" +onlyPdfSupported = "Il visualizzatore supporta solo file PDF. Questo file sembra essere in un formato diverso." +previousPage = "Pagina precedente" +singlePageView = "Vista pagina singola" +unknownFile = "File sconosciuto" zoomIn = "Ingrandisci" zoomOut = "Riduci" -singlePageView = "Vista pagina singola" -dualPageView = "Vista doppia pagina" [rightRail] closeSelected = "Chiudi file selezionati" @@ -3928,7 +3939,7 @@ files = "File" activity = "Attività" help = "Guida" account = "Account" -config = "Config" +config = "Configurazione" settings = "Opzioni" adminSettings = "Opzioni Admin" allTools = "Funzioni" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} selezionati" download = "Salva" delete = "Elimina" unsupported = "Non supportato" +active = "Attivo" addToUpload = "Aggiungi al caricamento" +closeFile = "Chiudi file" deleteAll = "Elimina tutto" loadingFiles = "Caricamento file..." noFiles = "Nessun file disponibile" @@ -5197,7 +5210,7 @@ subtitle = "Digita o incolla le email qui sotto, separate da virgole. La tua are [workspace.people.actions] label = "Azioni" -upgrade = "Upgrade" +upgrade = "Aggiorna" [workspace.people.roleDescriptions] admin = "Può gestire impostazioni e invitare membri, con pieno accesso amministrativo." @@ -5800,6 +5813,13 @@ submit = "Login" signInWith = "Accedi con" oauthPending = "Apertura del browser per l'autenticazione..." orContinueWith = "Oppure continua con email" +serverRequirement = "Nota: il server deve avere il login abilitato." +showInstructions = "Come abilitarlo?" +hideInstructions = "Nascondi istruzioni" +instructions = "Per abilitare il login sul tuo server Stirling PDF:" +instructionsEnvVar = "Imposta la variabile d'ambiente:" +instructionsOrYml = "Oppure in settings.yml:" +instructionsRestart = "Quindi riavvia il server affinché le modifiche abbiano effetto." [setup.login.username] label = "Nome utente" @@ -5843,7 +5863,7 @@ paragraph = "Pagina a paragrafi" sparse = "Testo sparso" [pdfTextEditor.groupingMode] -auto = "Auto" +auto = "Automatico" paragraph = "Paragrafo" singleLine = "Riga singola" diff --git a/frontend/public/locales/ja-JP/translation.toml b/frontend/public/locales/ja-JP/translation.toml index c3981c64aa..28ee999cb1 100644 --- a/frontend/public/locales/ja-JP/translation.toml +++ b/frontend/public/locales/ja-JP/translation.toml @@ -163,6 +163,11 @@ unfavorite = "お気に入りから削除" fullscreen = "フルスクリーンモードに切り替え" sidebar = "サイドバーモードに切り替え" +[backendStartup] +notFoundTitle = "バックエンドが見つかりません" +retry = "再試行" +unreachable = "現在、アプリケーションはバックエンドに接続できません。バックエンドの稼働状況とネットワーク接続を確認し、再度お試しください。" + [zipWarning] title = "大きな ZIP ファイル" message = "このZIPには{{count}}個のファイルが含まれています。展開しますか?" @@ -1176,7 +1181,7 @@ selectFilesPlaceholder = "開始するにはメインビューでファイルを settings = "設定" conversionCompleted = "変換が完了しました" results = "結果" -defaultFilename = "converted_file" +defaultFilename = "変換済みファイル" conversionResults = "変換結果" convertFrom = "変換元" convertTo = "変換先" @@ -1363,7 +1368,7 @@ title = "透かしの追加" desc = "PDF ファイルにテキストまたは画像の透かしを追加" completed = "透かしを追加しました" submit = "透かしを追加" -filenamePrefix = "watermarked" +filenamePrefix = "透かし入り" [watermark.error] failed = "PDF への透かし追加中にエラーが発生しました。" @@ -1638,7 +1643,7 @@ subtitle = "処理済みファイルをダウンロードするか、下で操 [removePages] tags = "ページを削除,ページ削除" title = "削除" -filenamePrefix = "pages_removed" +filenamePrefix = "ページ削除済み" submit = "削除" [removePages.pageNumbers] @@ -1840,7 +1845,7 @@ title = "フォームフィールドから読み取り専用を削除" header = "PDFフォームのロックを解除" submit = "Remove" description = "このツールは PDF フォームフィールドの読み取り専用制限を解除し、編集・入力可能にします。" -filenamePrefix = "unlocked_forms" +filenamePrefix = "フォームのロック解除済み" [unlockPDFForms.files] placeholder = "メインビューで PDF ファイルを選択して開始してください" @@ -1854,7 +1859,7 @@ title = "フォームのロック解除結果" [changeMetadata] header = "メタデータの変更" submit = "変更" -filenamePrefix = "metadata" +filenamePrefix = "メタデータ" [changeMetadata.settings] title = "メタデータ設定" @@ -2321,7 +2326,7 @@ title = "平坦化" header = "PDFを平坦化する" flattenOnlyForms = "フォームのみを平坦にする" submit = "平坦化" -filenamePrefix = "flattened" +filenamePrefix = "フラット化済み" [flatten.files] placeholder = "開始するにはメインビューで PDF ファイルを選択してください" @@ -2369,7 +2374,7 @@ title = "修復" header = "PDFを修復" submit = "修復" description = "このツールは破損または損傷した PDF ファイルの修復を試みます。追加の設定は不要です。" -filenamePrefix = "repaired" +filenamePrefix = "修復済み" [repair.files] placeholder = "開始するにはメイン画面で PDF ファイルを選択してください" @@ -2570,7 +2575,7 @@ stopButton = "比較を停止" [certSign] tags = "authenticate,PEM,P12,official,encrypt" title = "証明書による署名" -filenamePrefix = "signed" +filenamePrefix = "署名済み" chooseCertificate = "証明書ファイルを選択" chooseJksFile = "JKS ファイルを選択" chooseP12File = "PKCS12 ファイルを選択" @@ -2704,7 +2709,7 @@ header = "PDFから電子証明書を削除する" selectPDF = "PDFファイルの選択:" submit = "署名の削除" description = "このツールは PDF 文書からデジタル証明書署名を削除します。" -filenamePrefix = "unsigned" +filenamePrefix = "署名なし" [removeCertSign.files] placeholder = "開始するにはメイン画面で PDF ファイルを選択してください" @@ -3441,6 +3446,9 @@ signinTitle = "サインインしてください" ssoSignIn = "シングルサインオンでログイン" oAuth2AutoCreateDisabled = "OAuth 2自動作成ユーザーが無効" oAuth2AdminBlockedUser = "現在、未登録ユーザーの登録またはログインはブロックされています。管理者にお問い合わせください。" +oAuth2RequiresLicense = "OAuth/SSO ログインには有料ライセンス(Server または Enterprise)が必要です。プランのアップグレードについては管理者にお問い合わせください。" +saml2RequiresLicense = "SAML ログインには有料ライセンス(Server または Enterprise)が必要です。プランのアップグレードについては管理者にお問い合わせください。" +maxUsersReached = "現在のライセンスのユーザー数上限に達しました。プランのアップグレードまたはシート数の追加について、管理者にお問い合わせください。" oauth2RequestNotFound = "認証リクエストが見つかりません" oauth2InvalidUserInfoResponse = "無効なユーザー情報の応答" oauth2invalidRequest = "無効なリクエスト" @@ -3536,7 +3544,7 @@ title = "PDFを単一ページに変換" header = "PDFを単一ページに変換" submit = "単一ページに変換" description = "このツールは PDF の全ページを 1 つの大きな単一ページに結合します。幅は元のページと同じで、高さは全ページの高さの合計になります。" -filenamePrefix = "single_page" +filenamePrefix = "単一ページ" [pdfToSinglePage.files] placeholder = "開始するにはメイン画面で PDF ファイルを選択してください" @@ -3849,14 +3857,17 @@ fitToWidth = "幅に合わせる" actualSize = "原寸" [viewer] +cannotPreviewFile = "ファイルをプレビューできません" +dualPageView = "見開き表示" firstPage = "最初のページ" lastPage = "最後のページ" -previousPage = "前のページ" nextPage = "次のページ" +onlyPdfSupported = "このビューアは PDF ファイルのみをサポートしています。このファイルは別の形式のようです。" +previousPage = "前のページ" +singlePageView = "単一ページ表示" +unknownFile = "不明なファイル" zoomIn = "拡大" zoomOut = "縮小" -singlePageView = "単一ページ表示" -dualPageView = "見開き表示" [rightRail] closeSelected = "選択したファイルを閉じる" @@ -4234,15 +4245,15 @@ label = "プロバイダ" description = "認証に使用する OAuth2 プロバイダ" [admin.settings.connections.oauth2.issuer] -label = "Issuer URL" +label = "発行者 URL" description = "OAuth2 プロバイダの Issuer URL" [admin.settings.connections.oauth2.clientId] -label = "Client ID" +label = "クライアント ID" description = "プロバイダから発行された OAuth2 の Client ID" [admin.settings.connections.oauth2.clientSecret] -label = "Client Secret" +label = "クライアント シークレット" description = "プロバイダから発行された OAuth2 の Client Secret" [admin.settings.connections.oauth2.useAsUsername] @@ -4273,7 +4284,7 @@ label = "プロバイダ" description = "SAML2 プロバイダ名" [admin.settings.connections.saml2.registrationId] -label = "Registration ID" +label = "登録 ID" description = "SAML2 の登録識別子" [admin.settings.connections.saml2.autoCreateUser] @@ -4410,7 +4421,7 @@ description = "より広範なシステム一時ディレクトリをクリー label = "プロセス実行制限" description = "各プロセス実行器のセッション上限とタイムアウトを設定" libreOffice = "LibreOffice" -pdfToHtml = "PDF to HTML" +pdfToHtml = "PDF を HTML に" qpdf = "QPDF" tesseract = "Tesseract OCR" pythonOpenCv = "Python OpenCV" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} 件選択" download = "ダウンロード" delete = "削除" unsupported = "未対応" +active = "アクティブ" addToUpload = "アップロードに追加" +closeFile = "ファイルを閉じる" deleteAll = "すべて削除" loadingFiles = "ファイルを読み込み中..." noFiles = "ファイルはありません" @@ -4672,7 +4685,7 @@ title = "サニタイズ" desc = "PDF ファイルから潜在的に有害な要素を削除します。" submit = "PDFをサニタイズ" completed = "サニタイズが正常に完了しました" -filenamePrefix = "sanitised" +filenamePrefix = "サニタイズ済み" sanitizationResults = "サニタイズ結果" [sanitize.error] @@ -4720,7 +4733,7 @@ title = "パスワードの追加" desc = "パスワードで PDF 文書を暗号化します。" completed = "パスワード保護を適用しました" submit = "暗号化" -filenamePrefix = "encrypted" +filenamePrefix = "暗号化済み" [addPassword.error] failed = "PDF の暗号化中にエラーが発生しました。" @@ -4815,7 +4828,7 @@ text = "これらの権限を変更不可にするには、パスワード追加 title = "パスワードの削除" desc = "PDFからパスワードの削除します。" tags = "セキュア,復号,セキュリティ,パスワード解除,パスワード削除" -filenamePrefix = "decrypted" +filenamePrefix = "復号済み" submit = "削除" [removePassword.password] @@ -5800,13 +5813,20 @@ submit = "ログイン" signInWith = "でサインイン" oauthPending = "認証のためブラウザーを開いています..." orContinueWith = "またはメールで続行" +serverRequirement = "注: サーバーでログインを有効にする必要があります。" +showInstructions = "有効化するには?" +hideInstructions = "手順を非表示" +instructions = "Stirling PDF サーバーでログインを有効にするには:" +instructionsEnvVar = "環境変数を設定:" +instructionsOrYml = "または settings.yml で:" +instructionsRestart = "その後、サーバーを再起動して変更を反映させてください。" [setup.login.username] label = "ユーザー名" placeholder = "ユーザー名を入力" [setup.login.email] -label = "Email" +label = "メールアドレス" placeholder = "メールアドレスを入力" [setup.login.password] diff --git a/frontend/public/locales/ko-KR/translation.toml b/frontend/public/locales/ko-KR/translation.toml index fbf2bdc215..88d21da5bb 100644 --- a/frontend/public/locales/ko-KR/translation.toml +++ b/frontend/public/locales/ko-KR/translation.toml @@ -163,6 +163,11 @@ unfavorite = "즐겨찾기에서 제거" fullscreen = "전체 화면 모드로 전환" sidebar = "사이드바 모드로 전환" +[backendStartup] +notFoundTitle = "백엔드를 찾을 수 없음" +retry = "재시도" +unreachable = "현재 애플리케이션이 백엔드에 연결할 수 없습니다. 백엔드 상태와 네트워크 연결을 확인한 후 다시 시도하세요." + [zipWarning] title = "큰 ZIP 파일" message = "이 ZIP에는 {{count}}개의 파일이 포함되어 있습니다. 그래도 압축을 해제하시겠습니까?" @@ -3441,6 +3446,9 @@ signinTitle = "로그인해 주세요" ssoSignIn = "단일 로그인으로 로그인" oAuth2AutoCreateDisabled = "OAuth2 사용자 자동 생성이 비활성화되었습니다" oAuth2AdminBlockedUser = "현재 미등록 사용자의 등록 또는 로그인이 차단되어 있습니다. 관리자에게 문의하세요." +oAuth2RequiresLicense = "OAuth/SSO 로그인은 유료 라이선스(서버 또는 엔터프라이즈)가 필요합니다. 플랜 업그레이드를 위해 관리자에게 문의하세요." +saml2RequiresLicense = "SAML 로그인은 유료 라이선스(서버 또는 엔터프라이즈)가 필요합니다. 플랜 업그레이드를 위해 관리자에게 문의하세요." +maxUsersReached = "현재 라이선스에서 허용된 최대 사용자 수에 도달했습니다. 플랜 업그레이드 또는 시트 추가를 위해 관리자에게 문의하세요." oauth2RequestNotFound = "인증 요청을 찾을 수 없습니다" oauth2InvalidUserInfoResponse = "잘못된 사용자 정보 응답" oauth2invalidRequest = "잘못된 요청" @@ -3849,14 +3857,17 @@ fitToWidth = "너비에 맞추기" actualSize = "실제 크기" [viewer] +cannotPreviewFile = "파일을 미리보기할 수 없습니다" +dualPageView = "두 페이지 보기" firstPage = "첫 페이지" lastPage = "마지막 페이지" -previousPage = "이전 페이지" nextPage = "다음 페이지" +onlyPdfSupported = "뷰어는 PDF 파일만 지원합니다. 이 파일은 다른 형식인 것으로 보입니다." +previousPage = "이전 페이지" +singlePageView = "단일 페이지 보기" +unknownFile = "알 수 없는 파일" zoomIn = "확대" zoomOut = "축소" -singlePageView = "단일 페이지 보기" -dualPageView = "두 페이지 보기" [rightRail] closeSelected = "선택한 파일 닫기" @@ -4410,7 +4421,7 @@ description = "더 넓은 시스템 임시 디렉터리를 정리할지 여부( label = "프로세스 실행기 제한" description = "각 프로세스 실행기의 세션 제한 및 시간 제한을 구성합니다" libreOffice = "LibreOffice" -pdfToHtml = "PDF to HTML" +pdfToHtml = "PDF를 HTML로" qpdf = "QPDF" tesseract = "Tesseract OCR" pythonOpenCv = "Python OpenCV" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}}개 선택됨" download = "다운로드" delete = "삭제" unsupported = "지원되지 않음" +active = "활성" addToUpload = "업로드에 추가" +closeFile = "파일 닫기" deleteAll = "모두 삭제" loadingFiles = "파일 불러오는 중..." noFiles = "사용 가능한 파일이 없습니다" @@ -5800,6 +5813,13 @@ submit = "로그인" signInWith = "다음으로 로그인" oauthPending = "인증을 위해 브라우저를 여는 중..." orContinueWith = "또는 이메일로 계속" +serverRequirement = "참고: 서버에서 로그인 기능이 활성화되어 있어야 합니다." +showInstructions = "활성화 방법" +hideInstructions = "지침 숨기기" +instructions = "Stirling PDF 서버에서 로그인 기능을 활성화하려면:" +instructionsEnvVar = "다음 환경 변수를 설정하세요:" +instructionsOrYml = "또는 settings.yml에서:" +instructionsRestart = "그런 다음 변경 사항을 적용하려면 서버를 재시작하세요." [setup.login.username] label = "사용자 이름" diff --git a/frontend/public/locales/ml-ML/translation.toml b/frontend/public/locales/ml-ML/translation.toml index 496594a016..2e56ef35ef 100644 --- a/frontend/public/locales/ml-ML/translation.toml +++ b/frontend/public/locales/ml-ML/translation.toml @@ -163,6 +163,11 @@ unfavorite = "പ്രിയപ്പെട്ടവയിൽ നിന്ന fullscreen = "ഫുൾസ്ക്രീൻ മോഡിലേക്കു മാറ്റുക" sidebar = "സൈഡ്ബാർ മോഡിലേക്കു മാറ്റുക" +[backendStartup] +notFoundTitle = "ബാക്ക്‌എൻഡ് കണ്ടെത്താനായില്ല" +retry = "വീണ്ടും ശ്രമിക്കുക" +unreachable = "ഈ ആപ്പ്ലിക്കേഷൻ നിലവിൽ ബാക്ക്‌എൻഡുമായി കണക്റ്റ് ചെയ്യാൻ കഴിയുന്നില്ല. ബാക്ക്‌എൻഡിന്റെ നിലയും നെറ്റ്‌വർക്ക് കണക്റ്റിവിറ്റിയും പരിശോധിച്ച് വീണ്ടും ശ്രമിക്കുക." + [zipWarning] title = "വലിയ ZIP ഫയൽ" message = "ഈ ZIP-ൽ {{count}} ഫയലുകൾ ഉണ്ട്. എങ്കിലും എക്സ്ട്രാക്റ്റ് ചെയ്യട്ടേ?" @@ -369,7 +374,7 @@ privacy = "സ്വകാര്യത" [settings.developer] title = "ഡെവലപ്പർ" -apiKeys = "API Keys" +apiKeys = "API കീകൾ" [settings.tooltips] enableLoginFirst = "ആദ്യം ലോഗിൻ മോഡ് സജീവമാക്കുക" @@ -917,7 +922,7 @@ title = "PDF ടെക്സ്റ്റ് എഡിറ്റർ" desc = "ഗ്രൂപ്പുചെയ്ത ടെക്സ്റ്റ് എഡിറ്റിംഗിനോടും PDF വീണ്ടും സൃഷ്ടിക്കുന്നതോടും കൂടി Stirling PDF JSON എക്സ്പോർട്ടുകൾ റിവ്യൂ ചെയ്ത് എഡിറ്റ് ചെയ്യുക" [home.addText] -tags = "text,annotation,label" +tags = "ടെക്സ്റ്റ്,അനോട്ടേഷൻ,ലേബൽ" title = "ടെക്സ്റ്റ് ചേർക്കുക" desc = "നിങ്ങളുടെ PDF-ൽ എവിടെയിലും കസ്റ്റം ടെക്സ്റ്റ് ചേർക്കുക" @@ -2734,7 +2739,7 @@ submit = "സമർപ്പിക്കുക" failed = "മൾട്ടി-പേജ് ലേഔട്ട് സൃഷ്ടിക്കുമ്പോൾ പിശക് സംഭവിച്ചു." [bookletImposition] -tags = "booklet,imposition,printing,binding,folding,signature" +tags = "ബുക്ക്‌ലെറ്റ്,ഇംപോസിഷൻ,പ്രിന്റിംഗ്,ബൈൻഡിംഗ്,മടക്കൽ,സിഗ്നേച്ചർ" title = "ബുക്ക്ലെറ്റ് ഇംപോസിഷൻ" header = "ബുക്ക്ലെറ്റ് ഇംപോസിഷൻ" submit = "ബുക്ക്ലെറ്റ് സൃഷ്ടിക്കുക" @@ -2833,7 +2838,7 @@ scaleFactor = "ഒരു പേജിന്റെ സൂം നില (ക്ര submit = "സമർപ്പിക്കുക" [adjustPageScale] -tags = "resize,modify,dimension,adapt" +tags = "വലിപ്പമാറ്റം,ഭേദഗതി,പരിമാണം,അനുസൃതമാക്കൽ" title = "പേജ് സ്കെയിൽ ക്രമപ്പെടുത്തുക" header = "പേജ് സ്കെയിൽ ക്രമപ്പെടുത്തുക" submit = "പേജ് സ്കെയിൽ ക്രമപ്പെടുത്തുക" @@ -3383,7 +3388,7 @@ certHint = "കസ്റ്റം ട്രസ്റ്റ് സോഴ്‌സ title = "സ്ഥിരീകരണ സെറ്റിങ്ങുകൾ" [replaceColor] -tags = "Replace Colour,Page operations,Back end,server side" +tags = "നിറം പകരുക,പേജ് പ്രവർത്തനങ്ങൾ,ബാക്ക്‌എൻഡ്,സെർവർ-സൈഡ്" [replaceColor.labels] settings = "സെറ്റിങ്ങുകൾ" @@ -3441,6 +3446,9 @@ signinTitle = "ദയവായി സൈൻ ഇൻ ചെയ്യുക" ssoSignIn = "സിംഗിൾ സൈൻ-ഓൺ വഴി ലോഗിൻ ചെയ്യുക" oAuth2AutoCreateDisabled = "OAUTH2 ഓട്ടോ-ക്രിയേറ്റ് യൂസർ പ്രവർത്തനരഹിതമാക്കി" oAuth2AdminBlockedUser = "രജിസ്റ്റർ ചെയ്യാത്ത ഉപയോക്താക്കളുടെ രജിസ്ട്രേഷനോ ലോഗിൻ ചെയ്യുന്നതോ നിലവിൽ തടഞ്ഞിരിക്കുന്നു. ദയവായി അഡ്മിനിസ്ട്രേറ്ററുമായി ബന്ധപ്പെടുക." +oAuth2RequiresLicense = "OAuth/SSO ലോഗിനിന് ഒരു പെയ്ഡ് ലൈസൻസ് (Server അല്ലെങ്കിൽ Enterprise) ആവശ്യമാണ്. നിങ്ങളുടെ പ്ലാൻ അപ്‌ഗ്രേഡ് ചെയ്യാൻ അഡ്മിനിസ്ട്രേറ്ററുമായി ബന്ധപ്പെടുക." +saml2RequiresLicense = "SAML ലോഗിനിന് ഒരു പെയ്ഡ് ലൈസൻസ് (Server അല്ലെങ്കിൽ Enterprise) ആവശ്യമാണ്. നിങ്ങളുടെ പ്ലാൻ അപ്‌ഗ്രേഡ് ചെയ്യാൻ അഡ്മിനിസ്ട്രേറ്ററുമായി ബന്ധപ്പെടുക." +maxUsersReached = "നിലവിലുള്ള ലൈസൻസിലെ പരമാവധി ഉപയോക്താക്കൾ എത്തിച്ചേർന്നു. നിങ്ങളുടെ പ്ലാൻ അപ്‌ഗ്രേഡ് ചെയ്യുകയോ കൂടുതൽ സീറ്റുകൾ ചേർക്കുകയോ ചെയ്യാൻ അഡ്മിനിസ്ട്രേറ്ററുമായി ബന്ധപ്പെടുക." oauth2RequestNotFound = "അംഗീകാര അഭ്യർത്ഥന കണ്ടെത്തിയില്ല" oauth2InvalidUserInfoResponse = "അസാധുവായ ഉപയോക്തൃ വിവര പ്രതികരണം" oauth2invalidRequest = "അസാധുവായ അഭ്യർത്ഥന" @@ -3774,7 +3782,7 @@ version = "നിലവിലെ റിലീസ്" title = "API ഡോക്യുമെന്റേഷൻ" header = "API ഡോക്യുമെന്റേഷൻ" desc = "Stirling PDF API എൻഡ്പോയിന്റുകൾ കാണുകയും പരിശോധിക്കുകയും ചെയ്യുക" -tags = "api,documentation,swagger,endpoints,development" +tags = "api,ഡോക്യുമെന്റേഷൻ,swagger,എൻഡ്പോയിന്റുകൾ,വികസനം" [cookieBanner.popUp] title = "ഞങ്ങൾ കുക്കികൾ എങ്ങനെ ഉപയോഗിക്കുന്നു" @@ -3849,14 +3857,17 @@ fitToWidth = "വീതിക്ക് ഒത്താക്കുക" actualSize = "യഥാർത്ഥ വലിപ്പം" [viewer] +cannotPreviewFile = "ഫയൽ പ്രിവ്യൂ ചെയ്യാൻ കഴിയില്ല" +dualPageView = "രണ്ടുപേജ് ദൃശ്യം" firstPage = "ആദ്യ പേജ്" lastPage = "അവസാന പേജ്" -previousPage = "മുൻപത്തെ പേജ്" nextPage = "അടുത്ത പേജ്" +onlyPdfSupported = "വ്യൂവറിന് PDF ഫയലുകൾ മാത്രം പിന്തുണയ്ക്കാം. ഈ ഫയൽ വേറെ ഒരു ഫോർമാറ്റാണെന്ന് തോന്നുന്നു." +previousPage = "മുൻപത്തെ പേജ്" +singlePageView = "ഒറ്റ പേജ് ദൃശ്യം" +unknownFile = "അപരിചിതമായ ഫയൽ" zoomIn = "സൂം ഇൻ" zoomOut = "സൂം ഔട്ട്" -singlePageView = "ഒറ്റ പേജ് ദൃശ്യം" -dualPageView = "രണ്ടുപേജ് ദൃശ്യം" [rightRail] closeSelected = "തിരഞ്ഞെടുത്ത ഫയലുകൾ അടയ്‌ക്കുക" @@ -4234,7 +4245,7 @@ label = "പ്രൊവൈഡർ" description = "ഓതന്റിക്കേഷനായി ഉപയോഗിക്കുന്ന OAuth2 പ്രൊവൈഡർ" [admin.settings.connections.oauth2.issuer] -label = "Issuer URL" +label = "ഇഷ്യൂവർ URL" description = "OAuth2 പ്രൊവൈഡറിന്റെ issuer URL" [admin.settings.connections.oauth2.clientId] @@ -4258,7 +4269,7 @@ label = "രജിസ്‌ട്രേഷൻ തടയുക" description = "OAuth2 വഴി പുതിയ ഉപയോക്തൃ രജിസ്‌ട്രേഷൻ തടയുക" [admin.settings.connections.oauth2.scopes] -label = "OAuth2 Scopes" +label = "OAuth2 സ്കോപ്പുകൾ" description = "OAuth2 സ്കോപ്പുകളുടെ കോമ ഉപയോഗിച്ച് വേർതിരിച്ച പട്ടിക (ഉദാ., openid, profile, email)" [admin.settings.connections.saml2] @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} തിരഞ്ഞെടുക്കപ്പെട download = "ഡൗൺലോഡ്" delete = "ഇല്ലാതാക്കുക" unsupported = "പിന്തുണയില്ല" +active = "സജീവം" addToUpload = "അപ്‌ലോഡിലേക്ക് ചേർക്കുക" +closeFile = "ഫയൽ അടയ്ക്കുക" deleteAll = "എല്ലാം ഇല്ലാതാക്കുക" loadingFiles = "ഫയലുകൾ ലോഡുചെയ്യുന്നു..." noFiles = "ഫയലുകളൊന്നും ലഭ്യമല്ല" @@ -5800,6 +5813,13 @@ submit = "ലോഗിൻ" signInWith = "ഇതുപയോഗിച്ച് സൈൻ ഇൻ ചെയ്യുക" oauthPending = "ഓതന്റിക്കേഷനായി ബ്രൗസർ തുറക്കുന്നു..." orContinueWith = "അല്ലെങ്കിൽ ഇമെയിലോടെ തുടരുക" +serverRequirement = "ശ്രദ്ധിക്കുക: സെർവറിൽ ലോഗിൻ പ്രവർത്തനക്ഷമമാക്കിയിരിക്കണം." +showInstructions = "എങ്ങനെ പ്രവർത്തനക്ഷമമാക്കാം?" +hideInstructions = "നിർദ്ദേശങ്ങൾ മറയ്ക്കുക" +instructions = "നിങ്ങളുടെ Stirling PDF സെർവറിൽ ലോഗിൻ പ്രവർത്തനക്ഷമമാക്കാൻ:" +instructionsEnvVar = "Environment variable സജ്ജമാക്കുക:" +instructionsOrYml = "അല്ലെങ്കിൽ settings.yml-ൽ:" +instructionsRestart = "തുടർന്ന് മാറ്റങ്ങൾ പ്രാബല്യത്തിൽ വരാൻ നിങ്ങളുടെ സെർവർ റീസ്റ്റാർട്ട് ചെയ്യുക." [setup.login.username] label = "യൂസർനെയിം" @@ -5850,7 +5870,7 @@ singleLine = "സിംഗിൾ ലൈൻ" [pdfTextEditor.badges] unsaved = "എഡിറ്റ് ചെയ്തു" modified = "എഡിറ്റ് ചെയ്തു" -earlyAccess = "Early Access" +earlyAccess = "എർലി ആക്‌സസ്" [pdfTextEditor.actions] reset = "മാറ്റങ്ങൾ റീസെറ്റ് ചെയ്യുക" diff --git a/frontend/public/locales/nl-NL/translation.toml b/frontend/public/locales/nl-NL/translation.toml index 33f8c84d3d..ea49602f7a 100644 --- a/frontend/public/locales/nl-NL/translation.toml +++ b/frontend/public/locales/nl-NL/translation.toml @@ -163,6 +163,11 @@ unfavorite = "Uit favorieten verwijderen" fullscreen = "Overschakelen naar volledig scherm" sidebar = "Overschakelen naar zijbalkmodus" +[backendStartup] +notFoundTitle = "Backend niet gevonden" +retry = "Opnieuw proberen" +unreachable = "De applicatie kan momenteel geen verbinding maken met de backend. Controleer de status van de backend en de netwerkverbinding en probeer het vervolgens opnieuw." + [zipWarning] title = "Groot ZIP-bestand" message = "Dit ZIP-bestand bevat {{count}} bestanden. Toch uitpakken?" @@ -3441,6 +3446,9 @@ signinTitle = "Gelieve in te loggen" ssoSignIn = "Inloggen via Single Sign-on" oAuth2AutoCreateDisabled = "OAUTH2 Automatisch aanmaken gebruiker uitgeschakeld" oAuth2AdminBlockedUser = "Registratie of inloggen van niet-registreerde gebruikers is helaas momenteel geblokkeerd. Neem contact op met de beheerder." +oAuth2RequiresLicense = "OAuth/SSO-inloggen vereist een betaalde licentie (Server of Enterprise). Neem contact op met de beheerder om uw abonnement te upgraden." +saml2RequiresLicense = "SAML-inloggen vereist een betaalde licentie (Server of Enterprise). Neem contact op met de beheerder om uw abonnement te upgraden." +maxUsersReached = "Het maximumaantal gebruikers voor uw huidige licentie is bereikt. Neem contact op met de beheerder om uw abonnement te upgraden of extra plaatsen toe te voegen." oauth2RequestNotFound = "Autorisatieverzoek niet gevonden" oauth2InvalidUserInfoResponse = "Ongeldige reactie op gebruikersinfo" oauth2invalidRequest = "Ongeldig verzoek" @@ -3849,14 +3857,17 @@ fitToWidth = "Passend op breedte" actualSize = "Werkelijke grootte" [viewer] +cannotPreviewFile = "Kan voorbeeld van bestand niet weergeven" +dualPageView = "Dubbele paginaweergave" firstPage = "Eerste pagina" lastPage = "Laatste pagina" -previousPage = "Vorige pagina" nextPage = "Volgende pagina" +onlyPdfSupported = "De viewer ondersteunt alleen PDF-bestanden. Dit bestand lijkt een ander formaat te hebben." +previousPage = "Vorige pagina" +singlePageView = "Enkele paginaweergave" +unknownFile = "Onbekend bestand" zoomIn = "Inzoomen" zoomOut = "Uitzoomen" -singlePageView = "Enkele paginaweergave" -dualPageView = "Dubbele paginaweergave" [rightRail] closeSelected = "Geselecteerde bestanden sluiten" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} geselecteerd" download = "Downloaden" delete = "Verwijderen" unsupported = "Niet ondersteund" +active = "Actief" addToUpload = "Aan upload toevoegen" +closeFile = "Bestand sluiten" deleteAll = "Alles verwijderen" loadingFiles = "Bestanden laden..." noFiles = "Geen bestanden beschikbaar" @@ -5800,6 +5813,13 @@ submit = "Inloggen" signInWith = "Inloggen met" oauthPending = "Browser wordt geopend voor authenticatie..." orContinueWith = "Of ga verder met e-mail" +serverRequirement = "Let op: op de server moet inloggen zijn ingeschakeld." +showInstructions = "Hoe inschakelen?" +hideInstructions = "Instructies verbergen" +instructions = "Om inloggen op uw Stirling PDF-server in te schakelen:" +instructionsEnvVar = "Stel de omgevingsvariabele in:" +instructionsOrYml = "Of in settings.yml:" +instructionsRestart = "Start vervolgens uw server opnieuw zodat de wijzigingen van kracht worden." [setup.login.username] label = "Gebruikersnaam" diff --git a/frontend/public/locales/no-NB/translation.toml b/frontend/public/locales/no-NB/translation.toml index afcddabdd5..6153c5b0c1 100644 --- a/frontend/public/locales/no-NB/translation.toml +++ b/frontend/public/locales/no-NB/translation.toml @@ -131,7 +131,7 @@ unsupported = "Ikke støttet" [toolPanel] placeholder = "Velg et verktøy for å komme i gang" -alpha = "Alpha" +alpha = "Alfa" premiumFeature = "Premium-funksjon:" comingSoon = "Kommer snart:" @@ -163,6 +163,11 @@ unfavorite = "Fjern fra favoritter" fullscreen = "Bytt til fullskjerm-modus" sidebar = "Bytt til sidepanel-modus" +[backendStartup] +notFoundTitle = "Backend ikke funnet" +retry = "Prøv igjen" +unreachable = "Programmet kan for øyeblikket ikke koble til backend. Kontroller backend-status og nettverkstilkobling, og prøv igjen." + [zipWarning] title = "Stor ZIP-fil" message = "Denne ZIP-en inneholder {{count}} filer. Pakk ut likevel?" @@ -3441,6 +3446,9 @@ signinTitle = "Vennligst logg inn" ssoSignIn = "Logg inn via Enkel Pålogging" oAuth2AutoCreateDisabled = "OAUTH2 Auto-Opretting av bruker deaktivert" oAuth2AdminBlockedUser = "Registrering eller pålogging for ikke-registrerte brukere er for øyeblikket blokkert. Vennligst kontakt administrator" +oAuth2RequiresLicense = "OAuth/SSO-pålogging krever en betalt lisens (Server eller Enterprise). Kontakt administratoren for å oppgradere planen din." +saml2RequiresLicense = "SAML-pålogging krever en betalt lisens (Server eller Enterprise). Kontakt administratoren for å oppgradere planen din." +maxUsersReached = "Maksimalt antall brukere er nådd for din nåværende lisens. Kontakt administratoren for å oppgradere planen din eller legge til flere brukerplasser." oauth2RequestNotFound = "Autentiseringsforespørsel ikke funnet" oauth2InvalidUserInfoResponse = "Ugyldig brukerinforespons" oauth2invalidRequest = "Ugyldig forespørsel" @@ -3849,14 +3857,17 @@ fitToWidth = "Tilpass til bredde" actualSize = "Faktisk størrelse" [viewer] +cannotPreviewFile = "Kan ikke forhåndsvise fil" +dualPageView = "Dobbelsidevisning" firstPage = "Første side" lastPage = "Siste side" -previousPage = "Forrige side" nextPage = "Neste side" +onlyPdfSupported = "Visningsprogrammet støtter bare PDF-filer. Denne filen ser ut til å ha et annet format." +previousPage = "Forrige side" +singlePageView = "Enkeltsidevisning" +unknownFile = "Ukjent fil" zoomIn = "Zoom inn" zoomOut = "Zoom ut" -singlePageView = "Enkeltsidevisning" -dualPageView = "Dobbelsidevisning" [rightRail] closeSelected = "Lukk valgte filer" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} valgt" download = "Last ned" delete = "Slett" unsupported = "Ikke støttet" +active = "Aktiv" addToUpload = "Legg til i opplasting" +closeFile = "Lukk fil" deleteAll = "Slett alt" loadingFiles = "Laster filer..." noFiles = "Ingen filer tilgjengelig" @@ -5062,7 +5075,7 @@ title = "Erstatt-Inverter-Farge" [replace-color.options] fill = "Fyllfarge" -gradient = "Gradient" +gradient = "Fargeovergang" [replace-color.selectText] 1 = "Erstatt eller Inverter farge alternativer" @@ -5800,6 +5813,13 @@ submit = "Logg inn" signInWith = "Logg inn med" oauthPending = "Åpner nettleser for autentisering..." orContinueWith = "Eller fortsett med e-post" +serverRequirement = "Merk: Serveren må ha pålogging aktivert." +showInstructions = "Hvordan aktivere?" +hideInstructions = "Skjul instruksjoner" +instructions = "Slik aktiverer du pålogging på din Stirling PDF-server:" +instructionsEnvVar = "Sett miljøvariabelen:" +instructionsOrYml = "Eller i settings.yml:" +instructionsRestart = "Start deretter serveren på nytt for at endringene skal tre i kraft." [setup.login.username] label = "Brukernavn" @@ -5843,7 +5863,7 @@ paragraph = "Avsnittsside" sparse = "Sparsom tekst" [pdfTextEditor.groupingMode] -auto = "Auto" +auto = "Automatisk" paragraph = "Avsnitt" singleLine = "Én linje" diff --git a/frontend/public/locales/pl-PL/translation.toml b/frontend/public/locales/pl-PL/translation.toml index 7770e9a943..b43aeab5a7 100644 --- a/frontend/public/locales/pl-PL/translation.toml +++ b/frontend/public/locales/pl-PL/translation.toml @@ -163,6 +163,11 @@ unfavorite = "Usuń z ulubionych" fullscreen = "Przełącz na tryb pełnoekranowy" sidebar = "Przełącz na tryb paska bocznego" +[backendStartup] +notFoundTitle = "Nie znaleziono backendu" +retry = "Spróbuj ponownie" +unreachable = "Aplikacja nie może obecnie połączyć się z backendem. Sprawdź stan backendu i łączność sieciową, a następnie spróbuj ponownie." + [zipWarning] title = "Duży plik ZIP" message = "Ten ZIP zawiera {{count}} plików. Mimo to rozpakować?" @@ -3441,6 +3446,9 @@ signinTitle = "Zaloguj się" ssoSignIn = "Zaloguj się za pomocą logowania jednokrotnego" oAuth2AutoCreateDisabled = "Wyłączono automatyczne tworzenie użytkownika OAUTH2" oAuth2AdminBlockedUser = "Rejestracja lub logowanie niezarejestrowanych użytkowników jest obecnie zablokowane. Prosimy o kontakt z administratorem." +oAuth2RequiresLicense = "Logowanie OAuth/SSO wymaga płatnej licencji (Server lub Enterprise). Skontaktuj się z administratorem, aby uaktualnić swój plan." +saml2RequiresLicense = "Logowanie SAML wymaga płatnej licencji (Server lub Enterprise). Skontaktuj się z administratorem, aby uaktualnić swój plan." +maxUsersReached = "Osiągnięto maksymalną liczbę użytkowników dla Twojej obecnej licencji. Skontaktuj się z administratorem, aby uaktualnić plan lub dodać więcej miejsc." oauth2RequestNotFound = "Błąd logowania OAuth2" oauth2InvalidUserInfoResponse = "Niewłaściwe dane logowania" oauth2invalidRequest = "Nieprawidłowe żądanie" @@ -3849,14 +3857,17 @@ fitToWidth = "Dopasuj do szerokości" actualSize = "Rzeczywisty rozmiar" [viewer] +cannotPreviewFile = "Nie można wyświetlić podglądu pliku" +dualPageView = "Widok dwóch stron" firstPage = "Pierwsza strona" lastPage = "Ostatnia strona" -previousPage = "Poprzednia strona" nextPage = "Następna strona" +onlyPdfSupported = "Przeglądarka obsługuje tylko pliki PDF. Ten plik wydaje się mieć inny format." +previousPage = "Poprzednia strona" +singlePageView = "Widok pojedynczej strony" +unknownFile = "Nieznany plik" zoomIn = "Powiększ" zoomOut = "Pomniejsz" -singlePageView = "Widok pojedynczej strony" -dualPageView = "Widok dwóch stron" [rightRail] closeSelected = "Zamknij wybrane pliki" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} wybrane" download = "Pobierz" delete = "usuń" unsupported = "Nieobsługiwane" +active = "Aktywny" addToUpload = "Dodaj do przesyłania" +closeFile = "Zamknij plik" deleteAll = "Usuń wszystko" loadingFiles = "Ładowanie plików..." noFiles = "Brak dostępnych plików" @@ -5800,6 +5813,13 @@ submit = "Zaloguj" signInWith = "Zaloguj przez" oauthPending = "Otwieranie przeglądarki do uwierzytelnienia..." orContinueWith = "Lub kontynuuj e‑mailem" +serverRequirement = "Uwaga: Na serwerze musi być włączone logowanie." +showInstructions = "Jak włączyć?" +hideInstructions = "Ukryj instrukcje" +instructions = "Aby włączyć logowanie na swoim serwerze Stirling PDF:" +instructionsEnvVar = "Ustaw zmienną środowiskową:" +instructionsOrYml = "Lub w settings.yml:" +instructionsRestart = "Następnie uruchom ponownie serwer, aby zmiany zaczęły obowiązywać." [setup.login.username] label = "Nazwa użytkownika" @@ -5843,7 +5863,7 @@ paragraph = "Strona akapitowa" sparse = "Rzadki tekst" [pdfTextEditor.groupingMode] -auto = "Auto" +auto = "Automatycznie" paragraph = "Akapit" singleLine = "Pojedyncza linia" diff --git a/frontend/public/locales/pt-BR/translation.toml b/frontend/public/locales/pt-BR/translation.toml index b9f07c86ba..726053f81f 100644 --- a/frontend/public/locales/pt-BR/translation.toml +++ b/frontend/public/locales/pt-BR/translation.toml @@ -131,7 +131,7 @@ unsupported = "Não suportado" [toolPanel] placeholder = "Escolha uma ferramenta para começar" -alpha = "Alpha" +alpha = "Alfa" premiumFeature = "Recurso premium:" comingSoon = "Em breve:" @@ -163,6 +163,11 @@ unfavorite = "Remover dos favoritos" fullscreen = "Alternar para modo tela cheia" sidebar = "Alternar para modo barra lateral" +[backendStartup] +notFoundTitle = "Backend não encontrado" +retry = "Tentar novamente" +unreachable = "No momento, o aplicativo não consegue se conectar ao backend. Verifique o status do backend e a conectividade de rede e tente novamente." + [zipWarning] title = "Arquivo ZIP grande" message = "Este ZIP contém {{count}} arquivos. Extrair mesmo assim?" @@ -3441,6 +3446,9 @@ signinTitle = "Por favor, inicie a sessão" ssoSignIn = "Iniciar sessão através de login único (SSO)" oAuth2AutoCreateDisabled = "Auto-Criar Usuário OAUTH2 Desativado" oAuth2AdminBlockedUser = "O registro ou login de usuários não registrados está atualmente bloqueado. Entre em contato com o administrador." +oAuth2RequiresLicense = "O login via OAuth/SSO requer uma licença paga (Server ou Enterprise). Entre em contato com o administrador para atualizar seu plano." +saml2RequiresLicense = "O login via SAML requer uma licença paga (Server ou Enterprise). Entre em contato com o administrador para atualizar seu plano." +maxUsersReached = "Número máximo de usuários atingido para sua licença atual. Entre em contato com o administrador para atualizar seu plano ou adicionar mais assentos." oauth2RequestNotFound = "Solicitação de autorização não encontrada" oauth2InvalidUserInfoResponse = "Resposta de informação de usuário inválida" oauth2invalidRequest = "Requisição Inválida" @@ -3849,14 +3857,17 @@ fitToWidth = "Ajustar à largura" actualSize = "Tamanho real" [viewer] +cannotPreviewFile = "Não é possível visualizar o arquivo" +dualPageView = "Visualização de duas páginas" firstPage = "Primeira página" lastPage = "Última página" -previousPage = "Página anterior" nextPage = "Próxima página" +onlyPdfSupported = "O visualizador oferece suporte apenas a arquivos PDF. Este arquivo parece estar em um formato diferente." +previousPage = "Página anterior" +singlePageView = "Visualização de página única" +unknownFile = "Arquivo desconhecido" zoomIn = "Ampliar" zoomOut = "Reduzir" -singlePageView = "Visualização de página única" -dualPageView = "Visualização de duas páginas" [rightRail] closeSelected = "Fechar arquivos selecionados" @@ -4156,7 +4167,7 @@ description = "Rastrear ações do usuário e eventos do sistema para conformida [admin.settings.security.audit.level] label = "Nível de auditoria" -description = "0=OFF, 1=BASIC, 2=STANDARD, 3=VERBOSE" +description = "0=DESLIGADO, 1=BÁSICO, 2=PADRÃO, 3=DETALHADO" [admin.settings.security.audit.retentionDays] label = "Retenção de auditoria (dias)" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} selecionado(s)" download = "Baixar (JSON)" delete = "Apagar" unsupported = "Não suportado" +active = "Ativo" addToUpload = "Adicionar ao upload" +closeFile = "Fechar arquivo" deleteAll = "Excluir tudo" loadingFiles = "Carregando arquivos..." noFiles = "Nenhum arquivo disponível" @@ -5800,13 +5813,20 @@ submit = "Login" signInWith = "Entrar com" oauthPending = "Abrindo o navegador para autenticação..." orContinueWith = "Ou continue com e-mail" +serverRequirement = "Observação: o servidor deve ter o login ativado." +showInstructions = "Como ativar?" +hideInstructions = "Ocultar instruções" +instructions = "Para ativar o login no seu servidor Stirling PDF:" +instructionsEnvVar = "Defina a variável de ambiente:" +instructionsOrYml = "Ou em settings.yml:" +instructionsRestart = "Em seguida, reinicie o servidor para que as alterações entrem em vigor." [setup.login.username] label = "Usuário" placeholder = "Digite seu usuário" [setup.login.email] -label = "Email" +label = "E-mail" placeholder = "Digite seu e-mail" [setup.login.password] @@ -5843,7 +5863,7 @@ paragraph = "Página de parágrafos" sparse = "Texto esparso" [pdfTextEditor.groupingMode] -auto = "Auto" +auto = "Automático" paragraph = "Parágrafo" singleLine = "Linha única" diff --git a/frontend/public/locales/pt-PT/translation.toml b/frontend/public/locales/pt-PT/translation.toml index 3991bc04ce..d6453d4c91 100644 --- a/frontend/public/locales/pt-PT/translation.toml +++ b/frontend/public/locales/pt-PT/translation.toml @@ -131,7 +131,7 @@ unsupported = "Não suportado" [toolPanel] placeholder = "Escolha uma ferramenta para começar" -alpha = "Alpha" +alpha = "Alfa" premiumFeature = "Funcionalidade premium:" comingSoon = "Em breve:" @@ -163,6 +163,11 @@ unfavorite = "Remover dos favoritos" fullscreen = "Mudar para modo de ecrã inteiro" sidebar = "Mudar para modo de barra lateral" +[backendStartup] +notFoundTitle = "Backend não encontrado" +retry = "Tentar novamente" +unreachable = "A aplicação não consegue ligar-se ao backend neste momento. Verifique o estado do backend e a conectividade de rede e tente novamente." + [zipWarning] title = "Ficheiro ZIP grande" message = "Este ZIP contém {{count}} ficheiros. Extrair mesmo assim?" @@ -369,7 +374,7 @@ privacy = "Privacidade" [settings.developer] title = "Programador" -apiKeys = "API Keys" +apiKeys = "Chaves de API" [settings.tooltips] enableLoginFirst = "Ative primeiro o modo de login" @@ -1220,7 +1225,7 @@ odtExt = "Texto OpenDocument (.odt)" pptExt = "PowerPoint (.pptx)" odpExt = "Apresentação OpenDocument (.odp)" txtExt = "Texto simples (.txt)" -rtfExt = "Rich Text Format (.rtf)" +rtfExt = "Formato de Texto Enriquecido (.rtf)" selectedFiles = "Ficheiros selecionados" noFileSelected = "Nenhum ficheiro selecionado. Use o painel de ficheiros para adicionar ficheiros." convertFiles = "Converter ficheiros" @@ -2844,7 +2849,7 @@ label = "Fator de escala" [adjustPageScale.pageSize] label = "Tamanho da página de destino" keep = "Manter tamanho original" -letter = "Letter" +letter = "Carta" legal = "Legal" [adjustPageScale.error] @@ -3441,6 +3446,9 @@ signinTitle = "Por favor inicie sessão" ssoSignIn = "Iniciar sessão via Single Sign-On" oAuth2AutoCreateDisabled = "Criação Automática de Utilizador OAUTH2 Desativada" oAuth2AdminBlockedUser = "O registo ou login de utilizadores não registados está atualmente bloqueado. Por favor contacte o administrador." +oAuth2RequiresLicense = "O início de sessão via OAuth/SSO requer uma licença paga (Server ou Enterprise). Contacte o administrador para atualizar o seu plano." +saml2RequiresLicense = "O início de sessão SAML requer uma licença paga (Server ou Enterprise). Contacte o administrador para atualizar o seu plano." +maxUsersReached = "Foi atingido o número máximo de utilizadores da sua licença atual. Contacte o administrador para atualizar o seu plano ou adicionar mais lugares." oauth2RequestNotFound = "Pedido de autorização não encontrado" oauth2InvalidUserInfoResponse = "Resposta de Informação de Utilizador Inválida" oauth2invalidRequest = "Pedido Inválido" @@ -3849,14 +3857,17 @@ fitToWidth = "Ajustar à largura" actualSize = "Tamanho real" [viewer] +cannotPreviewFile = "Não é possível pré-visualizar o ficheiro" +dualPageView = "Vista de duas páginas" firstPage = "Primeira página" lastPage = "Última página" -previousPage = "Página anterior" nextPage = "Página seguinte" +onlyPdfSupported = "O visualizador só suporta ficheiros PDF. Este ficheiro parece ter um formato diferente." +previousPage = "Página anterior" +singlePageView = "Vista de página única" +unknownFile = "Ficheiro desconhecido" zoomIn = "Ampliar" zoomOut = "Reduzir" -singlePageView = "Vista de página única" -dualPageView = "Vista de duas páginas" [rightRail] closeSelected = "Fechar ficheiros selecionados" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} selecionado(s)" download = "Transferir" delete = "Eliminar" unsupported = "Não suportado" +active = "Ativo" addToUpload = "Adicionar ao carregamento" +closeFile = "Fechar ficheiro" deleteAll = "Eliminar tudo" loadingFiles = "A carregar ficheiros..." noFiles = "Não há ficheiros disponíveis" @@ -5285,7 +5298,7 @@ submit = "Gerar link de convite" [workspace.people.inviteMode] username = "Nome de utilizador" email = "Email" -link = "Link" +link = "Ligação" emailDisabled = "Convites por email requerem configuração de SMTP e mail.enableInvites=true nas definições" [workspace.people.license] @@ -5800,6 +5813,13 @@ submit = "Iniciar sessão" signInWith = "Iniciar sessão com" oauthPending = "A abrir o navegador para autenticação..." orContinueWith = "Ou continuar com email" +serverRequirement = "Nota: O servidor deve ter o início de sessão ativado." +showInstructions = "Como ativar?" +hideInstructions = "Ocultar instruções" +instructions = "Para ativar o início de sessão no seu servidor Stirling PDF:" +instructionsEnvVar = "Defina a variável de ambiente:" +instructionsOrYml = "Ou em settings.yml:" +instructionsRestart = "Em seguida, reinicie o servidor para que as alterações tenham efeito." [setup.login.username] label = "Nome de utilizador" @@ -5843,7 +5863,7 @@ paragraph = "Página de parágrafos" sparse = "Texto disperso" [pdfTextEditor.groupingMode] -auto = "Auto" +auto = "Automático" paragraph = "Parágrafo" singleLine = "Linha única" @@ -5935,7 +5955,7 @@ warnings = "Avisos" suggestions = "Notas" currentPageFonts = "Fontes nesta página" allFonts = "Todas as fontes" -fallback = "fallback" +fallback = "alternativa" missing = "em falta" perfectMessage = "Todas as fontes podem ser reproduzidas na perfeição." warningMessage = "Algumas fontes podem não ser renderizadas corretamente." diff --git a/frontend/public/locales/ro-RO/translation.toml b/frontend/public/locales/ro-RO/translation.toml index 6e23782081..e995d6e1d7 100644 --- a/frontend/public/locales/ro-RO/translation.toml +++ b/frontend/public/locales/ro-RO/translation.toml @@ -163,6 +163,11 @@ unfavorite = "Eliminați din favorite" fullscreen = "Comutați la modul ecran complet" sidebar = "Comutați la modul bară laterală" +[backendStartup] +notFoundTitle = "Backend negăsit" +retry = "Reîncearcă" +unreachable = "Aplicația nu se poate conecta în prezent la backend. Verificați starea backend-ului și conexiunea la rețea, apoi încercați din nou." + [zipWarning] title = "Fișier ZIP mare" message = "Acest ZIP conține {{count}} fișiere. Extrageți oricum?" @@ -1216,11 +1221,11 @@ pdfaDigitalSignatureWarning = "PDF-ul conține o semnătură digitală. Aceasta fileFormat = "Format fișier" wordDoc = "Document Word" wordDocExt = "Document Word (.docx)" -odtExt = "OpenDocument Text (.odt)" +odtExt = "Text OpenDocument (.odt)" pptExt = "PowerPoint (.pptx)" -odpExt = "OpenDocument Presentation (.odp)" +odpExt = "Prezentare OpenDocument (.odp)" txtExt = "Text simplu (.txt)" -rtfExt = "Rich Text Format (.rtf)" +rtfExt = "Format Rich Text (.rtf)" selectedFiles = "Fișiere selectate" noFileSelected = "Niciun fișier selectat. Folosiți panoul de fișiere pentru a adăuga fișiere." convertFiles = "Convertiți fișiere" @@ -1398,7 +1403,7 @@ height = "Spațiere pe înălțime" width = "Spațiere pe lățime" [watermark.alphabet] -roman = "Roman/Latin" +roman = "Romano/Latin" arabic = "Arabă" japanese = "Japoneză" korean = "Coreeană" @@ -3441,6 +3446,9 @@ signinTitle = "Te rugăm să te autentifici" ssoSignIn = "Conectare prin conectare unică" oAuth2AutoCreateDisabled = "OAUTH2 Creare automată utilizator dezactivată" oAuth2AdminBlockedUser = "Înregistrarea sau conectarea utilizatorilor neînregistrați este în prezent blocată. Te rugăm să contactezi administratorul." +oAuth2RequiresLicense = "Autentificarea OAuth/SSO necesită o licență plătită (Server sau Enterprise). Contactați administratorul pentru a vă actualiza planul." +saml2RequiresLicense = "Autentificarea SAML necesită o licență plătită (Server sau Enterprise). Contactați administratorul pentru a vă actualiza planul." +maxUsersReached = "Numărul maxim de utilizatori a fost atins pentru licența curentă. Contactați administratorul pentru a vă actualiza planul sau pentru a adăuga mai multe locuri." oauth2RequestNotFound = "Cererea de autorizare nu a fost găsită" oauth2InvalidUserInfoResponse = "Răspuns Invalid la Informațiile Utilizatorului" oauth2invalidRequest = "Cerere Invalidă" @@ -3849,14 +3857,17 @@ fitToWidth = "Potriviți la lățime" actualSize = "Dimensiune reală" [viewer] +cannotPreviewFile = "Nu se poate previzualiza fișierul" +dualPageView = "Vizualizare cu două pagini" firstPage = "Prima pagină" lastPage = "Ultima pagină" -previousPage = "Pagina anterioară" nextPage = "Pagina următoare" +onlyPdfSupported = "Vizualizatorul acceptă doar fișiere PDF. Acest fișier pare a fi într-un format diferit." +previousPage = "Pagina anterioară" +singlePageView = "Vizualizare cu o singură pagină" +unknownFile = "Fișier necunoscut" zoomIn = "Măriți" zoomOut = "Micșorați" -singlePageView = "Vizualizare cu o singură pagină" -dualPageView = "Vizualizare cu două pagini" [rightRail] closeSelected = "Închideți fișierele selectate" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} selectate" download = "Descarcă" delete = "Șterge" unsupported = "Nesuportat" +active = "Activ" addToUpload = "Adăugați la încărcare" +closeFile = "Închide fișierul" deleteAll = "Ștergeți tot" loadingFiles = "Se încarcă fișierele..." noFiles = "Nu există fișiere disponibile" @@ -5383,7 +5396,7 @@ submit = "Schimbă echipa" currency = "Monedă" popular = "Popular" current = "Plan curent" -upgrade = "Upgrade" +upgrade = "Actualizează" contact = "Contactează-ne" customPricing = "Personalizat" showComparison = "Compară toate funcțiile" @@ -5800,6 +5813,13 @@ submit = "Autentificare" signInWith = "Autentifică-te cu" oauthPending = "Se deschide browserul pentru autentificare..." orContinueWith = "Sau continuă cu email" +serverRequirement = "Notă: Serverul trebuie să aibă autentificarea activată." +showInstructions = "Cum se activează?" +hideInstructions = "Ascunde instrucțiunile" +instructions = "Pentru a activa autentificarea pe serverul dvs. Stirling PDF:" +instructionsEnvVar = "Setați variabila de mediu:" +instructionsOrYml = "Sau în settings.yml:" +instructionsRestart = "Apoi reporniți serverul pentru ca modificările să intre în vigoare." [setup.login.username] label = "Utilizator" diff --git a/frontend/public/locales/ru-RU/translation.toml b/frontend/public/locales/ru-RU/translation.toml index e2a9bddcd0..25fd592fba 100644 --- a/frontend/public/locales/ru-RU/translation.toml +++ b/frontend/public/locales/ru-RU/translation.toml @@ -163,6 +163,11 @@ unfavorite = "Удалить из избранного" fullscreen = "Переключиться в полноэкранный режим" sidebar = "Переключиться в режим боковой панели" +[backendStartup] +notFoundTitle = "Серверная часть не найдена" +retry = "Повторить" +unreachable = "Приложение сейчас не может подключиться к серверной части. Проверьте состояние серверной части и подключение к сети, затем повторите попытку." + [zipWarning] title = "Большой ZIP-файл" message = "Этот ZIP содержит {{count}} файлов. Все равно извлечь?" @@ -3441,6 +3446,9 @@ signinTitle = "Пожалуйста, войдите" ssoSignIn = "Вход через единый вход" oAuth2AutoCreateDisabled = "Автоматическое создание пользователей OAuth2 отключено" oAuth2AdminBlockedUser = "Регистрация или вход незарегистрированных пользователей в настоящее время заблокированы. Обратитесь к администратору." +oAuth2RequiresLicense = "Вход через OAuth/SSO требует платную лицензию (Server или Enterprise). Пожалуйста, свяжитесь с администратором, чтобы обновить ваш план." +saml2RequiresLicense = "Вход через SAML требует платную лицензию (Server или Enterprise). Пожалуйста, свяжитесь с администратором, чтобы обновить ваш план." +maxUsersReached = "Достигнуто максимальное количество пользователей для вашей текущей лицензии. Пожалуйста, свяжитесь с администратором, чтобы обновить ваш план или добавить места." oauth2RequestNotFound = "Запрос авторизации не найден" oauth2InvalidUserInfoResponse = "Недействительный ответ с информацией о пользователе" oauth2invalidRequest = "Недействительный запрос" @@ -3849,14 +3857,17 @@ fitToWidth = "По ширине" actualSize = "Фактический размер" [viewer] +cannotPreviewFile = "Не удаётся просмотреть файл" +dualPageView = "Двухстраничный вид" firstPage = "Первая страница" lastPage = "Последняя страница" -previousPage = "Предыдущая страница" nextPage = "Следующая страница" +onlyPdfSupported = "Просмотрщик поддерживает только PDF-файлы. Похоже, этот файл другого формата." +previousPage = "Предыдущая страница" +singlePageView = "Одностраничный вид" +unknownFile = "Неизвестный файл" zoomIn = "Увеличить" zoomOut = "Уменьшить" -singlePageView = "Одностраничный вид" -dualPageView = "Двухстраничный вид" [rightRail] closeSelected = "Закрыть выбранные файлы" @@ -4490,7 +4501,7 @@ label = "Политика cookie" description = "URL или имя файла для политики cookie" [admin.settings.legal.impressum] -label = "Impressum" +label = "Юридическая информация" description = "URL или имя файла для impressum (требуется в некоторых юрисдикциях)" [admin.settings.premium] @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} выбрано" download = "Скачать" delete = "Удалить" unsupported = "Не поддерживается" +active = "Активный" addToUpload = "Добавить к загрузке" +closeFile = "Закрыть файл" deleteAll = "Удалить все" loadingFiles = "Загрузка файлов..." noFiles = "Нет доступных файлов" @@ -4967,7 +4980,7 @@ description = "Привяжите аккаунт, чтобы сохранить socialLogin = "Обновить через соцсеть" linkWith = "Привязать к" emailPassword = "или введите email и пароль" -email = "Email" +email = "Эл. почта" emailPlaceholder = "Введите ваш email" password = "Пароль (необязательно)" passwordPlaceholder = "Задайте пароль" @@ -5800,13 +5813,20 @@ submit = "Войти" signInWith = "Войти через" oauthPending = "Открываем браузер для аутентификации..." orContinueWith = "Или продолжить по email" +serverRequirement = "Примечание: на сервере должен быть включён вход в систему." +showInstructions = "Как включить?" +hideInstructions = "Скрыть инструкции" +instructions = "Чтобы включить вход в систему на вашем сервере Stirling PDF:" +instructionsEnvVar = "Установите переменную окружения:" +instructionsOrYml = "Или в settings.yml:" +instructionsRestart = "Затем перезапустите сервер, чтобы изменения вступили в силу." [setup.login.username] label = "Имя пользователя" placeholder = "Введите имя пользователя" [setup.login.email] -label = "Email" +label = "Эл. почта" placeholder = "Введите email" [setup.login.password] diff --git a/frontend/public/locales/sk-SK/translation.toml b/frontend/public/locales/sk-SK/translation.toml index 248e6c7a5f..e9861f87f3 100644 --- a/frontend/public/locales/sk-SK/translation.toml +++ b/frontend/public/locales/sk-SK/translation.toml @@ -163,6 +163,11 @@ unfavorite = "Odstrániť z obľúbených" fullscreen = "Prepnúť na režim celej obrazovky" sidebar = "Prepnúť na režim bočného panela" +[backendStartup] +notFoundTitle = "Backend sa nenašiel" +retry = "Skúsiť znova" +unreachable = "Aplikácia sa momentálne nedokáže pripojiť k backendu. Overte stav backendu a sieťové pripojenie, potom to skúste znova." + [zipWarning] title = "Veľký ZIP súbor" message = "Tento ZIP obsahuje {{count}} súborov. Aj tak rozbaliť?" @@ -274,7 +279,7 @@ iAgreeToThe = "Súhlasím so všetkými" terms = "Podmienkami používania" accessibility = "Prístupnosť" cookie = "Zásady používania súborov cookie" -impressum = "Impressum" +impressum = "Impresum" showCookieBanner = "Predvoľby súborov cookie" [pipeline] @@ -513,7 +518,7 @@ syncToAccount = "Synchronizovať účet <- Prehliadač" [adminUserSettings] title = "Nastavenia kontroly používateľov" header = "Admin nastavenia kontroly používateľov" -admin = "Admin" +admin = "Administrátor" user = "Používateľ" addUser = "Pridať nového používateľa" deleteUser = "Odstrániť používateľa" @@ -3441,6 +3446,9 @@ signinTitle = "Prosím, prihláste sa" ssoSignIn = "Prihlásiť sa cez Single Sign-on" oAuth2AutoCreateDisabled = "Vytváranie používateľa cez OAUTH2 je zakázané" oAuth2AdminBlockedUser = "Registrácia alebo prihlasovanie neregistrovaných používateľov je momentálne blokované. Kontaktujte administrátora." +oAuth2RequiresLicense = "Prihlásenie cez OAuth/SSO vyžaduje platenú licenciu (Server alebo Enterprise). Obráťte sa na administrátora, aby aktualizoval váš plán." +saml2RequiresLicense = "Prihlásenie cez SAML vyžaduje platenú licenciu (Server alebo Enterprise). Obráťte sa na administrátora, aby aktualizoval váš plán." +maxUsersReached = "Bol dosiahnutý maximálny počet používateľov pre vašu aktuálnu licenciu. Obráťte sa na administrátora, aby aktualizoval váš plán alebo pridal ďalšie miesta." oauth2RequestNotFound = "Požiadavka na autorizáciu sa nenašla" oauth2InvalidUserInfoResponse = "Neplatná odpoveď User Info" oauth2invalidRequest = "Neplatná požiadavka" @@ -3774,7 +3782,7 @@ version = "Aktuálne vydanie" title = "Dokumentácia API" header = "Dokumentácia API" desc = "Zobraziť a testovať API endpointy Stirling PDF" -tags = "api,documentation,swagger,endpoints,development" +tags = "api,dokumentácia,swagger,endpointy,vývoj" [cookieBanner.popUp] title = "Ako používame súbory cookie" @@ -3849,14 +3857,17 @@ fitToWidth = "Prispôsobiť šírke" actualSize = "Skutočná veľkosť" [viewer] +cannotPreviewFile = "Nedá sa zobraziť náhľad súboru" +dualPageView = "Dvojstranové zobrazenie" firstPage = "Prvá strana" lastPage = "Posledná strana" -previousPage = "Predchádzajúca strana" nextPage = "Nasledujúca strana" +onlyPdfSupported = "Prehliadač podporuje iba súbory PDF. Tento súbor sa zdá byť iného formátu." +previousPage = "Predchádzajúca strana" +singlePageView = "Zobrazenie jednej strany" +unknownFile = "Neznámy súbor" zoomIn = "Priblížiť" zoomOut = "Oddialiť" -singlePageView = "Zobrazenie jednej strany" -dualPageView = "Dvojstranové zobrazenie" [rightRail] closeSelected = "Zavrieť vybrané súbory" @@ -4490,7 +4501,7 @@ label = "Zásady používania súborov cookie" description = "URL alebo názov súboru so zásadami používania súborov cookie" [admin.settings.legal.impressum] -label = "Impressum" +label = "Impresum" description = "URL alebo názov súboru k Impressu (požadované v niektorých jurisdikciách)" [admin.settings.premium] @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} vybraných" download = "Stiahnuť" delete = "Vymazať" unsupported = "Nepodporované" +active = "Aktívne" addToUpload = "Pridať na nahratie" +closeFile = "Zatvoriť súbor" deleteAll = "Odstrániť všetko" loadingFiles = "Načítavajú sa súbory..." noFiles = "Nie sú dostupné žiadne súbory" @@ -5181,7 +5194,7 @@ active = "Aktívny" disabled = "Zakázaný" activeSession = "Aktívna relácia" member = "Člen" -admin = "Admin" +admin = "Administrátor" editRole = "Upraviť rolu" enable = "Povoliť" disable = "Zakázať" @@ -5800,13 +5813,20 @@ submit = "Prihlásiť sa" signInWith = "Prihlásiť sa cez" oauthPending = "Otvára sa prehliadač na overenie..." orContinueWith = "Alebo pokračujte emailom" +serverRequirement = "Poznámka: Na serveri musí byť povolené prihlásenie." +showInstructions = "Ako povoliť?" +hideInstructions = "Skryť pokyny" +instructions = "Na povolenie prihlásenia na vašom serveri Stirling PDF:" +instructionsEnvVar = "Nastavte premennú prostredia:" +instructionsOrYml = "Alebo v súbore settings.yml:" +instructionsRestart = "Potom reštartujte server, aby sa zmeny prejavili." [setup.login.username] label = "Používateľské meno" placeholder = "Zadajte používateľské meno" [setup.login.email] -label = "Email" +label = "E-mail" placeholder = "Zadajte svoj email" [setup.login.password] @@ -5843,7 +5863,7 @@ paragraph = "Strana s odsekmi" sparse = "Riedky text" [pdfTextEditor.groupingMode] -auto = "Auto" +auto = "Automaticky" paragraph = "Odsek" singleLine = "Jeden riadok" diff --git a/frontend/public/locales/sl-SI/translation.toml b/frontend/public/locales/sl-SI/translation.toml index 308652235b..8a141ef42d 100644 --- a/frontend/public/locales/sl-SI/translation.toml +++ b/frontend/public/locales/sl-SI/translation.toml @@ -163,6 +163,11 @@ unfavorite = "Odstrani iz priljubljenih" fullscreen = "Preklopi na celozaslonski način" sidebar = "Preklopi na način stranske vrstice" +[backendStartup] +notFoundTitle = "Zaledje ni najdeno" +retry = "Poskusi znova" +unreachable = "Aplikacija se trenutno ne more povezati z zaledjem. Preverite stanje zaledja in omrežno povezavo, nato poskusite znova." + [zipWarning] title = "Velika datoteka ZIP" message = "Ta ZIP vsebuje {{count}} datotek. Vseeno razpakiram?" @@ -3441,6 +3446,9 @@ signinTitle = "Prosim prijavite se" ssoSignIn = "Prijava prek enotne prijave" oAuth2AutoCreateDisabled = "OAUTH2 Samodejno ustvarjanje uporabnika onemogočeno" oAuth2AdminBlockedUser = "Registracija ali prijava neregistriranih uporabnikov je trenutno blokirana. Prosimo kontaktirajte skrbnika." +oAuth2RequiresLicense = "Prijava prek OAuth/SSO zahteva plačljivo licenco (Server ali Enterprise). Obrnite se na skrbnika, da nadgradi vaš načrt." +saml2RequiresLicense = "Prijava prek SAML zahteva plačljivo licenco (Server ali Enterprise). Obrnite se na skrbnika, da nadgradi vaš načrt." +maxUsersReached = "Doseženo je največje število uporabnikov za vašo trenutno licenco. Obrnite se na skrbnika, da nadgradi vaš načrt ali doda več mest." oauth2RequestNotFound = "Zahteva za avtorizacijo ni bila najdena" oauth2InvalidUserInfoResponse = "Neveljaven odgovor z informacijami o uporabniku" oauth2invalidRequest = "Neveljavna zahteva" @@ -3849,14 +3857,17 @@ fitToWidth = "Prilagodi širini" actualSize = "Dejanska velikost" [viewer] +cannotPreviewFile = "Predogled datoteke ni mogoč" +dualPageView = "Dvo-stranski pogled" firstPage = "Prva stran" lastPage = "Zadnja stran" -previousPage = "Prejšnja stran" nextPage = "Naslednja stran" +onlyPdfSupported = "Pregledovalnik podpira samo PDF datoteke. Ta datoteka je videti v drugačnem formatu." +previousPage = "Prejšnja stran" +singlePageView = "Enostranski pogled" +unknownFile = "Neznana datoteka" zoomIn = "Povečaj" zoomOut = "Pomanjšaj" -singlePageView = "Enostranski pogled" -dualPageView = "Dvo-stranski pogled" [rightRail] closeSelected = "Zapri izbrane datoteke" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} izbranih" download = "Prenos" delete = "Izbriši" unsupported = "Nepodprto" +active = "Aktivno" addToUpload = "Dodaj k nalaganju" +closeFile = "Zapri datoteko" deleteAll = "Izbriši vse" loadingFiles = "Nalaganje datotek..." noFiles = "Ni razpoložljivih datotek" @@ -5800,6 +5813,13 @@ submit = "Prijava" signInWith = "Prijavite se z" oauthPending = "Odpiranje brskalnika za overjanje..." orContinueWith = "Ali nadaljujte z e-pošto" +serverRequirement = "Opomba: Strežnik mora imeti omogočeno prijavo." +showInstructions = "Kako omogočiti?" +hideInstructions = "Skrij navodila" +instructions = "Za omogočanje prijave na vašem strežniku Stirling PDF:" +instructionsEnvVar = "Nastavite okoljsko spremenljivko:" +instructionsOrYml = "Ali v settings.yml:" +instructionsRestart = "Nato znova zaženite strežnik, da spremembe začnejo veljati." [setup.login.username] label = "Uporabniško ime" diff --git a/frontend/public/locales/sr-LATN-RS/translation.toml b/frontend/public/locales/sr-LATN-RS/translation.toml index 9047c9f6c4..21d0db96fe 100644 --- a/frontend/public/locales/sr-LATN-RS/translation.toml +++ b/frontend/public/locales/sr-LATN-RS/translation.toml @@ -163,6 +163,11 @@ unfavorite = "Ukloni iz omiljenog" fullscreen = "Prebaci na režim celog ekrana" sidebar = "Prebaci na režim bočne trake" +[backendStartup] +notFoundTitle = "Bekend nije pronađen" +retry = "Pokušaj ponovo" +unreachable = "Aplikacija trenutno ne može da se poveže sa bekendom. Proverite status bekenda i mrežnu povezanost, pa pokušajte ponovo." + [zipWarning] title = "Velika ZIP datoteka" message = "Ovaj ZIP sadrži {{count}} datoteka. Ipak raspakovati?" @@ -1216,9 +1221,9 @@ pdfaDigitalSignatureWarning = "PDF sadrži digitalni potpis. Biće uklonjen u sl fileFormat = "Format datoteke" wordDoc = "Word dokument" wordDocExt = "Word dokument (.docx)" -odtExt = "OpenDocument Text (.odt)" +odtExt = "OpenDocument tekst (.odt)" pptExt = "PowerPoint (.pptx)" -odpExt = "OpenDocument Presentation (.odp)" +odpExt = "OpenDocument prezentacija (.odp)" txtExt = "Običan tekst (.txt)" rtfExt = "Rich Text Format (.rtf)" selectedFiles = "Izabrane datoteke" @@ -2321,7 +2326,7 @@ title = "Ravnanje" header = "Ravnanje PDF fajlova" flattenOnlyForms = "Izravnaj samo forme" submit = "Ravnanje" -filenamePrefix = "flattened" +filenamePrefix = "spljošteno" [flatten.files] placeholder = "Izaberite PDF datoteku u glavnom prikazu da biste započeli" @@ -3441,6 +3446,9 @@ signinTitle = "Molimo vas da se prijavite" ssoSignIn = "Prijavite se putem jedinstvene prijave" oAuth2AutoCreateDisabled = "OAUTH2 automatsko kreiranje korisnika je onemogućeno" oAuth2AdminBlockedUser = "Registracija ili prijava neregistrovanog korisnika je trenutno onemogućeno. Kontaktirajte administratora." +oAuth2RequiresLicense = "Prijava putem OAuth/SSO zahteva plaćenu licencu (Server ili Enterprise). Kontaktirajte administratora da unapredi vaš plan." +saml2RequiresLicense = "Prijava putem SAML zahteva plaćenu licencu (Server ili Enterprise). Kontaktirajte administratora da unapredi vaš plan." +maxUsersReached = "Dostignut je maksimalni broj korisnika za vašu trenutnu licencu. Kontaktirajte administratora da unapredi vaš plan ili doda više mesta." oauth2RequestNotFound = "Zahtev za autorizaciju nije pronađen" oauth2InvalidUserInfoResponse = "Neispravan odgovor sa korisničkim informacijama" oauth2invalidRequest = "Neispravan zahtev" @@ -3849,14 +3857,17 @@ fitToWidth = "Uklopi po širini" actualSize = "Stvarna veličina" [viewer] +cannotPreviewFile = "Nije moguće pregledati datoteku" +dualPageView = "Prikaz dve stranice" firstPage = "Prva stranica" lastPage = "Poslednja stranica" -previousPage = "Prethodna stranica" nextPage = "Sledeća stranica" +onlyPdfSupported = "Prikazivač podržava samo PDF datoteke. Izgleda da je ova datoteka drugačijeg formata." +previousPage = "Prethodna stranica" +singlePageView = "Prikaz jedne stranice" +unknownFile = "Nepoznata datoteka" zoomIn = "Uvećaj" zoomOut = "Umanji" -singlePageView = "Prikaz jedne stranice" -dualPageView = "Prikaz dve stranice" [rightRail] closeSelected = "Zatvori izabrane fajlove" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} izabrano" download = "Preuzmi" delete = "Obriši" unsupported = "Nepodržano" +active = "Aktivno" addToUpload = "Dodaj za otpremanje" +closeFile = "Zatvori datoteku" deleteAll = "Obriši sve" loadingFiles = "Učitavanje datoteka..." noFiles = "Nema dostupnih datoteka" @@ -5800,6 +5813,13 @@ submit = "Prijavi se" signInWith = "Prijavite se sa" oauthPending = "Otvaranje pregledača za autentikaciju..." orContinueWith = "Ili nastavite uz email" +serverRequirement = "Napomena: Server mora imati omogućenu prijavu." +showInstructions = "Kako omogućiti?" +hideInstructions = "Sakrij uputstva" +instructions = "Da biste omogućili prijavu na svom Stirling PDF serveru:" +instructionsEnvVar = "Podesite promenljivu okruženja:" +instructionsOrYml = "Ili u settings.yml:" +instructionsRestart = "Zatim restartujte server da bi izmene stupile na snagu." [setup.login.username] label = "Korisničko ime" diff --git a/frontend/public/locales/sv-SE/translation.toml b/frontend/public/locales/sv-SE/translation.toml index 4e8c971ed3..5a6a33bc3e 100644 --- a/frontend/public/locales/sv-SE/translation.toml +++ b/frontend/public/locales/sv-SE/translation.toml @@ -163,6 +163,11 @@ unfavorite = "Ta bort från favoriter" fullscreen = "Byt till helskärmsläge" sidebar = "Byt till sidopanelläge" +[backendStartup] +notFoundTitle = "Backend hittades inte" +retry = "Försök igen" +unreachable = "Applikationen kan för närvarande inte ansluta till backend. Kontrollera backendens status och nätverksanslutningen och försök sedan igen." + [zipWarning] title = "Stor ZIP-fil" message = "Denna ZIP innehåller {{count}} filer. Extrahera ändå?" @@ -3441,6 +3446,9 @@ signinTitle = "Vänligen logga in" ssoSignIn = "Logga in via enkel inloggning" oAuth2AutoCreateDisabled = "OAUTH2 Auto-skapa användare inaktiverad" oAuth2AdminBlockedUser = "Registrering eller inloggning av icke-registrerade användare är för närvarande blockerad. Kontakta administratören." +oAuth2RequiresLicense = "OAuth/SSO-inloggning kräver en betald licens (Server eller Enterprise). Kontakta administratören för att uppgradera din plan." +saml2RequiresLicense = "SAML-inloggning kräver en betald licens (Server eller Enterprise). Kontakta administratören för att uppgradera din plan." +maxUsersReached = "Maximalt antal användare har uppnåtts för din nuvarande licens. Kontakta administratören för att uppgradera din plan eller lägga till fler användarplatser." oauth2RequestNotFound = "Auktoriseringsbegäran hittades inte" oauth2InvalidUserInfoResponse = "Ogiltigt svar på användarinformation" oauth2invalidRequest = "Ogiltig begäran" @@ -3849,14 +3857,17 @@ fitToWidth = "Anpassa till bredd" actualSize = "Faktisk storlek" [viewer] +cannotPreviewFile = "Kan inte förhandsgranska filen" +dualPageView = "Dubbelsidig vy" firstPage = "Första sidan" lastPage = "Sista sidan" -previousPage = "Föregående sida" nextPage = "Nästa sida" +onlyPdfSupported = "Visaren stöder endast PDF-filer. Den här filen verkar vara i ett annat format." +previousPage = "Föregående sida" +singlePageView = "Ensidig vy" +unknownFile = "Okänd fil" zoomIn = "Zooma in" zoomOut = "Zooma ut" -singlePageView = "Ensidig vy" -dualPageView = "Dubbelsidig vy" [rightRail] closeSelected = "Stäng markerade filer" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} markerade" download = "Ladda ner" delete = "Radera" unsupported = "Stöds inte" +active = "Aktiv" addToUpload = "Lägg till i uppladdning" +closeFile = "Stäng fil" deleteAll = "Ta bort alla" loadingFiles = "Läser in filer..." noFiles = "Inga filer tillgängliga" @@ -5800,6 +5813,13 @@ submit = "Logga in" signInWith = "Logga in med" oauthPending = "Öppnar webbläsaren för autentisering..." orContinueWith = "Eller fortsätt med e-post" +serverRequirement = "Observera: Servern måste ha inloggning aktiverad." +showInstructions = "Hur aktiverar man?" +hideInstructions = "Dölj instruktioner" +instructions = "För att aktivera inloggning på din Stirling PDF-server:" +instructionsEnvVar = "Ställ in miljövariabeln:" +instructionsOrYml = "Eller i settings.yml:" +instructionsRestart = "Starta sedan om servern för att ändringarna ska börja gälla." [setup.login.username] label = "Användarnamn" diff --git a/frontend/public/locales/th-TH/translation.toml b/frontend/public/locales/th-TH/translation.toml index 1bab3870e0..baa67e4009 100644 --- a/frontend/public/locales/th-TH/translation.toml +++ b/frontend/public/locales/th-TH/translation.toml @@ -163,6 +163,11 @@ unfavorite = "นำออกจากรายการโปรด" fullscreen = "สลับเป็นโหมดเต็มหน้าจอ" sidebar = "สลับเป็นโหมดแถบด้านข้าง" +[backendStartup] +notFoundTitle = "ไม่พบ Backend" +retry = "ลองอีกครั้ง" +unreachable = "ขณะนี้แอปพลิเคชันไม่สามารถเชื่อมต่อกับ Backend ได้ โปรดตรวจสอบสถานะของ Backend และการเชื่อมต่อเครือข่าย จากนั้นลองอีกครั้ง" + [zipWarning] title = "ไฟล์ ZIP ขนาดใหญ่" message = "ZIP นี้มี {{count}} ไฟล์ ต้องการแตกไฟล์ต่อหรือไม่?" @@ -369,7 +374,7 @@ privacy = "ความเป็นส่วนตัว" [settings.developer] title = "นักพัฒนา" -apiKeys = "API Keys" +apiKeys = "คีย์ API" [settings.tooltips] enableLoginFirst = "เปิดใช้งานโหมดเข้าสู่ระบบก่อน" @@ -3441,6 +3446,9 @@ signinTitle = "กรุณาลงชื่อเข้าใช้" ssoSignIn = "เข้าสู่ระบบด้วย Single Sign-on" oAuth2AutoCreateDisabled = "การสร้างผู้ใช้ OAuth2 อัตโนมัติถูกปิดใช้งาน" oAuth2AdminBlockedUser = "ขณะนี้มีการบล็อกการลงทะเบียนหรือการเข้าสู่ระบบของผู้ใช้ที่ไม่ได้ลงทะเบียน โปรดติดต่อผู้ดูแลระบบ" +oAuth2RequiresLicense = "การเข้าสู่ระบบด้วย OAuth/SSO ต้องมีไลเซนส์แบบชำระเงิน (Server หรือ Enterprise) โปรดติดต่อผู้ดูแลระบบเพื่ออัปเกรดแผนของคุณ" +saml2RequiresLicense = "การเข้าสู่ระบบด้วย SAML ต้องมีไลเซนส์แบบชำระเงิน (Server หรือ Enterprise) โปรดติดต่อผู้ดูแลระบบเพื่ออัปเกรดแผนของคุณ" +maxUsersReached = "จำนวนผู้ใช้ถึงขีดสูงสุดสำหรับไลเซนส์ปัจจุบันของคุณ โปรดติดต่อผู้ดูแลระบบเพื่ออัปเกรดแผนหรือเพิ่มจำนวนที่นั่ง" oauth2RequestNotFound = "ไม่พบคำขอการอนุญาต" oauth2InvalidUserInfoResponse = "การตอบกลับข้อมูลผู้ใช้ไม่ถูกต้อง" oauth2invalidRequest = "คำขอไม่ถูกต้อง" @@ -3849,14 +3857,17 @@ fitToWidth = "พอดีกับความกว้าง" actualSize = "ขนาดจริง" [viewer] +cannotPreviewFile = "ไม่สามารถแสดงตัวอย่างไฟล์ได้" +dualPageView = "มุมมองสองหน้า" firstPage = "หน้าแรก" lastPage = "หน้าสุดท้าย" -previousPage = "หน้าก่อนหน้า" nextPage = "หน้าถัดไป" +onlyPdfSupported = "ตัวแสดงผลรองรับเฉพาะไฟล์ PDF ไฟล์นี้ดูเหมือนจะเป็นรูปแบบอื่น" +previousPage = "หน้าก่อนหน้า" +singlePageView = "มุมมองหน้าเดียว" +unknownFile = "ไฟล์ไม่รู้จัก" zoomIn = "ซูมเข้า" zoomOut = "ซูมออก" -singlePageView = "มุมมองหน้าเดียว" -dualPageView = "มุมมองสองหน้า" [rightRail] closeSelected = "ปิดไฟล์ที่เลือก" @@ -4647,7 +4658,9 @@ selectedCount = "เลือกแล้ว {{count}} รายการ" download = "ดาวน์โหลด" delete = "ลบ" unsupported = "ไม่รองรับ" +active = "ใช้งานอยู่" addToUpload = "เพิ่มไปยังอัปโหลด" +closeFile = "ปิดไฟล์" deleteAll = "ลบทั้งหมด" loadingFiles = "กำลังโหลดไฟล์..." noFiles = "ไม่มีไฟล์" @@ -4992,7 +5005,7 @@ chartAriaLabel = "การใช้เครดิต: ใช้แบบรว nextReset = "รีเซ็ตครั้งถัดไป" lastApiUse = "การใช้งาน API ล่าสุด" overlayMessage = "สร้างคีย์เพื่อดูเครดิตและเครดิตที่มีอยู่" -label = "API Key" +label = "คีย์ API" guestInfo = "ผู้ใช้แบบแขกจะไม่ได้รับ API key สร้างบัญชีเพื่อรับ API key สำหรับใช้งานในแอปพลิเคชันของคุณ" goToAccount = "ไปที่บัญชี" generateError = "ไม่สามารถสร้าง API key ของคุณได้" @@ -5800,6 +5813,13 @@ submit = "เข้าสู่ระบบ" signInWith = "ลงชื่อเข้าใช้ด้วย" oauthPending = "กำลังเปิดเบราว์เซอร์เพื่อยืนยันตัวตน..." orContinueWith = "หรือดำเนินการต่อด้วยอีเมล" +serverRequirement = "หมายเหตุ: เซิร์ฟเวอร์ต้องเปิดใช้งานการเข้าสู่ระบบ" +showInstructions = "เปิดใช้งานอย่างไร?" +hideInstructions = "ซ่อนคำแนะนำ" +instructions = "วิธีเปิดใช้งานการเข้าสู่ระบบบนเซิร์ฟเวอร์ Stirling PDF ของคุณ:" +instructionsEnvVar = "ตั้งค่าตัวแปรสภาพแวดล้อม:" +instructionsOrYml = "หรือใน settings.yml:" +instructionsRestart = "จากนั้นรีสตาร์ทเซิร์ฟเวอร์ของคุณเพื่อให้การเปลี่ยนแปลงมีผล" [setup.login.username] label = "ชื่อผู้ใช้" diff --git a/frontend/public/locales/tr-TR/translation.toml b/frontend/public/locales/tr-TR/translation.toml index fccd07bd49..b3afe22c48 100644 --- a/frontend/public/locales/tr-TR/translation.toml +++ b/frontend/public/locales/tr-TR/translation.toml @@ -163,6 +163,11 @@ unfavorite = "Favorilerden kaldır" fullscreen = "Tam ekran moduna geç" sidebar = "Kenar çubuğu moduna geç" +[backendStartup] +notFoundTitle = "Arka uç bulunamadı" +retry = "Yeniden dene" +unreachable = "Uygulama şu anda arka uca bağlanamıyor. Lütfen arka uç durumunu ve ağ bağlantısını doğrulayın, ardından tekrar deneyin." + [zipWarning] title = "Büyük ZIP Dosyası" message = "Bu ZIP {{count}} dosya içeriyor. Yine de çıkartılsın mı?" @@ -3441,6 +3446,9 @@ signinTitle = "Lütfen giriş yapınız." ssoSignIn = "Tek Oturum Açma ile Giriş Yap" oAuth2AutoCreateDisabled = "OAUTH2 Otomatik Oluşturma Kullanıcı Devre Dışı Bırakıldı" oAuth2AdminBlockedUser = "Kayıtlı olmayan kullanıcıların kayıt veya giriş yapması şu anda engellenmiştir. Lütfen yöneticiyle iletişime geçin." +oAuth2RequiresLicense = "OAuth/SSO ile oturum açma ücretli bir lisans (Server veya Enterprise) gerektirir. Planınızı yükseltmek için lütfen yöneticiyle iletişime geçin." +saml2RequiresLicense = "SAML ile oturum açma ücretli bir lisans (Server veya Enterprise) gerektirir. Planınızı yükseltmek için lütfen yöneticiyle iletişime geçin." +maxUsersReached = "Mevcut lisansınız için azami kullanıcı sayısına ulaşıldı. Planınızı yükseltmek veya daha fazla koltuk eklemek için lütfen yöneticiyle iletişime geçin." oauth2RequestNotFound = "Yetkilendirme isteği bulunamadı" oauth2InvalidUserInfoResponse = "Geçersiz Kullanıcı Bilgisi Yanıtı" oauth2invalidRequest = "Geçersiz İstek" @@ -3849,14 +3857,17 @@ fitToWidth = "Genişliğe Sığdır" actualSize = "Gerçek Boyut" [viewer] +cannotPreviewFile = "Dosya önizlenemiyor" +dualPageView = "Çift Sayfa Görünümü" firstPage = "İlk Sayfa" lastPage = "Son Sayfa" -previousPage = "Önceki Sayfa" nextPage = "Sonraki Sayfa" +onlyPdfSupported = "Görüntüleyici yalnızca PDF dosyalarını destekler. Bu dosya farklı bir biçimde görünüyor." +previousPage = "Önceki Sayfa" +singlePageView = "Tek Sayfa Görünümü" +unknownFile = "Bilinmeyen dosya" zoomIn = "Yakınlaştır" zoomOut = "Uzaklaştır" -singlePageView = "Tek Sayfa Görünümü" -dualPageView = "Çift Sayfa Görünümü" [rightRail] closeSelected = "Seçilen Dosyaları Kapat" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} seçildi" download = "İndir" delete = "Sil" unsupported = "Desteklenmiyor" +active = "Aktif" addToUpload = "Yüklemeye Ekle" +closeFile = "Dosyayı Kapat" deleteAll = "Tümünü Sil" loadingFiles = "Dosyalar yükleniyor..." noFiles = "Kullanılabilir dosya yok" @@ -5800,6 +5813,13 @@ submit = "Oturum Aç" signInWith = "Şununla oturum aç" oauthPending = "Kimlik doğrulama için tarayıcı açılıyor..." orContinueWith = "Veya e-postayla devam edin" +serverRequirement = "Not: Sunucuda oturum açma etkin olmalıdır." +showInstructions = "Nasıl etkinleştirilir?" +hideInstructions = "Yönergeleri gizle" +instructions = "Stirling PDF sunucunuzda oturum açmayı etkinleştirmek için:" +instructionsEnvVar = "Ortam değişkenini ayarlayın:" +instructionsOrYml = "Veya settings.yml içinde:" +instructionsRestart = "Ardından değişikliklerin etkili olması için sunucunuzu yeniden başlatın." [setup.login.username] label = "Kullanıcı adı" diff --git a/frontend/public/locales/uk-UA/translation.toml b/frontend/public/locales/uk-UA/translation.toml index a20b8d7e57..6fc95f0477 100644 --- a/frontend/public/locales/uk-UA/translation.toml +++ b/frontend/public/locales/uk-UA/translation.toml @@ -163,6 +163,11 @@ unfavorite = "Видалити з вибраного" fullscreen = "Переключитися на повноекранний режим" sidebar = "Переключитися на режим бічної панелі" +[backendStartup] +notFoundTitle = "Серверну частину не знайдено" +retry = "Повторити" +unreachable = "Застосунок наразі не може під’єднатися до серверної частини. Перевірте стан серверної частини та мережеве з’єднання, потім спробуйте ще раз." + [zipWarning] title = "Великий ZIP-файл" message = "Цей ZIP містить {{count}} файлів. Розпакувати попри це?" @@ -3441,6 +3446,9 @@ signinTitle = "Будь ласка, увійдіть" ssoSignIn = "Увійти через єдиний вхід" oAuth2AutoCreateDisabled = "Автоматичне створення користувача OAUTH2 ВИМКНЕНО" oAuth2AdminBlockedUser = "Реєстрація або вхід незареєстрованих користувачів наразі заборонено. Будь ласка, зв'яжіться з адміністратором." +oAuth2RequiresLicense = "Вхід через OAuth/SSO потребує платної ліцензії (Server або Enterprise). Зверніться до адміністратора, щоб оновити ваш план." +saml2RequiresLicense = "Вхід через SAML потребує платної ліцензії (Server або Enterprise). Зверніться до адміністратора, щоб оновити ваш план." +maxUsersReached = "Досягнуто максимальної кількості користувачів для вашої поточної ліцензії. Зверніться до адміністратора, щоб оновити план або додати місця." oauth2RequestNotFound = "Запит на авторизація не знайдено" oauth2InvalidUserInfoResponse = "Недійсна відповідь з інформацією користувача" oauth2invalidRequest = "Недійсний запит" @@ -3849,14 +3857,17 @@ fitToWidth = "Підігнати за шириною" actualSize = "Фактичний розмір" [viewer] +cannotPreviewFile = "Не вдається переглянути файл" +dualPageView = "Парний перегляд" firstPage = "Перша сторінка" lastPage = "Остання сторінка" -previousPage = "Попередня сторінка" nextPage = "Наступна сторінка" +onlyPdfSupported = "Переглядач підтримує лише файли PDF. Схоже, цей файл має інший формат." +previousPage = "Попередня сторінка" +singlePageView = "Одинарний перегляд" +unknownFile = "Невідомий файл" zoomIn = "Збільшити" zoomOut = "Зменшити" -singlePageView = "Одинарний перегляд" -dualPageView = "Парний перегляд" [rightRail] closeSelected = "Закрити вибрані файли" @@ -4156,7 +4167,7 @@ description = "Відстежувати дії користувачів і си [admin.settings.security.audit.level] label = "Рівень аудиту" -description = "0=OFF, 1=BASIC, 2=STANDARD, 3=VERBOSE" +description = "0=ВИМКНЕНО, 1=БАЗОВИЙ, 2=СТАНДАРТ, 3=ДОКЛАДНИЙ" [admin.settings.security.audit.retentionDays] label = "Зберігання аудиту (дні)" @@ -4410,7 +4421,7 @@ description = "Чи очищати ширший системний тимчас label = "Обмеження виконавця процесів" description = "Налаштуйте ліміти сеансів і тайм-аути для кожного виконавця процесів" libreOffice = "LibreOffice" -pdfToHtml = "PDF to HTML" +pdfToHtml = "PDF у HTML" qpdf = "QPDF" tesseract = "Tesseract OCR" pythonOpenCv = "Python OpenCV" @@ -4647,7 +4658,9 @@ selectedCount = "Вибрано {{count}}" download = "Завантажити" delete = "Видалити" unsupported = "Непідтримуваний" +active = "Активний" addToUpload = "Додати до завантаження" +closeFile = "Закрити файл" deleteAll = "Видалити все" loadingFiles = "Завантаження файлів..." noFiles = "Немає доступних файлів" @@ -5284,7 +5297,7 @@ submit = "Згенерувати посилання-запрошення" [workspace.people.inviteMode] username = "Ім’я користувача" -email = "Email" +email = "Електронна пошта" link = "Посилання" emailDisabled = "Запрошення електронною поштою потребують налаштування SMTP і mail.enableInvites=true в налаштуваннях" @@ -5800,13 +5813,20 @@ submit = "Увійти" signInWith = "Увійти через" oauthPending = "Відкриваємо браузер для автентифікації..." orContinueWith = "Або продовжити через email" +serverRequirement = "Примітка: на сервері має бути увімкнено вхід." +showInstructions = "Як увімкнути?" +hideInstructions = "Приховати інструкції" +instructions = "Щоб увімкнути вхід на вашому сервері Stirling PDF:" +instructionsEnvVar = "Задайте змінну середовища:" +instructionsOrYml = "Або у settings.yml:" +instructionsRestart = "Потім перезапустіть сервер, щоб зміни набрали чинності." [setup.login.username] label = "Ім’я користувача" placeholder = "Введіть ім’я користувача" [setup.login.email] -label = "Email" +label = "Електронна пошта" placeholder = "Введіть свій email" [setup.login.password] diff --git a/frontend/public/locales/vi-VN/translation.toml b/frontend/public/locales/vi-VN/translation.toml index ea930753ca..846856df89 100644 --- a/frontend/public/locales/vi-VN/translation.toml +++ b/frontend/public/locales/vi-VN/translation.toml @@ -163,6 +163,11 @@ unfavorite = "Xóa khỏi Mục yêu thích" fullscreen = "Chuyển sang chế độ toàn màn hình" sidebar = "Chuyển sang chế độ thanh bên" +[backendStartup] +notFoundTitle = "Không tìm thấy Backend" +retry = "Thử lại" +unreachable = "Ứng dụng hiện không thể kết nối tới Backend. Hãy kiểm tra trạng thái Backend và kết nối mạng, sau đó thử lại." + [zipWarning] title = "Tệp ZIP lớn" message = "ZIP này chứa {{count}} tệp. Vẫn giải nén?" @@ -347,7 +352,7 @@ teams = "Nhóm" title = "Cấu hình" systemSettings = "Cài đặt hệ thống" features = "Tính năng" -endpoints = "Endpoints" +endpoints = "Điểm cuối" database = "Cơ sở dữ liệu" advanced = "Nâng cao" @@ -359,7 +364,7 @@ connections = "Kết nối" [settings.licensingAnalytics] title = "Giấy phép & Phân tích" plan = "Gói" -audit = "Audit" +audit = "Kiểm toán" usageAnalytics = "Phân tích sử dụng" [settings.policiesPrivacy] @@ -369,7 +374,7 @@ privacy = "Quyền riêng tư" [settings.developer] title = "Nhà phát triển" -apiKeys = "API Keys" +apiKeys = "Khóa API" [settings.tooltips] enableLoginFirst = "Bật chế độ đăng nhập trước" @@ -1176,7 +1181,7 @@ selectFilesPlaceholder = "Chọn tệp trong khung chính để bắt đầu" settings = "Cài đặt" conversionCompleted = "Hoàn tất chuyển đổi" results = "Kết quả" -defaultFilename = "converted_file" +defaultFilename = "tep_da_chuyen_doi" conversionResults = "Kết quả chuyển đổi" convertFrom = "Chuyển từ" convertTo = "Sang" @@ -2570,7 +2575,7 @@ stopButton = "Dừng so sánh" [certSign] tags = "xác thực,PEM,P12,chính thức,mã hóa" title = "Ký bằng chứng chỉ" -filenamePrefix = "signed" +filenamePrefix = "da_ky" chooseCertificate = "Chọn tệp chứng chỉ" chooseJksFile = "Chọn tệp JKS" chooseP12File = "Chọn tệp PKCS12" @@ -2704,7 +2709,7 @@ header = "Xóa chứng chỉ số khỏi PDF" selectPDF = "Chọn một tệp PDF:" submit = "Xóa chữ ký" description = "Công cụ này sẽ xóa chữ ký chứng chỉ số khỏi tài liệu PDF của bạn." -filenamePrefix = "unsigned" +filenamePrefix = "chua_ky" [removeCertSign.files] placeholder = "Chọn một tệp PDF trong màn hình chính để bắt đầu" @@ -3441,6 +3446,9 @@ signinTitle = "Vui lòng đăng nhập" ssoSignIn = "Đăng nhập qua Single Sign-on" oAuth2AutoCreateDisabled = "Tự động tạo người dùng OAUTH2 bị vô hiệu hóa" oAuth2AdminBlockedUser = "Hiện đang chặn đăng ký hoặc đăng nhập người dùng chưa đăng ký. Vui lòng liên hệ quản trị viên." +oAuth2RequiresLicense = "Đăng nhập OAuth/SSO cần giấy phép trả phí (Server hoặc Enterprise). Vui lòng liên hệ quản trị viên để nâng cấp gói của bạn." +saml2RequiresLicense = "Đăng nhập SAML cần giấy phép trả phí (Server hoặc Enterprise). Vui lòng liên hệ quản trị viên để nâng cấp gói của bạn." +maxUsersReached = "Đã đạt số lượng người dùng tối đa cho giấy phép hiện tại của bạn. Vui lòng liên hệ quản trị viên để nâng cấp gói hoặc thêm suất." oauth2RequestNotFound = "Không tìm thấy yêu cầu ủy quyền" oauth2InvalidUserInfoResponse = "Phản hồi thông tin người dùng không hợp lệ" oauth2invalidRequest = "Yêu cầu không hợp lệ" @@ -3536,7 +3544,7 @@ title = "PDF thành một trang" header = "PDF thành một trang" submit = "Chuyển đổi thành một trang" description = "Công cụ này sẽ gộp tất cả các trang của PDF của bạn thành một trang đơn lớn. Chiều rộng giữ nguyên như các trang gốc, còn chiều cao sẽ bằng tổng chiều cao của tất cả các trang." -filenamePrefix = "single_page" +filenamePrefix = "mot_trang" [pdfToSinglePage.files] placeholder = "Chọn một tệp PDF ở màn hình chính để bắt đầu" @@ -3849,14 +3857,17 @@ fitToWidth = "Vừa chiều rộng" actualSize = "Kích thước thật" [viewer] +cannotPreviewFile = "Không thể xem trước tệp" +dualPageView = "Chế độ xem hai trang" firstPage = "Trang đầu" lastPage = "Trang cuối" -previousPage = "Trang trước" nextPage = "Trang tiếp" +onlyPdfSupported = "Trình xem chỉ hỗ trợ tệp PDF. Tệp này có vẻ là định dạng khác." +previousPage = "Trang trước" +singlePageView = "Chế độ xem trang đơn" +unknownFile = "Tệp không xác định" zoomIn = "Phóng to" zoomOut = "Thu nhỏ" -singlePageView = "Chế độ xem trang đơn" -dualPageView = "Chế độ xem hai trang" [rightRail] closeSelected = "Đóng các tệp đã chọn" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} đã chọn" download = "Tải xuống" delete = "Xóa" unsupported = "Không được hỗ trợ" +active = "Hoạt động" addToUpload = "Thêm vào tải lên" +closeFile = "Đóng tệp" deleteAll = "Xóa tất cả" loadingFiles = "Đang tải tệp..." noFiles = "Không có tệp nào" @@ -5800,6 +5813,13 @@ submit = "Đăng nhập" signInWith = "Đăng nhập với" oauthPending = "Đang mở trình duyệt để xác thực..." orContinueWith = "Hoặc tiếp tục bằng email" +serverRequirement = "Lưu ý: Máy chủ phải bật đăng nhập." +showInstructions = "Cách bật?" +hideInstructions = "Ẩn hướng dẫn" +instructions = "Để bật đăng nhập trên máy chủ Stirling PDF của bạn:" +instructionsEnvVar = "Đặt biến môi trường:" +instructionsOrYml = "Hoặc trong settings.yml:" +instructionsRestart = "Sau đó khởi động lại máy chủ để các thay đổi có hiệu lực." [setup.login.username] label = "Tên người dùng" diff --git a/frontend/public/locales/zh-BO/translation.toml b/frontend/public/locales/zh-BO/translation.toml index 32cad040d9..7f529909a9 100644 --- a/frontend/public/locales/zh-BO/translation.toml +++ b/frontend/public/locales/zh-BO/translation.toml @@ -163,6 +163,11 @@ unfavorite = "从收藏中移除" fullscreen = "切换到全屏模式" sidebar = "切换到侧边栏模式" +[backendStartup] +notFoundTitle = "未找到后端" +retry = "重试" +unreachable = "应用目前无法连接到后端。请检查后端状态和网络连接,然后重试。" + [zipWarning] title = "大型 ZIP 文件" message = "此 ZIP 包含 {{count}} 个文件。仍要解压吗?" @@ -3441,6 +3446,9 @@ signinTitle = "ནང་འཛུལ་གནང་རོགས།" ssoSignIn = "གཅིག་གྱུར་ནང་འཛུལ་བརྒྱུད་ནས་ནང་འཛུལ།" oAuth2AutoCreateDisabled = "OAUTH2 རང་འགུལ་སྤྱོད་མཁན་གསར་བཟོ་བཀག་སྡོམ་བྱས་ཟིན།" oAuth2AdminBlockedUser = "ད་ལྟ་ཐོ་འགོད་མ་བྱས་པའི་སྤྱོད་མཁན་གྱི་ཐོ་འགོད་དང་ནང་འཛུལ་བཀག་སྡོམ་བྱས་ཡོད། དོ་དམ་པར་འབྲེལ་བ་གནང་རོགས།" +oAuth2RequiresLicense = "使用 OAuth/SSO 登录需要付费许可(Server 或 Enterprise)。请联系管理员升级您的方案。" +saml2RequiresLicense = "使用 SAML 登录需要付费许可(Server 或 Enterprise)。请联系管理员升级您的方案。" +maxUsersReached = "您当前的许可已达到最大用户数。请联系管理员升级您的方案或增加席位。" oauth2RequestNotFound = "དབང་སྤྲོད་རེ་ཞུ་རྙེད་མ་བྱུང་།" oauth2InvalidUserInfoResponse = "སྤྱོད་མཁན་གྱི་གནས་ཚུལ་ལན་འདེབས་ནོར་འཁྲུལ།" oauth2invalidRequest = "རེ་ཞུ་ནོར་འཁྲུལ།" @@ -3849,14 +3857,17 @@ fitToWidth = "适应宽度" actualSize = "实际大小" [viewer] +cannotPreviewFile = "无法预览文件" +dualPageView = "双页视图" firstPage = "第一页" lastPage = "最后一页" -previousPage = "上一页" nextPage = "下一页" +onlyPdfSupported = "此查看器仅支持 PDF 文件。该文件似乎为其他格式。" +previousPage = "上一页" +singlePageView = "单页视图" +unknownFile = "未知文件" zoomIn = "放大" zoomOut = "缩小" -singlePageView = "单页视图" -dualPageView = "双页视图" [rightRail] closeSelected = "关闭所选文件" @@ -4647,7 +4658,9 @@ selectedCount = "已选 {{count}} 个" download = "下载" delete = "删除" unsupported = "不支持" +active = "已启用" addToUpload = "添加到上传" +closeFile = "关闭文件" deleteAll = "全部删除" loadingFiles = "正在加载文件..." noFiles = "暂无文件" @@ -5800,6 +5813,13 @@ submit = "登录" signInWith = "登录方式" oauthPending = "正在打开浏览器进行认证..." orContinueWith = "或使用邮箱继续" +serverRequirement = "注意:服务器必须启用登录功能。" +showInstructions = "如何启用?" +hideInstructions = "隐藏说明" +instructions = "在您的 Stirling PDF 服务器上启用登录功能:" +instructionsEnvVar = "设置环境变量:" +instructionsOrYml = "或在 settings.yml 中:" +instructionsRestart = "然后重启服务器以使更改生效。" [setup.login.username] label = "用户名" diff --git a/frontend/public/locales/zh-CN/translation.toml b/frontend/public/locales/zh-CN/translation.toml index 6ad277eb6e..f8170d3507 100644 --- a/frontend/public/locales/zh-CN/translation.toml +++ b/frontend/public/locales/zh-CN/translation.toml @@ -163,6 +163,11 @@ unfavorite = "从收藏中移除" fullscreen = "切换到全屏模式" sidebar = "切换到侧边栏模式" +[backendStartup] +notFoundTitle = "未找到后端" +retry = "重试" +unreachable = "应用程序当前无法连接到后端。请检查后端状态和网络连接,然后重试。" + [zipWarning] title = "大型 ZIP 文件" message = "此 ZIP 包含 {{count}} 个文件。仍要解压?" @@ -2577,7 +2582,7 @@ chooseP12File = "选择 PKCS12 文件" choosePfxFile = "选择 PFX 文件" choosePrivateKey = "选择私钥文件" location = "位置" -logoTitle = "Logo" +logoTitle = "徽标" name = "名称" noLogo = "无 Logo" pageNumber = "页码" @@ -3441,6 +3446,9 @@ signinTitle = "请登录" ssoSignIn = "通过单点登录登录" oAuth2AutoCreateDisabled = "OAuth2 自动创建用户已禁用" oAuth2AdminBlockedUser = "目前已阻止未注册用户的注册或登录。请联系管理员。" +oAuth2RequiresLicense = "OAuth/SSO 登录需要付费许可(Server 或 Enterprise)。请联系管理员以升级您的计划。" +saml2RequiresLicense = "SAML 登录需要付费许可(Server 或 Enterprise)。请联系管理员以升级您的计划。" +maxUsersReached = "您当前的许可已达到用户数量上限。请联系管理员以升级您的计划或增加席位。" oauth2RequestNotFound = "找不到验证请求" oauth2InvalidUserInfoResponse = "无效的用户信息响应" oauth2invalidRequest = "无效请求" @@ -3849,14 +3857,17 @@ fitToWidth = "适配宽度" actualSize = "实际大小" [viewer] +cannotPreviewFile = "无法预览文件" +dualPageView = "双页视图" firstPage = "第一页" lastPage = "最后一页" -previousPage = "上一页" nextPage = "下一页" +onlyPdfSupported = "该查看器仅支持 PDF 文件。此文件似乎是其他格式。" +previousPage = "上一页" +singlePageView = "单页视图" +unknownFile = "未知文件" zoomIn = "放大" zoomOut = "缩小" -singlePageView = "单页视图" -dualPageView = "双页视图" [rightRail] closeSelected = "关闭所选文件" @@ -4625,7 +4636,7 @@ searchFiles = "搜索文件…" recent = "最近" localFiles = "本地文件" googleDrive = "Google 云端硬盘" -googleDriveShort = "Drive" +googleDriveShort = "云端硬盘" myFiles = "我的文件" noRecentFiles = "未找到最近文件" googleDriveNotAvailable = "不可使用 Google 云端硬盘集成" @@ -4647,7 +4658,9 @@ selectedCount = "已选 {{count}}" download = "下载" delete = "删除" unsupported = "不支持" +active = "活跃" addToUpload = "添加至上传" +closeFile = "关闭文件" deleteAll = "删除全部" loadingFiles = "正在加载文件..." noFiles = "没有可用的文件" @@ -5800,6 +5813,13 @@ submit = "登录" signInWith = "使用以下方式登录" oauthPending = "正在打开浏览器进行认证..." orContinueWith = "或使用 Email 继续" +serverRequirement = "注意:服务器必须启用登录功能。" +showInstructions = "如何启用?" +hideInstructions = "隐藏说明" +instructions = "要在您的 Stirling PDF 服务器上启用登录:" +instructionsEnvVar = "设置环境变量:" +instructionsOrYml = "或在 settings.yml 中:" +instructionsRestart = "然后重启服务器以使更改生效。" [setup.login.username] label = "用户名" diff --git a/frontend/public/locales/zh-TW/translation.toml b/frontend/public/locales/zh-TW/translation.toml index d56060e52b..3f3647791d 100644 --- a/frontend/public/locales/zh-TW/translation.toml +++ b/frontend/public/locales/zh-TW/translation.toml @@ -163,6 +163,11 @@ unfavorite = "從我的最愛移除" fullscreen = "切換至全螢幕模式" sidebar = "切換至側邊欄模式" +[backendStartup] +notFoundTitle = "找不到後端" +retry = "重試" +unreachable = "應用程式目前無法連線至後端。請確認後端狀態與網路連線,然後再試一次。" + [zipWarning] title = "大型 ZIP 檔案" message = "此 ZIP 包含 {{count}} 個檔案。仍要解壓縮嗎?" @@ -1176,7 +1181,7 @@ selectFilesPlaceholder = "在主視圖選取檔案以開始" settings = "設定" conversionCompleted = "轉換完成" results = "結果" -defaultFilename = "converted_file" +defaultFilename = "已轉換_檔案" conversionResults = "轉換結果" convertFrom = "來源格式" convertTo = "目標格式" @@ -1363,7 +1368,7 @@ title = "新增浮水印" desc = "將文字或影像浮水印加入 PDF 檔案" completed = "已加入浮水印" submit = "新增浮水印" -filenamePrefix = "watermarked" +filenamePrefix = "已加_浮水印" [watermark.error] failed = "為 PDF 新增浮水印時發生錯誤。" @@ -3441,6 +3446,9 @@ signinTitle = "請登入" ssoSignIn = "透過 SSO 單一登入" oAuth2AutoCreateDisabled = "OAuth 2.0 自動建立使用者功能已停用" oAuth2AdminBlockedUser = "目前不允許未註冊的使用者註冊或登入。請聯絡系統管理員。" +oAuth2RequiresLicense = "OAuth/SSO 登入需要付費授權(Server 或 Enterprise)。請聯絡管理員升級您的方案。" +saml2RequiresLicense = "SAML 登入需要付費授權(Server 或 Enterprise)。請聯絡管理員升級您的方案。" +maxUsersReached = "您目前的授權已達使用者上限。請聯絡管理員以升級方案或新增席次。" oauth2RequestNotFound = "找不到驗證請求" oauth2InvalidUserInfoResponse = "使用者資訊回應無效" oauth2invalidRequest = "請求無效" @@ -3536,7 +3544,7 @@ title = "PDF 轉為單一頁面" header = "PDF 轉為單一頁面" submit = "轉換為單一頁面" description = "此工具會將 PDF 的所有頁面合併成一個大型單頁。寬度將與原頁相同,但高度會是所有頁面高度之總和。" -filenamePrefix = "single_page" +filenamePrefix = "單一_頁面" [pdfToSinglePage.files] placeholder = "在主畫面選擇一個 PDF 檔開始使用" @@ -3849,14 +3857,17 @@ fitToWidth = "適合寬度" actualSize = "實際大小" [viewer] +cannotPreviewFile = "無法預覽檔案" +dualPageView = "雙頁檢視" firstPage = "第一頁" lastPage = "最後一頁" -previousPage = "上一頁" nextPage = "下一頁" +onlyPdfSupported = "此檢視器僅支援 PDF 檔案。此檔案似乎是其他格式。" +previousPage = "上一頁" +singlePageView = "單頁檢視" +unknownFile = "未知檔案" zoomIn = "放大" zoomOut = "縮小" -singlePageView = "單頁檢視" -dualPageView = "雙頁檢視" [rightRail] closeSelected = "關閉已選檔案" @@ -4647,7 +4658,9 @@ selectedCount = "{{count}} 個已選" download = "下載" delete = "刪除" unsupported = "不支援" +active = "啟用" addToUpload = "加入上傳" +closeFile = "關閉檔案" deleteAll = "全部刪除" loadingFiles = "正在載入檔案..." noFiles = "沒有可用的檔案" @@ -5800,13 +5813,20 @@ submit = "登入" signInWith = "以此登入" oauthPending = "正在開啟瀏覽器進行驗證..." orContinueWith = "或改用 Email 繼續" +serverRequirement = "注意:伺服器必須啟用登入功能。" +showInstructions = "如何啟用?" +hideInstructions = "隱藏說明" +instructions = "在您的 Stirling PDF 伺服器上啟用登入功能:" +instructionsEnvVar = "設定環境變數:" +instructionsOrYml = "或在 settings.yml 中:" +instructionsRestart = "然後重新啟動伺服器以套用變更。" [setup.login.username] label = "使用者名稱" placeholder = "輸入你的使用者名稱" [setup.login.email] -label = "Email" +label = "電子郵件" placeholder = "輸入你的 Email" [setup.login.password] diff --git a/scripts/counter_translation_v3.py b/scripts/counter_translation_v3.py new file mode 100644 index 0000000000..d77ec285d0 --- /dev/null +++ b/scripts/counter_translation_v3.py @@ -0,0 +1,204 @@ +"""A script to update language progress status in README.md based on +TOML translation file comparison. + +This script compares the default translation TOML file with others in the locales directory to +determine language progress. +It then updates README.md based on provided progress list. + +Author: Ludy87 +Updated for TOML format + +Example: + To use this script, simply run it from command line: + $ python counter_translation_v3.py +""" # noqa: D205 + +import glob +import os +import re + +import tomlkit +import tomlkit.toml_file + + +def convert_to_multiline(data: tomlkit.TOMLDocument) -> tomlkit.TOMLDocument: + """Converts 'ignore' and 'missing' arrays to multiline arrays and sorts the first-level keys of the TOML document. + Enhances readability and consistency in the TOML file by ensuring arrays contain unique and sorted entries. + + Parameters: + data (tomlkit.TOMLDocument): The original TOML document containing the data. + + Returns: + tomlkit.TOMLDocument: A new TOML document with sorted keys and properly formatted arrays. + """ # noqa: D205 + sorted_data = tomlkit.document() + for key in sorted(data.keys()): + value = data[key] + if isinstance(value, dict): + new_table = tomlkit.table() + for subkey in ("ignore", "missing"): + if subkey in value: + # Convert the list to a set to remove duplicates, sort it, and convert to multiline for readability + unique_sorted_array = sorted(set(value[subkey])) + array = tomlkit.array() + array.multiline(True) + for item in unique_sorted_array: + array.append(item) + new_table[subkey] = array + sorted_data[key] = new_table + else: + # Add other types of data unchanged + sorted_data[key] = value + return sorted_data + + +def write_readme(progress_list: list[tuple[str, int]]) -> None: + """Updates the progress status in the README.md file based + on the provided progress list. + + Parameters: + progress_list (list[tuple[str, int]]): A list of tuples containing + language and progress percentage. + + Returns: + None + """ # noqa: D205 + with open("README.md", encoding="utf-8") as file: + content = file.readlines() + + for i, line in enumerate(content[2:], start=2): + for progress in progress_list: + language, value = progress + if language in line: + if match := re.search(r"\!\[(\d+(\.\d+)?)%\]\(.*\)", line): + content[i] = line.replace( + match.group(0), + f"![{value}%](https://geps.dev/progress/{value})", + ) + + with open("README.md", "w", encoding="utf-8", newline="\n") as file: + file.writelines(content) + + +def parse_toml_file(file_path): + """ + Parses a TOML translation file and returns a flat dictionary of all keys. + :param file_path: Path to the TOML file. + :return: Dictionary with flattened keys and values. + """ + with open(file_path, "r", encoding="utf-8") as file: + data = tomlkit.parse(file.read()) + + def flatten_dict(d, parent_key="", sep="."): + items = {} + for k, v in d.items(): + new_key = f"{parent_key}{sep}{k}" if parent_key else k + if isinstance(v, dict): + items.update(flatten_dict(v, new_key, sep=sep)) + else: + items[new_key] = v + return items + + return flatten_dict(data) + + +def compare_files( + default_file_path, file_paths, ignore_translation_file +) -> list[tuple[str, int]]: + """Compares the default TOML translation file with other + translation files in the locales directory. + + Parameters: + default_file_path (str): The path to the default translation TOML file. + file_paths (list): List of paths to translation TOML files. + ignore_translation_file (str): Path to the TOML file with ignore rules. + + Returns: + list[tuple[str, int]]: A list of tuples containing + language and progress percentage. + """ # noqa: D205 + default_keys = parse_toml_file(default_file_path) + num_keys = len(default_keys) + + result_list = [] + sort_ignore_translation: tomlkit.TOMLDocument + + # read toml + with open(ignore_translation_file, encoding="utf-8") as f: + sort_ignore_translation = tomlkit.parse(f.read()) + + for file_path in file_paths: + # Extract language code from directory name + locale_dir = os.path.basename(os.path.dirname(file_path)) + + # Convert locale format from hyphen to underscore for TOML compatibility + # e.g., en-GB -> en_GB, sr-LATN-RS -> sr_LATN_RS + language = locale_dir.replace("-", "_") + + fails = 0 + if language in ["en_GB", "en_US"]: + result_list.append(("en_GB", 100)) + result_list.append(("en_US", 100)) + continue + + if language not in sort_ignore_translation: + sort_ignore_translation[language] = tomlkit.table() + + if ( + "ignore" not in sort_ignore_translation[language] + or len(sort_ignore_translation[language].get("ignore", [])) < 1 + ): + sort_ignore_translation[language]["ignore"] = tomlkit.array( + ["language.direction"] + ) + + current_keys = parse_toml_file(file_path) + + # Compare keys + for default_key, default_value in default_keys.items(): + if default_key not in current_keys: + # Key is missing entirely + if default_key not in sort_ignore_translation[language]["ignore"]: + print(f"{language}: Key '{default_key}' is missing.") + fails += 1 + elif ( + default_value == current_keys[default_key] + and default_key not in sort_ignore_translation[language]["ignore"] + ): + # Key exists but value is untranslated (same as reference) + print(f"{language}: Key '{default_key}' is missing the translation.") + fails += 1 + elif default_value != current_keys[default_key]: + # Key is translated, remove from ignore list if present + if default_key in sort_ignore_translation[language]["ignore"]: + sort_ignore_translation[language]["ignore"].remove(default_key) + + print(f"{language}: {fails} out of {num_keys} keys are not translated.") + result_list.append( + ( + language, + int((num_keys - fails) * 100 / num_keys), + ) + ) + + ignore_translation = convert_to_multiline(sort_ignore_translation) + with open(ignore_translation_file, "w", encoding="utf-8", newline="\n") as file: + file.write(tomlkit.dumps(ignore_translation)) + + unique_data = list(set(result_list)) + unique_data.sort(key=lambda x: x[1], reverse=True) + + return unique_data + + +if __name__ == "__main__": + directory = os.path.join(os.getcwd(), "frontend", "public", "locales") + translation_file_paths = glob.glob(os.path.join(directory, "*", "translation.toml")) + reference_file = os.path.join(directory, "en-GB", "translation.toml") + + scripts_directory = os.path.join(os.getcwd(), "scripts") + translation_state_file = os.path.join(scripts_directory, "ignore_translation.toml") + + write_readme( + compare_files(reference_file, translation_file_paths, translation_state_file) + ) diff --git a/scripts/translations/README.md b/scripts/translations/README.md index a4f9f53d3d..0a228ef4b3 100644 --- a/scripts/translations/README.md +++ b/scripts/translations/README.md @@ -2,6 +2,12 @@ This directory contains Python scripts for managing frontend translations in Stirling PDF. These tools help analyze, merge, validate, and manage translations against the en-GB golden truth file. +## Current Format: TOML + +**Stirling PDF uses TOML format for translations** in `frontend/public/locales/{lang}/translation.toml`. + +**All scripts now support TOML format!** + ## Quick Start - Automated Translation (RECOMMENDED) The **fastest and easiest way** to translate a language is using the automated pipeline: @@ -451,18 +457,15 @@ python scripts/translations/translation_merger.py fr-FR apply-translations --tra ## Translation File Structure -Translation files are located in `frontend/public/locales/{language}/translation.json` with nested JSON structure: +Translation files are located in `frontend/public/locales/{language}/translation.toml` with TOML structure: -```json -{ - "addPageNumbers": { - "title": "Add Page Numbers", - "selectText": { - "1": "Select PDF file:", - "2": "Margin Size" - } - } -} +```toml +[addPageNumbers] +title = "Add Page Numbers" + +[addPageNumbers.selectText] +"1" = "Select PDF file:" +"2" = "Margin Size" ``` Keys use dot notation internally (e.g., `addPageNumbers.selectText.1`). @@ -478,7 +481,7 @@ All scripts preserve placeholders like `{n}`, `{total}`, `{filename}` in transla ### Automatic Backups Scripts create timestamped backups before modifying files: ``` -translation.backup.20241201_143022.json +translation.backup.20241201_143022.toml ``` ### Context-Aware Translation diff --git a/scripts/translations/auto_translate.py b/scripts/translations/auto_translate.py index dff15368fa..8545ef5ede 100644 --- a/scripts/translations/auto_translate.py +++ b/scripts/translations/auto_translate.py @@ -225,7 +225,7 @@ def beautify_translations(language_code): """Beautify translation file to match en-GB structure.""" print(f"\n✨ Beautifying {language_code} translation file...") - cmd = f'python3 scripts/translations/json_beautifier.py --language {language_code}' + cmd = f'python3 scripts/translations/toml_beautifier.py --language {language_code}' if not run_command(cmd): print(f"✗ Failed to beautify translations") diff --git a/scripts/translations/bulk_auto_translate.py b/scripts/translations/bulk_auto_translate.py new file mode 100644 index 0000000000..60967c9eab --- /dev/null +++ b/scripts/translations/bulk_auto_translate.py @@ -0,0 +1,344 @@ +#!/usr/bin/env python3 +""" +Bulk Auto-Translate All Languages +Automatically translates all languages in parallel using OpenAI API. +Supports concurrent translation with configurable thread pool. +""" + +import argparse +import os +import sys +import time +from pathlib import Path +from concurrent.futures import ThreadPoolExecutor, as_completed +import subprocess +from typing import List, Tuple, Optional +import threading + +try: + import tomllib # Python 3.11+ +except ImportError: + try: + import toml as tomllib_fallback + tomllib = None + except ImportError: + tomllib = None + tomllib_fallback = None + + +# Thread-safe print lock +print_lock = threading.Lock() + + +def safe_print(*args, **kwargs): + """Thread-safe print function.""" + with print_lock: + print(*args, **kwargs) + + +def get_all_languages(locales_dir: Path) -> List[str]: + """Get all language codes from locales directory.""" + languages = [] + + if not locales_dir.exists(): + print(f"Error: Locales directory not found: {locales_dir}") + return [] + + for lang_dir in sorted(locales_dir.iterdir()): + if lang_dir.is_dir() and lang_dir.name != "en-GB": + # Check if translation file exists + toml_file = lang_dir / "translation.toml" + json_file = lang_dir / "translation.json" + + if toml_file.exists() or json_file.exists(): + languages.append(lang_dir.name) + + return languages + + +def get_language_completion(locales_dir: Path, language: str) -> Optional[float]: + """Get completion percentage for a language.""" + lang_dir = locales_dir / language + toml_file = lang_dir / "translation.toml" + json_file = lang_dir / "translation.json" + + # Load target language file + target_file = toml_file if toml_file.exists() else json_file if json_file.exists() else None + if not target_file: + return None + + try: + if target_file.suffix == '.toml': + if tomllib: + with open(target_file, 'rb') as f: + target_data = tomllib.load(f) + elif tomllib_fallback: + with open(target_file, 'r', encoding='utf-8') as f: + target_data = tomllib_fallback.load(f) + else: + return None + else: + import json + with open(target_file, 'r', encoding='utf-8') as f: + target_data = json.load(f) + + # Load en-GB reference + en_gb_toml = locales_dir / 'en-GB' / 'translation.toml' + en_gb_json = locales_dir / 'en-GB' / 'translation.json' + en_gb_file = en_gb_toml if en_gb_toml.exists() else en_gb_json + + if en_gb_file.suffix == '.toml': + if tomllib: + with open(en_gb_file, 'rb') as f: + en_gb_data = tomllib.load(f) + elif tomllib_fallback: + with open(en_gb_file, 'r', encoding='utf-8') as f: + en_gb_data = tomllib_fallback.load(f) + else: + return None + else: + import json + with open(en_gb_file, 'r', encoding='utf-8') as f: + en_gb_data = json.load(f) + + # Flatten and count + def flatten(d, parent=''): + items = {} + for k, v in d.items(): + key = f"{parent}.{k}" if parent else k + if isinstance(v, dict): + items.update(flatten(v, key)) + else: + items[key] = v + return items + + en_gb_flat = flatten(en_gb_data) + target_flat = flatten(target_data) + + # Count translated (not equal to en-GB) + translated = sum(1 for k in en_gb_flat if k in target_flat and target_flat[k] != en_gb_flat[k]) + total = len(en_gb_flat) + + return (translated / total * 100) if total > 0 else 0.0 + + except Exception as e: + print(f"Warning: Could not calculate completion for {language}: {e}") + return None + + +def translate_language(language: str, api_key: str, batch_size: int, timeout: int, skip_verification: bool) -> Tuple[str, bool, str]: + """ + Translate a single language. + Returns: (language_code, success, message) + """ + safe_print(f"[{language}] Starting translation...") + + cmd = [ + 'python3', 'scripts/translations/auto_translate.py', + language, + '--api-key', api_key, + '--batch-size', str(batch_size), + '--timeout', str(timeout) + ] + + if skip_verification: + cmd.append('--skip-verification') + + try: + result = subprocess.run( + cmd, + capture_output=True, + text=True, + timeout=timeout * 5 # Overall timeout = 5x per-batch timeout + ) + + if result.returncode == 0: + # Check if nothing to translate + if "Nothing to translate!" in result.stdout: + safe_print(f"[{language}] ✓ Already complete") + return (language, True, "Already complete") + safe_print(f"[{language}] ✓ Success") + return (language, True, "Success") + else: + error_msg = result.stderr.strip() or result.stdout.strip() or "Unknown error" + safe_print(f"[{language}] ✗ Failed: {error_msg[:100]}") + return (language, False, error_msg[:200]) # Truncate long errors + + except subprocess.TimeoutExpired: + safe_print(f"[{language}] ✗ Timeout exceeded") + return (language, False, "Timeout exceeded") + except Exception as e: + safe_print(f"[{language}] ✗ Error: {str(e)}") + return (language, False, str(e)) + + +def main(): + parser = argparse.ArgumentParser( + description='Bulk auto-translate all languages using OpenAI API', + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=""" +Examples: + # Translate all languages with 10 parallel threads + python3 bulk_auto_translate.py --parallel 10 + + # Translate only incomplete languages (< 95%) + python3 bulk_auto_translate.py --parallel 5 --threshold 95 + + # Translate specific languages only + python3 bulk_auto_translate.py --languages de-DE fr-FR es-ES --parallel 3 + + # Dry run to see what would be translated + python3 bulk_auto_translate.py --dry-run + +Note: Requires OPENAI_API_KEY environment variable or --api-key argument. +""" + ) + + parser.add_argument('--api-key', help='OpenAI API key (or set OPENAI_API_KEY env var)') + parser.add_argument('--parallel', type=int, default=1, + help='Number of parallel translation threads (default: 1)') + parser.add_argument('--batch-size', type=int, default=500, + help='Entries per batch for translation (default: 500)') + parser.add_argument('--timeout', type=int, default=600, + help='Timeout per batch in seconds (default: 600)') + parser.add_argument('--threshold', type=float, default=0.0, + help='Only translate languages below this completion %% (default: 0 = all)') + parser.add_argument('--languages', nargs='+', + help='Translate only specific languages (e.g., de-DE fr-FR)') + parser.add_argument('--locales-dir', default='frontend/public/locales', + help='Path to locales directory') + parser.add_argument('--skip-verification', action='store_true', + help='Skip final completion verification for each language') + parser.add_argument('--dry-run', action='store_true', + help='Show what would be translated without actually translating') + + args = parser.parse_args() + + # Verify API key (unless dry run) + api_key = args.api_key or os.environ.get('OPENAI_API_KEY') + if not args.dry_run and not api_key: + print("Error: OpenAI API key required. Provide via --api-key or OPENAI_API_KEY environment variable") + sys.exit(1) + + locales_dir = Path(args.locales_dir) + + # Get languages to translate + if args.languages: + languages = args.languages + print(f"Translating specified languages: {', '.join(languages)}") + else: + languages = get_all_languages(locales_dir) + print(f"Found {len(languages)} languages (excluding en-GB)") + + if not languages: + print("No languages to translate!") + sys.exit(0) + + # Filter by completion threshold + if args.threshold > 0: + print(f"\nFiltering languages below {args.threshold}% completion...") + filtered = [] + for lang in languages: + completion = get_language_completion(locales_dir, lang) + if completion is None: + filtered.append(lang) # Include if can't determine + print(f" {lang}: Unknown completion - will translate") + elif completion < args.threshold: + filtered.append(lang) + print(f" {lang}: {completion:.1f}% - will translate") + else: + print(f" {lang}: {completion:.1f}% - skipping (above threshold)") + + languages = filtered + + if not languages: + print("\nNo languages below threshold!") + sys.exit(0) + + print(f"\n{'='*60}") + print(f"Bulk Translation Configuration") + print(f"{'='*60}") + print(f"Languages to translate: {len(languages)}") + print(f"Parallel threads: {args.parallel}") + print(f"Batch size: {args.batch_size}") + print(f"Timeout per batch: {args.timeout}s") + if args.threshold > 0: + print(f"Completion threshold: {args.threshold}%") + print(f"{'='*60}\n") + + if args.dry_run: + print("DRY RUN - Languages that would be translated:") + for lang in languages: + completion = get_language_completion(locales_dir, lang) + comp_str = f"{completion:.1f}%" if completion is not None else "Unknown" + print(f" - {lang} ({comp_str})") + print(f"\nTotal: {len(languages)} languages") + sys.exit(0) + + start_time = time.time() + + # Translate in parallel + results = { + 'success': [], + 'failed': [], + 'already_complete': [] + } + + with ThreadPoolExecutor(max_workers=args.parallel) as executor: + futures = { + executor.submit( + translate_language, + lang, + api_key, + args.batch_size, + args.timeout, + args.skip_verification + ): lang + for lang in languages + } + + for future in as_completed(futures): + language, success, message = future.result() + + if success: + if message == "Already complete": + results['already_complete'].append(language) + else: + results['success'].append(language) + else: + results['failed'].append((language, message)) + + elapsed = time.time() - start_time + + # Print summary + print("\n" + "="*60) + print("Bulk Translation Summary") + print("="*60) + print(f"Total languages: {len(languages)}") + print(f"Successful: {len(results['success'])}") + print(f"Already complete: {len(results['already_complete'])}") + print(f"Failed: {len(results['failed'])}") + print(f"Time elapsed: {elapsed:.1f} seconds ({elapsed/60:.1f} minutes)") + print("="*60) + + if results['success']: + print(f"\n✅ Successfully translated ({len(results['success'])}):") + for lang in sorted(results['success']): + print(f" - {lang}") + + if results['already_complete']: + print(f"\n✓ Already complete ({len(results['already_complete'])}):") + for lang in sorted(results['already_complete']): + print(f" - {lang}") + + if results['failed']: + print(f"\n❌ Failed ({len(results['failed'])}):") + for lang, msg in sorted(results['failed']): + print(f" - {lang}: {msg}") + sys.exit(1) + + print("\n✅ Bulk translation completed successfully!") + + +if __name__ == '__main__': + main()