From 456106195e47c96d8213d6c6a9a1c70478e95206 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Fri, 6 Mar 2026 11:09:18 +0000 Subject: [PATCH] translations and version bump (#5878) --- build.gradle | 2 +- .../public/locales/ar-AR/translation.toml | 643 +++++++++++++++++- .../public/locales/az-AZ/translation.toml | 643 +++++++++++++++++- .../public/locales/bg-BG/translation.toml | 643 +++++++++++++++++- .../public/locales/bo-CN/translation.toml | 643 +++++++++++++++++- .../public/locales/ca-CA/translation.toml | 643 +++++++++++++++++- .../public/locales/cs-CZ/translation.toml | 643 +++++++++++++++++- .../public/locales/da-DK/translation.toml | 643 +++++++++++++++++- .../public/locales/de-DE/translation.toml | 643 +++++++++++++++++- .../public/locales/el-GR/translation.toml | 643 +++++++++++++++++- .../public/locales/es-ES/translation.toml | 643 +++++++++++++++++- .../public/locales/eu-ES/translation.toml | 643 +++++++++++++++++- .../public/locales/fa-IR/translation.toml | 643 +++++++++++++++++- .../public/locales/fr-FR/translation.toml | 643 +++++++++++++++++- .../public/locales/ga-IE/translation.toml | 643 +++++++++++++++++- .../public/locales/hi-IN/translation.toml | 643 +++++++++++++++++- .../public/locales/hr-HR/translation.toml | 643 +++++++++++++++++- .../public/locales/hu-HU/translation.toml | 643 +++++++++++++++++- .../public/locales/id-ID/translation.toml | 643 +++++++++++++++++- .../public/locales/it-IT/translation.toml | 643 +++++++++++++++++- .../public/locales/ja-JP/translation.toml | 643 +++++++++++++++++- .../public/locales/ko-KR/translation.toml | 643 +++++++++++++++++- .../public/locales/ml-ML/translation.toml | 643 +++++++++++++++++- .../public/locales/nl-NL/translation.toml | 643 +++++++++++++++++- .../public/locales/no-NB/translation.toml | 643 +++++++++++++++++- .../public/locales/pl-PL/translation.toml | 643 +++++++++++++++++- .../public/locales/pt-BR/translation.toml | 643 +++++++++++++++++- .../public/locales/pt-PT/translation.toml | 643 +++++++++++++++++- .../public/locales/ro-RO/translation.toml | 643 +++++++++++++++++- .../public/locales/ru-RU/translation.toml | 643 +++++++++++++++++- .../public/locales/sk-SK/translation.toml | 643 +++++++++++++++++- .../public/locales/sl-SI/translation.toml | 643 +++++++++++++++++- .../locales/sr-LATN-RS/translation.toml | 643 +++++++++++++++++- .../public/locales/sv-SE/translation.toml | 643 +++++++++++++++++- .../public/locales/th-TH/translation.toml | 643 +++++++++++++++++- .../public/locales/tr-TR/translation.toml | 643 +++++++++++++++++- .../public/locales/uk-UA/translation.toml | 643 +++++++++++++++++- .../public/locales/vi-VN/translation.toml | 643 +++++++++++++++++- .../public/locales/zh-BO/translation.toml | 643 +++++++++++++++++- .../public/locales/zh-CN/translation.toml | 643 +++++++++++++++++- .../public/locales/zh-TW/translation.toml | 643 +++++++++++++++++- 41 files changed, 24601 insertions(+), 1121 deletions(-) diff --git a/build.gradle b/build.gradle index 791893a39..9afe38dd1 100644 --- a/build.gradle +++ b/build.gradle @@ -78,7 +78,7 @@ springBoot { allprojects { group = 'stirling.software' - version = '2.6.0' + version = '2.7.0' configurations.configureEach { exclude group: "org.springframework.boot", module: "spring-boot-starter-tomcat" diff --git a/frontend/public/locales/ar-AR/translation.toml b/frontend/public/locales/ar-AR/translation.toml index b54de96be..d29fe7344 100644 --- a/frontend/public/locales/ar-AR/translation.toml +++ b/frontend/public/locales/ar-AR/translation.toml @@ -96,6 +96,8 @@ pin = "تثبيت الملف (إبقاؤه نشطًا بعد تشغيل الأد poweredBy = "مدعوم بواسطة" pro = "محترف" processTimeWarning = "تحذير: يمكن أن تستغرق هذه العملية ما يصل إلى دقيقة حسب حجم الملف" +processingComplete = "ملفك جاهز." +processingCompleteMultiple = "تم تجهيز {{count}} ملفًا." property = "الخاصية" quickPosition = "موضع سريع" red = "أحمر" @@ -105,6 +107,7 @@ save = "حفظ" saveToBrowser = "حفظ في المتصفح" saveUnavailable = "الحفظ غير متاح لهذا العنصر" seeDockerHub = "انظر Docker Hub" +editSecret = "تحرير هذه القيمة" selectFillter = "- حدد -" size = "الحجم" sponsor = "راعٍ" @@ -651,6 +654,7 @@ description = "تهيئة موفري المصادقة الخارجيين مثل disconnect = "قطع الاتصال" disconnected = "تم قطع اتصال المزوّد بنجاح" disconnectError = "فشل قطع اتصال المزوّد" +documentation = "عرض التوثيق" imageResolutionFull = "كاملة (الحجم الأصلي)" imageResolutionReduced = "مخفَّضة (حتى 1200px)" linkedServices = "خدمات مرتبطة" @@ -964,6 +968,18 @@ label = "اللغة الافتراضية" description = "الحد الأقصى لحجم رفع الملف (مثل: 100MB، 1GB)" label = "حد رفع الملفات" +[admin.settings.general.hideDisabledTools] +description = "إخفاء الأدوات المعطّلة من الواجهة" +label = "إخفاء الأدوات المعطّلة" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "إخفاء زر Google Drive عند عدم تمكينه" +label = "إخفاء Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "إخفاء زر ماسح QR على الهاتف المحمول عند عدم تمكينه" +label = "إخفاء الماسح المحمول" + [admin.settings.general.frontendUrl] description = "عنوان URL الأساسي للواجهة الأمامية (مثل https://pdf.example.com). يُستخدم لروابط دعوات البريد الإلكتروني وعمليات الرفع عبر رمز QR على الهاتف المحمول. اتركه فارغًا لاستخدام عنوان URL للواجهة الخلفية." label = "عنوان URL للواجهة الأمامية" @@ -1148,6 +1164,8 @@ title = "الأمان" [admin.settings.security.audit] label = "سجل التدقيق" +showDetails = "إظهار تفاصيل مستوى التدقيق" +hideDetails = "إخفاء تفاصيل مستوى التدقيق" [admin.settings.security.audit.enabled] description = "تتبع إجراءات المستخدمين وأحداث النظام للامتثال ومراقبة الأمان" @@ -1157,10 +1175,32 @@ label = "تمكين سجل التدقيق" description = "0=إيقاف، 1=أساسي، 2=قياسي، 3=مفصل" label = "مستوى التدقيق" +[admin.settings.security.audit.levelDetails] +off = "بدون تسجيل تدقيق (باستثناء أحداث الأمان الحرجة)" +basic = "عمليات ملفات PDF (ضغط، تقسيم، دمج، إلخ) وتغييرات الإعدادات. يلتقط: حالة العملية (نجاح/فشل)، معاملات الطريقة، التوقيت. حجم سجلات منخفض." +standard = "أحداث BASIC بالإضافة إلى: تسجيل دخول/خروج المستخدم، تغييرات الحساب، طلبات GET العامة. يستثني مكالمات الاستطلاع المستمرة (/auth/me، /app-config، /health، إلخ) لتقليل ضوضاء السجلات. مثالي لمعظم عمليات النشر." +verbose = "أحداث STANDARD بالإضافة إلى: مكالمات الاستطلاع المستمرة، جميع طلبات GET، تفاصيل التوقيت. تحذير: حجم سجلات عالٍ وتأثير على الأداء." + [admin.settings.security.audit.retentionDays] description = "عدد الأيام للاحتفاظ بسجلات التدقيق" label = "الاحتفاظ بسجلات التدقيق (أيام)" +[admin.settings.security.audit.advancedOptions] +title = "خيارات متقدمة" +description = "الخيارات التالية تزيد وقت المعالجة واستخدام الذاكرة. فعّلها فقط عند الحاجة فعلًا." + +[admin.settings.security.audit.captureFileHash] +description = "استخراج بصمة SHA-256 لملفات PDF المرفوعة للتحقق من السلامة. مستقل عن مستوى التدقيق." +label = "التقاط بصمة الملف (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "استخراج حقل المؤلف من مستندات PDF أثناء المعالجة. يتطلب تحليل PDF ويزيد زمن الاستجابة. مستقل عن مستوى التدقيق." +label = "التقاط بيانات مؤلف PDF" + +[admin.settings.security.audit.captureOperationResults] +description = "التقاط قيم إرجاع الطريقة. غير مُوصى به: يزيد بشكل ملحوظ من حجم السجلات واستخدام القرص." +label = "التقاط نتائج العملية" + [admin.settings.security.csrfDisabled] description = "تعطيل حماية تزوير طلبات المواقع (غير مستحسن)" label = "تعطيل حماية CSRF" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "تهيئة تسجيل التدقيق" +configureAuditMessage = "اضبط مستوى تسجيل التدقيق، وفترة الاحتفاظ، وإعدادات أخرى في قسم الأمان والمصادقة." disabled = "تم تعطيل تسجيل التدقيق" disabledMessage = "قم بتمكين تسجيل التدقيق في إعدادات التطبيق لتتبع أحداث النظام." enterpriseRequired = "يتطلب ترخيص Enterprise" enterpriseRequiredMessage = "نظام سجلات التدقيق ميزة ضمن فئة Enterprise. يرجى الترقية إلى ترخيص Enterprise للوصول إلى سجلات التدقيق والتحليلات." +goToSettings = "الانتقال إلى إعدادات التدقيق" notAvailable = "نظام التدقيق غير متاح" notAvailableMessage = "لم يتم تهيئة نظام التدقيق أو أنه غير متاح." -[audit.charts] -byType = "الأحداث حسب النوع" -byUser = "الأحداث حسب المستخدم" -day = "اليوم" -error = "خطأ في تحميل الرسوم البيانية" -month = "الشهر" -overTime = "الأحداث مع مرور الوقت" -title = "لوحة معلومات التدقيق" -week = "الأسبوع" - [audit.error] title = "خطأ في تحميل نظام التدقيق" -[audit.events] -actions = "إجراءات" -clearFilters = "مسح" -details = "تفاصيل" -endDate = "تاريخ الانتهاء" -error = "خطأ في تحميل الأحداث" -eventDetails = "تفاصيل الحدث" -filterByType = "تصفية حسب النوع" -filterByUser = "تصفية حسب المستخدم" -ipAddress = "عنوان IP" -noEvents = "لم يتم العثور على أحداث" -startDate = "تاريخ البدء" -timestamp = "الطابع الزمني" -title = "أحداث التدقيق" -type = "النوع" -user = "المستخدم" -viewDetails = "عرض التفاصيل" - [audit.export] clearFilters = "مسح" description = "تصدير أحداث التدقيق إلى تنسيق CSV أو JSON. استخدم عوامل التصفية لتقييد البيانات المصدّرة." endDate = "تاريخ الانتهاء" error = "فشل تصدير البيانات" exportButton = "تصدير البيانات" +fieldAuthor = "المؤلف (من PDF)" +fieldDate = "التاريخ" +fieldDocumentName = "اسم المستند" +fieldFileHash = "بصمة الملف (SHA-256)" +fieldIpAddress = "عنوان IP" +fieldOperationResults = "نتائج العملية" +fieldOutcome = "النتيجة (نجاح/فشل)" +fieldTool = "الأداة" +fieldUsername = "اسم المستخدم" filterByType = "تصفية حسب النوع" filterByUser = "تصفية حسب المستخدم" filters = "عوامل التصفية (اختياري)" format = "صيغة التصدير" +selectFields = "حدد الحقول المطلوب تضمينها" startDate = "تاريخ البدء" title = "تصدير بيانات التدقيق" +verboseRequired = "يتطلب مستوى تدقيق VERBOSE" [audit.systemStatus] +autoRefresh = "تحديث تلقائي" +autoRefreshLabel = "تحديث تلقائي كل 30 ثانية" +captureBySettings = "فعِّل من الإعدادات" +capturedFields = "الحقول الملتقطة" +date = "التاريخ" days = "أيام" disabled = "معطّل" +documentName = "اسم المستند" enabled = "مُمكّن" +fileHash = "بصمة الملف" level = "مستوى التدقيق" +pdfAuthor = "مؤلف PDF" retention = "فترة الاحتفاظ" status = "تسجيل التدقيق" title = "حالة النظام" +tool = "الأداة" totalEvents = "إجمالي الأحداث" +username = "اسم المستخدم" +verboseOnly = "VERBOSE فقط" + +[audit.stats] +activeUsers = "المستخدمون النشطون" +attention = "بحاجة إلى انتباه" +avgLatency = "متوسط زمن الاستجابة" +error = "خطأ في تحميل الإحصائيات" +errorLoadingStats = "فشل تحميل الإحصائيات" +excellent = "ممتاز" +good = "جيد" +noData = "غير متاح" +successRate = "معدل النجاح" +title = "الملخّص" +totalEvents = "إجمالي الأحداث" +vsLastPeriod = "مقارنة بالفترة السابقة" + +[audit.charts] +byTool = "أكثر الأدوات استخدامًا" +byType = "الأحداث حسب النوع" +byUser = "الأحداث حسب المستخدم" +day = "اليوم" +error = "خطأ في تحميل الرسوم البيانية" +hourlyActivity = "النشاط حسب الساعة" +month = "الشهر" +noData = "لا توجد بيانات لهذه الفترة" +overTime = "الأحداث مع مرور الوقت" +title = "لوحة معلومات التدقيق" +week = "الأسبوع" + +[audit.events] +actions = "إجراءات" +author = "المؤلف" +clearFilters = "مسح" +details = "تفاصيل" +documentName = "المستند" +endDate = "تاريخ الانتهاء" +error = "خطأ في تحميل الأحداث" +eventDetails = "تفاصيل الحدث" +failure = "فشل" +fileHash = "بصمة الملف" +filterByType = "تصفية حسب النوع" +filterByUser = "تصفية حسب المستخدم" +ipAddress = "عنوان IP" +noEvents = "لم يتم العثور على أحداث" +outcome = "الحالة" +sortAsc = "فرز تصاعدي" +sortDesc = "فرز تنازلي" +startDate = "تاريخ البدء" +success = "نجاح" +timestamp = "الطابع الزمني" +title = "أحداث التدقيق" +type = "النوع" +user = "المستخدم" +viewDetails = "عرض التفاصيل" + +[audit.filters] +allOutcomes = "الكل" +failureOnly = "الفشل فقط" +last7Days = "آخر 7 أيام" +last30Days = "آخر 30 يومًا" +outcomeFilter = "النتيجة" +quickPresets = "عوامل تصفية سريعة" +successOnly = "النجاح فقط" +thisMonth = "هذا الشهر" +today = "اليوم" [audit.tabs] +clearData = "مسح البيانات" dashboard = "لوحة المعلومات" events = "أحداث التدقيق" export = "تصدير" +[audit.clearData] +cancel = "إلغاء" +codeDoesNotMatch = "الرمز غير متطابق" +codePlaceholder = "اكتب الرمز هنا" +confirmationCode = "رمز التأكيد" +confirmationRequired = "حذف كل بيانات التدقيق" +confirmMessage = "سيؤدي هذا إلى إزالة جميع سجلات التدقيق نهائيًا. أدخل رمز التأكيد أدناه للمتابعة." +confirmTitle = "يرجى تأكيد رغبتك في الحذف" +deleteButton = "حذف" +enterCode = "رمز التأكيد" +enterCodeBelow = "أدخل الرمز تمامًا كما هو موضح أعلاه (مع مراعاة حالة الأحرف)" +initiateDelete = "حذف جميع البيانات" +irreversible = "غير قابل للتراجع" +success = "تم بنجاح" +successMessage = "تم مسح جميع بيانات التدقيق بنجاح" +warning1 = "لا يمكن التراجع عن هذا الإجراء" +warning2 = "سيؤدي حذف بيانات التدقيق إلى إزالة جميع سجلات التدقيق التاريخية نهائيًا، بما في ذلك أحداث الأمان، وأنشطة المستخدمين، وعمليات الملفات من قاعدة البيانات." + [auth] accessDenied = "تم رفض الوصول" insufficientPermissions = "ليست لديك صلاحية لتنفيذ هذا الإجراء." @@ -2254,9 +2374,11 @@ copy = "نسخ" done = "تم" error = "خطأ" expand = "توسيع" +learnMore = "معرفة المزيد" lines = "أسطر" loading = "جارٍ التحميل..." next = "التالي" +operation = "هذه العملية" preview = "معاينة" previous = "السابق" refresh = "تحديث" @@ -2920,6 +3042,7 @@ copyStack = "نسخ تتبع المكدس" discordSubmit = "Discord - إرسال منشور دعم" dismissAllErrors = "تجاهل كل الأخطاء" encryptedPdfMustRemovePassword = "هذا PDF مشفّر أو محمي بكلمة مرور. يرجى فتحه قبل التحويل إلى PDF/A." +generic = "حدث خطأ" github = "إرسال تذكرة على GitHub" githubSubmit = "GitHub - إرسال تذكرة" incorrectPasswordProvided = "كلمة مرور PDF غير صحيحة أو غير مذكورة." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "تمت ترقية اشتراكك بنجاح. تم تح upgradeSuccess = "تم الدفع بنجاح! تم ترقية اشتراكك. تم تحديث الترخيص على خادمك. ستتلقى رسالة تأكيد عبر البريد الإلكتروني قريباً." upgradeTitle = "الترقية إلى {{planName}}" yearly = "سنوي" +checkoutOpened = "تم فتح صفحة الدفع في المتصفح" +checkoutInstructions = "أكمل عملية الشراء في نافذة المتصفح التي فُتحت للتو. بعد اكتمال الدفع، عُد إلى هنا وانقر الزر أدناه لتحديث معلومات الفوترة." +refreshBilling = "أتممتُ الدفع - تحديث الفوترة" +closeLater = "سأفعل ذلك لاحقًا" [payment.emailStage] continue = "متابعة" @@ -4679,6 +4806,13 @@ prompt = "اختر الصفحة لاستخراج الجدول" submit = "تحويل" title = "PDF إلى CSV" +[PDFToXLSX] +header = "PDF إلى Excel" +prompt = "اختر الصفحات لاستخراج الجداول" +submit = "تحويل" +title = "PDF إلى Excel (XLSX)" +tags = "جدول بيانات,excel,xlsx,جدول,استخراج,تحويل" + [PDFToHTML] credit = "تستخدم هذه الخدمة pdftohtml لتحويل الملفات." header = "PDF إلى HTML" @@ -4835,6 +4969,7 @@ customPricing = "مخصص" featureComparison = "مقارنة الميزات" from = "من" hideComparison = "إخفاء مقارنة الميزات" +included = "مشمول" includedInCurrent = "مشمولة في خطتك" licensedSeats = "المرخَّصة: {{count}} مقعداً" manage = "إدارة" @@ -4852,9 +4987,11 @@ title = "الخطة النشطة" [plan.availablePlans] subtitle = "اختر الخطة التي تناسب احتياجاتك" +loadError = "تعذّر تحميل أسعار الخطط. سيتم استخدام القيم الافتراضية." title = "الخطط المتاحة" [plan.enterprise] +siteLicense = "ترخيص موقع" highlight1 = "تسعير مخصص" highlight2 = "دعم مخصص" highlight3 = "أحدث الميزات" @@ -4928,6 +5065,81 @@ keyDescription = "الصق مفتاح الترخيص من بريدك الإلك success = "تم تفعيل الترخيص!" successMessage = "تم تفعيل ترخيصك بنجاح. يمكنك الآن إغلاق هذه النافذة." +[plan.team] +name = "الفريق" +siteLicense = "ترخيص موقع" + +[credits] +enableOverageBilling = "تمكين فوترة التجاوز" +maybeLater = "ربما لاحقًا" +upgrade = "ترقية" + +[credits.modal] +advancedMonitoring = "مراقبة متقدمة" +allInOneWorkspace = "مساحة عمل PDF شاملة (عارض، أدوات ووكيل)" +apiSandbox = "بيئة Sandbox لـ API" +contactSales = "تواصل مع المبيعات" +creditsRemaining = "متبقٍ {{current}} من {{total}}" +creditsThisMonth = "أرصدة شهرية" +current = "الخطة الحالية" +customPricing = "مُخصص" +customSmartFolders = "مجلدات ذكية مخصصة" +dedicatedSupportSlas = "دعم مخصص واتفاقيات مستوى الخدمة (SLA)" +enterpriseSubscription = "المؤسسات" +everythingInCredits = "كل ما في الأرصدة، بالإضافة إلى:" +everythingInFree = "كل ما في المجاني، بالإضافة إلى:" +fasterThroughput = "إنتاجية أسرع 10 مرات" +forRegularWork = "لأعمال PDF الاعتيادية:" +freeTier = "المستوى المجاني" +fullyPrivateFiles = "ملفات خاصة بالكامل" +largeFileProcessing = "معالجة الملفات الكبيرة" +managedMemberMessage = "لديك وصول غير محدود إلى الأرصدة عبر فريقك. إذا كنت بحاجة إلى مساعدة، يرجى التواصل مع قائد فريقك." +managedMemberTitle = "أرصدة غير محدودة" +meteringBillingNote = "تُفوتر أرصدة التجاوز شهريًا مع اشتراك خطة الفريق الخاصة بك. تتبع استخدامك في أي وقت من إعدادات حسابك." +meteringExplanation = "تتضمن خطة الفريق لديك {{credits}} رصيدًا شهريًا. عند نفادها، توفّر فوترة التجاوز تلقائيًا أرصدة إضافية لكي لا تتوقف عن العمل." +meteringIncluded = "{{credits}} رصيدًا/شهر مشمول مع خطة الفريق" +meteringNoCommitment = "بدون التزام، يمكنك الإلغاء في أي وقت" +meteringNeverRunOut = "لا تنفد الأرصدة مطلقًا" +meteringPayAsYouGo = "ادفع فقط مقابل ما تستخدمه" +meteringPrice = "أرصدة إضافية بسعر {{price}}/رصيد" +meteringTitle = "فوترة التجاوز حسب الاستهلاك" +monthlyCredits = "أرصدة شهرية" +orgWideAccess = "ضوابط وصول على مستوى المؤسسة" +overage = "تجاوز" +perMonth = "/شهر" +popular = "شائع" +premiumAiModels = "نماذج ذكاء اصطناعي متميزة" +prioritySupport = "دعم أولوية" +privateDocCloud = "سحابة مستندات خاصة" +ragFineTuning = "RAG + ضبط دقيق" +secureApiAccess = "وصول API آمن" +selfHostLink = "راجع المستندات والخطط" +selfHostPrompt = "هل تريد الاستضافة الذاتية؟" +standardThroughput = "إنتاجية قياسية" +subtitle = "رقِّ إلى خطة الفريق لتحصل على أرصدة أكثر بـ 10 مرات ومعالجة أسرع." +subtitlePro = "فعِّل الفوترة التلقائية عند التجاوز كي لا تنفد أرصدتك أبدًا." +teamLeaderOnly = "فقط قادة الفريق يمكنهم تمكين فوترة التجاوز" +teamSubscription = "الفريق" +titleExhausted = "لقد استخدمت أرصدتك المجانية" +titleExhaustedPro = "لقد نفدت أرصدتك" +unlimitedApiAccess = "وصول API غير محدود" +unlimitedMonthlyCredits = "ترخيص موقع" +unlimitedSeats = "مقاعد غير محدودة" + +[credits.modal.features] +everythingInCredits = "كل ما في الأرصدة، بالإضافة إلى:" +everythingInFree = "كل ما في المجاني، بالإضافة إلى:" +forRegularWork = "لأعمال PDF الاعتيادية:" + +[credits.insufficient] +brief = "أرصدة غير كافية. تحتاج إلى {{required}} رصيدًا ولكن لديك {{current}}." +freeTier = "رقِّ إلى خطة الفريق لتحصل على أرصدة أكثر بـ 10 مرات وفوترة تجاوز غير محدودة." +managedMember = "يرجى التواصل مع قائد فريقك للمساعدة." +message = "ليس لديك ما يكفي من الأرصدة لتشغيل {{tool}}. لديك حاليًا {{current}} رصيدًا." +messageWithAmount = "تحتاج إلى {{required}} رصيدًا لتشغيل {{tool}}، ولكن لديك فقط {{current}}." +teamMember = "فعِّل فوترة التجاوز كي لا تنفد الأرصدة." +title = "أرصدة غير كافية" + [printFile] header = "طباعة ملف بالطابعة" submit = "طباعة" @@ -5565,6 +5777,70 @@ user = "تم تسجيل الدخول باسم" saas = "Stirling Cloud" selfhosted = "مستضاف ذاتياً" +[settings.planBilling] +currentPlan = "الخطة الحالية" +loading = "جارٍ تحميل معلومات الفوترة..." +notAvailable = "الخطة والفوترة متاحتان فقط عند الاتصال بـ Stirling Cloud (وضع SaaS)." +title = "الخطة والفوترة" + +[settings.planBilling.billing] +manageBilling = "إدارة الفوترة" +nextBillingDate = "تاريخ الفوترة التالي" +overageCost = "تكلفة التجاوز الحالية: {{amount}} ({{credits}} رصيدًا)" + +[settings.planBilling.credits] +estimatedCost = "التكلفة التقديرية: {{amount}}" +freeTierInfo = "تتضمن الخطة المجانية {{freeCredits}} رصيدًا شهريًا. رقِّ إلى خطة الفريق لتحصل على {{teamCredits}} رصيدًا/شهر وفوترة تجاوز حسب الاستهلاك." +included = "{{count}} رصيدًا/شهر (مشمول)" +noOverage = "لا توجد رسوم تجاوز هذا الشهر. أنت تستخدم أرصدتك المشمولة البالغة {{count}}." +overage = "+ {{count}} تجاوز" +overageInfo = "تتم فوترة أرصدة التجاوز بسعر {{price}} لكل رصيد. ستدفع فقط مقابل ما يتجاوز مخصصك الشهري." +title = "استخدام الأرصدة" + +[settings.planBilling.errors] +fetchFailed = "تعذّر جلب بيانات الفوترة" +retry = "إعادة المحاولة" + +[settings.planBilling.status] +active = "مفعّل" +canceled = "ملغاة" +pastDue = "متأخر السداد" +trial = "تجريبي" + +[settings.planBilling.tier] +enterprise = "المؤسسات" +enterpriseDescription = "ميزات ودعم مؤسسي مخصص" +free = "مجاني" +freeDescription = "50 رصيدًا شهريًا" +team = "الفريق" +teamBadge = "الفريق" +teamDescription = "500 رصيد/شهر مشمول، فوترة تجاوز تلقائية لخدمة دون انقطاع" +teamTooltipCredits = "تتضمن خطة الفريق {{credits}} رصيدًا/شهر." +teamTooltipFineprint = "لا تدفع إلا مقابل ما تستخدمه بعد الأرصدة المشمولة." +teamTooltipOverage = "فوترة تجاوز تلقائية بسعر {{price}}/رصيد تضمن خدمة دون انقطاع." + +[settings.planBilling.team] +managedByTeam = "يُدار بواسطة الفريق" +memberCount = "{{count}} عضوًا في الفريق" + +[settings.planBilling.trial] +daysRemaining = "{{days}} يومًا متبقيًا" +daysRemainingFull = "تنتهي تجربتك خلال {{days}} يومًا" +endDate = "ينتهي: {{date}}" +endsOn = "تنتهي التجربة" +title = "تجربة مجانية مفعّلة" + +[settings.planBilling.upgrade] +cta = "الترقية إلى خطة الفريق" +featureApi = "وصول API للأتمتة" +featureCredits = "{{teamCredits}} رصيدًا شهريًا (مقابل {{freeCredits}} في المجاني)" +featureMembers = "أعضاء فريق غير محدودين" +featureSupport = "دعم أولوية" +featureThroughput = "إنتاجية معالجة أسرع" +opensInBrowser = "يفتح في المتصفح لإكمال الترقية" +subtitle = "رقِّ إلى خطة الفريق لتحصل على:" +title = "رقِّ خطتك" + [settings.developer] apiKeys = "مفاتيح API" title = "المطور" @@ -5689,6 +5965,9 @@ people = "الأشخاص" teams = "الفرق" title = "مساحة العمل" +[settings.team] +title = "الفريق" + [setup] description = "ابدأ باختيار كيفية استخدام Stirling PDF" welcome = "مرحباً بك في Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "تقسيم تلقائي باستخدام أوراق فاصلة" name = "فاصل الصفحات" tooltip = "استخدم أوراق فواصل برمز QR بين المستندات عند المسح" +[split.methods.byPoster] +name = "أجزاء قابلة للطباعة" +desc = "قسّم الصفحات الكبيرة إلى أحجام قابلة للطباعة" +tooltip = "قسّم الصفحات كبيرة الحجم إلى أجزاء أصغر مناسبة للطباعة على ورق قياسي (A4، Letter، إلخ)" + [split.methods.byPages] desc = "استخراج صفحات محددة (1,3,5-10)" name = "أرقام الصفحات" @@ -6029,6 +6313,7 @@ tooltip = "حدّد أقصى حجم للملف (مثل 10MB، 500KB)" [split.methods.prefix] splitAt = "تقسيم عند" splitBy = "تقسيم حسب" +splitInto = "قسّم إلى" [split.methodSelection.tooltip] bullet1 = "انقر بطاقة الطريقة لاختيارها" @@ -6048,6 +6333,21 @@ selectMethodFirst = "يرجى اختيار طريقة التقسيم أولًا" chooseMethod = "اختر الطريقة" settings = "إعدادات" +[split.poster] +rightToLeft = "قسّم من اليمين إلى اليسار" + +[split.poster.pageSize] +label = "حجم الصفحة المستهدف" +description = "حجم صفحات الإخراج للطباعة" + +[split.poster.xFactor] +label = "تقسيمات أفقية" +description = "عدد الأعمدة التي تُقسَّم إليها كل صفحة" + +[split.poster.yFactor] +label = "تقسيمات عمودية" +description = "عدد الصفوف التي تُقسَّم إليها كل صفحة" + [split.tooltip.byChapters] bullet1 = "مستوى الإشارة المرجعية: المستوى الذي سيتم التقسيم عنده (1 = المستوى الأعلى)" bullet2 = "تضمين البيانات الوصفية: الحفاظ على خصائص المستند" @@ -6085,6 +6385,14 @@ bullet5 = "فعّل Duplex Mode إذا كنت تمسح وجهي أوراق ال text = "قسّم المستندات الممسوحة تلقائيًا باستخدام أوراق فواصل فيزيائية مع رموز QR. مثالي لمعالجة عدة مستندات ممسوحة معًا." title = "تقسيم بواسطة صفحة فاصل" +[split.tooltip.byPoster] +bullet1 = "حجم الصفحة المستهدف: اختر حجم ورق الإخراج (A4، Letter، إلخ)" +bullet2 = "التقسيمات الأفقية/العمودية: حجم الشبكة للتقسيم" +bullet3 = "من اليمين إلى اليسار: عكس ترتيب الأعمدة للتخطيطات RTL" +bullet4 = "اطبع واسمِ القطع معًا لإنشاء ملصقك" +text = "قسّم صفحات PDF الكبيرة إلى أجزاء صغيرة قابلة للطباعة مناسبة لأحجام الورق القياسية. مثالي لإنشاء مطبوعات ملصقات من الصفحات كبيرة الحجم." +title = "تقسيم للطباعة كملصق" + [split.tooltip.byPages] bullet1 = "نقاط تقسيم مفردة: 3,7 (يقسم بعد الصفحتين 3 و7)" bullet2 = "نقاط تقسيم بالنطاق: 3-8 (يقسم قبل الصفحة 3 وبعد الصفحة 8)" @@ -6364,9 +6672,13 @@ tags = "التقاط الويب,حفظ الصفحة,تحويل الويب إلى title = "URL إلى PDF" [usage] +aboutUsageAnalytics = "حول تحليلات الاستخدام" +configureSettings = "تهيئة إعدادات التحليلات" error = "خطأ في تحميل إحصائيات الاستخدام" noData = "لا توجد بيانات متاحة" noDataMessage = "لا توجد إحصائيات استخدام متاحة حاليًا." +usageAnalyticsExplanation = "تتبع تحليلات الاستخدام طلبات نقاط النهاية وأنماط استخدام الأدوات. وبالاقتران مع لوحة تسجيل التدقيق، ستحصل على رؤية كاملة لنشاط النظام والأداء وأحداث الأمان." +viewAuditLogs = "عرض سجلات التدقيق" [usage.chart] title = "مخطط استخدام نقاط النهاية" @@ -6947,3 +7259,278 @@ cancel = "إلغاء" confirm = "استخراج" message = "هذا الملف ZIP يحتوي على {{count}} ملفات. هل تريد الاستخراج على أي حال؟" title = "ملف ZIP كبير" + +[cloudBadge] +tooltip = "ستستخدم هذه العملية أرصدة السحابة الخاصة بك" + +[team] +cancelInviteError = "تعذّر إلغاء الدعوة" +confirmCancelInvite = "هل أنت متأكد أنك تريد إلغاء هذه الدعوة؟" +confirmLeave = "هل أنت متأكد أنك تريد مغادرة هذا الفريق؟" +confirmLeaveLeader = "بصفتك قائد فريق، ستتم إزالتك من الفريق عند المغادرة. هل أنت متأكد؟" +confirmRemove = "هل أنت متأكد أنك تريد إزالة هذا العضو؟" +editName = "تحرير اسم الفريق" +inviteCancelled = "تم إلغاء الدعوة" +inviteError = "تعذّر إرسال الدعوة" +inviteSent = "تم إرسال الدعوة بنجاح" +leader = "القائد" +leaveButton = "مغادرة الفريق" +leaveError = "تعذّرت مغادرة الفريق" +leaveSuccess = "تمت مغادرة الفريق بنجاح" +loading = "جارٍ تحميل معلومات الفريق..." +memberCount = "{{count}} عضوًا" +memberRemoved = "تمت إزالة العضو بنجاح" +namePlaceholder = "أدخل اسم الفريق" +personal = "شخصي" +removeError = "تعذّرت إزالة العضو" +renameError = "تعذّرت إعادة تسمية الفريق" +renameSuccess = "تمت إعادة تسمية الفريق بنجاح" + +[team.invitationBanner] +message = "قد دعاك للانضمام" +acceptButton = "قبول" +rejectButton = "رفض" + +[team.features] +badge = "ميزات الفريق" +subtitle = "تعاون مع فريقك" +title = "التعاون داخل الفريق" +viewPlans = "عرض الخطط" + +[team.features.billing] +description = "إدارة الفوترة والاشتراكات" +title = "إدارة الفوترة" + +[team.features.credits] +description = "مجموعة أرصدة مشتركة لكل الأعضاء" +title = "أرصدة مشتركة" + +[team.features.dashboard] +description = "عرض نشاط الفريق والاستخدام" +title = "لوحة تحكم الفريق" + +[team.features.invite] +description = "أضف أعضاءً إلى فريقك" +title = "دعوة الأعضاء" + +[team.invite] +cancelLabel = "إلغاء" +invalidEmail = "عنوان بريد إلكتروني غير صالح" +placeholder = "أدخل عنوان البريد الإلكتروني" +sendButton = "إرسال الدعوة" +title = "دعوة عضو فريق" + +[team.members] +emailColumn = "البريد الإلكتروني" +empty = "لا يوجد أعضاء فريق بعد" +nameColumn = "الاسم" +pending = "قيد الانتظار" +remove = "إزالة" +roleColumn = "الدور" +title = "أعضاء الفريق" + +[team.upgrade] +button = "الترقية إلى خطة الفريق" +description = "فعّل ميزات التعاون داخل الفريق" +title = "الترقية إلى خطة الفريق" + +[provider.oauth2.google] +scope = "مصادقة تسجيل الدخول" + +[provider.oauth2.google.clientId] +label = "Client ID" +description = "OAuth2 Client ID من Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret من Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "النطاقات" +description = "نطاقات OAuth2 مفصولة بفواصل" + +[provider.oauth2.google.useAsUsername] +label = "استخدام كاسم مستخدم" +description = "الحقل المستخدم كاسم مستخدم (email، name، given_name، family_name)" + +[provider.oauth2.github] +scope = "مصادقة تسجيل الدخول" + +[provider.oauth2.github.clientId] +label = "Client ID" +description = "OAuth2 Client ID من إعدادات مطوري GitHub" + +[provider.oauth2.github.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret من إعدادات مطوري GitHub" + +[provider.oauth2.github.scopes] +label = "النطاقات" +description = "نطاقات OAuth2 مفصولة بفواصل" + +[provider.oauth2.github.useAsUsername] +label = "استخدام كاسم مستخدم" +description = "الحقل المستخدم كاسم مستخدم (email، login، name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Issuer URL" +description = "عنوان URL لنقطة اكتشاف OpenID Connect الخاصة بـ realm في Keycloak" + +[provider.oauth2.keycloak.clientId] +label = "Client ID" +description = "OAuth2 Client ID من Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret من Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "النطاقات" +description = "نطاقات OAuth2 مفصولة بفواصل" + +[provider.oauth2.keycloak.useAsUsername] +label = "استخدام كاسم مستخدم" +description = "الحقل المستخدم كاسم مستخدم (email، name، given_name، family_name، preferred_username)" + +[provider.oauth2.generic] +name = "OAuth2 عام" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "تمكين OAuth2 عام" +description = "تمكين المصادقة باستخدام مزوّد OAuth2 مخصص" + +[provider.oauth2.generic.provider] +label = "اسم المزوّد" +description = "اسم مزوّد OAuth2 لديك (مثل Azure AD، Okta)" + +[provider.oauth2.generic.issuer] +label = "Issuer URL" +description = "مزوّد يدعم OpenID Connect Discovery (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "Client ID" +description = "OAuth2 Client ID من مزوّدك" + +[provider.oauth2.generic.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret من مزوّدك" + +[provider.oauth2.generic.scopes] +label = "النطاقات" +description = "نطاقات OAuth2 مفصولة بفواصل" + +[provider.oauth2.generic.useAsUsername] +label = "استخدام كاسم مستخدم" +description = "الحقل المستخدم كاسم مستخدم" + +[provider.oauth2.generic.autoCreateUser] +label = "إنشاء المستخدمين تلقائيًا" +description = "إنشاء حسابات المستخدمين تلقائيًا عند أول تسجيل دخول عبر OAuth2" + +[provider.oauth2.generic.blockRegistration] +label = "حظر التسجيل" +description = "منع تسجيل المستخدمين الجدد عبر OAuth2" + +[provider.smtp] +name = "بريد SMTP" +scope = "إشعارات البريد الإلكتروني" + +[provider.smtp.enabled] +label = "تمكين البريد" +description = "تمكين إشعارات البريد الإلكتروني ووظائف SMTP" + +[provider.smtp.host] +label = "مضيف SMTP" +description = "اسم المضيف أو عنوان IP لخادم SMTP الخاص بك" + +[provider.smtp.port] +label = "منفذ SMTP" +description = "رقم المنفذ لاتصال SMTP (عادة 25 أو 465 أو 587)" + +[provider.smtp.username] +label = "اسم مستخدم SMTP" +description = "اسم المستخدم لمصادقة SMTP" + +[provider.smtp.password] +label = "كلمة مرور SMTP" +description = "كلمة المرور لمصادقة SMTP" + +[provider.smtp.from] +label = "عنوان المرسِل" +description = "عنوان البريد الإلكتروني المستخدم كمرسِل" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "تمكين SAML2" +description = "تمكين مصادقة SAML2 (للمؤسسات فقط)" + +[provider.saml2.provider] +label = "اسم المزوّد" +description = "اسم مزوّد SAML2 الخاص بك" + +[provider.saml2.registrationId] +label = "معرّف التسجيل" +description = "اسم تطبيق موفر الخدمة (SP) لديك" + +[provider.saml2.idpMetadataUri] +label = "IDP Metadata URI" +description = "URI لبيانات التعريف الخاصة بمزوّدك" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login URL" +description = "عنوان URL لبدء SSO" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout URL" +description = "عنوان URL لبدء SLO" + +[provider.saml2.idpIssuer] +label = "مُصدِر IDP" +description = "معرّف مزوّدك" + +[provider.saml2.idpCert] +label = "شهادة IDP" +description = "مسار الشهادة (مثل: classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "المفتاح الخاص" +description = "مسار مفتاحك الخاص" + +[provider.saml2.spCert] +label = "شهادة SP" +description = "مسار شهادة التوقيع الخاصة بك" + +[provider.saml2.autoCreateUser] +label = "إنشاء المستخدمين تلقائيًا" +description = "إنشاء حسابات المستخدمين تلقائيًا عند أول تسجيل دخول عبر SAML2" + +[provider.saml2.blockRegistration] +label = "حظر التسجيل" +description = "منع تسجيل المستخدمين الجدد عبر SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "استيراد ملفات" + +[provider.googledrive.enabled] +label = "تمكين منتقي ملفات Google Drive" +description = "السماح للمستخدمين باستيراد الملفات مباشرةً من Google Drive" + +[provider.googledrive.clientId] +label = "Client ID" +description = "Google OAuth 2.0 Client ID من Google Cloud Console" + +[provider.googledrive.apiKey] +label = "API Key" +description = "Google API Key لواجهة Google Picker API من Google Cloud Console" + +[provider.googledrive.appId] +label = "App ID" +description = "Google Drive App ID من Google Cloud Console" diff --git a/frontend/public/locales/az-AZ/translation.toml b/frontend/public/locales/az-AZ/translation.toml index f9c3ef3bf..2073cf07b 100644 --- a/frontend/public/locales/az-AZ/translation.toml +++ b/frontend/public/locales/az-AZ/translation.toml @@ -96,6 +96,8 @@ pin = "Faylı bərkid (alət icrasından sonra aktiv saxla)" poweredBy = "Təchiz edilmişdir" pro = "Pro" processTimeWarning = "Xəbərdarlıq: Bu proses fayl ölçüsündən asılı olaraq bir dəqiqəyə qədər vaxt ala bilər" +processingComplete = "Faylınız hazırdır." +processingCompleteMultiple = "{{count}} fayl hazırdır." property = "Xüsusiyyət" quickPosition = "Sürətli mövqe" red = "Qırmızı" @@ -105,6 +107,7 @@ save = "Saxla" saveToBrowser = "Brauzerdə Saxla" saveUnavailable = "Bu element üçün saxlama mövcud deyil" seeDockerHub = "Docker Hub-a bax" +editSecret = "Bu dəyəri redaktə et" selectFillter = "-- Seç --" size = "Ölçü" sponsor = "Sponsor" @@ -651,6 +654,7 @@ description = "OAuth2 və SAML kimi xarici autentifikasiya provayderlərini konf disconnect = "Ayır" disconnected = "Provayder uğurla ayrıldı" disconnectError = "Provayderi ayırmaq alınmadı" +documentation = "Sənədlərə bax" imageResolutionFull = "Tam (Orijinal ölçü)" imageResolutionReduced = "Azaldılmış (Maks 1200px)" linkedServices = "Bağlı Xidmətlər" @@ -964,6 +968,18 @@ label = "Standart Dil" description = "Maksimal fayl yükləmə ölçüsü (məs., 100MB, 1GB)" label = "Fayl yükləmə limiti" +[admin.settings.general.hideDisabledTools] +description = "Deaktiv edilmiş alətləri interfeysdən gizlət" +label = "Deaktiv alətləri gizlət" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Aktiv olmadıqda Google Drive düyməsini gizlət" +label = "Google Drive-ı gizlət" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Aktiv olmadıqda mobil QR skaner düyməsini gizlət" +label = "Mobil skaneri gizlət" + [admin.settings.general.frontendUrl] description = "Frontend üçün əsas URL (məs., https://pdf.example.com). E-poçt dəvət linkləri və mobil QR kod yükləmələri üçün istifadə olunur. Boş saxlayın ki, backend URL istifadə edilsin." label = "Frontend URL" @@ -1148,6 +1164,8 @@ title = "Təhlükəsizlik" [admin.settings.security.audit] label = "Audit Jurnallaşdırma" +showDetails = "Audit səviyyəsinin detallarını göstər" +hideDetails = "Audit səviyyəsinin detallarını gizlət" [admin.settings.security.audit.enabled] description = "Uyğunluq və təhlükəsizlik monitorinqi üçün istifadəçi hərəkətlərini və sistem hadisələrini izləyin" @@ -1157,10 +1175,32 @@ label = "Audit jurnallaşdırmanı aktiv et" description = "0=OFF, 1=BASIC, 2=STANDARD, 3=VERBOSE" label = "Audit Səviyyəsi" +[admin.settings.security.audit.levelDetails] +off = "Audit jurnalı yoxdur (kritik təhlükəsizlik hadisələri istisna olmaqla)" +basic = "PDF fayl əməliyyatları (sıxlaşdırma, bölmə, birləşdirmə və s.) və ayarlardakı dəyişikliklər. Qeyd edir: əməliyyat statusu (uğur/uğursuzluq), metod parametrləri, zamanlama. Minimal jurnal həcmi." +standard = "BASIC hadisələrə əlavə olaraq: istifadəçinin daxil olması/çıxışı, hesab dəyişiklikləri, ümumi GET sorğuları. Jurnal səs-küyünü azaltmaq üçün fasiləsiz pollinq çağırışlarını (/auth/me, /app-config, /health və s.) istisna edir. Əksər quraşdırmalar üçün uyğundur." +verbose = "STANDARD hadisələrə əlavə olaraq: fasiləsiz pollinq çağırışları, bütün GET sorğuları, detallı zamanlama. Xəbərdarlıq: yüksək jurnal həcmi və performans təsiri." + [admin.settings.security.audit.retentionDays] description = "Audit jurnallarının saxlanılacağı gün sayı" label = "Audit saxlanma (gün)" +[admin.settings.security.audit.advancedOptions] +title = "Qabaqcıl seçimlər" +description = "Aşağıdaki seçimlər işləmə vaxtını və yaddaş istifadəsini artırır. Yalnız həqiqətən lazım olduqda aktiv edin." + +[admin.settings.security.audit.captureFileHash] +description = "Yüklənən PDF fayllarının bütövlüyünü yoxlamaq üçün onların SHA-256 Hash-ını çıxar. Audit səviyyəsindən asılı deyil." +label = "Fayl Hash-ını çıxar (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Emal zamanı PDF sənədlərindən müəllif sahəsini çıxarır. PDF parsinqi tələb edir, gecikməni artırır. Audit səviyyəsindən asılı deyil." +label = "PDF müəllif metadatasını çıxar" + +[admin.settings.security.audit.captureOperationResults] +description = "Metodun geri qaytardığı dəyərləri qeyd edir. Tövsiyə olunmur: jurnal həcmini və disk istifadəsini əhəmiyyətli dərəcədə artırır." +label = "Əməliyyat nəticələrini qeyd et" + [admin.settings.security.csrfDisabled] description = "Cross-Site Request Forgery mühafizəsini söndür (tövsiyə olunmur)" label = "CSRF mühafizəsini söndür" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "Audit jurnallaşdırmasını konfiqurasiya et" +configureAuditMessage = "Təhlükəsizlik və Autentifikasiya bölməsində audit jurnallaşdırma səviyyəsini, saxlanma müddətini və digər ayarları tənzimləyin." disabled = "Audit jurnalı deaktiv edilib" disabledMessage = "Sistem hadisələrini izləmək üçün tətbiqin konfiqurasiyasında audit jurnalını aktivləşdirin." enterpriseRequired = "Enterprise lisenziyası tələb olunur" enterpriseRequiredMessage = "Audit jurnalı sistemi enterprise funksiyadır. Audit qeydləri və analitikaya giriş üçün zəhmət olmasa enterprise lisenziyaya yüksəldin." +goToSettings = "Audit ayarlarına keç" notAvailable = "Audit sistemi əlçatan deyil" notAvailableMessage = "Audit sistemi konfiqurasiya edilməyib və ya əlçatan deyil." -[audit.charts] -byType = "Növ üzrə hadisələr" -byUser = "İstifadəçiyə görə hadisələr" -day = "Gün" -error = "Qrafiklər yüklənərkən xəta" -month = "Ay" -overTime = "Zamana görə hadisələr" -title = "Audit paneli" -week = "Həftə" - [audit.error] title = "Audit sistemi yüklənərkən xəta" -[audit.events] -actions = "Əməliyyatlar" -clearFilters = "Təmizlə" -details = "Təfərrüatlar" -endDate = "Bitmə tarixi" -error = "Hadisələr yüklənərkən xəta" -eventDetails = "Hadisə təfərrüatları" -filterByType = "Növə görə filtrlə" -filterByUser = "İstifadəçiyə görə filtrlə" -ipAddress = "IP ünvanı" -noEvents = "Hadisə tapılmadı" -startDate = "Başlanğıc tarixi" -timestamp = "Vaxt damğası" -title = "Audit hadisələri" -type = "Növ" -user = "İstifadəçi" -viewDetails = "Təfərrüatlara baxın" - [audit.export] clearFilters = "Təmizlə" description = "Audit hadisələrini CSV və ya JSON formatına ixrac edin. İxrac olunan məlumatı məhdudlaşdırmaq üçün filtrlərdən istifadə edin." endDate = "Bitmə tarixi" error = "Məlumatın ixracı alınmadı" exportButton = "Məlumatı ixrac et" +fieldAuthor = "Müəllif (PDF-dən)" +fieldDate = "Tarix" +fieldDocumentName = "Sənəd adı" +fieldFileHash = "Fayl Hash (SHA-256)" +fieldIpAddress = "IP ünvanı" +fieldOperationResults = "Əməliyyat nəticələri" +fieldOutcome = "Nəticə (Uğur/Uğursuzluq)" +fieldTool = "Alət" +fieldUsername = "İstifadəçi adı" filterByType = "Növə görə filtrlə" filterByUser = "İstifadəçiyə görə filtrlə" filters = "Filtrlər (istəyə bağlı)" format = "İxrac formatı" +selectFields = "Daxil ediləcək sahələri seçin" startDate = "Başlanğıc tarixi" title = "Audit məlumatlarının ixracı" +verboseRequired = "VERBOSE audit səviyyəsi tələb olunur" [audit.systemStatus] +autoRefresh = "Avto-yeniləmə" +autoRefreshLabel = "Hər 30 saniyədən bir avto-yenilə" +captureBySettings = "Ayarlar vasitəsilə aktiv edin" +capturedFields = "Qeyd olunan sahələr" +date = "Tarix" days = "gün" disabled = "Deaktiv" +documentName = "Sənəd adı" enabled = "Aktiv" +fileHash = "Fayl Hash" level = "Audit səviyyəsi" +pdfAuthor = "PDF müəllifi" retention = "Saxlama müddəti" status = "Audit jurnalı" title = "Sistem statusu" +tool = "Alət" totalEvents = "Cəmi hadisələr" +username = "İstifadəçi adı" +verboseOnly = "Yalnız VERBOSE" + +[audit.stats] +activeUsers = "Aktiv istifadəçilər" +attention = "Diqqət tələb olunur" +avgLatency = "Orta gecikmə" +error = "Statistikanı yükləmə xətası" +errorLoadingStats = "Statistikanı yükləmək mümkün olmadı" +excellent = "Əla" +good = "Yaxşı" +noData = "Yoxdur" +successRate = "Uğur dərəcəsi" +title = "Xülasə" +totalEvents = "Ümumi hadisələr" +vsLastPeriod = "son dövrlə müqayisədə" + +[audit.charts] +byTool = "Ən çox istifadə olunan alətlər" +byType = "Növ üzrə hadisələr" +byUser = "İstifadəçiyə görə hadisələr" +day = "Gün" +error = "Qrafiklər yüklənərkən xəta" +hourlyActivity = "Saatlıq aktivlik" +month = "Ay" +noData = "Bu dövr üçün məlumat yoxdur" +overTime = "Zamana görə hadisələr" +title = "Audit paneli" +week = "Həftə" + +[audit.events] +actions = "Əməliyyatlar" +author = "Müəllif" +clearFilters = "Təmizlə" +details = "Təfərrüatlar" +documentName = "Sənəd" +endDate = "Bitmə tarixi" +error = "Hadisələr yüklənərkən xəta" +eventDetails = "Hadisə təfərrüatları" +failure = "Uğursuzluq" +fileHash = "Fayl Hash" +filterByType = "Növə görə filtrlə" +filterByUser = "İstifadəçiyə görə filtrlə" +ipAddress = "IP ünvanı" +noEvents = "Hadisə tapılmadı" +outcome = "Status" +sortAsc = "Artan sıralama" +sortDesc = "Azalan sıralama" +startDate = "Başlanğıc tarixi" +success = "Uğur" +timestamp = "Vaxt damğası" +title = "Audit hadisələri" +type = "Növ" +user = "İstifadəçi" +viewDetails = "Təfərrüatlara baxın" + +[audit.filters] +allOutcomes = "Hamısı" +failureOnly = "Yalnız uğursuzluqlar" +last7Days = "Son 7 gün" +last30Days = "Son 30 gün" +outcomeFilter = "Nəticə" +quickPresets = "Sürətli filtrlər" +successOnly = "Yalnız uğurlar" +thisMonth = "Bu ay" +today = "Bu gün" [audit.tabs] +clearData = "Məlumatları sil" dashboard = "İdarə paneli" events = "Audit hadisələri" export = "İxrac" +[audit.clearData] +cancel = "Ləğv et" +codeDoesNotMatch = "Kod uyğun gəlmir" +codePlaceholder = "Kodu buraya yazın" +confirmationCode = "Təsdiq kodu" +confirmationRequired = "Bütün audit məlumatlarını sil" +confirmMessage = "Bu, bütün audit jurnallarını geri dönüşü olmayan şəkildə siləcək. Davam etmək üçün aşağıda təsdiq kodunu daxil edin." +confirmTitle = "Silmək istədiyinizi təsdiqləyin" +deleteButton = "Sil" +enterCode = "Təsdiq kodu" +enterCodeBelow = "Kodu yuxarıda göstərildiyi kimi dəqiq daxil edin (böyük-kiçik hərf nəzərə alınır)" +initiateDelete = "Bütün məlumatları sil" +irreversible = "GERİ DÖNMƏZ" +success = "Uğur" +successMessage = "Bütün audit məlumatları uğurla silindi" +warning1 = "Bu əməliyyatı geri qaytarmaq mümkün deyil" +warning2 = "Audit məlumatlarının silinməsi təhlükəsizlik hadisələri, istifadəçi fəaliyyətləri və fayl əməliyyatları daxil olmaqla bütün tarixçəni verilənlər bazasından daimi olaraq siləcək." + [auth] accessDenied = "Giriş rədd edildi" insufficientPermissions = "Bu əməliyyatı yerinə yetirmək üçün icazəniz yoxdur." @@ -2254,9 +2374,11 @@ copy = "Kopyala" done = "Bitdi" error = "Xəta" expand = "Genişləndir" +learnMore = "Daha çox öyrən" lines = "sətir" loading = "Yüklənir..." next = "Növbəti" +operation = "bu əməliyyat" preview = "Önizləmə" previous = "Əvvəlki" refresh = "Yenilə" @@ -2920,6 +3042,7 @@ copyStack = "Stack Trace-i kopyalayın" discordSubmit = "Discord - Dəstək postunu göndərin" dismissAllErrors = "Bütün xətaları bağla" encryptedPdfMustRemovePassword = "Bu PDF şifrələnib və ya parol ilə qorunub. Zəhmət olmasa PDF/A-ya çevirməzdən əvvəl kilidi açın." +generic = "Xəta baş verdi" github = "GitHub-da bilet təqdim edin" githubSubmit = "GitHub - Bilet təqdim edin" incorrectPasswordProvided = "PDF parolu səhvdir və ya daxil edilməyib." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Abunəliyiniz uğurla yüksəldildi. Mövcud lisenziya upgradeSuccess = "Ödəniş uğurludur! Abunəliyiniz yüksəldildi. Lisenziya serverinizdə yeniləndi. Tezliklə təsdiq e-poçtu alacaqsınız." upgradeTitle = "{{planName}} planına yüksəldin" yearly = "İllik" +checkoutOpened = "Ödəniş səhifəsi brauzerdə açıldı" +checkoutInstructions = "İndi açılan brauzer pəncərəsində alışınızı tamamlayın. Ödəniş tamamlandıqdan sonra buraya qayıdın və hesab-faktura məlumatlarını yeniləmək üçün aşağıdakı düyməyə klikləyin." +refreshBilling = "Ödənişi tamamladım - Hesab-fakturanı yenilə" +closeLater = "Bunu sonra edəcəyəm" [payment.emailStage] continue = "Davam et" @@ -4679,6 +4806,13 @@ prompt = "Çıxartmaq Üçün Səhifə Seç" submit = "Çıxart" title = "PDF-i CSV-ə" +[PDFToXLSX] +header = "PDF-dən Excel-ə" +prompt = "Cədvəlləri çıxarmaq üçün səhifələri seçin" +submit = "Çevir" +title = "PDF-dən Excel-ə (XLSX)" +tags = "elektron cədvəl,excel,xlsx,cədvəl,çıxar,çevir" + [PDFToHTML] credit = "Bu Servis Fayl Çevirmək Üçün pdftohtml İşlədir" header = "PDF-i HTML-ə" @@ -4835,6 +4969,7 @@ customPricing = "Fərdi" featureComparison = "Xüsusiyyət Müqayisəsi" from = "Başlayır" hideComparison = "Xüsusiyyət müqayisəsini gizlət" +included = "Daxildir" includedInCurrent = "Cari planınıza daxildir" licensedSeats = "Lisenziyalı: {{count}} yer" manage = "İdarə et" @@ -4852,9 +4987,11 @@ title = "Aktiv Plan" [plan.availablePlans] subtitle = "Ehtiyaclarınıza uyğun planı seçin" +loadError = "Plan qiymətləri yüklənə bilmədi. Defolt dəyərlər istifadə olunur." title = "Mövcud Planlar" [plan.enterprise] +siteLicense = "Sayt lisenziyası" highlight1 = "Fərdi qiymətləndirmə" highlight2 = "Həsr olunmuş dəstək" highlight3 = "Ən son xüsusiyyətlər" @@ -4928,6 +5065,81 @@ keyDescription = "E-poçtunuzdakı lisenziya açarını yapışdırın" success = "Lisenziya aktivləşdirildi!" successMessage = "Lisenziyanız uğurla aktivləşdirildi. Bu pəncərəni indi bağlaya bilərsiniz." +[plan.team] +name = "Komanda" +siteLicense = "Sayt lisenziyası" + +[credits] +enableOverageBilling = "Həddən artıq istifadə üçün ödənişi aktiv et" +maybeLater = "Bəlkə sonra" +upgrade = "Təkmilləşdir" + +[credits.modal] +advancedMonitoring = "Qabaqcıl monitorinq" +allInOneWorkspace = "Hər şey bir yerdə PDF iş məkanı (baxış, alətlər və agent)" +apiSandbox = "API sandbox" +contactSales = "Satışla əlaqə saxla" +creditsRemaining = "{{total}}-dən {{current}} qalıb" +creditsThisMonth = "Aylıq kreditlər" +current = "Cari plan" +customPricing = "Fərdi" +customSmartFolders = "Fərdi Smart Qovluqlar" +dedicatedSupportSlas = "Ayrı-ayrı dəstək və SLA-lar" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Kreditlərdə olan hər şey və əlavə olaraq:" +everythingInFree = "Pulsuz plandakı hər şey və əlavə olaraq:" +fasterThroughput = "10x daha sürətli işləmə" +forRegularWork = "Müntəzəm PDF işi üçün:" +freeTier = "Pulsuz səviyyə" +fullyPrivateFiles = "Tam məxfi fayllar" +largeFileProcessing = "Böyük faylların emalı" +managedMemberMessage = "Komandanız vasitəsilə kreditlərə limitsiz çıxışınız var. Köməyə ehtiyacınız olarsa, komanda rəhbərinizlə əlaqə saxlayın." +managedMemberTitle = "Limitsiz kreditlər" +meteringBillingNote = "Həddən artıq istifadə kreditləri Komanda abunəliyinizlə birlikdə aylıq hesablanır. İstənilən vaxt hesab ayarlarınızda istifadənizi izləyə bilərsiniz." +meteringExplanation = "Komanda planınıza ayda {{credits}} kredit daxildir. Bitdikdə, həddən artıq istifadə üçün ödəniş avtomatik olaraq əlavə kreditlər təqdim edir ki, işiniz yarımçıq qalmasın." +meteringIncluded = "Komanda planı ilə ayda {{credits}} kredit daxildir" +meteringNoCommitment = "Öhdəlik yoxdur, istənilən vaxt ləğv edin" +meteringNeverRunOut = "Heç vaxt kreditiniz bitməsin" +meteringPayAsYouGo = "Yalnız istifadə etdiyiniz qədər ödəyin" +meteringPrice = "Əlavə kreditlər {{price}}/kredit" +meteringTitle = "İstifadə qədər ödəniş (overage) hesablama" +monthlyCredits = "aylıq kreditlər" +orgWideAccess = "Təşkilat üzrə giriş nəzarətləri" +overage = "həddən artıq istifadə" +perMonth = "/ay" +popular = "Məşhur" +premiumAiModels = "Premium AI modelləri" +prioritySupport = "Prioritet dəstək" +privateDocCloud = "Məxfi Sənəd Buludu" +ragFineTuning = "RAG + fine-tuning" +secureApiAccess = "Təhlükəsiz API giriş" +selfHostLink = "Sənədlərə və planlara baxın" +selfHostPrompt = "Özünüz host etmək istəyirsiniz?" +standardThroughput = "Standart işləmə" +subtitle = "10 dəfə çox kredit və daha sürətli emal üçün Komanda planına yüksəldin." +subtitlePro = "Kreditin heç vaxt bitməməsi üçün avtomatik həddən artıq istifadə ödənişini aktiv edin." +teamLeaderOnly = "Yalnız komanda rəhbərləri həddən artıq istifadə ödənişini aktiv edə bilər" +teamSubscription = "Komanda" +titleExhausted = "Pulsuz kreditlərinizi istifadə etdiniz" +titleExhaustedPro = "Kreditləriniz bitib" +unlimitedApiAccess = "Limitsiz API girişi" +unlimitedMonthlyCredits = "Sayt lisenziyası" +unlimitedSeats = "Limitsiz istifadəçi yerləri" + +[credits.modal.features] +everythingInCredits = "Kreditlərdə olan hər şey və əlavə olaraq:" +everythingInFree = "Pulsuz plandakı hər şey və əlavə olaraq:" +forRegularWork = "Müntəzəm PDF işi üçün:" + +[credits.insufficient] +brief = "Kreditlər kifayət deyil. {{required}} kredit lazımdır, sizdə {{current}} var." +freeTier = "10 dəfə çox kredit və limitsiz həddən artıq istifadə ödənişi üçün Komanda planına yüksəldin." +managedMember = "Kömək üçün xahiş edirik komanda rəhbərinizlə əlaqə saxlayın." +message = "{{tool}} işlətmək üçün kifayət qədər kreditiniz yoxdur. Hazırda {{current}} kreditiniz var." +messageWithAmount = "{{tool}} işlətmək üçün {{required}} kredit lazımdır, lakin sizdə yalnız {{current}} var." +teamMember = "Kreditin heç vaxt bitməməsi üçün həddən artıq istifadə ödənişini aktiv edin." +title = "Kifayət qədər kredit yoxdur" + [printFile] header = "Faylı printerdə çap edin" submit = "Çap et" @@ -5565,6 +5777,70 @@ user = "Daxil olub:" saas = "Stirling Cloud" selfhosted = "Öz serverində" +[settings.planBilling] +currentPlan = "Cari plan" +loading = "Hesab-faktura məlumatları yüklənir..." +notAvailable = "Plan və Hesab-faktura yalnız Stirling Cloud-a (SaaS rejimi) qoşulduqda mövcuddur." +title = "Plan və Hesab-faktura" + +[settings.planBilling.billing] +manageBilling = "Hesab-fakturanı idarə et" +nextBillingDate = "Növbəti hesab-faktura tarixi" +overageCost = "Cari həddən artıq istifadə dəyəri: {{amount}} ({{credits}} kredit)" + +[settings.planBilling.credits] +estimatedCost = "Təxmini dəyər: {{amount}}" +freeTierInfo = "Pulsuz plana ayda {{freeCredits}} kredit daxildir. Ayda {{teamCredits}} kredit və istifadə qədər ödənişli həddən artıq istifadə üçün Komandaya yüksəldin." +included = "{{count}} kredit/ay (daxildir)" +noOverage = "Bu ay həddən artıq istifadə ödənişi yoxdur. Daxil olan {{count}} kreditdən istifadə edirsiniz." +overage = "+ {{count}} həddən artıq istifadə" +overageInfo = "Həddən artıq istifadə kreditləri hər kredit üçün {{price}} ilə hesablanır. Aylıq limitdən kənar istifadə etdiyiniz qədər ödəyəcəksiniz." +title = "Kredit istifadəsi" + +[settings.planBilling.errors] +fetchFailed = "Hesab-faktura məlumatları əldə edilə bilmədi" +retry = "Yenidən cəhd et" + +[settings.planBilling.status] +active = "Aktiv" +canceled = "Ləğv edilib" +pastDue = "Gecikmiş" +trial = "Sınaq" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Fərdi enterprise funksiyalar və dəstək" +free = "Pulsuz" +freeDescription = "Ayda 50 kredit" +team = "Komanda" +teamBadge = "Komanda" +teamDescription = "Ayda 500 kredit daxildir, fasiləsiz xidmət üçün avtomatik həddən artıq istifadə ödənişi" +teamTooltipCredits = "Komanda planına ayda {{credits}} kredit daxildir." +teamTooltipFineprint = "Daxil olan kreditlərdən artıq istifadə etdiyiniz qədər ödəyin." +teamTooltipOverage = "{{price}}/kredit üzrə avtomatik həddən artıq istifadə ödənişi fasiləsiz xidməti təmin edir." + +[settings.planBilling.team] +managedByTeam = "Komanda tərəfindən idarə olunur" +memberCount = "{{count}} komanda üzvü" + +[settings.planBilling.trial] +daysRemaining = "{{days}} gün qalıb" +daysRemainingFull = "Sınaq müddətiniz {{days}} günə bitir" +endDate = "Bitmə tarixi: {{date}}" +endsOn = "Sınaq bitir" +title = "Pulsuz sınaq aktivdir" + +[settings.planBilling.upgrade] +cta = "Komandaya yüksəlt" +featureApi = "Avtomatlaşdırma üçün API girişi" +featureCredits = "Ayda {{teamCredits}} kredit (Pulsuz planda {{freeCredits}} ilə müqayisədə)" +featureMembers = "Limitsiz komanda üzvləri" +featureSupport = "Prioritet dəstək" +featureThroughput = "Daha sürətli emal performansı" +opensInBrowser = "Yüksəltməni tamamlamaq üçün brauzerdə açılır" +subtitle = "Aşağıdakılar üçün Komandaya yüksəldin:" +title = "Planınızı yüksəldin" + [settings.developer] apiKeys = "API açarları" title = "Tərtibatçı" @@ -5689,6 +5965,9 @@ people = "İstifadəçilər" teams = "Komandalar" title = "İş sahəsi" +[settings.team] +title = "Komanda" + [setup] description = "Stirling PDF-dən necə istifadə edəcəyinizi seçərək başlayın" welcome = "Stirling PDF-ə xoş gəlmisiniz" @@ -6011,6 +6290,11 @@ desc = "Ayırıcı vərəqlərlə avtomatik böl" name = "Ayırıcı səhifə" tooltip = "Skan edərkən sənədlər arasında QR kodlu ayırıcı vərəqlərdən istifadə edin" +[split.methods.byPoster] +name = "Çap üçün hissələr" +desc = "Böyük səhifələri çap ölçülərinə böl" +tooltip = "Böyük ölçülü səhifələri standart kağızlarda (A4, Letter və s.) çap üçün uyğun kiçik hissələrə bölün" + [split.methods.byPages] desc = "Müəyyən səhifələri çıxar (1,3,5-10)" name = "Səhifə nömrələri" @@ -6029,6 +6313,7 @@ tooltip = "Maksimum fayl ölçüsünü göstərin (məs. 10MB, 500KB)" [split.methods.prefix] splitAt = "Bölünmə nöqtəsi" splitBy = "Bölmə üsulu" +splitInto = "Hissəyə böl" [split.methodSelection.tooltip] bullet1 = "Seçmək üçün üsul kartına klikləyin" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Zəhmət olmasa əvvəlcə bölmə üsulunu seçin" chooseMethod = "Üsulu seçin" settings = "Parametrlər" +[split.poster] +rightToLeft = "Sağdan-sola böl" + +[split.poster.pageSize] +label = "Məqsəd səhifə ölçüsü" +description = "Çap üçün çıxış səhifələrinin ölçüsü" + +[split.poster.xFactor] +label = "Üfiqi bölmələr" +description = "Hər səhifənin neçə sütuna bölünəcəyi" + +[split.poster.yFactor] +label = "Şaquli bölmələr" +description = "Hər səhifənin neçə sətirə bölünəcəyi" + [split.tooltip.byChapters] bullet1 = "Əlfəcin səviyyəsi: Hansı səviyyədə bölmək (1=ən üst səviyyə)" bullet2 = "Metadatanı daxil et: Sənəd xüsusiyyətlərini qoruyun" @@ -6085,6 +6385,14 @@ bullet5 = "Ayırıcı vərəqlərin hər iki tərəfini skan edirsinizsə Duplex text = "QR kodlu fiziki ayırıcı vərəqlərdən istifadə edərək skan olunmuş sənədləri avtomatik bölün. Birlikdə skan edilmiş bir neçə sənədi emal etmək üçün mükəmməldir." title = "Ayırıcı səhifəyə görə böl" +[split.tooltip.byPoster] +bullet1 = "Məqsəd səhifə ölçüsü: Çıxış kağız ölçüsünü seçin (A4, Letter və s.)" +bullet2 = "Üfiqi/Şaquli bölmələr: Bölünmə üçün şəbəkə ölçüsü" +bullet3 = "Sağdan-Sola: RTL tərtibatları üçün sütunların tərs düzülüşü" +bullet4 = "Plakatınızı yaratmaq üçün hissələri çap edib birləşdirin" +text = "Böyük PDF səhifələrini standart kağız ölçülərinə uyğun, çap edilə bilən kiçik hissələrə bölün. Böyük ölçülü səhifələrdən plakat çapları yaratmaq üçün idealdır." +title = "Plakat çapı üçün böl" + [split.tooltip.byPages] bullet1 = "Tək nöqtələr: 3,7 (3 və 7-ci səhifələrdən sonra bölür)" bullet2 = "Aralıqlar: 3-8 (3-cü səhifədən əvvəl və 8-ci səhifədən sonra bölür)" @@ -6364,9 +6672,13 @@ tags = "veb,səhifəni-saxla,webdən-sənədə,arxiv" title = "URL-i PDF-ə" [usage] +aboutUsageAnalytics = "İstifadə analitikası haqqında" +configureSettings = "Analitika ayarlarını konfiqurasiya et" error = "İstifadə statistikası yüklənərkən xəta" noData = "Məlumat yoxdur" noDataMessage = "Hazırda istifadə statistikası mövcud deyil." +usageAnalyticsExplanation = "İstifadə analitikası son nöqtə sorğularını və alət istifadəsi nümunələrini izləyir. Audit Jurnalı paneli ilə birlikdə sistem fəaliyyəti, performans və təhlükəsizlik hadisələrinə tam görünürlük əldə edirsiniz." +viewAuditLogs = "Audit jurnallarına bax" [usage.chart] title = "Endpoint istifadəsi qrafiki" @@ -6947,3 +7259,278 @@ cancel = "Ləğv et" confirm = "Çıxart" message = "Bu ZIP {{count}} fayl ehtiva edir. Yenə də çıxarılsın?" title = "Böyük ZIP faylı" + +[cloudBadge] +tooltip = "Bu əməliyyat bulud kreditlərinizi istifadə edəcək" + +[team] +cancelInviteError = "Dəvətnaməni ləğv etmək mümkün olmadı" +confirmCancelInvite = "Bu dəvətnaməni ləğv etmək istədiyinizə əminsiniz?" +confirmLeave = "Bu komandadan çıxmaq istədiyinizə əminsiniz?" +confirmLeaveLeader = "Komanda rəhbəri olaraq çıxsanız, komandadan silinəcəksiniz. Əminsiniz?" +confirmRemove = "Bu üzvü silmək istədiyinizə əminsiniz?" +editName = "Komanda adını redaktə et" +inviteCancelled = "Dəvətnamə ləğv edildi" +inviteError = "Dəvətnamə göndərilə bilmədi" +inviteSent = "Dəvətnamə uğurla göndərildi" +leader = "Rəhbər" +leaveButton = "Komandadan çıx" +leaveError = "Komandadan çıxmaq mümkün olmadı" +leaveSuccess = "Komandadan uğurla çıxdınız" +loading = "Komanda məlumatları yüklənir..." +memberCount = "{{count}} üzv" +memberRemoved = "Üzv uğurla silindi" +namePlaceholder = "Komandanın adını daxil edin" +personal = "Şəxsi" +removeError = "Üzvü silmək mümkün olmadı" +renameError = "Komandanın adını dəyişmək mümkün olmadı" +renameSuccess = "Komandanın adı uğurla dəyişdirildi" + +[team.invitationBanner] +message = "sizi qoşulmağa dəvət edib" +acceptButton = "Qəbul et" +rejectButton = "Rədd et" + +[team.features] +badge = "Komanda xüsusiyyətləri" +subtitle = "Komandanızla əməkdaşlıq edin" +title = "Komanda əməkdaşlığı" +viewPlans = "Planlara bax" + +[team.features.billing] +description = "Hesab-fakturanı və abunələri idarə edin" +title = "Hesab-fakturanın idarə edilməsi" + +[team.features.credits] +description = "Bütün üzvlər üçün paylaşılmış kredit hovuzu" +title = "Paylaşılan kreditlər" + +[team.features.dashboard] +description = "Komanda fəaliyyəti və istifadəsinə baxın" +title = "Komanda paneli" + +[team.features.invite] +description = "Komandanıza üzvlər əlavə edin" +title = "Üzvləri dəvət et" + +[team.invite] +cancelLabel = "Ləğv et" +invalidEmail = "Yanlış e-poçt ünvanı" +placeholder = "E-poçt ünvanını daxil edin" +sendButton = "Dəvətnamə göndər" +title = "Komanda üzvünü dəvət et" + +[team.members] +emailColumn = "E-poçt" +empty = "Hələ komanda üzvü yoxdur" +nameColumn = "Ad" +pending = "Gözləyir" +remove = "Sil" +roleColumn = "Rol" +title = "Komanda üzvləri" + +[team.upgrade] +button = "Komandaya yüksəlt" +description = "Komanda əməkdaşlığı funksiyalarını açın" +title = "Komanda planına yüksəlt" + +[provider.oauth2.google] +scope = "Daxilolma autentifikasiyası" + +[provider.oauth2.google.clientId] +label = "Client ID" +description = "Google Cloud Console-dan OAuth2 client ID" + +[provider.oauth2.google.clientSecret] +label = "Client Secret" +description = "Google Cloud Console-dan OAuth2 client secret" + +[provider.oauth2.google.scopes] +label = "Scopes" +description = "Vergüllə ayrılmış OAuth2 scopes" + +[provider.oauth2.google.useAsUsername] +label = "İstifadəçi adı kimi istifadə et" +description = "İstifadəçi adı kimi istifadə olunacaq sahə (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Daxilolma autentifikasiyası" + +[provider.oauth2.github.clientId] +label = "Client ID" +description = "GitHub Developer Settings-dən OAuth2 client ID" + +[provider.oauth2.github.clientSecret] +label = "Client Secret" +description = "GitHub Developer Settings-dən OAuth2 client secret" + +[provider.oauth2.github.scopes] +label = "Scopes" +description = "Vergüllə ayrılmış OAuth2 scopes" + +[provider.oauth2.github.useAsUsername] +label = "İstifadəçi adı kimi istifadə et" +description = "İstifadəçi adı kimi istifadə olunacaq sahə (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Issuer URL" +description = "Keycloak realm-inin OpenID Connect Discovery endpoint URL-i" + +[provider.oauth2.keycloak.clientId] +label = "Client ID" +description = "Keycloak-dan OAuth2 client ID" + +[provider.oauth2.keycloak.clientSecret] +label = "Client Secret" +description = "Keycloak-dan OAuth2 client secret" + +[provider.oauth2.keycloak.scopes] +label = "Scopes" +description = "Vergüllə ayrılmış OAuth2 scopes" + +[provider.oauth2.keycloak.useAsUsername] +label = "İstifadəçi adı kimi istifadə et" +description = "İstifadəçi adı kimi istifadə olunacaq sahə (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "Generic OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Generic OAuth2-ni aktiv et" +description = "Fərdi OAuth2 provayderi ilə autentifikasiyanı aktiv et" + +[provider.oauth2.generic.provider] +label = "Provayderin adı" +description = "OAuth2 provayderinizin adı (məs., Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "Issuer URL" +description = "OpenID Connect Discovery-ni dəstəkləyən provayder (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "Client ID" +description = "Provayderinizdən OAuth2 client ID" + +[provider.oauth2.generic.clientSecret] +label = "Client Secret" +description = "Provayderinizdən OAuth2 client secret" + +[provider.oauth2.generic.scopes] +label = "Scopes" +description = "Vergüllə ayrılmış OAuth2 scopes" + +[provider.oauth2.generic.useAsUsername] +label = "İstifadəçi adı kimi istifadə et" +description = "İstifadəçi adı kimi istifadə olunacaq sahə" + +[provider.oauth2.generic.autoCreateUser] +label = "İstifadəçiləri avtomatik yarat" +description = "İlk OAuth2 daxilolmada istifadəçi hesablarını avtomatik yarat" + +[provider.oauth2.generic.blockRegistration] +label = "Qeydiyyatı blokla" +description = "OAuth2 vasitəsilə yeni istifadəçi qeydiyyatının qarşısını al" + +[provider.smtp] +name = "SMTP Mail" +scope = "Email bildirişləri" + +[provider.smtp.enabled] +label = "Email-i aktiv et" +description = "Email bildirişlərini və SMTP funksionallığını aktiv et" + +[provider.smtp.host] +label = "SMTP Host" +description = "SMTP serverinizin host adı və ya IP ünvanı" + +[provider.smtp.port] +label = "SMTP Port" +description = "SMTP bağlantısı üçün port nömrəsi (adətən 25, 465 və ya 587)" + +[provider.smtp.username] +label = "SMTP Username" +description = "SMTP autentifikasiyası üçün istifadəçi adı" + +[provider.smtp.password] +label = "SMTP Password" +description = "SMTP autentifikasiyası üçün şifrə" + +[provider.smtp.from] +label = "Göndərən ünvanı" +description = "Göndərən kimi istifadə olunacaq email ünvanı" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "SAML2-ni aktiv et" +description = "SAML2 autentifikasiyasını aktiv et (yalnız Enterprise)" + +[provider.saml2.provider] +label = "Provayderin adı" +description = "SAML2 provayderinizin adı" + +[provider.saml2.registrationId] +label = "Registration ID" +description = "Service Provider (SP) tətbiqinizin adı" + +[provider.saml2.idpMetadataUri] +label = "IDP Metadata URI" +description = "Provayderinizin metadata URI-si" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login URL" +description = "SSO-nu başlatmaq üçün URL" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout URL" +description = "SLO-nu başlatmaq üçün URL" + +[provider.saml2.idpIssuer] +label = "IDP Issuer" +description = "Provayderinizin ID-si" + +[provider.saml2.idpCert] +label = "IDP Certificate" +description = "Sertifikat yolu (məs., classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Private Key" +description = "Şəxsi açar yolunuz" + +[provider.saml2.spCert] +label = "SP Certificate" +description = "İmzalama sertifikatı yolunuz" + +[provider.saml2.autoCreateUser] +label = "İstifadəçiləri avtomatik yarat" +description = "İlk SAML2 daxilolmada istifadəçi hesablarını avtomatik yarat" + +[provider.saml2.blockRegistration] +label = "Qeydiyyatı blokla" +description = "SAML2 vasitəsilə yeni istifadəçi qeydiyyatının qarşısını al" + +[provider.googledrive] +name = "Google Drive" +scope = "Fayl idxalı" + +[provider.googledrive.enabled] +label = "Google Drive fayl seçicisini aktiv et" +description = "İstifadəçilərə faylları birbaşa Google Drive-dan idxal etməyə icazə ver" + +[provider.googledrive.clientId] +label = "Client ID" +description = "Google Cloud Console-dan Google OAuth 2.0 Client ID" + +[provider.googledrive.apiKey] +label = "API Key" +description = "Google Cloud Console-dan Google Picker API üçün Google API Key" + +[provider.googledrive.appId] +label = "App ID" +description = "Google Cloud Console-dan Google Drive App ID" diff --git a/frontend/public/locales/bg-BG/translation.toml b/frontend/public/locales/bg-BG/translation.toml index 8e929e349..d4d361c04 100644 --- a/frontend/public/locales/bg-BG/translation.toml +++ b/frontend/public/locales/bg-BG/translation.toml @@ -96,6 +96,8 @@ pin = "Закачи файл (запазва активен след изпъл poweredBy = "Задвижван чрез" pro = "Pro" processTimeWarning = "Предупреждение: Този процес може да отнеме до минута в зависимост от размера на файла" +processingComplete = "Вашият файл е готов." +processingCompleteMultiple = "{{count}} файла са готови." property = "Свойство" quickPosition = "Бърза позиция" red = "Червено" @@ -105,6 +107,7 @@ save = "Съхранете" saveToBrowser = "Съхраняване в браузъра" saveUnavailable = "Записът не е наличен за този елемент" seeDockerHub = "Погледнете Docker Hub" +editSecret = "Редактирайте тази стойност" selectFillter = "-- Изберете --" size = "Размер" sponsor = "Спонсор" @@ -651,6 +654,7 @@ description = "Конфигурирайте външни доставчици з disconnect = "Прекъсни връзката" disconnected = "Доставчикът е разкачен успешно" disconnectError = "Неуспешно разкачване на доставчика" +documentation = "Преглед на документацията" imageResolutionFull = "Пълна (оригинален размер)" imageResolutionReduced = "Намалена (макс. 1200px)" linkedServices = "Свързани услуги" @@ -964,6 +968,18 @@ label = "Език по подразбиране" description = "Максимален размер на качване (напр. 100MB, 1GB)" label = "Ограничение за качване на файлове" +[admin.settings.general.hideDisabledTools] +description = "Скриване на деактивираните инструменти от интерфейса" +label = "Скрий деактивираните инструменти" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Скриване на бутона за Google Drive, когато не е активиран" +label = "Скрий Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Скриване на бутона за мобилен QR скенер, когато не е активиран" +label = "Скрий мобилния скенер" + [admin.settings.general.frontendUrl] description = "Базов URL за фронтенда (напр. https://pdf.example.com). Използва се за линкове за покана по имейл и мобилно качване чрез QR код. Оставете празно, за да се използва backend URL." label = "Frontend URL" @@ -1148,6 +1164,8 @@ title = "Сигурност" [admin.settings.security.audit] label = "Одитно регистриране" +showDetails = "Покажи подробности за нивата на одит" +hideDetails = "Скрий подробностите за нивата на одит" [admin.settings.security.audit.enabled] description = "Проследявай действията на потребителите и системните събития за съответствие и мониторинг на сигурността" @@ -1157,10 +1175,32 @@ label = "Активирай одитно регистриране" description = "0=ИЗКЛ., 1=БАЗОВО, 2=СТАНДАРТНО, 3=ПОДРОБНО" label = "Ниво на одит" +[admin.settings.security.audit.levelDetails] +off = "Без одитно регистриране (освен критични събития по сигурността)" +basic = "Операции с PDF файлове (компресиране, разделяне, сливане и др.) и промени в настройките. Записва: състояние на операцията (успех/неуспех), параметри на метода, време. Минимален обем на логовете." +standard = "СЪБИТИЯТА ОТ BASIC плюс: вход/изход на потребители, промени по акаунти, общи GET заявки. Изключва непрекъснати polling извиквания (/auth/me, /app-config, /health и др.) за намаляване на шума в логовете. Подходящо за повечето внедрявания." +verbose = "СЪБИТИЯТА ОТ STANDARD плюс: непрекъснати polling извиквания, всички GET заявки, детайлни времена. Внимание: висок обем на логовете и влияние върху производителността." + [admin.settings.security.audit.retentionDays] description = "Брой дни за съхранение на одитни логове" label = "Съхранение на одит (дни)" +[admin.settings.security.audit.advancedOptions] +title = "Разширени опции" +description = "Следните опции увеличават времето за обработка и използването на памет. Активирайте само при действителна нужда." + +[admin.settings.security.audit.captureFileHash] +description = "Извличане на SHA-256 хеш на качените PDF файлове за проверка на целостта. Независимо от нивото на одит." +label = "Извличане на хеш на файла (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Извличане на полето автор от PDF документите по време на обработка. Изисква парсване на PDF и увеличава латентността. Независимо от нивото на одит." +label = "Извличане на метаданни за автора от PDF" + +[admin.settings.security.audit.captureOperationResults] +description = "Запис на върнатите стойности от методите. Не се препоръчва: значително увеличава обема на логовете и използването на диска." +label = "Запис на резултатите от операциите" + [admin.settings.security.csrfDisabled] description = "Деактивира защита срещу Cross-Site Request Forgery (не се препоръчва)" label = "Деактивирай CSRF защита" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "Конфигуриране на одитното регистриране" +configureAuditMessage = "Настройте нивото на одитно регистриране, периода на съхранение и други настройки в раздела „Сигурност и удостоверяване“." disabled = "Одитният лог е изключен" disabledMessage = "Активирайте одитното логване в конфигурацията на приложението, за да проследявате системни събития." enterpriseRequired = "Необходим е лиценз Enterprise" enterpriseRequiredMessage = "Системата за журнализация на одити е функция на Enterprise. Моля, надградете до лиценз Enterprise, за да получите достъп до одитните логове и анализите." +goToSettings = "Към настройките за одит" notAvailable = "Системата за одит не е налична" notAvailableMessage = "Системата за одит не е конфигурирана или не е налична." -[audit.charts] -byType = "Събития по тип" -byUser = "Събития по потребител" -day = "Ден" -error = "Грешка при зареждане на графики" -month = "Месец" -overTime = "Събития във времето" -title = "Одит табло" -week = "Седмица" - [audit.error] title = "Грешка при зареждане на системата за одит" -[audit.events] -actions = "Действия" -clearFilters = "Изчисти" -details = "Подробности" -endDate = "Крайна дата" -error = "Грешка при зареждане на събитията" -eventDetails = "Подробности за събитието" -filterByType = "Филтър по тип" -filterByUser = "Филтър по потребител" -ipAddress = "IP адрес" -noEvents = "Няма намерени събития" -startDate = "Начална дата" -timestamp = "Отметка за време" -title = "Одит събития" -type = "Тип" -user = "Потребител" -viewDetails = "Преглед на подробности" - [audit.export] clearFilters = "Изчисти" description = "Експортирайте одитни събития във формат CSV или JSON. Използвайте филтри, за да ограничите експортираните данни." endDate = "Крайна дата" error = "Неуспешно експортиране на данни" exportButton = "Експортиране на данни" +fieldAuthor = "Автор (от PDF)" +fieldDate = "Дата" +fieldDocumentName = "Име на документа" +fieldFileHash = "Хеш на файла (SHA-256)" +fieldIpAddress = "IP адрес" +fieldOperationResults = "Резултати от операциите" +fieldOutcome = "Резултат (успех/неуспех)" +fieldTool = "Инструмент" +fieldUsername = "Потребителско име" filterByType = "Филтриране по тип" filterByUser = "Филтриране по потребител" filters = "Филтри (по избор)" format = "Формат за експортиране" +selectFields = "Изберете полета за включване" startDate = "Начална дата" title = "Експортиране на одитни данни" +verboseRequired = "Изисква ниво VERBOSE на одита" [audit.systemStatus] +autoRefresh = "Автоматично опресняване" +autoRefreshLabel = "Автоматично опресняване на всеки 30 сек" +captureBySettings = "Активирайте в настройките" +capturedFields = "Записани полета" +date = "Дата" days = "дни" disabled = "Изключено" +documentName = "Име на документа" enabled = "Включено" +fileHash = "Хеш на файла" level = "Ниво на одит" +pdfAuthor = "Автор (PDF)" retention = "Период на съхранение" status = "Одитно логване" title = "Състояние на системата" +tool = "Инструмент" totalEvents = "Общ брой събития" +username = "Потребителско име" +verboseOnly = "Само при VERBOSE" + +[audit.stats] +activeUsers = "Активни потребители" +attention = "Нужно е внимание" +avgLatency = "Средна латентност" +error = "Грешка при зареждане на статистиката" +errorLoadingStats = "Неуспешно зареждане на статистиката" +excellent = "Отлично" +good = "Добро" +noData = "Няма данни" +successRate = "Процент на успеваемост" +title = "Обобщение" +totalEvents = "Общ брой събития" +vsLastPeriod = "спрямо предходния период" + +[audit.charts] +byTool = "Най-използвани инструменти" +byType = "Събития по тип" +byUser = "Събития по потребител" +day = "Ден" +error = "Грешка при зареждане на графики" +hourlyActivity = "Почасова активност" +month = "Месец" +noData = "Няма данни за този период" +overTime = "Събития във времето" +title = "Одит табло" +week = "Седмица" + +[audit.events] +actions = "Действия" +author = "Автор" +clearFilters = "Изчисти" +details = "Подробности" +documentName = "Документ" +endDate = "Крайна дата" +error = "Грешка при зареждане на събитията" +eventDetails = "Подробности за събитието" +failure = "Неуспех" +fileHash = "Хеш на файла" +filterByType = "Филтър по тип" +filterByUser = "Филтър по потребител" +ipAddress = "IP адрес" +noEvents = "Няма намерени събития" +outcome = "Статус" +sortAsc = "Сортирай възходящо" +sortDesc = "Сортирай низходящо" +startDate = "Начална дата" +success = "Успех" +timestamp = "Отметка за време" +title = "Одит събития" +type = "Тип" +user = "Потребител" +viewDetails = "Преглед на подробности" + +[audit.filters] +allOutcomes = "Всички" +failureOnly = "Само неуспехи" +last7Days = "Последните 7 дни" +last30Days = "Последните 30 дни" +outcomeFilter = "Резултат" +quickPresets = "Бързи филтри" +successOnly = "Само успехи" +thisMonth = "Този месец" +today = "Днес" [audit.tabs] +clearData = "Изчистване на данни" dashboard = "Табло" events = "Одит събития" export = "Експорт" +[audit.clearData] +cancel = "Отказ" +codeDoesNotMatch = "Кодът не съвпада" +codePlaceholder = "Въведете кода тук" +confirmationCode = "Код за потвърждение" +confirmationRequired = "Изтриване на всички одитни данни" +confirmMessage = "Това ще премахне трайно всички одитни логове. Въведете кода за потвърдение по-долу, за да продължите." +confirmTitle = "Моля, потвърдете, че искате да изтриете" +deleteButton = "Изтрий" +enterCode = "Код за потвърждение" +enterCodeBelow = "Въведете кода точно както е показан по-горе (с отчитане на малки/главни)" +initiateDelete = "Изтрий всички данни" +irreversible = "НЕОБРАТИМО" +success = "Успех" +successMessage = "Всички одитни данни бяха изчистени успешно" +warning1 = "Това действие не може да бъде отменено" +warning2 = "Изтриването на одитни данни ще премахне трайно всички исторически одитни логове, включително събития по сигурността, потребителски дейности и файлови операции от базата данни." + [auth] accessDenied = "Достъпът е отказан" insufficientPermissions = "Нямате разрешение да извършите това действие." @@ -2254,9 +2374,11 @@ copy = "Копирай" done = "Готово" error = "Грешка" expand = "Разгъни" +learnMore = "Научете повече" lines = "редове" loading = "Зареждане..." next = "Напред" +operation = "тази операция" preview = "Преглед" previous = "Назад" refresh = "Опресни" @@ -2920,6 +3042,7 @@ copyStack = "Копиране на проследяване на стека" discordSubmit = "Discord - Изпратете запитване за поддръжка" dismissAllErrors = "Отхвърли всички грешки" encryptedPdfMustRemovePassword = "Този PDF е шифрован или защитен с парола. Моля, отключете го преди конвертиране към PDF/A." +generic = "Възникна грешка" github = "Изпратете запитване в GitHub" githubSubmit = "GitHub - Изпратете запитване" incorrectPasswordProvided = "Паролата за PDF е неправилна или липсва." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Абонаментът ви беше надграде upgradeSuccess = "Плащането е успешно! Абонаментът ви е надграден. Лицензът е обновен на вашия сървър. Скоро ще получите потвърждение по имейл." upgradeTitle = "Надградете до {{planName}}" yearly = "Годишно" +checkoutOpened = "Плащането е отворено в браузър" +checkoutInstructions = "Завършете покупката в прозореца на браузъра, който току-що се отвори. След като плащането приключи, върнете се тук и щракнете върху бутона по-долу, за да опресните информацията за фактуриране." +refreshBilling = "Приключих плащането – опресни фактурирането" +closeLater = "Ще го направя по-късно" [payment.emailStage] continue = "Продължи" @@ -4679,6 +4806,13 @@ prompt = "Изберете страница за извличане на таб submit = "Преобразуване" title = "PDF към CSV" +[PDFToXLSX] +header = "PDF към Excel" +prompt = "Изберете страници за извличане на таблици" +submit = "Конвертирай" +title = "PDF към Excel (XLSX)" +tags = "електронна таблица,excel,xlsx,таблица,извличане,конвертиране" + [PDFToHTML] credit = "Тази услуга използва pdftohtml за преобразуване на файлове." header = "PDF към HTML" @@ -4835,6 +4969,7 @@ customPricing = "Персонализирано" featureComparison = "Сравнение на функциите" from = "От" hideComparison = "Скрий сравнението на функциите" +included = "Включено" includedInCurrent = "Включено в плана ви" licensedSeats = "Лицензирани: {{count}} места" manage = "Управление" @@ -4852,9 +4987,11 @@ title = "Активен план" [plan.availablePlans] subtitle = "Изберете план, който отговаря на нуждите ви" +loadError = "Неуспешно зареждане на цените на плановете. Използват се стойности по подразбиране." title = "Налични планове" [plan.enterprise] +siteLicense = "Лиценз за сайт" highlight1 = "Персонализирано ценообразуване" highlight2 = "Специализирана поддръжка" highlight3 = "Най-нови функции" @@ -4928,6 +5065,81 @@ keyDescription = "Поставете лицензионния ключ от им success = "Лицензът е активиран!" successMessage = "Лицензът ви беше активиран успешно. Можете да затворите този прозорец." +[plan.team] +name = "Team" +siteLicense = "Лиценз за сайт" + +[credits] +enableOverageBilling = "Активирай таксуване за надвишаване" +maybeLater = "Може би по-късно" +upgrade = "Надгради" + +[credits.modal] +advancedMonitoring = "Разширено наблюдение" +allInOneWorkspace = "Всичко-в-едно работно място за PDF (преглед, инструменти и агент)" +apiSandbox = "API sandbox" +contactSales = "Свържете се с отдел продажби" +creditsRemaining = "Остават {{current}} от {{total}}" +creditsThisMonth = "Месечни кредити" +current = "Текущ план" +customPricing = "Персонализиран" +customSmartFolders = "Персонализирани интелигентни папки" +dedicatedSupportSlas = "Специализирана поддръжка и SLA" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Всичко от Credits, плюс:" +everythingInFree = "Всичко от Free, плюс:" +fasterThroughput = "10x по-висока пропускателност" +forRegularWork = "За регулярна работа с PDF:" +freeTier = "Безплатен план" +fullyPrivateFiles = "Напълно частни файлове" +largeFileProcessing = "Обработка на големи файлове" +managedMemberMessage = "Имате неограничен достъп до кредити чрез вашия екип. Ако имате нужда от съдействие, моля, свържете се с лидера на екипа." +managedMemberTitle = "Неограничени кредити" +meteringBillingNote = "Кредитите за надвишаване се таксуват месечно заедно с вашия абонамент Team. Следете използването по всяко време в настройките на акаунта." +meteringExplanation = "Вашият план Team включва {{credits}} кредита на месец. Когато свършат, таксуването за надвишаване автоматично осигурява допълнителни кредити, за да не спирате работа." +meteringIncluded = "{{credits}} кредита/месец включени с Team" +meteringNoCommitment = "Без ангажимент, можете да прекратите по всяко време" +meteringNeverRunOut = "Никога не оставате без кредити" +meteringPayAsYouGo = "Плащате само за използваното" +meteringPrice = "Допълнителни кредити по {{price}}/кредит" +meteringTitle = "Таксуване за надвишаване според използваното" +monthlyCredits = "месечни кредити" +orgWideAccess = "Контроли за достъп на ниво организация" +overage = "надвишаване" +perMonth = "/месец" +popular = "Популярно" +premiumAiModels = "Премиум AI модели" +prioritySupport = "Приоритетна поддръжка" +privateDocCloud = "Частен облак за документи" +ragFineTuning = "RAG + фина настройка" +secureApiAccess = "Сигурен достъп до API" +selfHostLink = "Прегледайте документацията и плановете" +selfHostPrompt = "Искате ли самостоятелно хостване?" +standardThroughput = "Стандартна пропускателност" +subtitle = "Надградете до Team за 10x повече кредити и по-бърза обработка." +subtitlePro = "Активирайте автоматично таксуване за надвишаване, за да не оставате без кредити." +teamLeaderOnly = "Само лидерите на екипи могат да активират таксуването за надвишаване" +teamSubscription = "Team" +titleExhausted = "Използвахте безплатните си кредити" +titleExhaustedPro = "Нямате повече кредити" +unlimitedApiAccess = "Неограничен достъп до API" +unlimitedMonthlyCredits = "Лиценз за сайт" +unlimitedSeats = "Неограничени места" + +[credits.modal.features] +everythingInCredits = "Всичко от Credits, плюс:" +everythingInFree = "Всичко от Free, плюс:" +forRegularWork = "За регулярна работа с PDF:" + +[credits.insufficient] +brief = "Недостатъчно кредити. Нужни са {{required}} кредита, но имате {{current}}." +freeTier = "Надградете до Team за 10x повече кредити и неограничено таксуване за надвишаване." +managedMember = "Моля, свържете се с лидера на екипа за съдействие." +message = "Нямате достатъчно кредити, за да стартирате {{tool}}. В момента имате {{current}} кредита." +messageWithAmount = "Нужни са {{required}} кредита, за да стартирате {{tool}}, но имате само {{current}}." +teamMember = "Активирайте таксуване за надвишаване, за да не оставате без кредити." +title = "Недостатъчно кредити" + [printFile] header = "Печат на файл на принтер" submit = "Печат" @@ -5565,6 +5777,70 @@ user = "Влезли сте като" saas = "Stirling Cloud" selfhosted = "Самостоятелно хостван" +[settings.planBilling] +currentPlan = "Текущ план" +loading = "Зареждане на информация за фактуриране..." +notAvailable = "План и фактуриране са налични само при свързване към Stirling Cloud (SaaS режим)." +title = "План и фактуриране" + +[settings.planBilling.billing] +manageBilling = "Управление на фактурирането" +nextBillingDate = "Следваща дата на фактуриране" +overageCost = "Текуща цена за надвишаване: {{amount}} ({{credits}} кредита)" + +[settings.planBilling.credits] +estimatedCost = "Ориентировъчна цена: {{amount}}" +freeTierInfo = "Безплатният план включва {{freeCredits}} кредита на месец. Надградете до Team за {{teamCredits}} кредита/месец и таксуване за надвишаване според използваното." +included = "{{count}} кредита/месец (включени)" +noOverage = "Няма такси за надвишаване този месец. Използвате включените си {{count}} кредита." +overage = "+ {{count}} надвишаване" +overageInfo = "Кредитите за надвишаване се таксуват по {{price}} за кредит. Плащате само за използваното над месечната ви квота." +title = "Използване на кредити" + +[settings.planBilling.errors] +fetchFailed = "Неуспешно извличане на данни за фактуриране" +retry = "Опитай отново" + +[settings.planBilling.status] +active = "Активен" +canceled = "Отменен" +pastDue = "Просрочен" +trial = "Пробен" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Персонализирани корпоративни функции и поддръжка" +free = "Free" +freeDescription = "50 кредита на месец" +team = "Team" +teamBadge = "Team" +teamDescription = "Включени 500 кредита/месец, автоматично таксуване за надвишаване за непрекъсната услуга" +teamTooltipCredits = "Планът Team включва {{credits}} кредита/месец." +teamTooltipFineprint = "Плащате само за използваното над включените кредити." +teamTooltipOverage = "Автоматично таксуване за надвишаване по {{price}}/кредит гарантира непрекъсната услуга." + +[settings.planBilling.team] +managedByTeam = "Управлява се от екип" +memberCount = "{{count}} членове на екипа" + +[settings.planBilling.trial] +daysRemaining = "Остават {{days}} дни" +daysRemainingFull = "Пробният ви период изтича след {{days}} дни" +endDate = "Изтича на: {{date}}" +endsOn = "Край на пробния период" +title = "Активен безплатен пробен период" + +[settings.planBilling.upgrade] +cta = "Надградете до Team" +featureApi = "API достъп за автоматизация" +featureCredits = "{{teamCredits}} кредита на месец (срещу {{freeCredits}} при Free)" +featureMembers = "Неограничен брой членове на екипа" +featureSupport = "Приоритетна поддръжка" +featureThroughput = "По-бърза пропускателност на обработката" +opensInBrowser = "Отваря се в браузър за завършване на надграждането" +subtitle = "Надградете до Team за:" +title = "Надградете своя план" + [settings.developer] apiKeys = "API ключове" title = "Разработчик" @@ -5689,6 +5965,9 @@ people = "Хора" teams = "Екипи" title = "Работно пространство" +[settings.team] +title = "Team" + [setup] description = "Започнете, като изберете как искате да използвате Stirling PDF" welcome = "Добре дошли в Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "Авто-разделяне с разделителни листове" name = "Разделител на страници" tooltip = "Използвайте QR разделителни листове между документи при сканиране" +[split.methods.byPoster] +name = "Части за печат" +desc = "Разделяне на големи страници на размери за печат" +tooltip = "Разделете твърде големи страници на по-малки части, подходящи за печат на стандартна хартия (A4, Letter и др.)" + [split.methods.byPages] desc = "Извличане на конкретни страници (1,3,5-10)" name = "Номера на страници" @@ -6029,6 +6313,7 @@ tooltip = "Посочете максимален размер на файл (н [split.methods.prefix] splitAt = "Разделяне на" splitBy = "Разделяне по" +splitInto = "Раздели на" [split.methodSelection.tooltip] bullet1 = "Щракнете върху карта на метод, за да го изберете" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Моля, първо изберете метод за ра chooseMethod = "Избор на метод" settings = "Настройки" +[split.poster] +rightToLeft = "Разделяне отдясно наляво" + +[split.poster.pageSize] +label = "Целеви размер на страница" +description = "Размер на изходните страници за печат" + +[split.poster.xFactor] +label = "Хоризонтални деления" +description = "Брой колони, на които да се раздели всяка страница" + +[split.poster.yFactor] +label = "Вертикални деления" +description = "Брой редове, на които да се раздели всяка страница" + [split.tooltip.byChapters] bullet1 = "Ниво на отметките: На кое ниво да се разделя (1=горно ниво)" bullet2 = "Включване на метаданни: Запазва свойствата на документа" @@ -6085,6 +6385,14 @@ bullet5 = "Активирайте двустранен режим, ако ска text = "Автоматично разделяйте сканирани документи с физически разделителни листове с QR кодове. Перфектно за обработка на множество документи, сканирани заедно." title = "Разделяне с разделител на страници" +[split.tooltip.byPoster] +bullet1 = "Целеви размер на страница: Изберете размер на изходната хартия (A4, Letter и др.)" +bullet2 = "Хоризонтални/вертикални деления: Размер на мрежата за разделяне" +bullet3 = "Отдясно наляво: Обърнат ред на колоните за RTL оформления" +bullet4 = "Отпечатайте и сглобете частите, за да създадете вашия плакат" +text = "Разделете големи PDF страници на по-малки части за печат, подходящи за стандартни размери хартия. Идеално за създаване на плакати от страници с голям размер." +title = "Разделяне за печат на плакат" + [split.tooltip.byPages] bullet1 = "Единични точки на разделяне: 3,7 (разделя след страници 3 и 7)" bullet2 = "Диапазон: 3-8 (разделя преди страница 3 и след страница 8)" @@ -6364,9 +6672,13 @@ tags = "уеб-заснемане,запазване на страница,уе title = "URL към PDF" [usage] +aboutUsageAnalytics = "Относно аналитиката за използване" +configureSettings = "Конфигуриране на настройки за аналитика" error = "Грешка при зареждане на статистиката за използване" noData = "Няма налични данни" noDataMessage = "Понастоящем няма налична статистика за използване." +usageAnalyticsExplanation = "Аналитиката за използване проследява заявки към крайни точки и модели на използване на инструментите. В комбинация с таблото за одитно регистриране получавате пълна видимост върху системната активност, производителността и събитията по сигурността." +viewAuditLogs = "Преглед на одитните логове" [usage.chart] title = "Диаграма на използването на крайни точки" @@ -6947,3 +7259,278 @@ cancel = "Отказ" confirm = "Извлечи" message = "Този ZIP съдържа {{count}} файла. Да се извлече въпреки това?" title = "Голям ZIP файл" + +[cloudBadge] +tooltip = "Тази операция ще използва вашите облачни кредити" + +[team] +cancelInviteError = "Неуспешно анулиране на поканата" +confirmCancelInvite = "Сигурни ли сте, че искате да анулирате тази покана?" +confirmLeave = "Сигурни ли сте, че искате да напуснете този екип?" +confirmLeaveLeader = "Като лидер на екипа, напускането ще ви премахне от екипа. Сигурни ли сте?" +confirmRemove = "Сигурни ли сте, че искате да премахнете този член?" +editName = "Редактиране на името на екипа" +inviteCancelled = "Поканата е анулирана" +inviteError = "Неуспешно изпращане на поканата" +inviteSent = "Поканата е изпратена успешно" +leader = "Лидер" +leaveButton = "Напусни екипа" +leaveError = "Неуспешно напускане на екипа" +leaveSuccess = "Успешно напуснахте екипа" +loading = "Зареждане на информация за екипа..." +memberCount = "{{count}} членове" +memberRemoved = "Членът беше премахнат успешно" +namePlaceholder = "Въведете име на екипа" +personal = "Личен" +removeError = "Неуспешно премахване на член" +renameError = "Неуспешно преименуване на екипа" +renameSuccess = "Екипът беше преименуван успешно" + +[team.invitationBanner] +message = "ви покани да се присъедините" +acceptButton = "Приеми" +rejectButton = "Откажи" + +[team.features] +badge = "Функции за екипи" +subtitle = "Сътрудничете с вашия екип" +title = "Екипна работа" +viewPlans = "Вижте плановете" + +[team.features.billing] +description = "Управление на фактуриране и абонаменти" +title = "Управление на фактуриране" + +[team.features.credits] +description = "Споделен пул от кредити за всички членове" +title = "Споделени кредити" + +[team.features.dashboard] +description = "Преглед на активността и използването на екипа" +title = "Табло на екипа" + +[team.features.invite] +description = "Добавяйте членове към екипа си" +title = "Поканете членове" + +[team.invite] +cancelLabel = "Отказ" +invalidEmail = "Невалиден имейл адрес" +placeholder = "Въведете имейл адрес" +sendButton = "Изпрати покана" +title = "Покани член на екипа" + +[team.members] +emailColumn = "Имейл" +empty = "Все още няма членове на екипа" +nameColumn = "Име" +pending = "Чакащо" +remove = "Премахни" +roleColumn = "Роля" +title = "Членове на екипа" + +[team.upgrade] +button = "Надградете до Team" +description = "Отключете функциите за екипна работа" +title = "Надградете до план Team" + +[provider.oauth2.google] +scope = "Удостоверяване при влизане" + +[provider.oauth2.google.clientId] +label = "Client ID" +description = "OAuth2 Client ID от Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret от Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Scopes" +description = "OAuth2 scopes, разделени със запетаи" + +[provider.oauth2.google.useAsUsername] +label = "Използвай като потребителско име" +description = "Поле за използване като потребителско име (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Удостоверяване при влизане" + +[provider.oauth2.github.clientId] +label = "Client ID" +description = "OAuth2 Client ID от GitHub Developer Settings" + +[provider.oauth2.github.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret от GitHub Developer Settings" + +[provider.oauth2.github.scopes] +label = "Scopes" +description = "OAuth2 scopes, разделени със запетаи" + +[provider.oauth2.github.useAsUsername] +label = "Използвай като потребителско име" +description = "Поле за използване като потребителско име (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Issuer URL" +description = "URL на OpenID Connect Discovery endpoint на realm в Keycloak" + +[provider.oauth2.keycloak.clientId] +label = "Client ID" +description = "OAuth2 Client ID от Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret от Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "Scopes" +description = "OAuth2 scopes, разделени със запетаи" + +[provider.oauth2.keycloak.useAsUsername] +label = "Използвай като потребителско име" +description = "Поле за използване като потребителско име (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "Generic OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Активирай Generic OAuth2" +description = "Активиране на удостоверяване чрез персонализиран OAuth2 доставчик" + +[provider.oauth2.generic.provider] +label = "Име на доставчика" +description = "Името на вашия OAuth2 доставчик (напр. Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "Issuer URL" +description = "Доставчик, който поддържа OpenID Connect Discovery (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "Client ID" +description = "OAuth2 Client ID от вашия доставчик" + +[provider.oauth2.generic.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret от вашия доставчик" + +[provider.oauth2.generic.scopes] +label = "Scopes" +description = "OAuth2 scopes, разделени със запетаи" + +[provider.oauth2.generic.useAsUsername] +label = "Използвай като потребителско име" +description = "Поле за използване като потребителско име" + +[provider.oauth2.generic.autoCreateUser] +label = "Автоматично създаване на потребители" +description = "Автоматично създаване на потребителски акаунти при първо OAuth2 влизане" + +[provider.oauth2.generic.blockRegistration] +label = "Блокирай регистрацията" +description = "Предотвратяване на нова регистрация на потребители чрез OAuth2" + +[provider.smtp] +name = "SMTP поща" +scope = "Известия по имейл" + +[provider.smtp.enabled] +label = "Активирай пощата" +description = "Активиране на имейл известия и SMTP функционалност" + +[provider.smtp.host] +label = "SMTP хост" +description = "Името на хоста или IP адресът на вашия SMTP сървър" + +[provider.smtp.port] +label = "SMTP порт" +description = "Номерът на порта за SMTP връзка (обичайно 25, 465 или 587)" + +[provider.smtp.username] +label = "SMTP потребителско име" +description = "Потребителско име за SMTP удостоверяване" + +[provider.smtp.password] +label = "SMTP парола" +description = "Парола за SMTP удостоверяване" + +[provider.smtp.from] +label = "Адрес на подателя" +description = "Имейл адресът, който да се използва като подател" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "Активирай SAML2" +description = "Активиране на SAML2 удостоверяване (само за Enterprise)" + +[provider.saml2.provider] +label = "Име на доставчика" +description = "Името на вашия SAML2 доставчик" + +[provider.saml2.registrationId] +label = "Registration ID" +description = "Името на вашето Service Provider (SP) приложение" + +[provider.saml2.idpMetadataUri] +label = "IDP Metadata URI" +description = "URI на метаданните на вашия доставчик" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login URL" +description = "URL за иницииране на SSO" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout URL" +description = "URL за иницииране на SLO" + +[provider.saml2.idpIssuer] +label = "IDP Issuer" +description = "ID на вашия доставчик" + +[provider.saml2.idpCert] +label = "IDP Certificate" +description = "Път до сертификата (напр. classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Private Key" +description = "Път до вашия частен ключ" + +[provider.saml2.spCert] +label = "SP Certificate" +description = "Път до вашия подписващ сертификат" + +[provider.saml2.autoCreateUser] +label = "Автоматично създаване на потребители" +description = "Автоматично създаване на потребителски акаунти при първо SAML2 влизане" + +[provider.saml2.blockRegistration] +label = "Блокирай регистрацията" +description = "Предотвратяване на нова регистрация на потребители чрез SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "Импорт на файлове" + +[provider.googledrive.enabled] +label = "Активирай Google Drive File Picker" +description = "Позволете на потребителите да импортират файлове директно от Google Drive" + +[provider.googledrive.clientId] +label = "Client ID" +description = "Google OAuth 2.0 Client ID от Google Cloud Console" + +[provider.googledrive.apiKey] +label = "API Key" +description = "Google API Key за Google Picker API от Google Cloud Console" + +[provider.googledrive.appId] +label = "App ID" +description = "Google Drive App ID от Google Cloud Console" diff --git a/frontend/public/locales/bo-CN/translation.toml b/frontend/public/locales/bo-CN/translation.toml index dad395d04..17884b506 100644 --- a/frontend/public/locales/bo-CN/translation.toml +++ b/frontend/public/locales/bo-CN/translation.toml @@ -96,6 +96,8 @@ pin = "སྦྱར་ཡིག་(ལག་ཆའི་རྒྱུག་རྗ poweredBy = "ཤུགས་རྐྱེན།" pro = "མཁས་པ།" processTimeWarning = "ཉེན་བརྡ། བྱ་རིམ་འདིས་ཡིག་ཆའི་ཆེ་ཆུང་ལ་གཞིགས་ཏེ་སྐར་མ་གཅིག་འགོར་ཐུབ།" +processingComplete = "ཁྱེད་ཀྱི་ཡིག་ཆ་གྲ་སྒྲིག་ཟིན།" +processingCompleteMultiple = "{{count}} ཡིག་ཆ་གྲ་སྒྲིག་ཟིན།" property = "རྒྱུ་ནོམ" quickPosition = "མགྱོགས་མྱུར་གནས་སྟངས།" red = "དམར་པོ" @@ -105,6 +107,7 @@ save = "སྲུང་བ།" saveToBrowser = "དྲ་འབྱེད་ལ་སྲུང་བ།" saveUnavailable = "ཅ་ལག་འདི་ལ་ཉར་ཚགས་བྱེད་མི་ཐུབ།" seeDockerHub = "ཌོག་ཀར་ཧབ་ལ་གཟིགས།" +editSecret = "གནས་གོང་འདི་རྩོམ་སྒྲིག" selectFillter = "-- འདེམས --" size = "ཆེ་ཆུང" sponsor = "རོགས་སྐྱོར་བྱེད་མཁན།" @@ -651,6 +654,7 @@ description = "ཕྱི་ཕྱོགས་ཀྱི་བདེན་དཔ disconnect = "མཐུད་མཚམས་ཆད་པ།" disconnected = "མཁོ་སྤྲོད་བྱེད་མཁན་གྱིས་འབྲེལ་བ་ཆད་པ་ལེགས་འགྲུབ་བྱུང་བ།" disconnectError = "མཐུད་མཚམས་ཆད་མ་ཐུབ་པ།" +documentation = "ཡིག་གཞུང་ལ་ལྟ།" imageResolutionFull = "ཆ་ཚང (ཐོག་མའི་ཆེ་ཆུང)" imageResolutionReduced = "ཆུང་བཟོ (མང་མཐའ 1200px)" linkedServices = "འབྲེལ་མཐུད་ཞབས་ཞུ།" @@ -964,6 +968,18 @@ label = "སྔོན་སྒྲིག ས་ཁུལ།" description = "ཆེས་མཐོ་བའི་ཡིག་ཆ་ཡར་བསྐུར་ཚད་(དཔེར་ན། 100MB, 1GB)" label = "File Upload ཚད་གཞི།" +[admin.settings.general.hideDisabledTools] +description = "མདུན་ངོས་ནས་སྤྱོད་མི་རུང་བའི་ལག་ཆ་སྦ།" +label = "སྤྱོད་མི་རུང་བའི་ལག་ཆ་སྦ།" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "སྤྱོད་བཅུག་མེད་པར Google Drive གནོན་མཆན་སྦ།" +label = "Google Drive སྦ།" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "སྤྱོད་བཅུག་མེད་པར ཁ་པར QR འཚོལ་བྱེད་གནོན་མཆན་སྦ།" +label = "ཁ་པར་འཚོལ་བྱེད་སྦ།" + [admin.settings.general.frontendUrl] description = "Frontend ཡི་ Base URL (དཔེར་ https://pdf.example.com) ཡིན། གློག་རྡུལ་ཡིག་འཕྲིན་དང་ ཁ་པར QR ཡར་འཇུག་ལམ་ལ་སྤྱོད་དགོས། སྟོང་པར་བཞག་ན་ backend URL སྤྱོད།" label = "Frontend URL" @@ -1148,6 +1164,8 @@ title = "ཉེན་སྲུང" [admin.settings.security.audit] label = "རྩིས་ཞིབ་དྲན་ཐོ།" +showDetails = "ཞིབ་བཤེར་གནས་རིམ་གྱི་ཞིབ་ཕྲ་མངོན་པ།" +hideDetails = "ཞིབ་བཤེར་གནས་རིམ་གྱི་ཞིབ་ཕྲ་སྦ།" [admin.settings.security.audit.enabled] description = "སྒྲིག་ལམ་དང་བདེ་འཇགས་ལ་ལྟ་སྐུལ་བྱེད་པའི་སྤྱོད་མཁན་གྱི་བྱ་སྤྱོད་དང་མ་ལག་གི་བྱུང་རིམ་ལ་རྗེས་འདེད་བྱེད་པ།" @@ -1157,10 +1175,32 @@ label = "རྩིས་ཞིབ་དྲན་ཐོ་ལྕོགས་ཅ description = "0=OFF, 1=གཞི་གྲངས། ༢=གནས་སྟངས། 3=VERBOSE" label = "རྩིས་ཞིབ་རིམ་པ་།" +[admin.settings.security.audit.levelDetails] +off = "ཞིབ་བཤེར་ཐོ་འགོད་མེད། བདེ་འཇགས་ཀྱི་གལ་ཆེ་བྱུང་ལས་ཙམ་ཐོ་འགོད།" +basic = "PDF ཡིག་ཆའི་བཀོལ་སྤྱོད (སྲབ་བཟོ་, དབྱེ་, མཉམ་སྒྲིལ་ སོགས) དང་སྒྲིག་སྟངས་བཅོས་བཟོ། ཐོ་འགོད: བཀོལ་སྤྱོད་གནས་སྟངས (མཐར་འཁྱོལ/མཐར་མ་འཁྱོལ), ཐབས་ལམ་ཞུགས་གྲངས་, དུས་ཚོད། ཐོ་འགོད་ཁུངས་ཆུང་།" +standard = "BASIC བྱུང་ལས་ལ་ཁ་པར་སྣོན: སྤྱོད་མཁན་ཐོ་འགོད/ཕྱིར་འཐེན, རྩིས་ཐོ་བཅོས་བཟོ, སྤྱིར་བཏང་ GET ཞུ་འབུལ། ཐོ་འགོད་སྐད་སྒྲ་མར་ཆུང་བཟོ་བའི་ཆེད་དུ རྟག་པའི་བསྒུག་ཞུ (/auth/me, /app-config, /health སོགས) མི་ཚང་། མང་ཆེ་བའི་གཞི་འཇུག་ཚང་མར་འཚམ།" +verbose = "STANDARD བྱུང་ལས་ལ་ཁ་པར་སྣོན: རྟག་པའི་བསྒུག་ཞུ་དང་ GET ཞུ་འབུལ་ཚང་, དུས་ཚོད་ཞིབ་ཕྲ། ཉེན་བརྡ: ཐོ་འགོད་མང་དྲགས་དང་ལས་རིམ་ལེགས་སྒྲིག་ལ་ཤུགས་ཤུལ།" + [admin.settings.security.audit.retentionDays] description = "རྩིས་ཞིབ་ཀྱི་དྲན་ཐོ་ཉར་ཚགས་བྱེད་པའི་ཉིན་གྲངས་ཀྱི་གྲངས་འབོར།" label = "རྩིས་ཞིབ་བཀག་སྡོམ།(ཉིན་མོ།)" +[admin.settings.security.audit.advancedOptions] +title = "མཐོ་རིམ་འདེམས་ཚན།" +description = "འོག་གི་འདེམས་ཚན་ཚུ་གིས་ལས་སྦྱོར་དུས་ཚོད་དང་དྲན་ཚད་བེད་སྤྱོད་འཕར། དགོས་ངེས་ཡོད་ཚེ་ཙམ་སྤྱོད།" + +[admin.settings.security.audit.captureFileHash] +description = "ཡར་འཇོག་པའི PDF ཡིག་ཆའི SHA-256 hash ཕྱིར་འདོན་བྱས་ནས ཆེད་དུས་ལྟ་བ། ཞིབ་བཤེར་གནས་རིམ་ལས་རང་བཞིན།" +label = "ཡིག་ཆ Hash ཐོ་འགོད (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "ལས་སྦྱོར་བྱེད་སྐབས PDF ཡིག་ཆ་ནས རྩོམ་པ་པོའི་ཁང་འདེམས་ཕྱིར་འདོན། PDF འགོད་འགྲེལ་དགོས་པས ཕྱིར་འགྱངས་འཕར། ཞིབ་བཤེར་གནས་རིམ་ལས་རང་བཞིན།" +label = "PDF རྩོམ་པ་པོའི་གཞི་གྲངས་ཐོ་འགོད" + +[admin.settings.security.audit.captureOperationResults] +description = "ཐབས་ལམ་ལས་སློབ་འབྲས་ཐོ་འགོད། གཏན་འབེབས་མ་བྱེད་པ: ཐོ་འགོད་ཁུངས་དང་སྣོད་སྡེར་སྤྱོད་ཚད་ཆེ་བཟོགས།" +label = "བཀོལ་སྤྱོད་མཇུག་འབྲས་ཐོ་འགོད" + [admin.settings.security.csrfDisabled] description = "ས་ཁོངས་བརྒལ་བའི་རེ་འདུན་རྫུན་བཟོ་སྲུང་སྐྱོབ།" label = "CSRF སྲུང་སྐྱོབ།" @@ -1536,72 +1576,152 @@ tags = "མཉམ་སྦྲེལ་དང་བཅོམ་པ། ཡིག title = "སྦྲེལ་མཐུད་ཁ་སྣོན།" [audit] +configureAudit = "ཞིབ་བཤེར་ཐོ་འགོད་སྒྲིག་འགོད" +configureAuditMessage = "Security & Authentication ས་ཁོངས་ནང་ཞིབ་བཤེར་ཐོ་འགོད་གནས་རིམ་, ཉར་བརྟན་དུས་ཚོད་ དང་སྒྲིག་སྟངས་གཞན་པ་རྣམས་སྒྲིག" disabled = "རྩིས་ཞིབ་ཀྱི་ཤིང་གཅོད་མི་ནུས་པ།" disabledMessage = "ཁྱེད་རང་གི་མཉེན་ཆས་སྒྲིག་བཀོད་ནང་རྩིས་ཞིབ་ཀྱི་ཐོ་འགོད་བྱེད་ནས་མ་ལག་གི་བྱུང་རིམ་ལ་རྗེས་འདེད་གཏོང་ཐུབ།" enterpriseRequired = "ཁེ་ལས་ཀྱི་ཆོག་མཆན་དགོས་པ།" enterpriseRequiredMessage = "རྩིས་ཞིབ་ཐོ་འགོད་མ་ལག་ནི་ཁེ་ལས་ཀྱི་ཁྱད་ཆོས་ཤིག་རེད། རྩིས་ཞིབ་ཀྱི་དྲན་ཐོ་དང་དབྱེ་ཞིབ་ལ་འཛུལ་ཞུགས་བྱེད་པར་ཁེ་ལས་ཀྱི་ཆོག་མཆན་ལ་ཡར་རྒྱས་བཏང་རོགས།" +goToSettings = "ཞིབ་བཤེར་སྒྲིག་སྟངས་ལ་འགྲོ།" notAvailable = "རྩིས་ཞིབ་མ་ལག་མེད།" notAvailableMessage = "རྩིས་ཞིབ་མ་ལག་དེ་སྒྲིག་བཀོད་བྱས་མེད་པའམ་ཡང་ན་ཐོབ་ཐུབ་ཀྱི་མེད།" -[audit.charts] -byType = "རིགས་པའི་བྱེད་སྒོ།" -byUser = "སྤྱོད་མཁན་གྱིས་བྱེད་སྒོ།" -day = "ཉིན" -error = "ནོར་འཁྲུལ་གྱི་བཀལ་བའི་རེའུ་མིག" -month = "ཟླ་བ" -overTime = "དུས་ཐོག་ཏུ་བྱུང་བ།" -title = "རྩིས་ཞིབ་མཛུབ་ཁྲིད།" -week = "གཟའ་འཁོར" - [audit.error] title = "འཛོལ་བའི་རྩིས་ཞིབ་མ་ལག།" -[audit.events] -actions = "བྱ་སྤྱོད།" -clearFilters = "དྭངས་མ" -details = "ཞིབ་ཆ" -endDate = "མཇུག་གི་ཚེས་གྲངས།" -error = "འཛོལ་བའི་དངོས་བྱུང་བྱུང་བ།" -eventDetails = "བྱེད་སྒོའི་ཞིབ་ཕྲ།" -filterByType = "ཚགས་རླུང་ལ་རིགས་པ།" -filterByUser = "བཀོལ་སྤྱོད་པས་ཚགས་རླུང་།" -ipAddress = "IPཁ་བྱང་།" -noEvents = "བྱུང་རིམ་གང་ཡང་མཐོང་མ་བྱུང་།" -startDate = "འགོ་ཚུགས་ཚེས་གྲངས།" -timestamp = "དུས་ཚོད།" -title = "རྩིས་ཞིབ་བྱེད་སྒོ།" -type = "རིགས" -user = "བེད་སྤྱོད།" -viewDetails = "ཞིབ་ཕྲའི་གནས་ཚུལ་ལ་ལྟོས།" - [audit.export] clearFilters = "དྭངས་མ" description = "རྩིས་ཞིབ་བྱུང་རིམ་CSV ཡང་ན་JSON རྩ་སྒྲིག་ལ་ཕྱིར་གཏོང་བྱེད། ཕྱིར་གཏོང་བྱས་པའི་གཞི་གྲངས་ཚད་བཀག་བྱེད་པར་ཚགས་རླུང་བེད་སྤྱོད་བྱེད།" endDate = "མཇུག་གི་ཚེས་གྲངས།" error = "ཕྱིར་གཏོང་གི་གྲངས་གཞི་མ་འདང་བ།" exportButton = "ཕྱིར་གཏོང་གྲངས་ཐོ་།" +fieldAuthor = "རྩོམ་པ་པོ (PDF ནས)" +fieldDate = "ཚེས་གྲངས" +fieldDocumentName = "ཡིག་ཆའི་མིང་" +fieldFileHash = "ཡིག་ཆ Hash (SHA-256)" +fieldIpAddress = "IP ཤག་གནས" +fieldOperationResults = "བཀོལ་སྤྱོད་མཇུག་འབྲས" +fieldOutcome = "མཇུག་འབྲས (མཐར་འཁྱོལ/མཐར་མ་འཁྱོལ)" +fieldTool = "ལག་ཆ" +fieldUsername = "ལག་ལེན་པའི་མིང་" filterByType = "ཚགས་རླུང་ལ་རིགས་པ།" filterByUser = "བཀོལ་སྤྱོད་པས་ཚགས་རླུང་།" filters = "ཚགས་རླུང་(གདམ་ག)།" format = "ཕྱིར་གཏོང་རྣམ་གྲངས།" +selectFields = "ཚང་དུ་བཙུགས་ནིའི་ཁག་འདེགས་" startDate = "འགོ་ཚུགས་ཚེས་གྲངས།" title = "ཕྱིར་གཏོང་རྩིས་ཞིབ་གྲངས་ཐོ།" +verboseRequired = "VERBOSE ཞིབ་བཤེར་གནས་རིམ་དགོས" [audit.systemStatus] +autoRefresh = "རང་འགུལ་བསྐྱར་སྒྱུར" +autoRefreshLabel = "30སྐར་ཆ་རེར་རང་འགུལ་བསྐྱར་སྒྱུར" +captureBySettings = "སྒྲིག་སྟངས་ནས་སྤྱོད་བཅུག" +capturedFields = "ཐོ་འགོད་བྱས་པའི་ཁག" +date = "ཚེས་གྲངས" days = "ཉིན།" disabled = "ཞ་བོ" +documentName = "ཡིག་ཆའི་མིང་" enabled = "ལྕོགས་ཅན་བཟོ་བ།" +fileHash = "ཡིག་ཆ Hash" level = "རྩིས་ཞིབ་རིམ་པ་།" +pdfAuthor = "PDF རྩོམ་པ་པོ" retention = "བདག་གཉེར་དུས་ཡུན།" status = "རྩིས་ཞིབ་དྲན་ཐོ།" title = "མ་ལག་གི་གནས་བབ།" +tool = "ལག་ཆ" totalEvents = "ཁྱོན་བསྡོམས་བྱུང་རིམ།" +username = "ལག་ལེན་‍പའི་མིང་" +verboseOnly = "VERBOSE ཙམ" + +[audit.stats] +activeUsers = "ཤུགས་ལ་ཡོད་པའི་སྤྱོད་མཁན" +attention = "དགོས་འདོད་དམིགས་བསལ་དགོས" +avgLatency = "ཆ་སྙོམས་ཕྱིར་འགྱངས" +error = "ཚད་རྩིས་ཕབ་ལེན་ནོར་འཁྲུལ" +errorLoadingStats = "ཚད་རྩིས་ཕབ་ལེན་ཕམ་པ" +excellent = "ཧ་ཅང་ལེགས" +good = "ལེགས་པ" +noData = "N/A" +successRate = "མཐར་འཁྱོལ་པོར་ཚད" +title = "བཅུད་དོན" +totalEvents = "བྱུང་ལས་བསྡོམས" +vsLastPeriod = "དུས་ཚོད་སྔོན་མའི་དང་མཉམ" + +[audit.charts] +byTool = "བཀོལ་བའི་ལག་ཆ་མང་བ" +byType = "རིགས་པའི་བྱེད་སྒོ།" +byUser = "སྤྱོད་མཁན་གྱིས་བྱེད་སྒོ།" +day = "ཉིན" +error = "ནོར་འཁྲུལ་གྱི་བཀལ་བའི་རེའུ་མིག" +hourlyActivity = "དུས་ཚོད་རེ་རེའི་འགན་འགྲུབ" +month = "ཟླ་བ" +noData = "དུས་ཚོད་འདིའི་ཆེད་དུ་གནས་སྡུད་མེད" +overTime = "དུས་ཐོག་ཏུ་བྱུང་བ།" +title = "རྩིས་ཞིབ་མཛུབ་ཁྲིད།" +week = "གཟའ་འཁོར" + +[audit.events] +actions = "བྱ་སྤྱོད།" +author = "རྩོམ་པ་པོ" +clearFilters = "དྭངས་མ" +details = "ཞིབ་ཆ" +documentName = "ཡིག་ཆ" +endDate = "མཇུག་གི་ཚེས་གྲངས།" +error = "འཛོལ་བའི་དངོས་བྱུང་བྱུང་བ།" +eventDetails = "བྱེད་སྒོའི་ཞིབ་ཕྲ།" +failure = "ཕམ་པ" +fileHash = "ཡིག་ཆ Hash" +filterByType = "ཚགས་རླུང་ལ་རིགས་པ།" +filterByUser = "བཀོལ་སྤྱོད་པས་ཚགས་རླུང་།" +ipAddress = "IPཁ་བྱང་།" +noEvents = "བྱུང་རིམ་གང་ཡང་མཐོང་མ་བྱུང་།" +outcome = "གནས་སྟངས" +sortAsc = "ཡར་འགེལ་བཟོ་སྒྲིག" +sortDesc = "མར་འགེལ་བཟོ་སྒྲིག" +startDate = "འགོ་ཚུགས་ཚེས་གྲངས།" +success = "མཐར་འཁྱོལ" +timestamp = "དུས་ཚོད།" +title = "རྩིས་ཞིབ་བྱེད་སྒོ།" +type = "རིགས" +user = "བེད་སྤྱོད།" +viewDetails = "ཞིབ་ཕྲའི་གནས་ཚུལ་ལ་ལྟོས།" + +[audit.filters] +allOutcomes = "ཚང་མ" +failureOnly = "ཕམ་པ་ཙམ" +last7Days = "ཉིན་7 སྔོན་མ" +last30Days = "ཉིན་30 སྔོན་མ" +outcomeFilter = "མཇུག་འབྲས" +quickPresets = "སྔོན་སྒྲིག་མྱུར་པོ" +successOnly = "མཐར་འཁྱོལ་ཙམ" +thisMonth = "ཟླ་འདི" +today = "དེ་རིང་" [audit.tabs] +clearData = "གནས་སྡུད་བསལ།" dashboard = "མཛུབ་ཁྲིད་སྟེགས་བུ།" events = "རྩིས་ཞིབ་བྱེད་སྒོ།" export = "ཕྱི་ཚོང" +[audit.clearData] +cancel = "ཕྱིར་འཐེན" +codeDoesNotMatch = "ཨང་རྟགས་མ་མཐུན" +codePlaceholder = "ཨང་རྟགས་ནཱ་ལ་འཇུག" +confirmationCode = "གཏན་འཁེལ་ཨང་རྟགས" +confirmationRequired = "ཞིབ་བཤེར་གནས་སྡུད་ཡོངས་སུ་སུབ" +confirmMessage = "འདིས་ཞིབ་བཤེར་ཐོ་འགོད་ཡོངས་སུ་རྟག་པར་སུབ། མུ་མཐུད་དུ་བཅུག་ནས་འོག་གི་གཏན་འཁེལ་ཨང་རྟགས་འཇུག" +confirmTitle = "སུབ་རེད་པར་གཏན་འཁེལ་གནང་" +deleteButton = "སུབ" +enterCode = "གཏན་འཁེལ་ཨང་རྟགས" +enterCodeBelow = "གོང་ལ་མངོན་པ་དང་འདྲ་བའི་ཐོབ་གྲངས་འོག་ཏུ་འཇུག (ཆེ་ཆུང་ཁྱད་པར་བྱེད)" +initiateDelete = "གནས་སྡུད་ཡོངས་སུ་སུབ" +irreversible = "ལོག་མི་རུང་།" +success = "མཐར་འཁྱོལ" +successMessage = "ཞིབ་བཤེར་གནས་སྡུད་ཡོངས་སུ་ལེགས་ཤོས་སྦས་ཟིན།" +warning1 = "བྱ་གཞི་འདི་ཕྱིར་ལོག་མི་རུང་།" +warning2 = "ཞིབ་བཤེར་གནས་སྡུད་སུབ་པས བདེ་འཇགས་བྱུང་ལས་, སྤྱོད་མཁན་ལས་འཆར་, ཡིག་ཆ་བཀོལ་སྤྱོད་སོགས་དང་ལྡན་པའི་ལོ་རྒྱུས་ཞིབ་བཤེར་ཐོ་འགོད་ཚང་མ་དངོས་མཛོད་ནས་རྟག་པར་སུབ་འགྱོ་བ།" + [auth] accessDenied = "འཛུལ་སྤྱོད་ཁས་མ་བླངས་པ།" insufficientPermissions = "ཁྱེད་ལ་བྱ་སྤྱོད་འདི་སྒྲུབ་པའི་ཆོག་མཆན་མེད།" @@ -2254,9 +2374,11 @@ copy = "འདྲ་བཤུས།" done = "བགྱིས་པ" error = "ནོར་འཁྲུལ" expand = "རྒྱ་སྐྱེད་གཏོང" +learnMore = "དེ་ལས་མང་བ་ཤེས།" lines = "ཚེག་ཚན།" loading = "ཁུར་པོ།" next = "རྗེས་མ" +operation = "བཀོལ་སྤྱོད་འདི།" preview = "སྔོན་ལྟ།" previous = "སྔོན་ཆད་ཀྱི" refresh = "གསར་སྐྲུན་བྱེད་པ།" @@ -2920,6 +3042,7 @@ copyStack = "བང་རིམ་འདྲ་བཤུས།" discordSubmit = "མཐུན་སྒྲིལ། - ཕུལ་བའི་རྒྱབ་སྐྱོར།" dismissAllErrors = "ནོར་འཁྲུལ་ཚང་མ་མེད་པར་བཟོ་བ།" encryptedPdfMustRemovePassword = "འདི་PDFདེ་གསང་བཟོ་ཡང་ན་གསང་ཚིག་གིས་སྲུང་སྐྱོབ་བྱས་ཡོད། PDF/A ལ་མ་བསྒྱུར་གོང་ཁ་ཕྱེ་རོགས།" +generic = "ནོར་འཁྲུལ་བྱུང་།" github = "GitHub ཐོག་འཛིན་བྱང་ཕུལ་བ།" githubSubmit = "GitHub - འཛིན་བྱང་ཕུལ་བ།" incorrectPasswordProvided = "PDF གསང་གྲངས་དེ་ནོར་འཁྲུལ་ཅན་ཡིན་པའམ་ཡང་ན་སྤྲད་མེད་པ་རེད།" @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "ཁྱེད་ཀྱི་མངགས་ཉོ་ད upgradeSuccess = "གླ་ཆ་ལེགས་འགྲུབ་བྱུང་། ཁྱེད་ཀྱི་མངགས་ཉོ་དེ་ཡར་རྒྱས་བཏང་ཡོད། ཆོག་མཆན་དེ་ཁྱེད་ཀྱི་གསབ་ལེན་ཐོག་ལ་གསར་བརྗེ་བྱས་ཡོད། ཁྱེད་ལ་གཏན་འཁེལ་གྱི་གློག་འཕྲིན་ཞིག་མགྱོགས་པོ་ཐོབ་རྒྱུ་རེད།" upgradeTitle = "{{planName}} ལ་རིམ་སྤོར" yearly = "ལོ་རེ་རེ།" +checkoutOpened = "Browser ནང་ Checkout སྒོ་ཕྱེས་ཟིན།" +checkoutInstructions = "ད་ལྟའི་ཕྱེས་པའི browser སྒོ་སྒྲིག་ནང་འཚོལ་རྫོགས་བྱེད། གླ་ཆ་སྤྲོད་ཚར་རྗེས་འདིར་སླེབས་ནས འོག་གི་གནོན་མཆན་མནན་ནས ཐོ་རྩིས་སྤྲོད་ཆ་འཕྲིན་བསྐྱར་སྒྱུར།" +refreshBilling = "དངུལ་སྤྲོད་བྱས་ཟིན་— ཐོ་རྩིས་སྤྲོད་བསྐྱར་སྒྱུར" +closeLater = "ཕྱི་ལ་བཟོས" [payment.emailStage] continue = "མུ་མཐུད" @@ -4679,6 +4806,13 @@ prompt = "རེའུ་མིག་འདོན་པའི་ཤོག་ང submit = "སྙིང་བཅུད" title = "PDF ནས་ CSV བར།" +[PDFToXLSX] +header = "PDF ནས Excel ལ་" +prompt = "ཐིག་ཁྲམ་འདོན་བཅུག་དགོས་པའི་ཤོག་ངོས་འདེམས།" +submit = "བསྒྱུར" +title = "PDF ནས Excel (XLSX)" +tags = "spreadsheet,excel,xlsx,table,extract,convert" + [PDFToHTML] credit = "ཞབས་ཞུ་འདིས་ཡིག་ཆ་སྒྱུར་བའི་ཆེད་དུ་pdftohtmlབེད་སྤྱོད་བྱེད་ཀྱི་ཡོད།" header = "PDF ནས་ HTML བར།" @@ -4835,6 +4969,7 @@ customPricing = "ཡུལ་སྲོལ" featureComparison = "ཁྱད་ཆོས་བསྡུར་བ།" from = "ནས" hideComparison = "སྦ་བའི་ཁྱད་ཆོས་བསྡུར་བ།" +included = "ཚུད་པ།" includedInCurrent = "ཁྱེད་ཀྱི་འཆར་གཞིའི་ནང་ཚུད་པ།" licensedSeats = "ཆོག་མཆན་ཡོད་པ: {{count}} རྐུབ་སྟེགས" manage = "དོ་དམ" @@ -4852,9 +4987,11 @@ title = "ཤུགས་ལྡན་འཆར་གཞི།" [plan.availablePlans] subtitle = "ཁྱེད་རང་གི་དགོས་མཁོ་དང་འཚམ་པའི་འཆར་གཞི་འདེམས།" +loadError = "གྲལ་གཞིའི་གོང་ཚད་ཕབ་ལེན་མ་ཐུབ། སོར་བཞག་གནས་གོང་ལྟར་སྤྱོད།" title = "འཆར་གཞི།" [plan.enterprise] +siteLicense = "ས་ཁུལ་ཆོག་མཆན" highlight1 = "དམིགས་བསལ་གྱི་རིན་གོང་གཏན་འབེབས་བྱེད་པ།" highlight2 = "བློ་བརྟན་འགྱུར་མེད་ཀྱིས་རྒྱབ་སྐྱོར་བྱེད་པ།" highlight3 = "ཆེས་གསར་བའི་ཁྱད་ཆོས།" @@ -4928,6 +5065,81 @@ keyDescription = "ཁྱེད་རང་གི་གློག་འཕྲི success = "ལག་འཁྱེར་སྒུལ་ཤུགས་ལྡན་པ།" successMessage = "ཁྱེད་ཀྱི་ཆོག་མཆན་དེ་ལེགས་འགྲུབ་བྱུང་ཡོད། ཁྱོད་ཀྱིས་ད་ལྟ་སྒེའུ་ཁུང་འདི་ཁ་རྒྱག་ཐུབ།" +[plan.team] +name = "ཚོགས་པ" +siteLicense = "ས་ཁུལ་ཆོག་མཆན" + +[credits] +enableOverageBilling = "ཚད་ལས་བརྒལ་བའི་ཐོ་རྩིས་སྤྱོད་བཅུག" +maybeLater = "ཕྱི་ལ་བཟོས" +upgrade = "རིམ་སྤར" + +[credits.modal] +advancedMonitoring = "མཐོ་རིམ་ལྟ་སྲུང་" +allInOneWorkspace = "ཡོངས་ཀྱིས་སྒྲུབ་པའི PDF ལས་གནས (viewer, ལག་ཆ & agent)" +apiSandbox = "API sandbox" +contactSales = "ཚོང་འཇུག་འབྲེལ་གཏོང་" +creditsRemaining = "{{total}} ནས {{current}} ལྷག་ལུས" +creditsThisMonth = "ཟླ་རེའི credits" +current = "མིག་སྔའི་གྲལ་གཞི" +customPricing = "རང་མོས" +customSmartFolders = "རང་མོས Smart Folders" +dedicatedSupportSlas = "དམིགས་བསལ་རོགས་རམ་ & SLAs" +enterpriseSubscription = "ལས་སྡེ་ཆེན" +everythingInCredits = "Credits ནང་གི་ཡོད་ཚད་དང་ཁ་སྣོན:" +everythingInFree = "Free ནང་གི་ཡོད་ཚད་དང་ཁ་སྣོན:" +fasterThroughput = "མགྱོགས་ཚད 10x མགྱོགས་པ" +forRegularWork = "སྤྱོད་སྲོལ PDF ལས་ཀྱི་ཆེད:" +freeTier = "Free རིམ་པ" +fullyPrivateFiles = "གང་གིས་ཀྱང་སྒེར་དབང་ཡིག་ཆ" +largeFileProcessing = "ཡིག་ཆ་ཆེན་པོ་ལས་སྦྱོར" +managedMemberMessage = "ཁྱེད་ཀྱིས་ཚོགས་པའི་བརྒྱུད་ནས credits ཚད་མེད་སྤྱོད་ཆོག རོགས་རམ་དགོས་ན་ཚོགས་འཁོར་མགོ་བོ་ལ་འབྲེལ་གཏོང་རོགས།" +managedMemberTitle = "credits ཚད་མེད" +meteringBillingNote = "ཚད་ལས་བརྒལ credits གླ་ཆ་ཟླ་རེར་ཁྱེད་ཀྱི Team མཐུད་སྤྲོད་དང་མཉམ་དུ་སྒྲིག་པ་ཡིན། སྤྱོད་ཚད་དུས་རབས་ནང་ལས་སྟོན་ཐུབ།" +meteringExplanation = "ཁྱེད་ཀྱི Team གྲལ་གཞིར {{credits}} credits ཟླ་རེར་ཚུད། ཚད་མཐར་རྫོགས་ནས ཚད་ལས་བརྒལ་ཐོ་རྩིས་ཀྱིས credits ཁ་སྐོང་རང་འགུལ་བྱས་ནས ལས་ཀ་མཚམས་མེད།" +meteringIncluded = "{{credits}} credits/ཟླ (Team ནས་ཚུད)" +meteringNoCommitment = "ཁྲལ་ལྡན་མེད་པ, དུས་གང་རུང་ནས་ཕྱིར་འཐེན་ཆོག" +meteringNeverRunOut = "credits མེད་པ་མ་གྱུར" +meteringPayAsYouGo = "བཀོལ་ཚད་ལྟར་གླ་ཆ་སྤྲོད" +meteringPrice = "ཁ་སྐོང credits རེ་རེ་ལ་ {{price}}" +meteringTitle = "སྤྱོད་ཚད་ལྟར་གླ་ཆ་སྤྲོད (Overage Billing)" +monthlyCredits = "ཟླ་རེའི credits" +orgWideAccess = "སྤྱི་ཚོགས་ཡོངས་ཁྱབ་དོན་སྤྱོད་ཚད" +overage = "overage" +perMonth = "/ཟླ" +popular = "མང་དུ་བཀོལ་བ" +premiumAiModels = "མཐོ་རིམ AI དཔེ་མཚོན" +prioritySupport = "གཙོ་རིམ་རོགས་རམ" +privateDocCloud = "སྒེར་དབང་ཡིག་ཆ Cloud" +ragFineTuning = "RAG + fine-tuning" +secureApiAccess = "བདེ་འཇགས API དོན་སྤྱོད" +selfHostLink = "ཡིག་གཞུང་དང་གྲལ་གཞི་ལ་ལྟ།" +selfHostPrompt = "རང་གིས་འཇུག་འདོད་དམ།" +standardThroughput = "ཚད་ལྡན་མགྱོགས་ཚད" +subtitle = "Team ལ་རིམ་སྤར་བྱས་ནས credits 10x དང་ལས་སྦྱོར་མགྱོགས།" +subtitlePro = "འཇུག་རང་འགུལ་གྱི་ཚད་ལས་བརྒལ་ཐོ་རྩིས་སྤྱོད་བཅུག་ནས credits མ་རྫོགས།" +teamLeaderOnly = "ཚོགས་མགོ་བོ་ཙམ་གིས་ཚད་ལས་བརྒལ་ཐོ་རྩིས་སྤྱོད་བཅུག་ཆོག" +teamSubscription = "ཚོགས་པ" +titleExhausted = "ཁྱེད་ཀྱི Free credits སྤྱད་ཚར་ཟིན།" +titleExhaustedPro = "credits མེད་པ་བྱུང་།" +unlimitedApiAccess = "API དོན་སྤྱོད་ཚད་མེད" +unlimitedMonthlyCredits = "ས་ཁུལ་ཆོག་མཆན" +unlimitedSeats = "ཚོགས་མི་ཚད་མེད" + +[credits.modal.features] +everythingInCredits = "Credits ནང་གི་ཡོད་ཚད་དང་ཁ་སྣོན:" +everythingInFree = "Free ནང་གི་ཡོད་ཚད་དང་ཁ་སྣོན:" +forRegularWork = "སྤྱོད་སྲོལ PDF ལས་ཀྱི་ཆེད:" + +[credits.insufficient] +brief = "credits མང་མཐའ་མེད། {{required}} credits དགོས་ཀྱང་ {{current}} ཙམ་ཡོད།" +freeTier = "Team ལ་རིམ་སྤར་བྱས་ནས credits 10x དང་ ཚད་ལས་བརྒལ་ཐོ་རྩིས་ཚད་མེད།" +managedMember = "རོགས་རམ་དགོས་ན་ཚོགས་མགོ་བོ་ལ་འབྲེལ་གཏོང་རོགས།" +message = "{{tool}} འཁོར་སྐྱོད་ལ credits མང་མཐའ་མེད། ད་ལྟ {{current}} credits ཡོད།" +messageWithAmount = "{{tool}} འཁོར་སྐྱོད་ལ {{required}} credits དགོས་ཀྱང་ {{current}} ཙམ་ཡོད།" +teamMember = "ཚད་ལས་བརྒལ་ཐོ་རྩིས་སྤྱོད་བཅུག་ནས credits མ་རྫོགས།" +title = "credits མང་མཐའ་མེད།" + [printFile] header = "པར་གཞི་པར་བསྐྲུན་ཡིག་ཆ།" submit = "པར་སྐྲུན།" @@ -5565,6 +5777,70 @@ user = "ནང་འཛུལ་བྱས་ན།" saas = "སྟར་ལིང་སྤྲིན་པ།" selfhosted = "རང་གིས་རང་ལ་མགྲོན་ཁང་།" +[settings.planBilling] +currentPlan = "མིག་སྔའི་གྲལ་གཞི" +loading = "ཐོ་རྩིས་སྤྲོད་ཆ་འཕྲིན་ཕབ་ལེན་བརྒྱབ་བཞིན..." +notAvailable = "གྲལ་གཞི་དང་ཐོ་རྩིས་སྤྲོད་ནི་ Stirling Cloud (SaaS mode) ལ་མཐུད་ཡོད་དུས་ཙམ་སྤྱོད་ཆོག" +title = "གྲལ་གཞི་དང་ཐོ་རྩིས་སྤྲོད" + +[settings.planBilling.billing] +manageBilling = "ཐོ་རྩིས་སྤྲོད་དོ་དམ" +nextBillingDate = "ཐོ་རྩིས་སྤྲོད་ཉེ་མཐར་གྱི་ཚེས།" +overageCost = "དང་པོའི་ཚད་ལས་བརྒལ་གླ་ཆ: {{amount}} ({{credits}} credits)" + +[settings.planBilling.credits] +estimatedCost = "ཐོབ་བྱུང་གླ་ཆ: {{amount}}" +freeTierInfo = "Free གྲལ་གཞིར ཟླ་རེར {{freeCredits}} credits ཚུད། Team ལ་རིམ་སྤར་བྱས་ནས {{teamCredits}} credits/ཟླ དང pay-as-you-go ཚད་ལས་བརྒལ་ཐོ་རྩིས།" +included = "{{count}} credits/ཟླ (ཚུད)" +noOverage = "ཟླ་འདིར ཚད་ལས་བརྒལ་གླ་ཆ་མེད། ཁྱེད་ཀྱིས་ཚུད་པའི {{count}} credits སྤྱོད་བཞིན།" +overage = "+ {{count}} overage" +overageInfo = "Overage credits ཡི་གླ་ཆ་ཡིན་ {{price}} དང་ credit རེ་རེ་ལ། ཟླ་རེའི་ཁེལ་འཐུས་ལས་བརྒལ་བའི་སྤྱོད་ཚད་ཙམ་ལ་གླ་ཆ་སྤྲོད།" +title = "credits སྤྱོད་ཚད" + +[settings.planBilling.errors] +fetchFailed = "ཐོ་རྩིས་སྤྲོད་གནས་སྡུད་ལེན་མ་ཐུབ" +retry = "བསྐྱར་འབྱེད" + +[settings.planBilling.status] +active = "ཤུགས་ལ་" +canceled = "ཆ་མེད་བཟོས" +pastDue = "དུས་ལས་ཡོལ།" +trial = "ཚོད་ལྟ" + +[settings.planBilling.tier] +enterprise = "ལས་སྡེ་ཆེན" +enterpriseDescription = "ལས་སྡེ་ཆེན་དོན་གྱི་རང་མོས་ཁྱད་ཆོས་དང་རོགས་རམ" +free = "Free" +freeDescription = "ཟླ་རེར credits 50" +team = "ཚོགས་པ" +teamBadge = "ཚོགས་པ" +teamDescription = "500 credits/ཟླ ཚུད་པ། ཞབས་ཞུ་མཚམས་མེད་པར ཚད་ལས་བརྒལ་ཐོ་རྩིས་རང་འགུལ།" +teamTooltipCredits = "Team གྲལ་གཞིར {{credits}} credits/ཟླ ཚུད།" +teamTooltipFineprint = "ཚུད་པའི credits ལས་བརྒལ་བའི་སྤྱོད་ཚད་ཙམ་ལ་གླ་ཆ་སྤྲོད།" +teamTooltipOverage = "{{price}}/credit གི་ཚད་ལས་བརྒལ་གླ་ཆ་རང་འགུལ་གྱིས ཞབས་ཞུ་མཚམས་མེད་པར་བྱེད།" + +[settings.planBilling.team] +managedByTeam = "ཚོགས་པས་དོ་དམ" +memberCount = "ཚོགས་མི {{count}} མང་" + +[settings.planBilling.trial] +daysRemaining = "ཉིན་{{days}} ལྷག་ལུས" +daysRemainingFull = "ཁྱེད་ཀྱི་ཚོད་ལྟ་ {{days}} ཉིན་ནང་མཇུག་སྒྲིལ" +endDate = "དུས་ཡོལ: {{date}}" +endsOn = "ཚོད་ལྟ་མཇུག" +title = "Free ཚོད་ལྟ་བྱེད་བཞིན" + +[settings.planBilling.upgrade] +cta = "Team ལ་རིམ་སྤར" +featureApi = "རང་འགུལ་གྱི་ API དོན་སྤྱོད" +featureCredits = "ཟླ་རེར {{teamCredits}} credits (Free ལ {{freeCredits}})" +featureMembers = "ཚོགས་མི་ཚད་མེད" +featureSupport = "གཙོ་རིམ་རོགས་རམ" +featureThroughput = "ལས་སྦྱོར་མགྱོགས་ཚད་མགྱོགས་པ" +opensInBrowser = "Browser ནང་སྒོ་ཕྱེས་ནས རིམ་སྤར་ཚར་བར་བྱེད" +subtitle = "Team ལ་རིམ་སྤར་བྱས་ནས:" +title = "ཁྱེད་ཀྱི་གྲལ་གཞི་རིམ་སྤར" + [settings.developer] apiKeys = "APIལྡེ་མིག" title = "གོང་འཕེལ་གཏོང་མཁན།" @@ -5689,6 +5965,9 @@ people = "མི་དམངས" teams = "རུ་ཁག" title = "ལས་ཀའི་ས་ཆ།" +[settings.team] +title = "ཚོགས་པ" + [setup] description = "ཁྱེད་རང་གིས་ཇི་ལྟར་བེད་སྤྱོད་གཏོང་འདོད་ཡོད་མེད་འདེམས་ནས་མགོ་བརྩམས།" welcome = "སི་ཊར་ལིང་PDFལ་ཕེབས་པར་དགའ་བསུ་ཞུ།" @@ -6011,6 +6290,11 @@ desc = "བགོད་བྱེད་ཀྱི་ཤོག་བུ་དང་ name = "ཤོག་ངོས་བགོ་བྱེད་པ།" tooltip = "པར་ལེན་བྱེད་སྐབས་ཡིག་ཆ་བར་ལ་QRཨང་རྟགས་བགོད་ཆས་བེད་སྤྱོད་བྱེད་པ།" +[split.methods.byPoster] +name = "སྣེ་ཁྲོམ་དུ་དཔར་བསྐྲུན་ཆ་ཤས" +desc = "ཤོག་ངོས་ཆེན་པོ་རྣམས་དཔར་བསྐྲུན་ཆ་ཚད་དུ་དབྱེ།" +tooltip = "ཆེས་ཆེ་བའི་ཤོག་ངོས་རྣམས་སྤྱིར་བཏང་ཤོག་བྱང་ (A4, Letter སོགས) ལ་དཔར་བསྐྲུན་ལེགས་པར་འགྲོ་བའི་ཆ་ཤས་ཆུང་བར་དབྱེ།" + [split.methods.byPages] desc = "ཤོག་ངོས་བྱེ་བྲག་པ་(1,3,5-10)བཏོན་པ།" name = "ཤོག་ངོས་ཨང་གྲངས།" @@ -6029,6 +6313,7 @@ tooltip = "ཆེས་མཐོ་བའི་ཡིག་ཆའི་ཆེ་ [split.methods.prefix] splitAt = "བགོས་པ།" splitBy = "བགོས་པ།" +splitInto = "དབྱེ་དུ་" [split.methodSelection.tooltip] bullet1 = "ཐབས་ལམ་ཤོག་བྱང་ལ་སྣུན་ནས་དེ་འདེམས་དགོས།" @@ -6048,6 +6333,21 @@ selectMethodFirst = "ཐོག་མར་བགོད་ཐབས་ཤིག chooseMethod = "ཐབས་ལམ་འདེམས།" settings = "སྒྲིག་སྟངས།" +[split.poster] +rightToLeft = "གཡས་ནས་གཡོན་བར་དབྱེ" + +[split.poster.pageSize] +label = "མངོན་འབྱུང་ཤོག་ངོས་ཆེ་ཆུང་" +description = "དཔར་བསྐྲུན་དོན་གྱི་ཕྱིར་འབྱོར་ཤོག་ངོས་ཆེ་ཆུང་" + +[split.poster.xFactor] +label = "ཆུ་ཕྲང་གྲལ་བ" +description = "ཤོག་ངོས་རེ་རེ་བར་དབྱེ་བའི་སྟར་གྲངས།" + +[split.poster.yFactor] +label = "ཀེར་ཕྲང་གྲལ་བ" +description = "ཤོག་ངོས་རེ་རེ་བར་དབྱེ་བའི་གྲལ་ཐིག་གྲངས།" + [split.tooltip.byChapters] bullet1 = "དེབ་མཚོན་ཆ། རིམ་པ་གང་ཞིག་ལ་དབྱེ་དགོས། (1=མཐོ་ཚད།)" bullet2 = "མེ་ཊ་ཌ་ཊ་ཚུད་ཡོད། ཡིག་ཆའི་རྒྱུ་ཆ་སྲུང་སྐྱོབ་བྱས།" @@ -6085,6 +6385,14 @@ bullet5 = "གལ་ཏེ་བགོད་བྱེད་ཀྱི་ཤོག text = "རང་འགུལ་གྱིས་པར་བཤུས་བྱས་པའི་ཡིག་ཆ་དེ་དངོས་པོའི་བགོད་བྱེད་ཀྱི་ཤོག་བུ་བཀོལ་སྤྱོད་བྱས་ནས་QRཨང་རྟགས་སྤྱད་དེ་བགོས་ཡོད། ཡིག་ཆ་སྣ་ཚོགས་མཉམ་དུ་པར་བཤུས་བྱེད་པའི་ལས་སྣོན་བྱེད་པར་ཡང་དག་པོ་ཡོད།" title = "ཤོག་ངོས་བགོད་ཆས་ཀྱིས་ཁ་ཕྲལ་བ།" +[split.tooltip.byPoster] +bullet1 = "མངོན་འབྱུང་ཤོག་ངོས་ཆེ་ཆུང: ཕྱིར་འབྱོར་ཤོག་བྱང་ཆེ་ཆུང (A4, Letter སོགས) འདེམས།" +bullet2 = "ཆུ་ཕྲང/ཀེར་ཕྲང་གྲལ་བ: དབྱེ་བའི grid ཆེ་ཆུང་" +bullet3 = "གཡས་ནས་གཡོན: RTL ལེའུ་སྒྲིག་ལ་སྟར་གོ་རིམ་ལོག་" +bullet4 = "དཔར་བསྐྲུན་བྱས་ནས ཆ་ཤས་མཉམ་སྒྲིག་བྱས་ཏེ poster སྒྲིག" +text = "PDF ཤོག་ངོས་ཆེན་པོ་རྣམས་སྤྱིར་བཏང་ཤོག་བྱང་ཆེ་ཆུང་ལ་དཔར་བསྐྲུན་ལེགས་པར་འགྲོ་བའི་ཆ་ཤས་ཆུང་བར་དབྱེ། ཆེས་ཆེ་བའི་ཤོག་ངོས་ལས poster དཔར་བསྐྲུན་བྱེད་པར་ཡག་པོ།" +title = "Poster དཔར་བསྐྲུན་དོན་གྱི་དབྱེ་བ" + [split.tooltip.byPages] bullet1 = "བགོད་གྲངས་གཅིག་རྐྱང་། 3,7 (ཤོག་ངོས་3དང་7ཡི་རྗེས་སུ་ཁ་ཕྲལ་)" bullet2 = "ཁྱབ་ཁོངས་ཁ་ཕྲལ་གྱི་ས་ཚིགས་: ༣-༨ (ཤོག་ངོས་༣ དང་ཤོག་ངོས་༨ རྗེས་བགོས་པ།)" @@ -6364,9 +6672,13 @@ tags = "དྲ་རྒྱའི་པར་རིས། གསོག་འཇ title = "URL ནས་PDF བར།" [usage] +aboutUsageAnalytics = "Usage Analytics སྐོར་ལ" +configureSettings = "Analytics སྒྲིག་སྟངས་སྒྲིག" error = "ནོར་འཁྲུལ་གྱི་བཀོལ་སྤྱོད་གྲངས་གཞི།" noData = "གཞི་གྲངས་མེད།" noDataMessage = "ད་ལྟ་བེད་སྤྱོད་ཀྱི་གྲངས་གཞི་མེད་པ་རེད།" +usageAnalyticsExplanation = "Usage analytics ཡིས endpoint ཞུ་འབུལ་དང་ལག་ཆ་སྤྱོད་ལམ་རྣམས་རྗེས་འཇུག་བྱས། ཞིབ་བཤེར་ཐོ་འགོད་གྲོས་ངོས་དང་མཉམ་སྦྲགས་ནས རྒྱུད་ཁོར་ལམ་གྱི་འགན་འགྲུབ་, ལས་འགན་, བདེ་འཇགས་བྱུང་ལས་ལ་མཐོང་བའི་ཁྱབས་ཆེན་ཐོབ།" +viewAuditLogs = "ཞིབ་བཤེར་ཐོ་འགོད་ལ་ལྟ།" [usage.chart] title = "མཇུག་བསྡུའི་བེད་སྤྱོད་རེའུ་མིག" @@ -6947,3 +7259,278 @@ cancel = "འདོར་བ" confirm = "སྙིང་བཅུད" message = "ZIP འདིའི་ནང་ཡིག་ཆ {{count}} ཡོད། ད་ལྟ་ཕྱིར་དབྱེ་བྱེད་དམ།" title = "ZIPཡིག་ཆ་ཆེན་པོ།" + +[cloudBadge] +tooltip = "བཀོལ་སྤྱོད་འདིས་ཁྱེད་ཀྱི cloud credits སྤྱོད།" + +[team] +cancelInviteError = "འདྲེན་བརྡ་དོར་མ་ཐུབ" +confirmCancelInvite = "འདྲེན་བརྡ་འདི་དོར་དགོས་པ་གཏན་ཁེལ་ཡོད་དམ།" +confirmLeave = "ཚོགས་པ་འདི་ནས་ཕྱིར་འཐེན་དགོས་པ་གཏན་ཁེལ་ཡོད་དམ།" +confirmLeaveLeader = "ཁྱེད་ཚོགས་མགོ་བོ་ཡིན་པས ཕྱིར་འཐེན་ནས་ཚོགས་པ་ནས་བསུབ་འགྱོ། གཏན་ཁེལ་ཡོད་དམ།" +confirmRemove = "སྡེ་ཚོགས་མི་འདི་སུབ་དགོས་པ་གཏན་ཁེལ་ཡོད་དམ།" +editName = "ཚོགས་པའི་མིང་རྩོམ་སྒྲིག" +inviteCancelled = "འདྲེན་བརྡ་དོར་ཟིན།" +inviteError = "འདྲེན་བརྡ་གཏོང་མ་ཐུབ" +inviteSent = "འདྲེན་བརྡ་བཀོད་ཟིན།" +leader = "མགོ་བོ" +leaveButton = "ཚོགས་པ་ནས་ཕྱིར་འཐེན" +leaveError = "ཚོགས་པ་ནས་ཕྱིར་འཐེན་མ་ཐུབ" +leaveSuccess = "ཚོགས་པ་ནས་ཕྱིར་འཐེན་ལེགས་པར།" +loading = "ཚོགས་པའི་ཆ་འཕྲིན་ཕབ་ལེན་བརྒྱབ་བཞིན..." +memberCount = "{{count}} མི་ཚོགས" +memberRemoved = "སྡེ་ཚོགས་མི་སུབ་ལེགས་པར།" +namePlaceholder = "ཚོགས་པའི་མིང་འཇུག" +personal = "རང་དོན" +removeError = "སྡེ་ཚོགས་མི་སུབ་མ་ཐུབ" +renameError = "ཚོགས་པའི་མིང་བསྐྱར་བཏགས་ཕམ་པ" +renameSuccess = "ཚོགས་པའི་མིང་བསྐྱར་བཏགས་ལེགས་པར།" + +[team.invitationBanner] +message = "ཁྱེད་ལ་ཞུན་ཞུགས་འབུལ་བཞིན།" +acceptButton = "དང་ལེན" +rejectButton = "དོར" + +[team.features] +badge = "ཚོགས་པའི་ཁྱད་ཆོས" +subtitle = "ཚོགས་པ་དང་མཉམ་ལས" +title = "ཚོགས་པའི་མཉམ་ལས" +viewPlans = "གྲལ་གཞི་ལ་ལྟ།" + +[team.features.billing] +description = "ཐོ་རྩིས་སྤྲོད་དང་མཐུད་སྤྲོད་དོ་དམ" +title = "ཐོ་རྩིས་སྤྲོད་དོ་དམ" + +[team.features.credits] +description = "ཚོགས་མི་ཚང་མས་མཉམ་སྤྱོད་པའི credits པུལ" +title = "མཉམ་སྤྱོད credits" + +[team.features.dashboard] +description = "ཚོགས་པའི་འགན་འགྲུབ་དང་སྤྱོད་ཚད་ལ་ལྟ།" +title = "ཚོགས་པའི་མདུན་ངོས" + +[team.features.invite] +description = "ཁྱེད་ཀྱི་ཚོགས་པར་མི་ཚོགས་ཁ་སྣོན" +title = "མི་ཚོགས་འདྲེན་བརྡ" + +[team.invite] +cancelLabel = "ཕྱིར་འཐེན" +invalidEmail = "Email ཤག་གནས་ནུས་མེད" +placeholder = "Email ཤག་གནས་འཇུག" +sendButton = "འདྲེན་བརྡ་གཏོང་" +title = "ཚོགས་མི་འདྲེན་བརྡ" + +[team.members] +emailColumn = "Email" +empty = "ཚོགས་མི་ད་དུང་མེད" +nameColumn = "མིང་" +pending = "བསྒུག་བཞིན" +remove = "སུབ" +roleColumn = "ལས་འགན" +title = "ཚོགས་མི" + +[team.upgrade] +button = "Team ལ་རིམ་སྤར" +description = "ཚོགས་པའི་མཉམ་ལས་ཁྱད་ཆོས་ཁ་ཕྱེ" +title = "Team གྲལ་གཞི་ལ་རིམ་སྤར" + +[provider.oauth2.google] +scope = "ཐོ་འཇུག་དཔང་བཅོས" + +[provider.oauth2.google.clientId] +label = "Client ID" +description = "Google Cloud Console ནས་ OAuth2 Client ID" + +[provider.oauth2.google.clientSecret] +label = "Client Secret" +description = "Google Cloud Console ནས་ OAuth2 Client Secret" + +[provider.oauth2.google.scopes] +label = "Scopes" +description = "Comma-separated OAuth2 scopes" + +[provider.oauth2.google.useAsUsername] +label = "Username ལ་སྤྱོད" +description = "username ལ་སྤྱོད་ཀྱི་ཁག (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "ཐོ་འཇུག་དཔང་བཅོས" + +[provider.oauth2.github.clientId] +label = "Client ID" +description = "GitHub Developer Settings ནས་ OAuth2 Client ID" + +[provider.oauth2.github.clientSecret] +label = "Client Secret" +description = "GitHub Developer Settings ནས་ OAuth2 Client Secret" + +[provider.oauth2.github.scopes] +label = "Scopes" +description = "Comma-separated OAuth2 scopes" + +[provider.oauth2.github.useAsUsername] +label = "Username ལ་སྤྱོད" +description = "username ལ་སྤྱོད་ཀྱི་ཁག (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Issuer URL" +description = "Keycloak realm གྱི OpenID Connect Discovery endpoint གི URL" + +[provider.oauth2.keycloak.clientId] +label = "Client ID" +description = "Keycloak ནས་ OAuth2 Client ID" + +[provider.oauth2.keycloak.clientSecret] +label = "Client Secret" +description = "Keycloak ནས་ OAuth2 Client Secret" + +[provider.oauth2.keycloak.scopes] +label = "Scopes" +description = "Comma-separated OAuth2 scopes" + +[provider.oauth2.keycloak.useAsUsername] +label = "Username ལ་སྤྱོད" +description = "username ལ་སྤྱོད་ཀྱི་ཁག (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "Generic OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Generic OAuth2 སྤྱོད་བཅུག" +description = "རང་མོས OAuth2 provider བེད་སྤྱོད་ནས་དཔང་བཅོས་སྤྱོད་བཅུག" + +[provider.oauth2.generic.provider] +label = "Provider མིང་" +description = "OAuth2 provider མིང་ (དཔེར་ན་ Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "Issuer URL" +description = "OpenID Connect Discovery (/.well-known/openid-configuration) ལྟར་རྒྱུན་འཁོར་ཡོད་པའི Provider" + +[provider.oauth2.generic.clientId] +label = "Client ID" +description = "ཁྱེད་ཀྱི Provider ནས་ OAuth2 Client ID" + +[provider.oauth2.generic.clientSecret] +label = "Client Secret" +description = "ཁྱེད་ཀྱི Provider ནས་ OAuth2 Client Secret" + +[provider.oauth2.generic.scopes] +label = "Scopes" +description = "Comma-separated OAuth2 scopes" + +[provider.oauth2.generic.useAsUsername] +label = "Username ལ་སྤྱོད" +description = "username ལ་སྤྱོད་ཀྱི་ཁག" + +[provider.oauth2.generic.autoCreateUser] +label = "User རང་འབྱུང་གསར་བཟོ" +description = "OAuth2 ཐོ་འཇུག་ཐེངས་དང་པོར user རྩིས་ཐོ་རང་འབྱུང་གསར་བཟོ" + +[provider.oauth2.generic.blockRegistration] +label = "ཐོ་འགོད་བཀག" +description = "OAuth2 བརྒྱུད་ནས user ཐོ་འགོད་གསར་པ་བཀག" + +[provider.smtp] +name = "SMTP ཡིག་འཕྲིན" +scope = "Email བརྡ་ཐོ" + +[provider.smtp.enabled] +label = "ཡིག་འཕྲིན་སྤྱོད་བཅུག" +description = "Email བརྡ་ཐོ་དང SMTP ལས་འགན་སྤྱོད་བཅུག" + +[provider.smtp.host] +label = "SMTP Host" +description = "ཁྱེད་ཀྱི SMTP ཞབས་ཞུ་ཆས་ཀྱི hostname ཡང་ན IP ཤག་གནས" + +[provider.smtp.port] +label = "SMTP Port" +description = "SMTP མཐུད་ལམ port ཨང་ (སྤྱིར 25, 465, ཡང་ན 587)" + +[provider.smtp.username] +label = "SMTP Username" +description = "SMTP དཔང་བཅོས་ཀྱི username" + +[provider.smtp.password] +label = "SMTP Password" +description = "SMTP དཔང་བཅོས་ཀྱི password" + +[provider.smtp.from] +label = "From ཤག་གནས" +description = "སྐུར་མཁན་ལ་སྤྱོད་པའི email ཤག་གནས" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "SAML2 སྤྱོད་བཅུག" +description = "SAML2 དཔང་བཅོས་སྤྱོད་བཅུག (Enterprise ཁོ་ན)" + +[provider.saml2.provider] +label = "Provider མིང་" +description = "ཁྱེད་ཀྱི SAML2 provider མིང་" + +[provider.saml2.registrationId] +label = "Registration ID" +description = "ཁྱེད་ཀྱི Service Provider (SP) གློག་རིམ་མིང་" + +[provider.saml2.idpMetadataUri] +label = "IDP Metadata URI" +description = "Provider ཡི metadata ཡི URI" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login URL" +description = "SSO འགོ་འཛུགས་ཀྱི URL" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout URL" +description = "SLO འགོ་འཛུགས་ཀྱི URL" + +[provider.saml2.idpIssuer] +label = "IDP Issuer" +description = "Provider ཡི ID" + +[provider.saml2.idpCert] +label = "IDP Certificate" +description = "Certificate འགྲུལ་ལམ (དཔེར་ན་ classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Private Key" +description = "ཁྱེད་ཀྱི Private Key འགྲུལ་ལམ" + +[provider.saml2.spCert] +label = "SP Certificate" +description = "signing certificate འགྲུལ་ལམ" + +[provider.saml2.autoCreateUser] +label = "User རང་འབྱུང་གསར་བཟོ" +description = "SAML2 ཐོ་འཇུག་ཐེངས་དང་པོར user རྩིས་ཐོ་རང་འབྱུང་གསར་བཟོ" + +[provider.saml2.blockRegistration] +label = "ཐོ་འགོད་བཀག" +description = "SAML2 བརྒྱུད་ནས user ཐོ་འགོད་གསར་པ་བཀག" + +[provider.googledrive] +name = "Google Drive" +scope = "ཡིག་ཆ་འདྲེན་འཇུག" + +[provider.googledrive.enabled] +label = "Google Drive ཡིག་ཆ་འདེམས་བྱེད་སྤྱོད་བཅུག" +description = "སྤྱོད་མཁན་ཚོས Google Drive ནས་ཐད་ཀར་ཡིག་ཆ་ནང་འཇུག་བྱེད་ཆོག" + +[provider.googledrive.clientId] +label = "Client ID" +description = "Google Cloud Console ནས་ Google OAuth 2.0 Client ID" + +[provider.googledrive.apiKey] +label = "API Key" +description = "Google Cloud Console ནས་ Google Picker API ཡི Google API Key" + +[provider.googledrive.appId] +label = "App ID" +description = "Google Cloud Console ནས་ Google Drive App ID" diff --git a/frontend/public/locales/ca-CA/translation.toml b/frontend/public/locales/ca-CA/translation.toml index ee4d47f71..6c9670f84 100644 --- a/frontend/public/locales/ca-CA/translation.toml +++ b/frontend/public/locales/ca-CA/translation.toml @@ -96,6 +96,8 @@ pin = "Fixa el fitxer (mantén-lo actiu després d'executar l'eina)" poweredBy = "Impulsat per" pro = "Pro" processTimeWarning = "Alerta: Aquest procés pot tardar 1 minut depenent de la mida de l'arxiu" +processingComplete = "El fitxer està llest." +processingCompleteMultiple = "{{count}} fitxers estan llestos." property = "Propietat" quickPosition = "Posició ràpida" red = "Vermell" @@ -105,6 +107,7 @@ save = "Desa" saveToBrowser = "Desa al navegador" saveUnavailable = "No es pot desar aquest element" seeDockerHub = "Veure Docker Hub" +editSecret = "Edita aquest valor" selectFillter = "-- Selecciona --" size = "Mida" sponsor = "Patrocinador" @@ -651,6 +654,7 @@ description = "Configureu proveïdors d'autenticació externs com OAuth2 i SAML. disconnect = "Desconnecta" disconnected = "Proveïdor desconnectat correctament" disconnectError = "No s'ha pogut desconnectar el proveïdor" +documentation = "Veure la documentació" imageResolutionFull = "Completa (mida original)" imageResolutionReduced = "Reduïda (màx. 1200 px)" linkedServices = "Serveis enllaçats" @@ -964,6 +968,18 @@ label = "Idioma per defecte" description = "Mida màxima de fitxer a pujar (p. ex., 100MB, 1GB)" label = "Límit de càrrega de fitxers" +[admin.settings.general.hideDisabledTools] +description = "Amaga les eines desactivades de la interfície" +label = "Amaga les eines desactivades" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Amaga el botó de Google Drive quan no estigui habilitat" +label = "Amaga Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Amaga el botó de l'escàner QR mòbil quan no estigui habilitat" +label = "Amaga l'escàner mòbil" + [admin.settings.general.frontendUrl] description = "URL base per al frontend (p. ex., https://pdf.example.com). S'utilitza per a enllaços d'invitació per correu i pujades via codi QR mòbil. Deixa-ho en blanc per usar l'URL del backend." label = "Frontend URL" @@ -1148,6 +1164,8 @@ title = "Seguretat" [admin.settings.security.audit] label = "Registre d'auditoria" +showDetails = "Mostra els detalls del nivell d'auditoria" +hideDetails = "Amaga els detalls del nivell d'auditoria" [admin.settings.security.audit.enabled] description = "Fa un seguiment de les accions d'usuari i els esdeveniments del sistema per al compliment i la monitorització de seguretat" @@ -1157,10 +1175,32 @@ label = "Habilita el registre d'auditoria" description = "0=APAGAT, 1=BÀSIC, 2=ESTÀNDARD, 3=DETALLAT" label = "Nivell d'auditoria" +[admin.settings.security.audit.levelDetails] +off = "Sense registre d'auditoria (excepte esdeveniments de seguretat crítics)" +basic = "Operacions de fitxers PDF (compressió, divisió, unió, etc.) i canvis de configuració. Captura: estat de l'operació (èxit/error), paràmetres del mètode, temporització. Volum de registre mínim." +standard = "Esdeveniments BASIC més: inici/tancament de sessió d'usuari, canvis de compte, sol·licituds GET generals. Exclou crides de sondeig continu (/auth/me, /app-config, /health, etc.) per reduir el soroll del registre. Ideal per a la majoria de desplegaments." +verbose = "Esdeveniments STANDARD més: crides de sondeig continu, totes les sol·licituds GET, temporització detallada. Avís: alt volum de registre i impacte en el rendiment." + [admin.settings.security.audit.retentionDays] description = "Nombre de dies per conservar els registres d'auditoria" label = "Retenció d'auditoria (dies)" +[admin.settings.security.audit.advancedOptions] +title = "Opcions avançades" +description = "Les opcions següents incrementen el temps de processament i l'ús de memòria. Activeu-les només si són realment necessàries." + +[admin.settings.security.audit.captureFileHash] +description = "Extreu l'empremta SHA-256 dels fitxers PDF pujats per a la verificació d'integritat. Independent del nivell d'auditoria." +label = "Captura l'empremta del fitxer (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Extreu el camp d'autor dels documents PDF durant el processament. Requereix anàlisi del PDF, augmenta la latència. Independent del nivell d'auditoria." +label = "Captura les metadades d'autor del PDF" + +[admin.settings.security.audit.captureOperationResults] +description = "Captura els valors de retorn dels mètodes. No recomanat: incrementa significativament el volum del registre i l'ús de disc." +label = "Captura els resultats de l'operació" + [admin.settings.security.csrfDisabled] description = "Desactiva la protecció contra Cross-Site Request Forgery (no recomanat)" label = "Desactiva la protecció CSRF" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "Configura el registre d'auditoria" +configureAuditMessage = "Ajusta el nivell de registre d'auditoria, el període de retenció i altres paràmetres a la secció Seguretat i Autenticació." disabled = "El registre d’auditoria està desactivat" disabledMessage = "Activeu el registre d’auditoria a la configuració de l’aplicació per fer el seguiment dels esdeveniments del sistema." enterpriseRequired = "Cal llicència Enterprise" enterpriseRequiredMessage = "El sistema de registres d’auditoria és una funció d’Enterprise. Actualitza a una llicència Enterprise per accedir als registres d’auditoria i a les analítiques." +goToSettings = "Vés a la configuració d'auditoria" notAvailable = "Sistema d’auditoria no disponible" notAvailableMessage = "El sistema d’auditoria no està configurat o no està disponible." -[audit.charts] -byType = "Esdeveniments per tipus" -byUser = "Esdeveniments per usuari" -day = "Dia" -error = "Error en carregar els gràfics" -month = "Mes" -overTime = "Esdeveniments al llarg del temps" -title = "Panell d'auditoria" -week = "Setmana" - [audit.error] title = "Error en carregar el sistema d’auditoria" -[audit.events] -actions = "Accions" -clearFilters = "Neteja" -details = "Detalls" -endDate = "Data de finalització" -error = "Error en carregar els esdeveniments" -eventDetails = "Detalls de l'esdeveniment" -filterByType = "Filtra per tipus" -filterByUser = "Filtra per usuari" -ipAddress = "Adreça IP" -noEvents = "No s'han trobat esdeveniments" -startDate = "Data d'inici" -timestamp = "Marca de temps" -title = "Esdeveniments d'auditoria" -type = "Tipus" -user = "Usuari" -viewDetails = "Veure detalls" - [audit.export] clearFilters = "Neteja" description = "Exporta els esdeveniments d'auditoria en format CSV o JSON. Utilitza filtres per limitar les dades exportades." endDate = "Data de finalització" error = "No s'han pogut exportar les dades" exportButton = "Exporta dades" +fieldAuthor = "Autor (del PDF)" +fieldDate = "Data" +fieldDocumentName = "Nom del document" +fieldFileHash = "Empremta del fitxer (SHA-256)" +fieldIpAddress = "Adreça IP" +fieldOperationResults = "Resultats de l'operació" +fieldOutcome = "Resultat (Èxit/Error)" +fieldTool = "Eina" +fieldUsername = "Nom d'usuari" filterByType = "Filtra per tipus" filterByUser = "Filtra per usuari" filters = "Filtres (opcional)" format = "Format d'exportació" +selectFields = "Selecciona els camps a incloure" startDate = "Data d'inici" title = "Exporta dades d'auditoria" +verboseRequired = "Requereix el nivell d'auditoria VERBOSE" [audit.systemStatus] +autoRefresh = "Actualització automàtica" +autoRefreshLabel = "Actualitza automàticament cada 30 s" +captureBySettings = "Habilita-ho a la configuració" +capturedFields = "Camps capturats" +date = "Data" days = "dies" disabled = "Deshabilitat" +documentName = "Nom del document" enabled = "Habilitat" +fileHash = "Empremta del fitxer" level = "Nivell d'auditoria" +pdfAuthor = "Autor del PDF" retention = "Període de retenció" status = "Registre d'auditoria" title = "Estat del sistema" +tool = "Eina" totalEvents = "Total d'esdeveniments" +username = "Nom d'usuari" +verboseOnly = "Només VERBOSE" + +[audit.stats] +activeUsers = "Usuaris actius" +attention = "Cal atenció" +avgLatency = "Latència mitjana" +error = "Error en carregar les estadístiques" +errorLoadingStats = "No s'han pogut carregar les estadístiques" +excellent = "Excel·lent" +good = "Bo" +noData = "N/D" +successRate = "Taxa d'èxit" +title = "Resum" +totalEvents = "Esdeveniments totals" +vsLastPeriod = "vs període anterior" + +[audit.charts] +byTool = "Eines més utilitzades" +byType = "Esdeveniments per tipus" +byUser = "Esdeveniments per usuari" +day = "Dia" +error = "Error en carregar els gràfics" +hourlyActivity = "Activitat per hora" +month = "Mes" +noData = "No hi ha dades per a aquest període" +overTime = "Esdeveniments al llarg del temps" +title = "Panell d'auditoria" +week = "Setmana" + +[audit.events] +actions = "Accions" +author = "Autor" +clearFilters = "Neteja" +details = "Detalls" +documentName = "Document" +endDate = "Data de finalització" +error = "Error en carregar els esdeveniments" +eventDetails = "Detalls de l'esdeveniment" +failure = "Error" +fileHash = "Empremta del fitxer" +filterByType = "Filtra per tipus" +filterByUser = "Filtra per usuari" +ipAddress = "Adreça IP" +noEvents = "No s'han trobat esdeveniments" +outcome = "Estat" +sortAsc = "Ordena ascendent" +sortDesc = "Ordena descendent" +startDate = "Data d'inici" +success = "Èxit" +timestamp = "Marca de temps" +title = "Esdeveniments d'auditoria" +type = "Tipus" +user = "Usuari" +viewDetails = "Veure detalls" + +[audit.filters] +allOutcomes = "Tots" +failureOnly = "Només errors" +last7Days = "Últims 7 dies" +last30Days = "Últims 30 dies" +outcomeFilter = "Resultat" +quickPresets = "Filtres ràpids" +successOnly = "Només èxits" +thisMonth = "Aquest mes" +today = "Avui" [audit.tabs] +clearData = "Buida les dades" dashboard = "Panell" events = "Esdeveniments d'auditoria" export = "Exporta" +[audit.clearData] +cancel = "Cancel·la" +codeDoesNotMatch = "El codi no coincideix" +codePlaceholder = "Escriu el codi aquí" +confirmationCode = "Codi de confirmació" +confirmationRequired = "Suprimeix totes les dades d'auditoria" +confirmMessage = "Això eliminarà permanentment tots els registres d'auditoria. Introduïu el codi de confirmació a continuació per continuar." +confirmTitle = "Confirmeu que voleu suprimir" +deleteButton = "Suprimeix" +enterCode = "Codi de confirmació" +enterCodeBelow = "Introduïu el codi exactament com es mostra a dalt (distingeix majúscules i minúscules)" +initiateDelete = "Suprimeix totes les dades" +irreversible = "IRREVERSIBLE" +success = "Èxit" +successMessage = "Totes les dades d'auditoria s'han buidat correctament" +warning1 = "Aquesta acció no es pot desfer" +warning2 = "En suprimir les dades d'auditoria s'eliminaran permanentment tots els registres històrics d'auditoria, incloent-hi esdeveniments de seguretat, activitats d'usuari i operacions de fitxers de la base de dades." + [auth] accessDenied = "Accés denegat" insufficientPermissions = "No tens permís per fer aquesta acció." @@ -2254,9 +2374,11 @@ copy = "Copia" done = "Fet" error = "Error" expand = "Desplega" +learnMore = "Més informació" lines = "línies" loading = "Carregant..." next = "Següent" +operation = "aquesta operació" preview = "Vista prèvia" previous = "Anterior" refresh = "Actualitza" @@ -2920,6 +3042,7 @@ copyStack = "Copia la Pila d'Errors" discordSubmit = "Discord - Envia una sol·licitud d'ajuda" dismissAllErrors = "Descarta tots els errors" encryptedPdfMustRemovePassword = "Aquest PDF està xifrat o protegit amb contrasenya. Desbloqueja'l abans de convertir-lo a PDF/A." +generic = "S'ha produït un error" github = "Envia una sol·licitud a GitHub" githubSubmit = "GitHub - Envia una sol·licitud" incorrectPasswordProvided = "La contrasenya del PDF és incorrecta o no s'ha proporcionat." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "La subscripció s'ha actualitzat correctament. La clau upgradeSuccess = "Pagament correcte! La subscripció s'ha actualitzat. La llicència s'ha actualitzat al servidor. Rebràs un correu de confirmació aviat." upgradeTitle = "Actualitza a {{planName}}" yearly = "Anual" +checkoutOpened = "Pàgina de pagament oberta al navegador" +checkoutInstructions = "Completeu la compra a la finestra del navegador que s'acaba d'obrir. Un cop finalitzat el pagament, torneu aquí i feu clic al botó següent per actualitzar la vostra informació de facturació." +refreshBilling = "Ja he completat el pagament - Actualitza la facturació" +closeLater = "Ho faré més tard" [payment.emailStage] continue = "Continua" @@ -4679,6 +4806,13 @@ prompt = "Selecciona la pàgina per extreure la taula" submit = "Extreu" title = "PDF a CSV" +[PDFToXLSX] +header = "PDF a Excel" +prompt = "Trieu les pàgines per extreure'n taules" +submit = "Converteix" +title = "PDF a Excel (XLSX)" +tags = "full de càlcul,excel,xlsx,taula,extreure,convertir" + [PDFToHTML] credit = "Utilitza pdftohtml per a la conversió d'Arxius." header = "PDF a HTML" @@ -4835,6 +4969,7 @@ customPricing = "Personalitzat" featureComparison = "Comparativa de funcions" from = "Des de" hideComparison = "Amaga la comparativa de funcions" +included = "Inclòs" includedInCurrent = "Inclòs al teu pla" licensedSeats = "Llicenciats: {{count}} seients" manage = "Gestiona" @@ -4852,9 +4987,11 @@ title = "Pla actiu" [plan.availablePlans] subtitle = "Trieu el pla que s’adapta a les vostres necessitats" +loadError = "No s'ha pogut carregar el preu dels plans. S'utilitzen els valors per defecte." title = "Plans disponibles" [plan.enterprise] +siteLicense = "Llicència de lloc" highlight1 = "Preus personalitzats" highlight2 = "Suport dedicat" highlight3 = "Funcions més recents" @@ -4928,6 +5065,81 @@ keyDescription = "Enganxa la clau de llicència del correu electrònic" success = "Llicència activada!" successMessage = "La llicència s'ha activat correctament. Ara pots tancar aquesta finestra." +[plan.team] +name = "Equip" +siteLicense = "Llicència de lloc" + +[credits] +enableOverageBilling = "Habilita la facturació per excés" +maybeLater = "Potser més tard" +upgrade = "Actualitza" + +[credits.modal] +advancedMonitoring = "Monitoratge avançat" +allInOneWorkspace = "Espai de treball PDF tot en un (visualitzador, eines i agent)" +apiSandbox = "API sandbox" +contactSales = "Contacta amb vendes" +creditsRemaining = "{{current}} de {{total}} restants" +creditsThisMonth = "Crèdits mensuals" +current = "Pla actual" +customPricing = "Personalitzat" +customSmartFolders = "Carpetes intel·ligents personalitzades" +dedicatedSupportSlas = "Suport dedicat i SLA" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Tot el de Crèdits, a més:" +everythingInFree = "Tot el de Gratuït, a més:" +fasterThroughput = "Rendiment 10x més ràpid" +forRegularWork = "Per a treball habitual amb PDF:" +freeTier = "Nivell gratuït" +fullyPrivateFiles = "Fitxers totalment privats" +largeFileProcessing = "Processament de fitxers grans" +managedMemberMessage = "Teniu accés il·limitat a crèdits a través del vostre equip. Si necessiteu ajuda, poseu-vos en contacte amb el vostre líder d'equip." +managedMemberTitle = "Crèdits il·limitats" +meteringBillingNote = "Els crèdits per excés es facturen mensualment juntament amb la subscripció Team. Podeu fer el seguiment del vostre ús en qualsevol moment a la configuració del compte." +meteringExplanation = "El vostre pla Team inclou {{credits}} crèdits al mes. Quan s'esgotin, la facturació per excés proporciona automàticament crèdits addicionals perquè no hàgiu de deixar de treballar." +meteringIncluded = "{{credits}} crèdits/mes inclosos amb Team" +meteringNoCommitment = "Sense compromís, podeu cancel·lar en qualsevol moment" +meteringNeverRunOut = "No us quedeu mai sense crèdits" +meteringPayAsYouGo = "Pagueu només pel que utilitzeu" +meteringPrice = "Crèdits addicionals a {{price}}/crèdit" +meteringTitle = "Facturació per excés segons ús" +monthlyCredits = "crèdits mensuals" +orgWideAccess = "Controls d'accés per a tota l'organització" +overage = "excés" +perMonth = "/mes" +popular = "Popular" +premiumAiModels = "Models d'IA premium" +prioritySupport = "Suport prioritari" +privateDocCloud = "Núvol de documents privat" +ragFineTuning = "RAG + afinament" +secureApiAccess = "Accés d'API segur" +selfHostLink = "Revisa la documentació i els plans" +selfHostPrompt = "Voleu autoallotjar?" +standardThroughput = "Rendiment estàndard" +subtitle = "Actualitzeu a Team per obtenir 10x més crèdits i un processament més ràpid." +subtitlePro = "Habiliteu la facturació automàtica per excés per no quedar-vos mai sense crèdits." +teamLeaderOnly = "Només els líders d'equip poden habilitar la facturació per excés" +teamSubscription = "Team" +titleExhausted = "Heu utilitzat els crèdits gratuïts" +titleExhaustedPro = "Us heu quedat sense crèdits" +unlimitedApiAccess = "Accés d'API il·limitat" +unlimitedMonthlyCredits = "Llicència de lloc" +unlimitedSeats = "Usuaris il·limitats" + +[credits.modal.features] +everythingInCredits = "Tot el de Crèdits, a més:" +everythingInFree = "Tot el de Gratuït, a més:" +forRegularWork = "Per a treball habitual amb PDF:" + +[credits.insufficient] +brief = "Crèdits insuficients. Necessiteu {{required}} crèdits però en teniu {{current}}." +freeTier = "Actualitzeu a Team per obtenir 10x més crèdits i facturació per excés il·limitada." +managedMember = "Poseu-vos en contacte amb el vostre líder d'equip per obtenir ajuda." +message = "No teniu prou crèdits per executar {{tool}}. Actualment teniu {{current}} crèdits." +messageWithAmount = "Necessiteu {{required}} crèdits per executar {{tool}}, però només en teniu {{current}}." +teamMember = "Habiliteu la facturació per excés per no quedar-vos mai sense crèdits." +title = "Crèdits insuficients" + [printFile] header = "Imprimir Fitxer a la Impresora" submit = "Imprimir" @@ -5565,6 +5777,70 @@ user = "Sessió iniciada com" saas = "Stirling Cloud" selfhosted = "Autoallotjat" +[settings.planBilling] +currentPlan = "Pla actual" +loading = "S'està carregant la informació de facturació..." +notAvailable = "Pla i Facturació només disponible quan esteu connectats a Stirling Cloud (mode SaaS)." +title = "Pla i Facturació" + +[settings.planBilling.billing] +manageBilling = "Gestiona la facturació" +nextBillingDate = "Data de la propera facturació" +overageCost = "Cost d'excés actual: {{amount}} ({{credits}} crèdits)" + +[settings.planBilling.credits] +estimatedCost = "Cost estimat: {{amount}}" +freeTierInfo = "El pla gratuït inclou {{freeCredits}} crèdits per mes. Actualitzeu a Team per {{teamCredits}} crèdits/mes i facturació per excés segons ús." +included = "{{count}} crèdits/mes (inclosos)" +noOverage = "Aquest mes no hi ha càrrecs per excés. Esteu utilitzant els {{count}} crèdits inclosos." +overage = "+ {{count}} per excés" +overageInfo = "Els crèdits per excés es facturen a {{price}} per crèdit. Només pagareu el que utilitzeu més enllà de la vostra assignació mensual." +title = "Ús de crèdits" + +[settings.planBilling.errors] +fetchFailed = "No s'han pogut obtenir les dades de facturació" +retry = "Torna-ho a provar" + +[settings.planBilling.status] +active = "Actiu" +canceled = "Cancel·lat" +pastDue = "Vençut" +trial = "Prova" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Funcions i suport d'empresa personalitzats" +free = "Gratuït" +freeDescription = "50 crèdits per mes" +team = "Team" +teamBadge = "Team" +teamDescription = "500 crèdits/mes inclosos, facturació automàtica per excés per a un servei ininterromput" +teamTooltipCredits = "El pla Team inclou {{credits}} crèdits/mes." +teamTooltipFineprint = "Només pagueu allò que utilitzeu més enllà dels crèdits inclosos." +teamTooltipOverage = "La facturació automàtica per excés a {{price}}/crèdit garanteix un servei ininterromput." + +[settings.planBilling.team] +managedByTeam = "Gestionat per l'equip" +memberCount = "{{count}} membres de l'equip" + +[settings.planBilling.trial] +daysRemaining = "Queden {{days}} dies" +daysRemainingFull = "La vostra prova finalitza d'aquí a {{days}} dies" +endDate = "Caduca: {{date}}" +endsOn = "Fi de la prova" +title = "Prova gratuïta activa" + +[settings.planBilling.upgrade] +cta = "Actualitza a Team" +featureApi = "Accés d'API per a automatització" +featureCredits = "{{teamCredits}} crèdits per mes (vs {{freeCredits}} en Gratuït)" +featureMembers = "Membres d'equip il·limitats" +featureSupport = "Suport prioritari" +featureThroughput = "Taxa de processament més ràpida" +opensInBrowser = "S'obre al navegador per completar l'actualització" +subtitle = "Actualitzeu a Team per:" +title = "Actualitzeu el vostre pla" + [settings.developer] apiKeys = "Claus API" title = "Desenvolupador" @@ -5689,6 +5965,9 @@ people = "Persones" teams = "Equips" title = "Espai de treball" +[settings.team] +title = "Equip" + [setup] description = "Comença triant com vols usar Stirling PDF" welcome = "Benvingut a Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "Separació automàtica amb fulls separadors" name = "Separador de pàgina" tooltip = "Utilitza fulls separadors amb codis QR entre documents quan escanegis" +[split.methods.byPoster] +name = "Fragments imprimibles" +desc = "Divideix pàgines grans en mides imprimibles" +tooltip = "Divideix pàgines sobredimensionades en fragments més petits adequats per imprimir en paper estàndard (A4, Letter, etc.)" + [split.methods.byPages] desc = "Extreu pàgines específiques (1,3,5-10)" name = "Números de pàgina" @@ -6029,6 +6313,7 @@ tooltip = "Especifica la mida màxima del fitxer (p. ex., 10MB, 500KB)" [split.methods.prefix] splitAt = "Divideix a" splitBy = "Divideix per" +splitInto = "Divideix en" [split.methodSelection.tooltip] bullet1 = "Fes clic en una targeta de mètode per seleccionar-la" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Selecciona primer un mètode de divisió" chooseMethod = "Tria mètode" settings = "Opcions" +[split.poster] +rightToLeft = "Divideix de dreta a esquerra" + +[split.poster.pageSize] +label = "Mida de pàgina de destinació" +description = "Mida de les pàgines de sortida per a la impressió" + +[split.poster.xFactor] +label = "Divisions horitzontals" +description = "Nombre de columnes en què dividir cada pàgina" + +[split.poster.yFactor] +label = "Divisions verticals" +description = "Nombre de files en què dividir cada pàgina" + [split.tooltip.byChapters] bullet1 = "Nivell de marcador: en quin nivell dividir (1=nív. superior)" bullet2 = "Inclou metadades: conserva les propietats del document" @@ -6085,6 +6385,14 @@ bullet5 = "Activa el mode dúplex si escaneges ambdós costats dels fulls separa text = "Divideix automàticament documents escanejats utilitzant fulls separadors físics amb codis QR. Perfecte per processar diversos documents escanejats junts." title = "Divideix per separador de pàgina" +[split.tooltip.byPoster] +bullet1 = "Mida de pàgina de destinació: Trieu la mida del paper de sortida (A4, Letter, etc.)" +bullet2 = "Divisions horitzontals/verticals: Mida de la quadrícula per a la divisió" +bullet3 = "De dreta a esquerra: Inverteix l'ordre de les columnes per a disposicions RTL" +bullet4 = "Imprimiu i munteu les peces per crear el pòster" +text = "Divideix pàgines PDF grans en fragments més petits imprimibles adequats per a mides de paper estàndard. Perfecte per crear pòsters a partir de pàgines sobredimensionades." +title = "Divideix per imprimir pòster" + [split.tooltip.byPages] bullet1 = "Punts de divisió simples: 3,7 (divideix després de les pàgines 3 i 7)" bullet2 = "Punts de divisió per interval: 3-8 (divideix abans de la pàgina 3 i després de la pàgina 8)" @@ -6364,9 +6672,13 @@ tags = "captura web,desa pàgina,web a document,arxiu" title = "URL a PDF" [usage] +aboutUsageAnalytics = "Sobre les analítiques d'ús" +configureSettings = "Configura els paràmetres d'analítiques" error = "Error en carregar les estadístiques d'ús" noData = "No hi ha dades disponibles" noDataMessage = "Actualment no hi ha estadístiques d'ús disponibles." +usageAnalyticsExplanation = "Les analítiques d'ús fan el seguiment de les sol·licituds als punts finals i dels patrons d'ús de les eines. Combinades amb el tauler de Registre d'auditoria, obteniu visibilitat completa de l'activitat del sistema, el rendiment i els esdeveniments de seguretat." +viewAuditLogs = "Mostra els registres d'auditoria" [usage.chart] title = "Gràfic d'ús dels endpoints" @@ -6947,3 +7259,278 @@ cancel = "Cancel·la" confirm = "Extreu" message = "Aquest ZIP conté {{count}} fitxers. Vols extreure'l igualment?" title = "Fitxer ZIP gran" + +[cloudBadge] +tooltip = "Aquesta operació utilitzarà els vostres crèdits del núvol" + +[team] +cancelInviteError = "No s'ha pogut cancel·lar la invitació" +confirmCancelInvite = "Esteu segur que voleu cancel·lar aquesta invitació?" +confirmLeave = "Esteu segur que voleu sortir d'aquest equip?" +confirmLeaveLeader = "Com a líder d'equip, sortir us eliminarà de l'equip. N'esteu segur?" +confirmRemove = "Esteu segur que voleu eliminar aquest membre?" +editName = "Edita el nom de l'equip" +inviteCancelled = "Invitació cancel·lada" +inviteError = "No s'ha pogut enviar la invitació" +inviteSent = "Invitació enviada correctament" +leader = "Líder" +leaveButton = "Surt de l'equip" +leaveError = "No s'ha pogut sortir de l'equip" +leaveSuccess = "Heu sortit de l'equip correctament" +loading = "S'està carregant la informació de l'equip..." +memberCount = "{{count}} membres" +memberRemoved = "Membre eliminat correctament" +namePlaceholder = "Introduïu el nom de l'equip" +personal = "Personal" +removeError = "No s'ha pogut eliminar el membre" +renameError = "No s'ha pogut canviar el nom de l'equip" +renameSuccess = "S'ha canviat el nom de l'equip correctament" + +[team.invitationBanner] +message = "us ha convidat a unir-vos" +acceptButton = "Accepta" +rejectButton = "Rebutja" + +[team.features] +badge = "Funcions d'equip" +subtitle = "Col·laboreu amb el vostre equip" +title = "Col·laboració d'equip" +viewPlans = "Mostra els plans" + +[team.features.billing] +description = "Gestiona la facturació i les subscripcions" +title = "Gestió de facturació" + +[team.features.credits] +description = "Bossa de crèdits compartida per a tots els membres" +title = "Crèdits compartits" + +[team.features.dashboard] +description = "Visualitza l'activitat i l'ús de l'equip" +title = "Tauler de l'equip" + +[team.features.invite] +description = "Afegeix membres al vostre equip" +title = "Convida membres" + +[team.invite] +cancelLabel = "Cancel·la" +invalidEmail = "Adreça de correu electrònic no vàlida" +placeholder = "Introduïu l'adreça de correu electrònic" +sendButton = "Envia la invitació" +title = "Convida un membre de l'equip" + +[team.members] +emailColumn = "Correu electrònic" +empty = "Encara no hi ha membres de l'equip" +nameColumn = "Nom" +pending = "Pendent" +remove = "Elimina" +roleColumn = "Rol" +title = "Membres de l'equip" + +[team.upgrade] +button = "Actualitza a Team" +description = "Desbloqueja les funcions de col·laboració d'equip" +title = "Actualitza al pla Team" + +[provider.oauth2.google] +scope = "Autenticació d'inici de sessió" + +[provider.oauth2.google.clientId] +label = "ID de client" +description = "L'ID de client OAuth2 de Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Secret del client" +description = "El secret de client OAuth2 de Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Àmbits" +description = "Àmbits OAuth2 separats per comes" + +[provider.oauth2.google.useAsUsername] +label = "Utilitza com a nom d'usuari" +description = "Camp a utilitzar com a nom d'usuari (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Autenticació d'inici de sessió" + +[provider.oauth2.github.clientId] +label = "ID de client" +description = "L'ID de client OAuth2 de GitHub Developer Settings" + +[provider.oauth2.github.clientSecret] +label = "Secret del client" +description = "El secret de client OAuth2 de GitHub Developer Settings" + +[provider.oauth2.github.scopes] +label = "Àmbits" +description = "Àmbits OAuth2 separats per comes" + +[provider.oauth2.github.useAsUsername] +label = "Utilitza com a nom d'usuari" +description = "Camp a utilitzar com a nom d'usuari (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "URL de l'emissor" +description = "URL del punt final OpenID Connect Discovery del reialme de Keycloak" + +[provider.oauth2.keycloak.clientId] +label = "ID de client" +description = "L'ID de client OAuth2 de Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Secret del client" +description = "El secret de client OAuth2 de Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "Àmbits" +description = "Àmbits OAuth2 separats per comes" + +[provider.oauth2.keycloak.useAsUsername] +label = "Utilitza com a nom d'usuari" +description = "Camp a utilitzar com a nom d'usuari (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "OAuth2 genèric" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Habilita OAuth2 genèric" +description = "Habilita l'autenticació utilitzant un proveïdor OAuth2 personalitzat" + +[provider.oauth2.generic.provider] +label = "Nom del proveïdor" +description = "El nom del vostre proveïdor OAuth2 (p. ex., Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "URL de l'emissor" +description = "Proveïdor que admet OpenID Connect Discovery (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "ID de client" +description = "L'ID de client OAuth2 del vostre proveïdor" + +[provider.oauth2.generic.clientSecret] +label = "Secret del client" +description = "El secret de client OAuth2 del vostre proveïdor" + +[provider.oauth2.generic.scopes] +label = "Àmbits" +description = "Àmbits OAuth2 separats per comes" + +[provider.oauth2.generic.useAsUsername] +label = "Utilitza com a nom d'usuari" +description = "Camp a utilitzar com a nom d'usuari" + +[provider.oauth2.generic.autoCreateUser] +label = "Crea usuaris automàticament" +description = "Crea automàticament comptes d'usuari en el primer inici de sessió amb OAuth2" + +[provider.oauth2.generic.blockRegistration] +label = "Bloca el registre" +description = "Impedeix el registre de nous usuaris via OAuth2" + +[provider.smtp] +name = "Correu SMTP" +scope = "Notificacions per correu electrònic" + +[provider.smtp.enabled] +label = "Habilita el correu" +description = "Habilita les notificacions per correu i la funcionalitat SMTP" + +[provider.smtp.host] +label = "Servidor SMTP" +description = "El nom d'amfitrió o l'adreça IP del vostre servidor SMTP" + +[provider.smtp.port] +label = "Port SMTP" +description = "El número de port per a la connexió SMTP (normalment 25, 465 o 587)" + +[provider.smtp.username] +label = "Nom d'usuari SMTP" +description = "Nom d'usuari per a l'autenticació SMTP" + +[provider.smtp.password] +label = "Contrasenya SMTP" +description = "Contrasenya per a l'autenticació SMTP" + +[provider.smtp.from] +label = "Adreça del remitent" +description = "L'adreça de correu electrònic a utilitzar com a remitent" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "Habilita SAML2" +description = "Habilita l'autenticació SAML2 (només Enterprise)" + +[provider.saml2.provider] +label = "Nom del proveïdor" +description = "El nom del vostre proveïdor SAML2" + +[provider.saml2.registrationId] +label = "ID de registre" +description = "El nom de la vostra aplicació del Proveïdor de Servei (SP)" + +[provider.saml2.idpMetadataUri] +label = "URI de metadades de l'IdP" +description = "L'URI de les metadades del vostre proveïdor" + +[provider.saml2.idpSingleLoginUrl] +label = "URL d'inici de sessió únic de l'IdP" +description = "La URL per iniciar l'SSO" + +[provider.saml2.idpSingleLogoutUrl] +label = "URL de tancament de sessió únic de l'IdP" +description = "La URL per iniciar el SLO" + +[provider.saml2.idpIssuer] +label = "Emissor de l'IdP" +description = "L'ID del vostre proveïdor" + +[provider.saml2.idpCert] +label = "Certificat de l'IdP" +description = "El camí del certificat (p. ex., classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Clau privada" +description = "El camí de la vostra clau privada" + +[provider.saml2.spCert] +label = "Certificat del SP" +description = "El camí del vostre certificat de signatura" + +[provider.saml2.autoCreateUser] +label = "Crea usuaris automàticament" +description = "Crea automàticament comptes d'usuari en el primer inici de sessió amb SAML2" + +[provider.saml2.blockRegistration] +label = "Bloca el registre" +description = "Impedeix el registre de nous usuaris via SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "Importació de fitxers" + +[provider.googledrive.enabled] +label = "Habilita el selector de fitxers de Google Drive" +description = "Permet als usuaris importar fitxers directament des de Google Drive" + +[provider.googledrive.clientId] +label = "ID de client" +description = "ID de client OAuth 2.0 de Google de Google Cloud Console" + +[provider.googledrive.apiKey] +label = "Clau d'API" +description = "Clau d'API de Google per a l'API Google Picker de Google Cloud Console" + +[provider.googledrive.appId] +label = "ID d'aplicació" +description = "ID d'aplicació de Google Drive de Google Cloud Console" diff --git a/frontend/public/locales/cs-CZ/translation.toml b/frontend/public/locales/cs-CZ/translation.toml index 3a0c10a5c..9afe7b5c9 100644 --- a/frontend/public/locales/cs-CZ/translation.toml +++ b/frontend/public/locales/cs-CZ/translation.toml @@ -96,6 +96,8 @@ pin = "Připnout soubor (ponechat aktivní po spuštění nástroje)" poweredBy = "Využívá" pro = "Pro" processTimeWarning = "Upozornění: Tento proces může trvat až minutu v závislosti na velikosti souboru" +processingComplete = "Váš soubor je připraven." +processingCompleteMultiple = "{{count}} souborů je připraveno." property = "Vlastnost" quickPosition = "Rychlé umístění" red = "Červená" @@ -105,6 +107,7 @@ save = "Uložit" saveToBrowser = "Uložit do prohlížeče" saveUnavailable = "Uložení pro tuto položku není k dispozici" seeDockerHub = "Prohlédněte si Docker Hub" +editSecret = "Upravit tuto hodnotu" selectFillter = "-- Vybrat --" size = "Velikost" sponsor = "Sponzor" @@ -651,6 +654,7 @@ description = "Nakonfigurujte externí poskytovatele autentizace jako OAuth2 a S disconnect = "Odpojit" disconnected = "Poskytovatel byl úspěšně odpojen" disconnectError = "Nepodařilo se odpojit poskytovatele" +documentation = "Zobrazit dokumentaci" imageResolutionFull = "Plné (původní velikost)" imageResolutionReduced = "Snížené (max. 1200 px)" linkedServices = "Propojené služby" @@ -964,6 +968,18 @@ label = "Výchozí jazyk" description = "Maximální velikost nahrávaného souboru (např. 100MB, 1GB)" label = "Limit nahrávání souboru" +[admin.settings.general.hideDisabledTools] +description = "Skrýt v rozhraní zakázané nástroje" +label = "Skrýt zakázané nástroje" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Skrýt tlačítko Google Drive, když není povoleno" +label = "Skrýt Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Skrýt tlačítko pro mobilní QR skener, když není povoleno" +label = "Skrýt mobilní skener" + [admin.settings.general.frontendUrl] description = "Základní URL pro frontend (např. https://pdf.example.com). Používá se pro odkazy v e‑mailových pozvánkách a nahrávání přes mobilní QR kód. Ponechte prázdné pro použití backend URL." label = "Frontend URL" @@ -1148,6 +1164,8 @@ title = "Zabezpečení" [admin.settings.security.audit] label = "Auditní logování" +showDetails = "Zobrazit podrobnosti úrovní auditu" +hideDetails = "Skrýt podrobnosti úrovní auditu" [admin.settings.security.audit.enabled] description = "Sledovat akce uživatelů a systémové události pro compliance a bezpečnostní dohled" @@ -1157,10 +1175,32 @@ label = "Povolit auditní logování" description = "0=OFF, 1=BASIC, 2=STANDARD, 3=VERBOSE" label = "Úroveň auditu" +[admin.settings.security.audit.levelDetails] +off = "Žádné auditní protokolování (kromě kritických bezpečnostních událostí)" +basic = "Operace se soubory PDF (komprese, rozdělení, sloučení atd.) a změny nastavení. Zachycuje: stav operace (úspěch/neúspěch), parametry metod, časování. Minimální objem logů." +standard = "Události BASIC plus: přihlášení/odhlášení uživatele, změny účtu, obecné požadavky GET. Vylučuje průběžná dotazování (/auth/me, /app-config, /health atd.) pro snížení šumu v logu. Ideální pro většinu nasazení." +verbose = "Události STANDARD plus: průběžná dotazování, všechny požadavky GET, podrobné časování. Upozornění: vysoký objem logů a dopad na výkon." + [admin.settings.security.audit.retentionDays] description = "Počet dní uchování auditních záznamů" label = "Doba uchování auditů (dny)" +[admin.settings.security.audit.advancedOptions] +title = "Pokročilé možnosti" +description = "Následující volby zvyšují dobu zpracování a spotřebu paměti. Povolte je pouze v případě skutečné potřeby." + +[admin.settings.security.audit.captureFileHash] +description = "Získat hash SHA-256 nahraných souborů PDF pro ověření integrity. Nezávislé na úrovni auditu." +label = "Zachytávat hash souboru (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Během zpracování vyčíst pole autora z dokumentů PDF. Vyžaduje parsování PDF, zvyšuje latenci. Nezávislé na úrovni auditu." +label = "Zachytávat metadata autora PDF" + +[admin.settings.security.audit.captureOperationResults] +description = "Zachytávat návratové hodnoty metod. Nedoporučuje se: výrazně zvyšuje objem logů a využití disku." +label = "Zachytávat výsledky operací" + [admin.settings.security.csrfDisabled] description = "Zakázat ochranu proti Cross-Site Request Forgery (nedoporučuje se)" label = "Zakázat ochranu CSRF" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "Nastavit auditní protokolování" +configureAuditMessage = "Upravte úroveň auditního protokolování, dobu uchování a další nastavení v sekci Zabezpečení a ověřování." disabled = "Záznam auditu je vypnutý" disabledMessage = "Pro sledování systémových událostí povolte záznam auditu v konfiguraci aplikace." enterpriseRequired = "Enterprise License Required" enterpriseRequiredMessage = "The audit logging system is an enterprise feature. Please upgrade to an enterprise license to access audit logs and analytics." +goToSettings = "Přejít na nastavení auditu" notAvailable = "Systém auditu není k dispozici" notAvailableMessage = "Systém auditu není nakonfigurován nebo není k dispozici." -[audit.charts] -byType = "Události podle typu" -byUser = "Události podle uživatele" -day = "Den" -error = "Chyba při načítání grafů" -month = "Měsíc" -overTime = "Události v čase" -title = "Přehled auditu" -week = "Týden" - [audit.error] title = "Chyba při načítání systému auditu" -[audit.events] -actions = "Akce" -clearFilters = "Vymazat" -details = "Podrobnosti" -endDate = "Datum konce" -error = "Chyba při načítání událostí" -eventDetails = "Podrobnosti události" -filterByType = "Filtrovat podle typu" -filterByUser = "Filtrovat podle uživatele" -ipAddress = "IP adresa" -noEvents = "Nebyly nalezeny žádné události" -startDate = "Datum začátku" -timestamp = "Časové razítko" -title = "Auditní události" -type = "Typ" -user = "Uživatel" -viewDetails = "Zobrazit podrobnosti" - [audit.export] clearFilters = "Vymazat" description = "Exportujte auditní události do formátu CSV nebo JSON. Pomocí filtrů omezte exportovaná data." endDate = "Datum konce" error = "Export dat se nezdařil" exportButton = "Exportovat data" +fieldAuthor = "Autor (z PDF)" +fieldDate = "Datum" +fieldDocumentName = "Název dokumentu" +fieldFileHash = "Hash souboru (SHA-256)" +fieldIpAddress = "IP adresa" +fieldOperationResults = "Výsledky operace" +fieldOutcome = "Výsledek (Úspěch/Neúspěch)" +fieldTool = "Nástroj" +fieldUsername = "Uživatelské jméno" filterByType = "Filtrovat podle typu" filterByUser = "Filtrovat podle uživatele" filters = "Filtry (volitelné)" format = "Formát exportu" +selectFields = "Vyberte pole k zahrnutí" startDate = "Datum začátku" title = "Export auditních dat" +verboseRequired = "Vyžaduje úroveň auditu VERBOSE" [audit.systemStatus] +autoRefresh = "Automatické obnovení" +autoRefreshLabel = "Automaticky obnovovat každých 30 s" +captureBySettings = "Povolit v nastavení" +capturedFields = "Zachycená pole" +date = "Datum" days = "dní" disabled = "Vypnuto" +documentName = "Název dokumentu" enabled = "Zapnuto" +fileHash = "Hash souboru" level = "Úroveň auditu" +pdfAuthor = "Autor PDF" retention = "Doba uchování" status = "Záznam auditu" title = "Stav systému" +tool = "Nástroj" totalEvents = "Celkem událostí" +username = "Uživatelské jméno" +verboseOnly = "Pouze VERBOSE" + +[audit.stats] +activeUsers = "Aktivní uživatelé" +attention = "Vyžaduje pozornost" +avgLatency = "Průměrná latence" +error = "Chyba při načítání statistik" +errorLoadingStats = "Nepodařilo se načíst statistiky" +excellent = "Vynikající" +good = "Dobré" +noData = "N/A" +successRate = "Míra úspěšnosti" +title = "Souhrn" +totalEvents = "Celkem událostí" +vsLastPeriod = "oproti minulému období" + +[audit.charts] +byTool = "Nejpoužívanější nástroje" +byType = "Události podle typu" +byUser = "Události podle uživatele" +day = "Den" +error = "Chyba při načítání grafů" +hourlyActivity = "Hodinová aktivita" +month = "Měsíc" +noData = "Pro toto období nejsou k dispozici data" +overTime = "Události v čase" +title = "Přehled auditu" +week = "Týden" + +[audit.events] +actions = "Akce" +author = "Autor" +clearFilters = "Vymazat" +details = "Podrobnosti" +documentName = "Dokument" +endDate = "Datum konce" +error = "Chyba při načítání událostí" +eventDetails = "Podrobnosti události" +failure = "Neúspěch" +fileHash = "Hash souboru" +filterByType = "Filtrovat podle typu" +filterByUser = "Filtrovat podle uživatele" +ipAddress = "IP adresa" +noEvents = "Nebyly nalezeny žádné události" +outcome = "Stav" +sortAsc = "Seřadit vzestupně" +sortDesc = "Seřadit sestupně" +startDate = "Datum začátku" +success = "Úspěch" +timestamp = "Časové razítko" +title = "Auditní události" +type = "Typ" +user = "Uživatel" +viewDetails = "Zobrazit podrobnosti" + +[audit.filters] +allOutcomes = "Vše" +failureOnly = "Pouze neúspěchy" +last7Days = "Posledních 7 dní" +last30Days = "Posledních 30 dní" +outcomeFilter = "Výsledek" +quickPresets = "Rychlé filtry" +successOnly = "Pouze úspěchy" +thisMonth = "Tento měsíc" +today = "Dnes" [audit.tabs] +clearData = "Vymazat data" dashboard = "Přehled" events = "Události auditu" export = "Export" +[audit.clearData] +cancel = "Zrušit" +codeDoesNotMatch = "Kód neodpovídá" +codePlaceholder = "Zde zadejte kód" +confirmationCode = "Potvrzovací kód" +confirmationRequired = "Smazat všechna auditní data" +confirmMessage = "Tímto trvale odstraníte všechny auditní logy. Pro pokračování níže zadejte potvrzovací kód." +confirmTitle = "Potvrďte, že chcete smazat" +deleteButton = "Smazat" +enterCode = "Potvrzovací kód" +enterCodeBelow = "Zadejte kód přesně podle zobrazení výše (rozlišuje se velikost písmen)" +initiateDelete = "Smazat všechna data" +irreversible = "NEVRATNÉ" +success = "Úspěch" +successMessage = "Všechna auditní data byla úspěšně vymazána" +warning1 = "Tuto akci nelze vrátit zpět" +warning2 = "Smazání auditních dat trvale odstraní všechny historické auditní logy, včetně bezpečnostních událostí, aktivit uživatelů a operací se soubory z databáze." + [auth] accessDenied = "Přístup odepřen" insufficientPermissions = "Nemáte oprávnění k provedení této akce." @@ -2254,9 +2374,11 @@ copy = "Kopírovat" done = "Hotovo" error = "Chyba" expand = "Rozbalit" +learnMore = "Další informace" lines = "řádky" loading = "Načítání..." next = "Další" +operation = "tuto operaci" preview = "Náhled" previous = "Předchozí" refresh = "Obnovit" @@ -2920,6 +3042,7 @@ copyStack = "Kopírovat trasování zásobníku" discordSubmit = "Discord - Podat příspěvek podpory" dismissAllErrors = "Zavřít všechny chyby" encryptedPdfMustRemovePassword = "Tento soubor PDF je šifrovaný nebo chráněný heslem. Před převodem na PDF/A jej prosím odemkněte." +generic = "Došlo k chybě" github = "Podat ticket na GitHubu" githubSubmit = "GitHub - Podat ticket" incorrectPasswordProvided = "Heslo k PDF je nesprávné nebo nebylo zadáno." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Vaše předplatné bylo úspěšně upgradováno. Vá upgradeSuccess = "Platba proběhla úspěšně! Vaše předplatné bylo upgradováno. Licence na vašem serveru byla aktualizována. Brzy obdržíte potvrzovací e-mail." upgradeTitle = "Upgradovat na {{planName}}" yearly = "Ročně" +checkoutOpened = "Pokladna otevřena v prohlížeči" +checkoutInstructions = "Dokončete nákup v právě otevřeném okně prohlížeče. Po dokončení platby se sem vraťte a klikněte na tlačítko níže pro aktualizaci fakturačních informací." +refreshBilling = "Dokončil(a) jsem platbu – aktualizovat fakturaci" +closeLater = "Udělám to později" [payment.emailStage] continue = "Pokračovat" @@ -4679,6 +4806,13 @@ prompt = "Vyberte stránku pro extrakci tabulky" submit = "Extrahovat" title = "PDF na CSV" +[PDFToXLSX] +header = "PDF do Excelu" +prompt = "Vyberte stránky pro extrakci tabulek" +submit = "Převést" +title = "PDF do Excelu (XLSX)" +tags = "tabulkový sešit,excel,xlsx,tabulka,extrakce,převod" + [PDFToHTML] credit = "Tato služba používá pdftohtml pro konverzi souborů." header = "PDF na HTML" @@ -4835,6 +4969,7 @@ customPricing = "Vlastní" featureComparison = "Srovnání funkcí" from = "Od" hideComparison = "Skrýt porovnání funkcí" +included = "Zahrnuto" includedInCurrent = "Součást vašeho plánu" licensedSeats = "Licencováno: {{count}} míst" manage = "Spravovat" @@ -4852,9 +4987,11 @@ title = "Aktivní plán" [plan.availablePlans] subtitle = "Vyberte plán, který vám vyhovuje" +loadError = "Nelze načíst ceny tarifů. Používají se výchozí hodnoty." title = "Dostupné plány" [plan.enterprise] +siteLicense = "Site License" highlight1 = "Vlastní ceny" highlight2 = "Vyhrazená podpora" highlight3 = "Nejnovější funkce" @@ -4928,6 +5065,81 @@ keyDescription = "Paste the license key from your email" success = "License Activated!" successMessage = "Your license has been successfully activated. You can now close this window." +[plan.team] +name = "Team" +siteLicense = "Site License" + +[credits] +enableOverageBilling = "Povolit nadlimitní fakturaci" +maybeLater = "Možná později" +upgrade = "Upgradovat" + +[credits.modal] +advancedMonitoring = "Pokročilé monitorování" +allInOneWorkspace = "Vše v jednom: pracovní prostor pro PDF (prohlížeč, nástroje a agent)" +apiSandbox = "API sandbox" +contactSales = "Kontaktovat obchodní oddělení" +creditsRemaining = "{{current}} z {{total}} zbývá" +creditsThisMonth = "Měsíční kredity" +current = "Aktuální tarif" +customPricing = "Vlastní" +customSmartFolders = "Vlastní chytré složky" +dedicatedSupportSlas = "Vyhrazená podpora a SLA" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Vše z Credits, navíc:" +everythingInFree = "Vše z Free, navíc:" +fasterThroughput = "10× rychlejší propustnost" +forRegularWork = "Pro běžnou práci s PDF:" +freeTier = "Bezplatný tarif" +fullyPrivateFiles = "Plně soukromé soubory" +largeFileProcessing = "Zpracování velkých souborů" +managedMemberMessage = "Máte neomezený přístup ke kreditům prostřednictvím svého týmu. Pokud potřebujete pomoc, obraťte se na vedoucího týmu." +managedMemberTitle = "Neomezené kredity" +meteringBillingNote = "Nadlimitní kredity jsou fakturovány měsíčně spolu s vaším předplatným Team. Využití můžete kdykoli sledovat v nastavení účtu." +meteringExplanation = "Váš plán Team zahrnuje {{credits}} kreditů měsíčně. Po jejich vyčerpání vám nadlimitní fakturace automaticky poskytne další kredity, abyste nemuseli přerušovat práci." +meteringIncluded = "{{credits}} kreditů/měsíc v ceně u tarifu Team" +meteringNoCommitment = "Bez závazků, zrušit lze kdykoli" +meteringNeverRunOut = "Kredity vám nikdy nedojdou" +meteringPayAsYouGo = "Plaťte jen za to, co využijete" +meteringPrice = "Další kredity za {{price}}/kredit" +meteringTitle = "Nadlimitní fakturace dle skutečného využití" +monthlyCredits = "měsíčních kreditů" +orgWideAccess = "Řízení přístupu napříč organizací" +overage = "nadlimit" +perMonth = "/měsíc" +popular = "Oblíbené" +premiumAiModels = "Prémiové AI modely" +prioritySupport = "Prioritní podpora" +privateDocCloud = "Soukromé úložiště dokumentů" +ragFineTuning = "RAG + fine-tuning" +secureApiAccess = "Zabezpečený přístup k API" +selfHostLink = "Prostudovat dokumentaci a tarify" +selfHostPrompt = "Chcete hostovat sami?" +standardThroughput = "Standardní propustnost" +subtitle = "Přejděte na Team pro 10× více kreditů a rychlejší zpracování." +subtitlePro = "Povolte automatickou nadlimitní fakturaci, aby vám kredity nikdy nedošly." +teamLeaderOnly = "Nadlimitní fakturaci může povolit pouze vedoucí týmu" +teamSubscription = "Team" +titleExhausted = "Vyčerpali jste bezplatné kredity" +titleExhaustedPro = "Došly vám kredity" +unlimitedApiAccess = "Neomezený přístup k API" +unlimitedMonthlyCredits = "Site License" +unlimitedSeats = "Neomezený počet uživatelů" + +[credits.modal.features] +everythingInCredits = "Vše z Credits, navíc:" +everythingInFree = "Vše z Free, navíc:" +forRegularWork = "Pro běžnou práci s PDF:" + +[credits.insufficient] +brief = "Nedostatek kreditů. Potřebujete {{required}} kreditů, ale máte {{current}}." +freeTier = "Přejděte na Team pro 10× více kreditů a neomezenou nadlimitní fakturaci." +managedMember = "Obraťte se prosím na vedoucího svého týmu." +message = "Nemáte dostatek kreditů pro spuštění {{tool}}. Aktuálně máte {{current}} kreditů." +messageWithAmount = "Pro spuštění {{tool}} potřebujete {{required}} kreditů, ale máte pouze {{current}}." +teamMember = "Povolte nadlimitní fakturaci, aby vám kredity nikdy nedošly." +title = "Nedostatek kreditů" + [printFile] header = "Tisk souboru na tiskárně" submit = "Tisknout" @@ -5565,6 +5777,70 @@ user = "Přihlášen jako" saas = "Stirling Cloud" selfhosted = "Vlastní hosting" +[settings.planBilling] +currentPlan = "Aktuální tarif" +loading = "Načítání fakturačních informací..." +notAvailable = "Plán a fakturace jsou dostupné pouze při připojení ke Stirling Cloud (režim SaaS)." +title = "Plán a fakturace" + +[settings.planBilling.billing] +manageBilling = "Spravovat fakturaci" +nextBillingDate = "Další datum fakturace" +overageCost = "Aktuální cena nadlimitu: {{amount}} ({{credits}} kreditů)" + +[settings.planBilling.credits] +estimatedCost = "Odhadovaná cena: {{amount}}" +freeTierInfo = "Bezplatný plán zahrnuje {{freeCredits}} kreditů měsíčně. Přejděte na Team pro {{teamCredits}} kreditů/měsíc a nadlimitní fakturaci dle skutečného využití." +included = "{{count}} kreditů/měsíc (v ceně)" +noOverage = "Tento měsíc nemáte žádné nadlimitní poplatky. Využíváte zahrnutých {{count}} kreditů." +overage = "+ {{count}} nadlimit" +overageInfo = "Nadlimitní kredity jsou účtovány {{price}} za kredit. Zaplatíte jen za to, co využijete nad svůj měsíční limit." +title = "Využití kreditů" + +[settings.planBilling.errors] +fetchFailed = "Nelze načíst fakturační data" +retry = "Zkusit znovu" + +[settings.planBilling.status] +active = "Aktivní" +canceled = "Zrušeno" +pastDue = "Po splatnosti" +trial = "Zkušební verze" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Vlastní enterprise funkce a podpora" +free = "Free" +freeDescription = "50 kreditů měsíčně" +team = "Team" +teamBadge = "Team" +teamDescription = "500 kreditů/měsíc v ceně, automatická nadlimitní fakturace pro nepřerušovanou službu" +teamTooltipCredits = "Plán Team zahrnuje {{credits}} kreditů/měsíc." +teamTooltipFineprint = "Platíte jen za to, co využijete nad zahrnuté kredity." +teamTooltipOverage = "Automatická nadlimitní fakturace {{price}}/kredit zajišťuje nepřerušovanou službu." + +[settings.planBilling.team] +managedByTeam = "Spravováno týmem" +memberCount = "{{count}} členů týmu" + +[settings.planBilling.trial] +daysRemaining = "Zbývá {{days}} dní" +daysRemainingFull = "Vaše zkušební verze skončí za {{days}} dní" +endDate = "Vyprší: {{date}}" +endsOn = "Konec zkušební verze" +title = "Aktivní zkušební verze" + +[settings.planBilling.upgrade] +cta = "Přejít na Team" +featureApi = "Přístup k API pro automatizaci" +featureCredits = "{{teamCredits}} kreditů měsíčně (oproti {{freeCredits}} u Free)" +featureMembers = "Neomezený počet členů týmu" +featureSupport = "Prioritní podpora" +featureThroughput = "Rychlejší propustnost zpracování" +opensInBrowser = "Otevře se v prohlížeči pro dokončení upgradu" +subtitle = "Přejděte na Team a získejte:" +title = "Upgradujte svůj tarif" + [settings.developer] apiKeys = "API klíče" title = "Vývojář" @@ -5689,6 +5965,9 @@ people = "Lidé" teams = "Týmy" title = "Pracovní prostor" +[settings.team] +title = "Tým" + [setup] description = "Začněte výběrem způsobu používání Stirling PDF" welcome = "Vítejte ve Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "Automatické rozdělení pomocí oddělovacích listů" name = "Oddělovač stránek" tooltip = "Použijte mezi dokumenty při skenování oddělovací listy s QR kódem" +[split.methods.byPoster] +name = "Tisknutelné části" +desc = "Rozdělit velké stránky na tisknutelné velikosti" +tooltip = "Rozdělit nadrozměrné stránky na menší části vhodné pro tisk na standardní papír (A4, Letter atd.)" + [split.methods.byPages] desc = "Vyjmout konkrétní stránky (1,3,5–10)" name = "Čísla stránek" @@ -6029,6 +6313,7 @@ tooltip = "Zadejte maximální velikost souboru (např. 10MB, 500KB)" [split.methods.prefix] splitAt = "Rozdělit na" splitBy = "Rozdělit podle" +splitInto = "Rozdělit na" [split.methodSelection.tooltip] bullet1 = "Kliknutím na kartu metody ji vyberete" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Nejprve vyberte metodu rozdělení" chooseMethod = "Vybrat metodu" settings = "Nastavení" +[split.poster] +rightToLeft = "Rozdělit zprava doleva" + +[split.poster.pageSize] +label = "Cílová velikost stránky" +description = "Velikost výstupních stránek pro tisk" + +[split.poster.xFactor] +label = "Horizontální dělení" +description = "Počet sloupců, na které se každá stránka rozdělí" + +[split.poster.yFactor] +label = "Vertikální dělení" +description = "Počet řádků, na které se každá stránka rozdělí" + [split.tooltip.byChapters] bullet1 = "Úroveň záložek: Na které úrovni rozdělit (1 = nejvyšší úroveň)" bullet2 = "Zahrnout metadata: Zachovat vlastnosti dokumentu" @@ -6085,6 +6385,14 @@ bullet5 = "Povolte režim duplexu, pokud skenujete obě strany oddělovacích li text = "Automaticky rozdělí skenované dokumenty pomocí fyzických oddělovacích listů s QR kódy. Ideální pro zpracování více dokumentů skenovaných společně." title = "Rozdělit pomocí oddělovače stránek" +[split.tooltip.byPoster] +bullet1 = "Cílová velikost stránky: Zvolte výstupní formát papíru (A4, Letter atd.)" +bullet2 = "Horizontální/vertikální dělení: Velikost mřížky pro rozdělení" +bullet3 = "Zprava doleva: Obrátit pořadí sloupců pro RTL rozvržení" +bullet4 = "Vytiskněte a složte díly pro vytvoření plakátu" +text = "Rozdělte velké stránky PDF na menší tisknutelné části vhodné pro standardní formáty papíru. Ideální pro tvorbu plakátových tisků z nadrozměrných stránek." +title = "Rozdělení pro tisk plakátu" + [split.tooltip.byPages] bullet1 = "Jednotlivé body: 3,7 (rozdělí po stránkách 3 a 7)" bullet2 = "Rozsahové body: 3–8 (rozdělí před stránkou 3 a po stránce 8)" @@ -6364,9 +6672,13 @@ tags = "zachytit-web,uložit-stránku,web-na-dok,archivovat" title = "URL na PDF" [usage] +aboutUsageAnalytics = "O analytice využití" +configureSettings = "Nastavit analytiku" error = "Chyba při načítání statistik využití" noData = "Žádná data nejsou k dispozici" noDataMessage = "Aktuálně nejsou k dispozici žádné statistiky využití." +usageAnalyticsExplanation = "Analytika využití sleduje požadavky na endpointy a vzorce používání nástrojů. V kombinaci s panelem auditního protokolování získáte úplný přehled o aktivitě systému, výkonu a bezpečnostních událostech." +viewAuditLogs = "Zobrazit auditní logy" [usage.chart] title = "Graf využití endpointů" @@ -6947,3 +7259,278 @@ cancel = "Zrušit" confirm = "Rozbalit" message = "Tento ZIP obsahuje {{count}} souborů. Přesto rozbalit?" title = "Velký soubor ZIP" + +[cloudBadge] +tooltip = "Tato operace využije vaše cloudové kredity" + +[team] +cancelInviteError = "Zrušení pozvánky se nezdařilo" +confirmCancelInvite = "Opravdu chcete tuto pozvánku zrušit?" +confirmLeave = "Opravdu chcete tento tým opustit?" +confirmLeaveLeader = "Jako vedoucí týmu budete odstraněni z týmu. Opravdu chcete odejít?" +confirmRemove = "Opravdu chcete tohoto člena odstranit?" +editName = "Upravit název týmu" +inviteCancelled = "Pozvánka zrušena" +inviteError = "Odeslání pozvánky se nezdařilo" +inviteSent = "Pozvánka úspěšně odeslána" +leader = "Vedoucí" +leaveButton = "Opustit tým" +leaveError = "Odchod z týmu se nezdařil" +leaveSuccess = "Úspěšně jste opustili tým" +loading = "Načítání informací o týmu..." +memberCount = "{{count}} členů" +memberRemoved = "Člen úspěšně odstraněn" +namePlaceholder = "Zadejte název týmu" +personal = "Osobní" +removeError = "Nepodařilo se odstranit člena" +renameError = "Přejmenování týmu se nezdařilo" +renameSuccess = "Tým byl úspěšně přejmenován" + +[team.invitationBanner] +message = "vás pozval(a), abyste se připojili" +acceptButton = "Přijmout" +rejectButton = "Odmítnout" + +[team.features] +badge = "Funkce týmu" +subtitle = "Spolupracujte se svým týmem" +title = "Týmová spolupráce" +viewPlans = "Zobrazit tarify" + +[team.features.billing] +description = "Správa fakturace a předplatného" +title = "Správa fakturace" + +[team.features.credits] +description = "Sdílený fond kreditů pro všechny členy" +title = "Sdílené kredity" + +[team.features.dashboard] +description = "Zobrazení aktivity a využití týmu" +title = "Týmový přehled" + +[team.features.invite] +description = "Přidejte členy do svého týmu" +title = "Pozvat členy" + +[team.invite] +cancelLabel = "Zrušit" +invalidEmail = "Neplatná e-mailová adresa" +placeholder = "Zadejte e-mailovou adresu" +sendButton = "Odeslat pozvánku" +title = "Pozvat člena týmu" + +[team.members] +emailColumn = "E-mail" +empty = "Zatím žádní členové týmu" +nameColumn = "Jméno" +pending = "Čeká na vyřízení" +remove = "Odebrat" +roleColumn = "Role" +title = "Členové týmu" + +[team.upgrade] +button = "Přejít na Team" +description = "Odemkněte funkce pro týmovou spolupráci" +title = "Přejít na tarif Team" + +[provider.oauth2.google] +scope = "Ověřování přihlášení" + +[provider.oauth2.google.clientId] +label = "Client ID" +description = "OAuth2 Client ID z Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret z Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Scopes" +description = "OAuth2 scopes oddělené čárkami" + +[provider.oauth2.google.useAsUsername] +label = "Použít jako uživatelské jméno" +description = "Pole použité jako uživatelské jméno (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Ověřování přihlášení" + +[provider.oauth2.github.clientId] +label = "Client ID" +description = "OAuth2 Client ID z GitHub Developer Settings" + +[provider.oauth2.github.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret z GitHub Developer Settings" + +[provider.oauth2.github.scopes] +label = "Scopes" +description = "OAuth2 scopes oddělené čárkami" + +[provider.oauth2.github.useAsUsername] +label = "Použít jako uživatelské jméno" +description = "Pole použité jako uživatelské jméno (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "URL vydavatele" +description = "URL koncového bodu OpenID Connect Discovery pro realm Keycloak" + +[provider.oauth2.keycloak.clientId] +label = "Client ID" +description = "OAuth2 Client ID z Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret z Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "Scopes" +description = "OAuth2 scopes oddělené čárkami" + +[provider.oauth2.keycloak.useAsUsername] +label = "Použít jako uživatelské jméno" +description = "Pole použité jako uživatelské jméno (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "Obecné OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Povolit Generic OAuth2" +description = "Povolit ověřování pomocí vlastního poskytovatele OAuth2" + +[provider.oauth2.generic.provider] +label = "Název poskytovatele" +description = "Název vašeho poskytovatele OAuth2 (např. Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "URL vydavatele" +description = "Poskytovatel, který podporuje OpenID Connect Discovery (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "Client ID" +description = "OAuth2 Client ID od vašeho poskytovatele" + +[provider.oauth2.generic.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret od vašeho poskytovatele" + +[provider.oauth2.generic.scopes] +label = "Scopes" +description = "OAuth2 scopes oddělené čárkami" + +[provider.oauth2.generic.useAsUsername] +label = "Použít jako uživatelské jméno" +description = "Pole použité jako uživatelské jméno" + +[provider.oauth2.generic.autoCreateUser] +label = "Automaticky vytvářet uživatele" +description = "Automaticky vytvořit uživatelský účet při prvním přihlášení přes OAuth2" + +[provider.oauth2.generic.blockRegistration] +label = "Blokovat registraci" +description = "Zabránit registraci nových uživatelů přes OAuth2" + +[provider.smtp] +name = "SMTP pošta" +scope = "E-mailová upozornění" + +[provider.smtp.enabled] +label = "Povolit poštu" +description = "Povolit e-mailová upozornění a funkce SMTP" + +[provider.smtp.host] +label = "SMTP hostitel" +description = "Název hostitele nebo IP adresa vašeho SMTP serveru" + +[provider.smtp.port] +label = "SMTP port" +description = "Číslo portu pro připojení SMTP (obvykle 25, 465 nebo 587)" + +[provider.smtp.username] +label = "SMTP uživatelské jméno" +description = "Uživatelské jméno pro ověřování SMTP" + +[provider.smtp.password] +label = "SMTP heslo" +description = "Heslo pro ověřování SMTP" + +[provider.smtp.from] +label = "Adresa odesílatele" +description = "E-mailová adresa použitá jako odesílatel" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "Povolit SAML2" +description = "Povolit ověřování pomocí SAML2 (pouze Enterprise)" + +[provider.saml2.provider] +label = "Název poskytovatele" +description = "Název vašeho poskytovatele SAML2" + +[provider.saml2.registrationId] +label = "Registration ID" +description = "Název vaší aplikace poskytovatele služeb (SP)" + +[provider.saml2.idpMetadataUri] +label = "IDP Metadata URI" +description = "URI metadat vašeho poskytovatele" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login URL" +description = "URL pro zahájení SSO" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout URL" +description = "URL pro zahájení SLO" + +[provider.saml2.idpIssuer] +label = "Vydavatel IDP" +description = "ID vašeho poskytovatele" + +[provider.saml2.idpCert] +label = "Certifikát IDP" +description = "Cesta k certifikátu (např. classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Soukromý klíč" +description = "Cesta k vašemu soukromému klíči" + +[provider.saml2.spCert] +label = "Certifikát SP" +description = "Cesta k vašemu podepisovacímu certifikátu" + +[provider.saml2.autoCreateUser] +label = "Automaticky vytvářet uživatele" +description = "Automaticky vytvořit uživatelský účet při prvním přihlášení přes SAML2" + +[provider.saml2.blockRegistration] +label = "Blokovat registraci" +description = "Zabránit registraci nových uživatelů přes SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "Import souborů" + +[provider.googledrive.enabled] +label = "Povolit výběr souborů z Google Drive" +description = "Umožnit uživatelům importovat soubory přímo z Google Drive" + +[provider.googledrive.clientId] +label = "Client ID" +description = "Google OAuth 2.0 Client ID z Google Cloud Console" + +[provider.googledrive.apiKey] +label = "API Key" +description = "Google API Key pro Google Picker API z Google Cloud Console" + +[provider.googledrive.appId] +label = "App ID" +description = "Google Drive App ID z Google Cloud Console" diff --git a/frontend/public/locales/da-DK/translation.toml b/frontend/public/locales/da-DK/translation.toml index 270ba60ac..26e29ebf3 100644 --- a/frontend/public/locales/da-DK/translation.toml +++ b/frontend/public/locales/da-DK/translation.toml @@ -96,6 +96,8 @@ pin = "Fastgør fil (behold aktiv efter værktøjskørsel)" poweredBy = "Drevet af" pro = "Pro" processTimeWarning = "Advarsel: Denne proces kan tage op til et helt minut, alt efter størrelsen på filen" +processingComplete = "Din fil er klar." +processingCompleteMultiple = "{{count}} filer er klar." property = "Egenskab" quickPosition = "Hurtig placering" red = "Rød" @@ -105,6 +107,7 @@ save = "Gem" saveToBrowser = "Gem til browser" saveUnavailable = "Gem er ikke tilgængelig for dette element" seeDockerHub = "Se Docker Hub" +editSecret = "Rediger denne værdi" selectFillter = "-- Vælg --" size = "Størrelse" sponsor = "Sponsorer" @@ -651,6 +654,7 @@ description = "Konfigurer eksterne godkendelsesudbydere som OAuth2 og SAML." disconnect = "Afbryd" disconnected = "Udbyder afbrudt" disconnectError = "Kunne ikke afbryde udbyder" +documentation = "Se dokumentation" imageResolutionFull = "Fuld (original størrelse)" imageResolutionReduced = "Reduceret (maks. 1200 px)" linkedServices = "Tilknyttede tjenester" @@ -964,6 +968,18 @@ label = "Standardlokalisering" description = "Maksimal filuploadstørrelse (fx 100MB, 1GB)" label = "Grænse for filupload" +[admin.settings.general.hideDisabledTools] +description = "Skjul deaktiverede værktøjer i grænsefladen" +label = "Skjul deaktiverede værktøjer" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Skjul Google Drive-knap, når den ikke er aktiveret" +label = "Skjul Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Skjul mobil QR-scanner-knap, når den ikke er aktiveret" +label = "Skjul mobilscanner" + [admin.settings.general.frontendUrl] description = "Basis-URL for frontend (f.eks. https://pdf.example.com). Bruges til e-mail-invitationslinks og mobil-upload via QR-kode. Lad være tom for at bruge backend-URL." label = "Frontend-URL" @@ -1148,6 +1164,8 @@ title = "Sikkerhed" [admin.settings.security.audit] label = "Revisionslogning" +showDetails = "Vis detaljer for revisionsniveau" +hideDetails = "Skjul detaljer for revisionsniveau" [admin.settings.security.audit.enabled] description = "Spor brugerhandlinger og systemhændelser til compliance og sikkerhedsovervågning" @@ -1157,10 +1175,32 @@ label = "Aktivér revisionslogning" description = "0=OFF, 1=BASIC, 2=STANDARD, 3=VERBOSE" label = "Revisionsniveau" +[admin.settings.security.audit.levelDetails] +off = "Ingen revisionslogning (undtagen kritiske sikkerhedshændelser)" +basic = "PDF-filhandlinger (komprimer, opdel, flet osv.) og ændringer i indstillinger. Registrerer: status for handling (succes/fejl), metodeparametre, tidtagning. Minimalt logomfang." +standard = "BASIC-begivenheder plus: bruger login/logud, kontoændringer, generelle GET-forespørgsler. Udelukker kontinuerlige polling-kald (/auth/me, /app-config, /health osv.) for at reducere logstøj. Ideelt for de fleste installationer." +verbose = "STANDARD-begivenheder plus: kontinuerlige polling-kald, alle GET-forespørgsler, detaljeret tidtagning. Advarsel: stort logomfang og påvirkning af ydeevne." + [admin.settings.security.audit.retentionDays] description = "Antal dage revisionslogs opbevares" label = "Revisionsbevaring (dage)" +[admin.settings.security.audit.advancedOptions] +title = "Avancerede indstillinger" +description = "Følgende indstillinger øger behandlingstid og hukommelsesforbrug. Aktivér kun hvis det er strengt nødvendigt." + +[admin.settings.security.audit.captureFileHash] +description = "Udtræk SHA-256-hash af uploadede PDF-filer for integritetsverificering. Uafhængig af revisionsniveau." +label = "Indsaml filhash (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Udtræk forfatterfeltet fra PDF-dokumenter under behandling. Kræver PDF-parsing, øger ventetid. Uafhængig af revisionsniveau." +label = "Indsaml PDF-forfattermetadata" + +[admin.settings.security.audit.captureOperationResults] +description = "Registrer metoders returværdier. Ikke anbefalet: øger logomfang og diskforbrug betydeligt." +label = "Indsaml resultater af handlinger" + [admin.settings.security.csrfDisabled] description = "Deaktivér Cross-Site Request Forgery-beskyttelse (anbefales ikke)" label = "Deaktivér CSRF-beskyttelse" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "Konfigurer revisionslogning" +configureAuditMessage = "Juster revisionsniveau, opbevaringsperiode og andre indstillinger i sektionen Sikkerhed og godkendelse." disabled = "Auditlogning er deaktiveret" disabledMessage = "Aktivér auditlogning i din applikationskonfiguration for at spore systemhændelser." enterpriseRequired = "Enterprise-licens påkrævet" enterpriseRequiredMessage = "Revisionslogsystemet er en Enterprise-funktion. Opgrader venligst til en Enterprise-licens for at få adgang til revisionslogs og analyser." +goToSettings = "Gå til revisionsindstillinger" notAvailable = "Auditsystem ikke tilgængeligt" notAvailableMessage = "Auditsystemet er ikke konfigureret eller ikke tilgængeligt." -[audit.charts] -byType = "Hændelser efter type" -byUser = "Hændelser efter bruger" -day = "Dag" -error = "Fejl ved indlæsning af diagrammer" -month = "Måned" -overTime = "Hændelser over tid" -title = "Audit-dashboard" -week = "Uge" - [audit.error] title = "Fejl ved indlæsning af auditsystem" -[audit.events] -actions = "Handlinger" -clearFilters = "Ryd" -details = "Detaljer" -endDate = "Slutdato" -error = "Fejl ved indlæsning af hændelser" -eventDetails = "Hændelsesdetaljer" -filterByType = "Filtrer efter type" -filterByUser = "Filtrer efter bruger" -ipAddress = "IP-adresse" -noEvents = "Ingen hændelser fundet" -startDate = "Startdato" -timestamp = "Tidsstempel" -title = "Audithændelser" -type = "Type" -user = "Bruger" -viewDetails = "Se detaljer" - [audit.export] clearFilters = "Ryd" description = "Eksporter audithændelser til CSV- eller JSON-format. Brug filtre til at begrænse de eksporterede data." endDate = "Slutdato" error = "Kunne ikke eksportere data" exportButton = "Eksporter data" +fieldAuthor = "Forfatter (fra PDF)" +fieldDate = "Dato" +fieldDocumentName = "Dokumentnavn" +fieldFileHash = "Filhash (SHA-256)" +fieldIpAddress = "IP-adresse" +fieldOperationResults = "Resultater af handlinger" +fieldOutcome = "Resultat (Succes/Fejl)" +fieldTool = "Værktøj" +fieldUsername = "Brugernavn" filterByType = "Filtrer efter type" filterByUser = "Filtrer efter bruger" filters = "Filtre (valgfrit)" format = "Eksportformat" +selectFields = "Vælg felter der skal medtages" startDate = "Startdato" title = "Eksporter auditdata" +verboseRequired = "Kræver VERBOSE-revisionsniveau" [audit.systemStatus] +autoRefresh = "Automatisk opdatering" +autoRefreshLabel = "Automatisk opdatering hver 30. sek." +captureBySettings = "Aktivér i indstillinger" +capturedFields = "Indsamlede felter" +date = "Dato" days = "dage" disabled = "Deaktiveret" +documentName = "Dokumentnavn" enabled = "Aktiveret" +fileHash = "Filhash" level = "Auditniveau" +pdfAuthor = "PDF-forfatter" retention = "Opbevaringsperiode" status = "Auditlogning" title = "Systemstatus" +tool = "Værktøj" totalEvents = "Samlede hændelser" +username = "Brugernavn" +verboseOnly = "Kun VERBOSE" + +[audit.stats] +activeUsers = "Aktive brugere" +attention = "Kræver opmærksomhed" +avgLatency = "Gns. latenstid" +error = "Fejl ved indlæsning af statistik" +errorLoadingStats = "Kunne ikke indlæse statistik" +excellent = "Fremragende" +good = "God" +noData = "N/A" +successRate = "Succesrate" +title = "Oversigt" +totalEvents = "Samlede hændelser" +vsLastPeriod = "vs sidste periode" + +[audit.charts] +byTool = "Mest brugte værktøjer" +byType = "Hændelser efter type" +byUser = "Hændelser efter bruger" +day = "Dag" +error = "Fejl ved indlæsning af diagrammer" +hourlyActivity = "Aktivitet pr. time" +month = "Måned" +noData = "Ingen data for denne periode" +overTime = "Hændelser over tid" +title = "Audit-dashboard" +week = "Uge" + +[audit.events] +actions = "Handlinger" +author = "Forfatter" +clearFilters = "Ryd" +details = "Detaljer" +documentName = "Dokument" +endDate = "Slutdato" +error = "Fejl ved indlæsning af hændelser" +eventDetails = "Hændelsesdetaljer" +failure = "Fejl" +fileHash = "Filhash" +filterByType = "Filtrer efter type" +filterByUser = "Filtrer efter bruger" +ipAddress = "IP-adresse" +noEvents = "Ingen hændelser fundet" +outcome = "Status" +sortAsc = "Sorter stigende" +sortDesc = "Sorter faldende" +startDate = "Startdato" +success = "Succes" +timestamp = "Tidsstempel" +title = "Audithændelser" +type = "Type" +user = "Bruger" +viewDetails = "Se detaljer" + +[audit.filters] +allOutcomes = "Alle" +failureOnly = "Kun fejl" +last7Days = "Seneste 7 dage" +last30Days = "Seneste 30 dage" +outcomeFilter = "Resultat" +quickPresets = "Hurtigfiltre" +successOnly = "Kun succes" +thisMonth = "Denne måned" +today = "I dag" [audit.tabs] +clearData = "Ryd data" dashboard = "Dashboard" events = "Audithændelser" export = "Eksport" +[audit.clearData] +cancel = "Annuller" +codeDoesNotMatch = "Koden matcher ikke" +codePlaceholder = "Indtast koden her" +confirmationCode = "Bekræftelseskode" +confirmationRequired = "Slet al revisionsdata" +confirmMessage = "Dette vil permanent fjerne alle revisionslogs. Indtast bekræftelseskoden nedenfor for at fortsætte." +confirmTitle = "Bekræft at du vil slette" +deleteButton = "Slet" +enterCode = "Bekræftelseskode" +enterCodeBelow = "Indtast koden præcis som vist ovenfor (forskel på store/små bogstaver)" +initiateDelete = "Slet alle data" +irreversible = "KAN IKKE FORTRYDES" +success = "Succes" +successMessage = "Al revisionsdata er ryddet" +warning1 = "Denne handling kan ikke fortrydes" +warning2 = "Sletning af revisionsdata vil permanent fjerne alle historiske revisionslogs, herunder sikkerhedshændelser, brugeraktiviteter og filhandlinger fra databasen." + [auth] accessDenied = "Adgang nægtet" insufficientPermissions = "Du har ikke tilladelse til at udføre denne handling." @@ -2254,9 +2374,11 @@ copy = "Kopiér" done = "Færdig" error = "Fejl" expand = "Udvid" +learnMore = "Få mere at vide" lines = "linjer" loading = "Indlæser..." next = "Næste" +operation = "denne handling" preview = "Forhåndsvisning" previous = "Forrige" refresh = "Opdatér" @@ -2920,6 +3042,7 @@ copyStack = "Kopier Stack Trace" discordSubmit = "Discord - Indsend Support post" dismissAllErrors = "Afvis alle fejl" encryptedPdfMustRemovePassword = "Denne PDF er krypteret eller adgangskodebeskyttet. Lås den op før konvertering til PDF/A." +generic = "Der opstod en fejl" github = "Indsend en ticket på GitHub" githubSubmit = "GitHub - Indsend en ticket" incorrectPasswordProvided = "PDF-adgangskoden er forkert eller ikke angivet." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Dit abonnement er opgraderet. Din eksisterende licensn upgradeSuccess = "Betaling gennemført! Dit abonnement er opgraderet. Licensen er opdateret på din server. Du modtager snart en bekræftelsesmail." upgradeTitle = "Opgrader til {{planName}}" yearly = "Årlig" +checkoutOpened = "Betaling åbnet i browser" +checkoutInstructions = "Gennemfør dit køb i browservinduet, der netop åbnede. Når betalingen er gennemført, skal du vende tilbage hertil og klikke på knappen nedenfor for at opdatere dine faktureringsoplysninger." +refreshBilling = "Jeg har gennemført betalingen – opdater fakturering" +closeLater = "Jeg gør dette senere" [payment.emailStage] continue = "Fortsæt" @@ -4679,6 +4806,13 @@ prompt = "Vælg side til at udtrække tabel" submit = "Udtræk" title = "PDF til CSV" +[PDFToXLSX] +header = "PDF til Excel" +prompt = "Vælg sider for at udtrække tabeller" +submit = "Konverter" +title = "PDF til Excel (XLSX)" +tags = "regneark,excel,xlsx,tabel,udtræk,konverter" + [PDFToHTML] credit = "Denne tjeneste bruger pdftohtml til filkonvertering." header = "PDF til HTML" @@ -4835,6 +4969,7 @@ customPricing = "Tilpasset" featureComparison = "Sammenligning af funktioner" from = "Fra" hideComparison = "Skjul funktionssammenligning" +included = "Inkluderet" includedInCurrent = "Inkluderet i din plan" licensedSeats = "Licenseret: {{count}} pladser" manage = "Administrer" @@ -4852,9 +4987,11 @@ title = "Aktiv plan" [plan.availablePlans] subtitle = "Vælg den plan, der passer til dine behov" +loadError = "Kan ikke indlæse planpriser. Bruger standardværdier." title = "Tilgængelige planer" [plan.enterprise] +siteLicense = "Sitelicens" highlight1 = "Skræddersyet prissætning" highlight2 = "Dedikeret support" highlight3 = "Nyeste funktioner" @@ -4928,6 +5065,81 @@ keyDescription = "Indsæt licensnøglen fra din e-mail" success = "Licens aktiveret!" successMessage = "Din licens er aktiveret. Du kan nu lukke dette vindue." +[plan.team] +name = "Team" +siteLicense = "Sitelicens" + +[credits] +enableOverageBilling = "Aktivér overforbrugsfakturering" +maybeLater = "Måske senere" +upgrade = "Opgrader" + +[credits.modal] +advancedMonitoring = "Avanceret overvågning" +allInOneWorkspace = "Alt-i-én PDF-arbejdsområde (fremviser, værktøjer og agent)" +apiSandbox = "API-sandkasse" +contactSales = "Kontakt salg" +creditsRemaining = "{{current}} af {{total}} tilbage" +creditsThisMonth = "Månedlige kreditter" +current = "Aktuel plan" +customPricing = "Tilpasset" +customSmartFolders = "Tilpassede smarte mapper" +dedicatedSupportSlas = "Dedikeret support og SLA'er" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Alt i Kreditter, plus:" +everythingInFree = "Alt i Gratis, plus:" +fasterThroughput = "10x hurtigere gennemløb" +forRegularWork = "Til almindeligt PDF-arbejde:" +freeTier = "Gratis niveau" +fullyPrivateFiles = "Fuldt private filer" +largeFileProcessing = "Behandling af store filer" +managedMemberMessage = "Du har ubegrænset adgang til kreditter via dit team. Hvis du har brug for hjælp, kontakt din teamleder." +managedMemberTitle = "Ubegrænsede kreditter" +meteringBillingNote = "Overforbrugskreditter faktureres månedligt sammen med dit Team-abonnement. Følg dit forbrug når som helst i dine kontoindstillinger." +meteringExplanation = "Din Team-plan inkluderer {{credits}} kreditter pr. måned. Når de er opbrugt, leverer overforbrugsfakturering automatisk ekstra kreditter, så du aldrig behøver at stoppe arbejdet." +meteringIncluded = "{{credits}} kreditter/måned inkluderet med Team" +meteringNoCommitment = "Ingen binding, annuller når som helst" +meteringNeverRunOut = "Løb aldrig tør for kreditter" +meteringPayAsYouGo = "Betal kun for det, du bruger" +meteringPrice = "Ekstra kreditter til {{price}}/kredit" +meteringTitle = "Overforbrugsfakturering efter forbrug" +monthlyCredits = "kreditter pr. måned" +orgWideAccess = "Organisationsdækkende adgangskontrol" +overage = "overforbrug" +perMonth = "/måned" +popular = "Populær" +premiumAiModels = "Premium AI-modeller" +prioritySupport = "Prioriteret support" +privateDocCloud = "Privat dokumentcloud" +ragFineTuning = "RAG + finjustering" +secureApiAccess = "Sikker API-adgang" +selfHostLink = "Gennemse dokumentation og planer" +selfHostPrompt = "Vil du selv hoste?" +standardThroughput = "Standard gennemløb" +subtitle = "Opgrader til Team for 10x flere kreditter og hurtigere behandling." +subtitlePro = "Aktivér automatisk overforbrugsfakturering, så du aldrig løber tør for kreditter." +teamLeaderOnly = "Kun teamledere kan aktivere overforbrugsfakturering" +teamSubscription = "Team" +titleExhausted = "Du har brugt dine gratis kreditter" +titleExhaustedPro = "Du er løbet tør for kreditter" +unlimitedApiAccess = "Ubegrænset API-adgang" +unlimitedMonthlyCredits = "Sitelicens" +unlimitedSeats = "Ubegrænsede pladser" + +[credits.modal.features] +everythingInCredits = "Alt i Kreditter, plus:" +everythingInFree = "Alt i Gratis, plus:" +forRegularWork = "Til almindeligt PDF-arbejde:" + +[credits.insufficient] +brief = "Utilstrækkelige kreditter. Du skal bruge {{required}} kreditter men har {{current}}." +freeTier = "Opgrader til Team for 10x flere kreditter og ubegrænset overforbrugsfakturering." +managedMember = "Kontakt din teamleder for hjælp." +message = "Du har ikke nok kreditter til at køre {{tool}}. Du har i øjeblikket {{current}} kreditter." +messageWithAmount = "Du skal bruge {{required}} kreditter for at køre {{tool}}, men du har kun {{current}}." +teamMember = "Aktivér overforbrugsfakturering, så du aldrig løber tør for kreditter." +title = "Utilstrækkelige kreditter" + [printFile] header = "Udskriv Fil til Printer" submit = "Udskriv" @@ -5565,6 +5777,70 @@ user = "Logget ind som" saas = "Stirling Cloud" selfhosted = "Selvhostet" +[settings.planBilling] +currentPlan = "Aktuel plan" +loading = "Indlæser faktureringsoplysninger..." +notAvailable = "Plan og fakturering er kun tilgængelig ved forbindelse til Stirling Cloud (SaaS-tilstand)." +title = "Plan og fakturering" + +[settings.planBilling.billing] +manageBilling = "Administrer fakturering" +nextBillingDate = "Næste faktureringsdato" +overageCost = "Aktuelt overforbrugsbeløb: {{amount}} ({{credits}} kreditter)" + +[settings.planBilling.credits] +estimatedCost = "Anslået omkostning: {{amount}}" +freeTierInfo = "Gratis plan inkluderer {{freeCredits}} kreditter pr. måned. Opgrader til Team for {{teamCredits}} kreditter/måned og forbrugsbaseret overforbrugsfakturering." +included = "{{count}} kreditter/måned (inkluderet)" +noOverage = "Ingen overforbrugsgebyrer denne måned. Du bruger dine inkluderede {{count}} kreditter." +overage = "+ {{count}} overforbrug" +overageInfo = "Overforbrugskreditter faktureres med {{price}} pr. kredit. Du betaler kun for det, du bruger ud over din månedlige kvote." +title = "Kreditforbrug" + +[settings.planBilling.errors] +fetchFailed = "Kan ikke hente faktureringsdata" +retry = "Prøv igen" + +[settings.planBilling.status] +active = "Aktiv" +canceled = "Annulleret" +pastDue = "Forfalden" +trial = "Prøve" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Tilpassede enterprise-funktioner og support" +free = "Gratis" +freeDescription = "50 kreditter pr. måned" +team = "Team" +teamBadge = "Team" +teamDescription = "500 kreditter/måned inkluderet, automatisk overforbrugsfakturering for uafbrudt service" +teamTooltipCredits = "Team-plan inkluderer {{credits}} kreditter/måned." +teamTooltipFineprint = "Betal kun for det, du bruger ud over inkluderede kreditter." +teamTooltipOverage = "Automatisk overforbrugsfakturering til {{price}}/kredit sikrer uafbrudt service." + +[settings.planBilling.team] +managedByTeam = "Administreret af team" +memberCount = "{{count}} teammedlemmer" + +[settings.planBilling.trial] +daysRemaining = "{{days}} dage tilbage" +daysRemainingFull = "Din prøveperiode slutter om {{days}} dage" +endDate = "Udløber: {{date}}" +endsOn = "Prøven slutter" +title = "Gratis prøveperiode aktiv" + +[settings.planBilling.upgrade] +cta = "Opgrader til Team" +featureApi = "API-adgang til automatisering" +featureCredits = "{{teamCredits}} kreditter pr. måned (mod {{freeCredits}} på Gratis)" +featureMembers = "Ubegrænsede teammedlemmer" +featureSupport = "Prioriteret support" +featureThroughput = "Hurtigere behandling" +opensInBrowser = "Åbnes i browser for at fuldføre opgraderingen" +subtitle = "Opgrader til Team for:" +title = "Opgrader din plan" + [settings.developer] apiKeys = "API-nøgler" title = "Udvikler" @@ -5689,6 +5965,9 @@ people = "Personer" teams = "Teams" title = "Arbejdsområde" +[settings.team] +title = "Team" + [setup] description = "Kom i gang ved at vælge, hvordan du vil bruge Stirling PDF" welcome = "Velkommen til Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "Auto-opdel med delerark" name = "Delerark" tooltip = "Brug QR-kode-delerark mellem dokumenter ved scanning" +[split.methods.byPoster] +name = "Udskrivbare dele" +desc = "Opdel store sider i udskrivningsvenlige størrelser" +tooltip = "Opdel overstore sider i mindre dele, der egner sig til udskrivning på standardpapir (A4, Letter osv.)" + [split.methods.byPages] desc = "Udtræk specifikke sider (1,3,5-10)" name = "Sidetal" @@ -6029,6 +6313,7 @@ tooltip = "Angiv maksimal filstørrelse (fx 10MB, 500KB)" [split.methods.prefix] splitAt = "Opdel ved" splitBy = "Opdel efter" +splitInto = "Opdel i" [split.methodSelection.tooltip] bullet1 = "Klik på et method-kort for at vælge det" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Vælg først en opdelingsmetode" chooseMethod = "Vælg metode" settings = "Indstillinger" +[split.poster] +rightToLeft = "Opdel højre-til-venstre" + +[split.poster.pageSize] +label = "Mål-sidestørrelse" +description = "Størrelse på output-sider til udskrivning" + +[split.poster.xFactor] +label = "Horisontale opdelinger" +description = "Antal kolonner hver side opdeles i" + +[split.poster.yFactor] +label = "Vertikale opdelinger" +description = "Antal rækker hver side opdeles i" + [split.tooltip.byChapters] bullet1 = "Bogmærkeniveau: Hvilket niveau der skal opdeles på (1=topniveau)" bullet2 = "Medtag metadata: Bevar dokumentegenskaber" @@ -6085,6 +6385,14 @@ bullet5 = "Aktivér duplex-tilstand, hvis du scanner begge sider af delerarkene" text = "Opdel automatisk scannede dokumenter ved hjælp af fysiske delerark med QR-koder. Perfekt til behandling af flere dokumenter scannet sammen." title = "Opdel med delerark" +[split.tooltip.byPoster] +bullet1 = "Mål-sidestørrelse: Vælg udskriftspapirstørrelse (A4, Letter osv.)" +bullet2 = "Horisontale/vertikale opdelinger: Gitterstørrelse til opdeling" +bullet3 = "Højre-til-venstre: Omvend kolonnerækkefølge for RTL-layouts" +bullet4 = "Udskriv og saml delene for at lave din plakat" +text = "Opdel store PDF-sider i mindre udskrivbare dele, der passer til standardpapirstørrelser. Perfekt til at lave plakatudskrifter af overstore sider." +title = "Opdel til plakatudskrivning" + [split.tooltip.byPages] bullet1 = "Enkelt opdelingspunkter: 3,7 (opdeler efter siderne 3 og 7)" bullet2 = "Intervalpunkter: 3-8 (opdeler før side 3 og efter side 8)" @@ -6364,9 +6672,13 @@ tags = "web-fangst,gem-side,web-til-dok,arkivér" title = "URL Til PDF" [usage] +aboutUsageAnalytics = "Om brugsanalyse" +configureSettings = "Konfigurer analyseindstillinger" error = "Fejl ved indlæsning af brugsstatistik" noData = "Ingen data tilgængelige" noDataMessage = "Ingen brugsstatistik er tilgængelig i øjeblikket." +usageAnalyticsExplanation = "Brugsanalyse sporer endpoint-forespørgsler og mønstre for værktøjsbrug. Sammen med dashboardet for revisionslogning giver det fuldt overblik over systemaktivitet, ydeevne og sikkerhedshændelser." +viewAuditLogs = "Vis revisionslogs" [usage.chart] title = "Diagram over endpoint-brug" @@ -6947,3 +7259,278 @@ cancel = "Annuller" confirm = "Udpak" message = "Denne ZIP indeholder {{count}} filer. Udpak alligevel?" title = "Stor ZIP-fil" + +[cloudBadge] +tooltip = "Denne handling vil bruge dine cloud-kreditter" + +[team] +cancelInviteError = "Kunne ikke annullere invitation" +confirmCancelInvite = "Er du sikker på, at du vil annullere denne invitation?" +confirmLeave = "Er du sikker på, at du vil forlade dette team?" +confirmLeaveLeader = "Som teamleder vil du blive fjernet fra teamet, hvis du forlader. Er du sikker?" +confirmRemove = "Er du sikker på, at du vil fjerne dette medlem?" +editName = "Rediger teamnavn" +inviteCancelled = "Invitation annulleret" +inviteError = "Kunne ikke sende invitation" +inviteSent = "Invitation sendt" +leader = "Teamleder" +leaveButton = "Forlad team" +leaveError = "Kunne ikke forlade team" +leaveSuccess = "Forlod teamet" +loading = "Indlæser teamoplysninger..." +memberCount = "{{count}} medlemmer" +memberRemoved = "Medlem fjernet" +namePlaceholder = "Indtast teamnavn" +personal = "Personlig" +removeError = "Kunne ikke fjerne medlem" +renameError = "Kunne ikke omdøbe team" +renameSuccess = "Team omdøbt" + +[team.invitationBanner] +message = "har inviteret dig til at deltage" +acceptButton = "Accepter" +rejectButton = "Afslå" + +[team.features] +badge = "Teamfunktioner" +subtitle = "Samarbejd med dit team" +title = "Teamsamarbejde" +viewPlans = "Se planer" + +[team.features.billing] +description = "Administrer fakturering og abonnementer" +title = "Faktureringsstyring" + +[team.features.credits] +description = "Delt kreditpulje for alle medlemmer" +title = "Delte kreditter" + +[team.features.dashboard] +description = "Se teamaktivitet og forbrug" +title = "Teamdashboard" + +[team.features.invite] +description = "Tilføj medlemmer til dit team" +title = "Invitér medlemmer" + +[team.invite] +cancelLabel = "Annuller" +invalidEmail = "Ugyldig e-mailadresse" +placeholder = "Indtast e-mailadresse" +sendButton = "Send invitation" +title = "Invitér teammedlem" + +[team.members] +emailColumn = "E-mail" +empty = "Ingen teammedlemmer endnu" +nameColumn = "Navn" +pending = "Afventer" +remove = "Fjern" +roleColumn = "Rolle" +title = "Teammedlemmer" + +[team.upgrade] +button = "Opgrader til Team" +description = "Lås op for teamsamarbejde" +title = "Opgrader til Team-plan" + +[provider.oauth2.google] +scope = "Log-ind-godkendelse" + +[provider.oauth2.google.clientId] +label = "Client ID" +description = "OAuth2 Client ID fra Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret fra Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Scopes" +description = "Kommaseparerede OAuth2-scopes" + +[provider.oauth2.google.useAsUsername] +label = "Brug som brugernavn" +description = "Felt der bruges som brugernavn (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Log-ind-godkendelse" + +[provider.oauth2.github.clientId] +label = "Client ID" +description = "OAuth2 Client ID fra GitHub Developer Settings" + +[provider.oauth2.github.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret fra GitHub Developer Settings" + +[provider.oauth2.github.scopes] +label = "Scopes" +description = "Kommaseparerede OAuth2-scopes" + +[provider.oauth2.github.useAsUsername] +label = "Brug som brugernavn" +description = "Felt der bruges som brugernavn (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Issuer URL" +description = "URL til Keycloak-realmets OpenID Connect Discovery-endpoint" + +[provider.oauth2.keycloak.clientId] +label = "Client ID" +description = "OAuth2 Client ID fra Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret fra Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "Scopes" +description = "Kommaseparerede OAuth2-scopes" + +[provider.oauth2.keycloak.useAsUsername] +label = "Brug som brugernavn" +description = "Felt der bruges som brugernavn (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "Generisk OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Aktivér generisk OAuth2" +description = "Aktivér godkendelse ved hjælp af en tilpasset OAuth2-udbyder" + +[provider.oauth2.generic.provider] +label = "Udbydernavn" +description = "Navnet på din OAuth2-udbyder (f.eks. Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "Issuer URL" +description = "Udbyder, der understøtter OpenID Connect Discovery (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "Client ID" +description = "OAuth2 Client ID fra din udbyder" + +[provider.oauth2.generic.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret fra din udbyder" + +[provider.oauth2.generic.scopes] +label = "Scopes" +description = "Kommaseparerede OAuth2-scopes" + +[provider.oauth2.generic.useAsUsername] +label = "Brug som brugernavn" +description = "Felt der bruges som brugernavn" + +[provider.oauth2.generic.autoCreateUser] +label = "Opret brugere automatisk" +description = "Opret automatisk brugerkonti ved første OAuth2-login" + +[provider.oauth2.generic.blockRegistration] +label = "Bloker registrering" +description = "Forhindr ny brugerregistrering via OAuth2" + +[provider.smtp] +name = "SMTP-mail" +scope = "E-mailnotifikationer" + +[provider.smtp.enabled] +label = "Aktivér mail" +description = "Aktivér e-mailnotifikationer og SMTP-funktionalitet" + +[provider.smtp.host] +label = "SMTP-vært" +description = "Værtsnavn eller IP-adresse på din SMTP-server" + +[provider.smtp.port] +label = "SMTP-port" +description = "Portnummer for SMTP-forbindelse (typisk 25, 465 eller 587)" + +[provider.smtp.username] +label = "SMTP-brugernavn" +description = "Brugernavn til SMTP-godkendelse" + +[provider.smtp.password] +label = "SMTP-adgangskode" +description = "Adgangskode til SMTP-godkendelse" + +[provider.smtp.from] +label = "Fra-adresse" +description = "Den e-mailadresse, der skal bruges som afsender" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "Aktivér SAML2" +description = "Aktivér SAML2-godkendelse (kun Enterprise)" + +[provider.saml2.provider] +label = "Udbydernavn" +description = "Navnet på din SAML2-udbyder" + +[provider.saml2.registrationId] +label = "Registrerings-id" +description = "Navnet på din Service Provider (SP)-app" + +[provider.saml2.idpMetadataUri] +label = "IDP-metadata-URI" +description = "URI for din udbyders metadata" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login URL" +description = "URL til at starte SSO" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout URL" +description = "URL til at starte SLO" + +[provider.saml2.idpIssuer] +label = "IDP Issuer" +description = "ID på din udbyder" + +[provider.saml2.idpCert] +label = "IDP-certifikat" +description = "Certifikatstien (f.eks. classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Privat nøgle" +description = "Sti til din private nøgle" + +[provider.saml2.spCert] +label = "SP-certifikat" +description = "Sti til dit signeringscertifikat" + +[provider.saml2.autoCreateUser] +label = "Opret brugere automatisk" +description = "Opret automatisk brugerkonti ved første SAML2-login" + +[provider.saml2.blockRegistration] +label = "Bloker registrering" +description = "Forhindr ny brugerregistrering via SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "Filimport" + +[provider.googledrive.enabled] +label = "Aktivér Google Drive-filvælger" +description = "Tillad brugere at importere filer direkte fra Google Drive" + +[provider.googledrive.clientId] +label = "Client ID" +description = "Google OAuth 2.0 Client ID fra Google Cloud Console" + +[provider.googledrive.apiKey] +label = "API-nøgle" +description = "Google API-nøgle til Google Picker API fra Google Cloud Console" + +[provider.googledrive.appId] +label = "App-id" +description = "Google Drive App ID fra Google Cloud Console" diff --git a/frontend/public/locales/de-DE/translation.toml b/frontend/public/locales/de-DE/translation.toml index c29ca28f3..ec203fd8f 100644 --- a/frontend/public/locales/de-DE/translation.toml +++ b/frontend/public/locales/de-DE/translation.toml @@ -96,6 +96,8 @@ pin = "Datei anheften (nach Tool-Ausführung aktiv halten)" poweredBy = "Bereitgestellt von" pro = "Pro" processTimeWarning = "Achtung: Abhängig von der Dateigröße kann dieser Prozess bis zu einer Minute dauern" +processingComplete = "Ihre Datei ist bereit." +processingCompleteMultiple = "{{count}} Dateien sind bereit." property = "Eigenschaft" quickPosition = "Schnellposition" red = "Rot" @@ -105,6 +107,7 @@ save = "Speichern" saveToBrowser = "Im Browser speichern" saveUnavailable = "Speichern für dieses Element ist nicht verfügbar" seeDockerHub = "Docker Hub ansehen" +editSecret = "Diesen Wert bearbeiten" selectFillter = "-- Auswählen --" size = "Größe" sponsor = "Sponsor" @@ -651,6 +654,7 @@ description = "Externe Authentifizierungsanbieter wie OAuth2 und SAML konfigurie disconnect = "Trennen" disconnected = "Anbieter erfolgreich getrennt" disconnectError = "Anbieter konnte nicht getrennt werden" +documentation = "Dokumentation anzeigen" imageResolutionFull = "Voll (Originalgröße)" imageResolutionReduced = "Reduziert (Max 1200px)" linkedServices = "Verknüpfte Dienste" @@ -964,6 +968,18 @@ label = "Standardgebietsschema" description = "Maximale Dateiupload-Größe (z. B. 100MB, 1GB)" label = "Upload-Limit für Dateien" +[admin.settings.general.hideDisabledTools] +description = "Deaktivierte Tools in der Oberfläche ausblenden" +label = "Deaktivierte Tools ausblenden" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Google Drive-Schaltfläche ausblenden, wenn nicht aktiviert" +label = "Google Drive ausblenden" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "QR-Scanner-Schaltfläche auf Mobilgeräten ausblenden, wenn nicht aktiviert" +label = "Mobilen Scanner ausblenden" + [admin.settings.general.frontendUrl] description = "Basis-URL für Frontend (z.B. https://pdf.example.com). Wird für E-Mail-Einladungslinks und mobile QR-Code-Uploads verwendet. Leer lassen, um Backend-URL zu verwenden." label = "Frontend URL" @@ -1148,6 +1164,8 @@ title = "Sicherheit" [admin.settings.security.audit] label = "Audit-Protokollierung" +showDetails = "Details zur Audit-Stufe anzeigen" +hideDetails = "Details zur Audit-Stufe ausblenden" [admin.settings.security.audit.enabled] description = "Benutzeraktionen und Systemereignisse für Compliance und Sicherheitsüberwachung nachverfolgen" @@ -1157,10 +1175,32 @@ label = "Audit-Protokollierung aktivieren" description = "0=AUS, 1=EINFACH, 2=STANDARD, 3=AUSFÜHRLICH" label = "Audit-Level" +[admin.settings.security.audit.levelDetails] +off = "Keine Audit-Protokollierung (außer kritische Sicherheitsereignisse)" +basic = "PDF-Dateioperationen (komprimieren, teilen, zusammenführen usw.) und Einstellungsänderungen. Erfasst: Operationsstatus (Erfolg/Fehlschlag), Methodenparameter, Zeitmessung. Minimales Protokollvolumen." +standard = "BASIC-Ereignisse plus: Benutzer-Login/Logout, Kontenänderungen, allgemeine GET-Requests. Schließt kontinuierliche Polling-Aufrufe (/auth/me, /app-config, /health usw.) aus, um Protokollrauschen zu reduzieren. Ideal für die meisten Deployments." +verbose = "STANDARD-Ereignisse plus: kontinuierliche Polling-Aufrufe, alle GET-Requests, detaillierte Zeitmessung. Warnung: hohes Protokollvolumen und Leistungseinfluss." + [admin.settings.security.audit.retentionDays] description = "Anzahl der Tage, die Audit-Logs aufbewahrt werden" label = "Aufbewahrung Audit (Tage)" +[admin.settings.security.audit.advancedOptions] +title = "Erweiterte Optionen" +description = "Die folgenden Optionen erhöhen die Verarbeitungszeit und den Speicherverbrauch. Nur aktivieren, wenn wirklich benötigt." + +[admin.settings.security.audit.captureFileHash] +description = "SHA-256-Hash hochgeladener PDF-Dateien zur Integritätsprüfung extrahieren. Unabhängig von der Audit-Stufe." +label = "Datei-Hash erfassen (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Autorenfeld aus PDF-Dokumenten während der Verarbeitung extrahieren. Erfordert PDF-Parsing, erhöht die Latenz. Unabhängig von der Audit-Stufe." +label = "PDF-Autor-Metadaten erfassen" + +[admin.settings.security.audit.captureOperationResults] +description = "Rückgabewerte von Methoden erfassen. Nicht empfohlen: erhöht Protokollvolumen und Speicherbedarf erheblich." +label = "Operationsergebnisse erfassen" + [admin.settings.security.csrfDisabled] description = "Cross-Site Request Forgery-Schutz deaktivieren (nicht empfohlen)" label = "CSRF-Schutz deaktivieren" @@ -1536,72 +1576,152 @@ tags = "einbetten, anhängen, datei, anhang, anhänge" title = "Anhänge hinzufügen" [audit] +configureAudit = "Audit-Protokollierung konfigurieren" +configureAuditMessage = "Audit-Protokollstufe, Aufbewahrungszeitraum und weitere Einstellungen im Bereich Sicherheit & Authentifizierung anpassen." disabled = "Audit-Protokollierung ist deaktiviert" disabledMessage = "Aktivieren Sie die Audit-Protokollierung in Ihrer Anwendungskonfiguration, um Systemereignisse nachzuverfolgen." enterpriseRequired = "Enterprise-Lizenz erforderlich" enterpriseRequiredMessage = "Das Audit-Protokollierungssystem ist eine Enterprise-Funktion. Bitte upgraden Sie auf eine Enterprise-Lizenz, um Audit-Logs und Analysen zu nutzen." +goToSettings = "Zu den Audit-Einstellungen" notAvailable = "Audit-System nicht verfügbar" notAvailableMessage = "Das Audit-System ist nicht konfiguriert oder nicht verfügbar." -[audit.charts] -byType = "Ereignisse nach Typ" -byUser = "Ereignisse nach Benutzer" -day = "Tag" -error = "Fehler beim Laden der Diagramme" -month = "Monat" -overTime = "Ereignisse über die Zeit" -title = "Audit-Dashboard" -week = "Woche" - [audit.error] title = "Fehler beim Laden des Audit-Systems" -[audit.events] -actions = "Aktionen" -clearFilters = "Zurücksetzen" -details = "Details" -endDate = "Enddatum" -error = "Fehler beim Laden der Ereignisse" -eventDetails = "Ereignisdetails" -filterByType = "Nach Typ filtern" -filterByUser = "Nach Benutzer filtern" -ipAddress = "IP-Adresse" -noEvents = "Keine Ereignisse gefunden" -startDate = "Startdatum" -timestamp = "Zeitstempel" -title = "Audit-Ereignisse" -type = "Typ" -user = "Benutzer" -viewDetails = "Details anzeigen" - [audit.export] clearFilters = "Zurücksetzen" description = "Exportieren Sie Audit-Ereignisse in CSV- oder JSON-Format. Verwenden Sie Filter, um die exportierten Daten einzuschränken." endDate = "Enddatum" error = "Daten konnten nicht exportiert werden" exportButton = "Daten exportieren" +fieldAuthor = "Autor (aus PDF)" +fieldDate = "Datum" +fieldDocumentName = "Dokumentname" +fieldFileHash = "Datei-Hash (SHA-256)" +fieldIpAddress = "IP-Adresse" +fieldOperationResults = "Operationsergebnisse" +fieldOutcome = "Ergebnis (Erfolg/Fehlschlag)" +fieldTool = "Tool" +fieldUsername = "Benutzername" filterByType = "Nach Typ filtern" filterByUser = "Nach Benutzer filtern" filters = "Filter (optional)" format = "Exportformat" +selectFields = "Einzuschließende Felder auswählen" startDate = "Startdatum" title = "Audit-Daten exportieren" +verboseRequired = "Erfordert Audit-Stufe VERBOSE" [audit.systemStatus] +autoRefresh = "Automatisch aktualisieren" +autoRefreshLabel = "Alle 30 s automatisch aktualisieren" +captureBySettings = "In den Einstellungen aktivieren" +capturedFields = "Erfasste Felder" +date = "Datum" days = "Tage" disabled = "Deaktiviert" +documentName = "Dokumentname" enabled = "Aktiviert" +fileHash = "Datei-Hash" level = "Audit-Level" +pdfAuthor = "PDF-Autor" retention = "Aufbewahrungszeitraum" status = "Audit-Protokollierung" title = "Systemstatus" +tool = "Tool" totalEvents = "Ereignisse insgesamt" +username = "Benutzername" +verboseOnly = "Nur VERBOSE" + +[audit.stats] +activeUsers = "Aktive Benutzer" +attention = "Aufmerksamkeit erforderlich" +avgLatency = "Durchschnittliche Latenz" +error = "Fehler beim Laden der Statistiken" +errorLoadingStats = "Statistiken konnten nicht geladen werden" +excellent = "Ausgezeichnet" +good = "Gut" +noData = "k. A." +successRate = "Erfolgsrate" +title = "Übersicht" +totalEvents = "Ereignisse gesamt" +vsLastPeriod = "ggü. letztem Zeitraum" + +[audit.charts] +byTool = "Meistgenutzte Tools" +byType = "Ereignisse nach Typ" +byUser = "Ereignisse nach Benutzer" +day = "Tag" +error = "Fehler beim Laden der Diagramme" +hourlyActivity = "Stündliche Aktivität" +month = "Monat" +noData = "Keine Daten für diesen Zeitraum" +overTime = "Ereignisse über die Zeit" +title = "Audit-Dashboard" +week = "Woche" + +[audit.events] +actions = "Aktionen" +author = "Autor" +clearFilters = "Zurücksetzen" +details = "Details" +documentName = "Dokument" +endDate = "Enddatum" +error = "Fehler beim Laden der Ereignisse" +eventDetails = "Ereignisdetails" +failure = "Fehlschlag" +fileHash = "Datei-Hash" +filterByType = "Nach Typ filtern" +filterByUser = "Nach Benutzer filtern" +ipAddress = "IP-Adresse" +noEvents = "Keine Ereignisse gefunden" +outcome = "Status" +sortAsc = "Aufsteigend sortieren" +sortDesc = "Absteigend sortieren" +startDate = "Startdatum" +success = "Erfolg" +timestamp = "Zeitstempel" +title = "Audit-Ereignisse" +type = "Typ" +user = "Benutzer" +viewDetails = "Details anzeigen" + +[audit.filters] +allOutcomes = "Alle" +failureOnly = "Nur Fehlschläge" +last7Days = "Letzte 7 Tage" +last30Days = "Letzte 30 Tage" +outcomeFilter = "Ergebnis" +quickPresets = "Schnellfilter" +successOnly = "Nur Erfolge" +thisMonth = "Diesen Monat" +today = "Heute" [audit.tabs] +clearData = "Daten löschen" dashboard = "Dashboard" events = "Audit-Ereignisse" export = "Export" +[audit.clearData] +cancel = "Abbrechen" +codeDoesNotMatch = "Code stimmt nicht überein" +codePlaceholder = "Code hier eingeben" +confirmationCode = "Bestätigungscode" +confirmationRequired = "Alle Audit-Daten löschen" +confirmMessage = "Dadurch werden alle Audit-Protokolle dauerhaft entfernt. Geben Sie unten den Bestätigungscode ein, um fortzufahren." +confirmTitle = "Bitte bestätigen Sie, dass Sie löschen möchten" +deleteButton = "Löschen" +enterCode = "Bestätigungscode" +enterCodeBelow = "Geben Sie den Code exakt wie oben angezeigt ein (Groß-/Kleinschreibung beachten)" +initiateDelete = "Alle Daten löschen" +irreversible = "IRREVERSIBEL" +success = "Erfolg" +successMessage = "Alle Audit-Daten wurden erfolgreich gelöscht" +warning1 = "Diese Aktion kann nicht rückgängig gemacht werden" +warning2 = "Durch das Löschen von Audit-Daten werden alle historischen Audit-Protokolle dauerhaft aus der Datenbank entfernt, einschließlich Sicherheitsereignissen, Benutzeraktivitäten und Dateioperationen." + [auth] accessDenied = "Zugriff verweigert" insufficientPermissions = "Sie haben keine Berechtigung, diese Aktion auszuführen." @@ -2254,9 +2374,11 @@ copy = "Kopieren" done = "Fertig" error = "Fehler" expand = "Ausklappen" +learnMore = "Mehr erfahren" lines = "Zeilen" loading = "Laden..." next = "Weiter" +operation = "diesen Vorgang" preview = "Vorschau" previous = "Zurück" refresh = "Aktualisieren" @@ -2920,6 +3042,7 @@ copyStack = "Stack-Trace kopieren" discordSubmit = "Discord - Unterstützungsbeitrag einreichen" dismissAllErrors = "Alle Fehler ausblenden" encryptedPdfMustRemovePassword = "Diese PDF ist verschlüsselt oder passwortgeschützt. Bitte entsperren Sie sie, bevor Sie in PDF/A konvertieren." +generic = "Es ist ein Fehler aufgetreten" github = "Ein Ticket auf GitHub einreichen" githubSubmit = "GitHub - Ein Ticket einreichen" incorrectPasswordProvided = "Das PDF-Passwort ist falsch oder wurde nicht angegeben." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Ihr Abo wurde erfolgreich upgegradet. Ihr vorhandener upgradeSuccess = "Zahlung erfolgreich! Ihr Abo wurde upgegradet. Die Lizenz wurde auf Ihrem Server aktualisiert. Sie erhalten in Kürze eine Bestätigungs-E-Mail." upgradeTitle = "Upgrade auf {{planName}}" yearly = "Jährlich" +checkoutOpened = "Checkout im Browser geöffnet" +checkoutInstructions = "Schließen Sie den Kauf im soeben geöffneten Browserfenster ab. Nach Abschluss der Zahlung kehren Sie hierher zurück und klicken unten auf die Schaltfläche, um Ihre Abrechnungsinformationen zu aktualisieren." +refreshBilling = "Zahlung abgeschlossen – Abrechnung aktualisieren" +closeLater = "Später erledigen" [payment.emailStage] continue = "Weiter" @@ -4679,6 +4806,13 @@ prompt = "Seite mit der zu extrahierenden Tabelle wählen" submit = "Extrahieren" title = "PDF zu CSV" +[PDFToXLSX] +header = "PDF zu Excel" +prompt = "Wählen Sie Seiten zum Extrahieren von Tabellen" +submit = "Konvertieren" +title = "PDF zu Excel (XLSX)" +tags = "tabellenkalkulation,excel,xlsx,tabelle,extrahieren,konvertieren" + [PDFToHTML] credit = "Dieser Dienst verwendet pdftohtml für die Dateikonvertierung." header = "PDF zu HTML" @@ -4835,6 +4969,7 @@ customPricing = "Individuell" featureComparison = "Funktionsvergleich" from = "Ab" hideComparison = "Funktionsvergleich ausblenden" +included = "Enthalten" includedInCurrent = "In Ihrem Plan enthalten" licensedSeats = "Lizenziert: {{count}} Plätze" manage = "Verwalten" @@ -4852,9 +4987,11 @@ title = "Aktiver Plan" [plan.availablePlans] subtitle = "Wählen Sie den Plan, der Ihren Anforderungen entspricht" +loadError = "Tarifpreise konnten nicht geladen werden. Es werden Standardwerte verwendet." title = "Verfügbare Pläne" [plan.enterprise] +siteLicense = "Site License" highlight1 = "Individuelle Preisgestaltung" highlight2 = "Dedizierter Support" highlight3 = "Neueste Funktionen" @@ -4928,6 +5065,81 @@ keyDescription = "Fügen Sie den Lizenzschlüssel aus Ihrer E-Mail ein" success = "Lizenz aktiviert!" successMessage = "Ihre Lizenz wurde erfolgreich aktiviert. Sie können dieses Fenster nun schließen." +[plan.team] +name = "Team" +siteLicense = "Site License" + +[credits] +enableOverageBilling = "Mehrverbrauchsabrechnung aktivieren" +maybeLater = "Vielleicht später" +upgrade = "Upgrade" + +[credits.modal] +advancedMonitoring = "Erweitertes Monitoring" +allInOneWorkspace = "All-in-one PDF-Arbeitsbereich (Viewer, Tools & Agent)" +apiSandbox = "API-Sandbox" +contactSales = "Vertrieb kontaktieren" +creditsRemaining = "{{current}} von {{total}} verbleibend" +creditsThisMonth = "Monatliche Credits" +current = "Aktueller Tarif" +customPricing = "Individuell" +customSmartFolders = "Benutzerdefinierte Smart Folders" +dedicatedSupportSlas = "Dedizierter Support & SLAs" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Alles in Credits, plus:" +everythingInFree = "Alles in Free, plus:" +fasterThroughput = "10x schnellerer Durchsatz" +forRegularWork = "Für regelmäßige PDF-Arbeit:" +freeTier = "Free Tier" +fullyPrivateFiles = "Vollständig private Dateien" +largeFileProcessing = "Verarbeitung großer Dateien" +managedMemberMessage = "Sie haben über Ihr Team unbegrenzten Zugriff auf Credits. Wenn Sie Hilfe benötigen, wenden Sie sich bitte an Ihren Teamleiter." +managedMemberTitle = "Unbegrenzte Credits" +meteringBillingNote = "Mehrverbrauchs-Credits werden monatlich zusammen mit Ihrem Team-Abonnement abgerechnet. Verfolgen Sie Ihre Nutzung jederzeit in Ihren Kontoeinstellungen." +meteringExplanation = "Ihr Team-Tarif umfasst {{credits}} Credits pro Monat. Wenn diese aufgebraucht sind, stellt die Mehrverbrauchsabrechnung automatisch zusätzliche Credits bereit, damit Sie nie aufhören müssen zu arbeiten." +meteringIncluded = "{{credits}} Credits/Monat im Team enthalten" +meteringNoCommitment = "Keine Bindung, jederzeit kündbar" +meteringNeverRunOut = "Ihnen gehen nie die Credits aus" +meteringPayAsYouGo = "Sie zahlen nur, was Sie nutzen" +meteringPrice = "Zusätzliche Credits zu {{price}}/Credit" +meteringTitle = "Nutzungsbasierte Mehrverbrauchsabrechnung" +monthlyCredits = "monatliche Credits" +orgWideAccess = "Organisationsweite Zugriffskontrollen" +overage = "Mehrverbrauch" +perMonth = "/Monat" +popular = "Beliebt" +premiumAiModels = "Premium-KI-Modelle" +prioritySupport = "Priorisierter Support" +privateDocCloud = "Private Dokumenten-Cloud" +ragFineTuning = "RAG + Fine-Tuning" +secureApiAccess = "Sicherer API-Zugriff" +selfHostLink = "Dokumentation und Pläne ansehen" +selfHostPrompt = "Selbst hosten?" +standardThroughput = "Standard-Durchsatz" +subtitle = "Auf Team upgraden für 10x so viele Credits und schnellere Verarbeitung." +subtitlePro = "Automatische Mehrverbrauchsabrechnung aktivieren, damit Ihnen nie die Credits ausgehen." +teamLeaderOnly = "Nur Teamleiter können die Mehrverbrauchsabrechnung aktivieren" +teamSubscription = "Team" +titleExhausted = "Sie haben Ihre kostenlosen Credits verbraucht" +titleExhaustedPro = "Ihnen sind die Credits ausgegangen" +unlimitedApiAccess = "Unbegrenzter API-Zugriff" +unlimitedMonthlyCredits = "Site License" +unlimitedSeats = "Unbegrenzte Plätze" + +[credits.modal.features] +everythingInCredits = "Alles in Credits, plus:" +everythingInFree = "Alles in Free, plus:" +forRegularWork = "Für regelmäßige PDF-Arbeit:" + +[credits.insufficient] +brief = "Nicht genügend Credits. Sie benötigen {{required}} Credits, haben aber {{current}}." +freeTier = "Auf Team upgraden für 10x mehr Credits und unbegrenzte Mehrverbrauchsabrechnung." +managedMember = "Bitte wenden Sie sich für Unterstützung an Ihren Teamleiter." +message = "Sie haben nicht genug Credits, um {{tool}} auszuführen. Sie haben derzeit {{current}} Credits." +messageWithAmount = "Sie benötigen {{required}} Credits, um {{tool}} auszuführen, haben aber nur {{current}}." +teamMember = "Aktivieren Sie die Mehrverbrauchsabrechnung, damit Ihnen nie die Credits ausgehen." +title = "Nicht genügend Credits" + [printFile] header = "Datei an Drucker senden" submit = "Drucken" @@ -5565,6 +5777,70 @@ user = "Angemeldet als" saas = "Stirling Cloud" selfhosted = "Selbst gehostet" +[settings.planBilling] +currentPlan = "Aktueller Tarif" +loading = "Abrechnungsinformationen werden geladen..." +notAvailable = "Tarif & Abrechnung ist nur verfügbar, wenn Sie mit Stirling Cloud verbunden sind (SaaS-Modus)." +title = "Tarif & Abrechnung" + +[settings.planBilling.billing] +manageBilling = "Abrechnung verwalten" +nextBillingDate = "Nächster Abrechnungstermin" +overageCost = "Aktuelle Mehrverbrauchskosten: {{amount}} ({{credits}} Credits)" + +[settings.planBilling.credits] +estimatedCost = "Geschätzte Kosten: {{amount}}" +freeTierInfo = "Der Free-Tarif umfasst {{freeCredits}} Credits pro Monat. Upgraden Sie auf Team für {{teamCredits}} Credits/Monat und nutzungsbasierte Mehrverbrauchsabrechnung." +included = "{{count}} Credits/Monat (inklusive)" +noOverage = "Keine Mehrverbrauchskosten in diesem Monat. Sie nutzen Ihre enthaltenen {{count}} Credits." +overage = "+ {{count}} Mehrverbrauch" +overageInfo = "Mehrverbrauchs-Credits werden mit {{price}} pro Credit abgerechnet. Sie zahlen nur für die Nutzung über Ihr monatliches Kontingent hinaus." +title = "Credit-Nutzung" + +[settings.planBilling.errors] +fetchFailed = "Abrechnungsdaten konnten nicht abgerufen werden" +retry = "Erneut versuchen" + +[settings.planBilling.status] +active = "Aktiv" +canceled = "Gekündigt" +pastDue = "Überfällig" +trial = "Testphase" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Individuelle Enterprise-Funktionen und Support" +free = "Free" +freeDescription = "50 Credits pro Monat" +team = "Team" +teamBadge = "Team" +teamDescription = "500 Credits/Monat inklusive, automatische Mehrverbrauchsabrechnung für unterbrechungsfreien Service" +teamTooltipCredits = "Der Team-Tarif umfasst {{credits}} Credits/Monat." +teamTooltipFineprint = "Sie zahlen nur für die Nutzung über die enthaltenen Credits hinaus." +teamTooltipOverage = "Automatische Mehrverbrauchsabrechnung zu {{price}}/Credit gewährleistet einen unterbrechungsfreien Betrieb." + +[settings.planBilling.team] +managedByTeam = "Vom Team verwaltet" +memberCount = "{{count}} Teammitglieder" + +[settings.planBilling.trial] +daysRemaining = "Noch {{days}} Tage" +daysRemainingFull = "Ihre Testphase endet in {{days}} Tagen" +endDate = "Ablaufdatum: {{date}}" +endsOn = "Testphase endet" +title = "Kostenlose Testphase aktiv" + +[settings.planBilling.upgrade] +cta = "Auf Team upgraden" +featureApi = "API-Zugriff für Automatisierung" +featureCredits = "{{teamCredits}} Credits pro Monat (vs {{freeCredits}} bei Free)" +featureMembers = "Unbegrenzte Teammitglieder" +featureSupport = "Priorisierter Support" +featureThroughput = "Schnellerer Verarbeitungsdurchsatz" +opensInBrowser = "Wird im Browser geöffnet, um das Upgrade abzuschließen" +subtitle = "Auf Team upgraden für:" +title = "Tarif upgraden" + [settings.developer] apiKeys = "API-Schlüssel" title = "Entwickler" @@ -5689,6 +5965,9 @@ people = "Personen" teams = "Teams" title = "Arbeitsbereich" +[settings.team] +title = "Team" + [setup] description = "Wählen Sie, wie Sie Stirling PDF verwenden möchten, um zu starten" welcome = "Willkommen bei Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "Automatisch mit Trennblättern aufteilen" name = "Seitenteiler" tooltip = "Verwenden Sie QR-Code-Trennblätter zwischen Dokumenten beim Scannen" +[split.methods.byPoster] +name = "Druckbare Abschnitte" +desc = "Große Seiten in druckbare Größen aufteilen" +tooltip = "Übergroße Seiten in kleinere Abschnitte teilen, die für den Druck auf Standardpapier (A4, Letter usw.) geeignet sind" + [split.methods.byPages] desc = "Spezifische Seiten extrahieren (1,3,5-10)" name = "Seitenzahlen" @@ -6029,6 +6313,7 @@ tooltip = "Maximale Dateigröße angeben (z.B. 10MB, 500KB)" [split.methods.prefix] splitAt = "Aufteilen bei" splitBy = "Aufteilen nach" +splitInto = "Aufteilen in" [split.methodSelection.tooltip] bullet1 = "Klicken Sie auf eine Methodenkarte, um sie auszuwählen" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Bitte wählen Sie zuerst eine Aufteilungsmethode" chooseMethod = "Methode wählen" settings = "Einstellungen" +[split.poster] +rightToLeft = "Rechts-nach-links aufteilen" + +[split.poster.pageSize] +label = "Zielseitengröße" +description = "Größe der Ausgabeseiten für den Druck" + +[split.poster.xFactor] +label = "Horizontale Unterteilungen" +description = "Anzahl der Spalten, in die jede Seite unterteilt wird" + +[split.poster.yFactor] +label = "Vertikale Unterteilungen" +description = "Anzahl der Zeilen, in die jede Seite unterteilt wird" + [split.tooltip.byChapters] bullet1 = "Lesezeichen-Ebene: Auf welcher Ebene geteilt wird (1=oberste Ebene)" bullet2 = "Metadaten einschließen: Dokumenteigenschaften beibehalten" @@ -6085,6 +6385,14 @@ bullet5 = "Duplexmodus aktivieren, wenn beide Seiten der Trennblätter gescannt text = "Gescannte Dokumente automatisch mithilfe physischer Trennblätter mit QR-Codes teilen. Perfekt für die Verarbeitung mehrerer zusammen gescannter Dokumente." title = "Mit Seiten-Trennblättern teilen" +[split.tooltip.byPoster] +bullet1 = "Zielseitengröße: Ausgabe-Papiergröße wählen (A4, Letter usw.)" +bullet2 = "Horizontale/Vertikale Unterteilungen: Rastergröße zum Aufteilen" +bullet3 = "Rechts-nach-Links: Spaltenreihenfolge für RTL-Layouts umkehren" +bullet4 = "Drucken und die Teile zusammensetzen, um Ihr Poster zu erstellen" +text = "Große PDF-Seiten in kleinere, druckbare Abschnitte aufteilen, geeignet für Standardpapiergrößen. Perfekt, um aus übergroßen Seiten Poster zu erstellen." +title = "Für Posterdruck aufteilen" + [split.tooltip.byPages] bullet1 = "Einzelne Teilungspunkte: 3,7 (teilt nach Seite 3 und 7)" bullet2 = "Bereichs-Teilungspunkte: 3-8 (teilt vor Seite 3 und nach Seite 8)" @@ -6364,9 +6672,13 @@ tags = "webaufnahme,seite speichern,web-zu-dokument,archiv" title = "URL zu PDF" [usage] +aboutUsageAnalytics = "Info zu Nutzungsanalysen" +configureSettings = "Analyse-Einstellungen konfigurieren" error = "Fehler beim Laden der Nutzungsstatistiken" noData = "Keine Daten verfügbar" noDataMessage = "Derzeit sind keine Nutzungsstatistiken verfügbar." +usageAnalyticsExplanation = "Nutzungsanalysen erfassen Endpoint-Anfragen und Tool-Nutzungsmuster. In Kombination mit dem Audit-Logging-Dashboard erhalten Sie volle Transparenz über Systemaktivitäten, Leistung und Sicherheitsereignisse." +viewAuditLogs = "Audit-Protokolle anzeigen" [usage.chart] title = "Endpunkt-Nutzungsdiagramm" @@ -6947,3 +7259,278 @@ cancel = "Abbrechen" confirm = "Extrahieren" message = "Dieses ZIP enthält {{count}} Dateien. Trotzdem extrahieren?" title = "Große ZIP-Datei" + +[cloudBadge] +tooltip = "Dieser Vorgang verwendet Ihre Cloud-Credits" + +[team] +cancelInviteError = "Einladung konnte nicht storniert werden" +confirmCancelInvite = "Sind Sie sicher, dass Sie diese Einladung stornieren möchten?" +confirmLeave = "Sind Sie sicher, dass Sie dieses Team verlassen möchten?" +confirmLeaveLeader = "Als Teamleiter werden Sie beim Verlassen aus dem Team entfernt. Sind Sie sicher?" +confirmRemove = "Sind Sie sicher, dass Sie dieses Mitglied entfernen möchten?" +editName = "Teamnamen bearbeiten" +inviteCancelled = "Einladung storniert" +inviteError = "Einladung konnte nicht gesendet werden" +inviteSent = "Einladung erfolgreich gesendet" +leader = "Teamleiter" +leaveButton = "Team verlassen" +leaveError = "Team konnte nicht verlassen werden" +leaveSuccess = "Erfolgreich aus dem Team ausgetreten" +loading = "Teaminformationen werden geladen..." +memberCount = "{{count}} Mitglieder" +memberRemoved = "Mitglied erfolgreich entfernt" +namePlaceholder = "Teamnamen eingeben" +personal = "Persönlich" +removeError = "Mitglied konnte nicht entfernt werden" +renameError = "Team konnte nicht umbenannt werden" +renameSuccess = "Team erfolgreich umbenannt" + +[team.invitationBanner] +message = "hat Sie eingeladen, beizutreten" +acceptButton = "Annehmen" +rejectButton = "Ablehnen" + +[team.features] +badge = "Teamfunktionen" +subtitle = "Mit Ihrem Team zusammenarbeiten" +title = "Team-Zusammenarbeit" +viewPlans = "Pläne anzeigen" + +[team.features.billing] +description = "Abrechnung und Abonnements verwalten" +title = "Abrechnungsverwaltung" + +[team.features.credits] +description = "Gemeinsamer Credit-Pool für alle Mitglieder" +title = "Gemeinsame Credits" + +[team.features.dashboard] +description = "Teamaktivitäten und -nutzung anzeigen" +title = "Team-Dashboard" + +[team.features.invite] +description = "Mitglieder zu Ihrem Team hinzufügen" +title = "Mitglieder einladen" + +[team.invite] +cancelLabel = "Abbrechen" +invalidEmail = "Ungültige E-Mail-Adresse" +placeholder = "E-Mail-Adresse eingeben" +sendButton = "Einladung senden" +title = "Teammitglied einladen" + +[team.members] +emailColumn = "E-Mail" +empty = "Noch keine Teammitglieder" +nameColumn = "Name" +pending = "Ausstehend" +remove = "Entfernen" +roleColumn = "Rolle" +title = "Teammitglieder" + +[team.upgrade] +button = "Auf Team upgraden" +description = "Team-Kollaborationsfunktionen freischalten" +title = "Auf Team-Tarif upgraden" + +[provider.oauth2.google] +scope = "Anmeldeauthentifizierung" + +[provider.oauth2.google.clientId] +label = "Client ID" +description = "Die OAuth2 Client ID aus der Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Client Secret" +description = "Das OAuth2 Client Secret aus der Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Scopes" +description = "Kommagetrennte OAuth2-Scopes" + +[provider.oauth2.google.useAsUsername] +label = "Als Benutzername verwenden" +description = "Feld, das als Benutzername verwendet wird (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Anmeldeauthentifizierung" + +[provider.oauth2.github.clientId] +label = "Client ID" +description = "Die OAuth2 Client ID aus den GitHub Developer Settings" + +[provider.oauth2.github.clientSecret] +label = "Client Secret" +description = "Das OAuth2 Client Secret aus den GitHub Developer Settings" + +[provider.oauth2.github.scopes] +label = "Scopes" +description = "Kommagetrennte OAuth2-Scopes" + +[provider.oauth2.github.useAsUsername] +label = "Als Benutzername verwenden" +description = "Feld, das als Benutzername verwendet wird (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Issuer-URL" +description = "URL des OpenID Connect Discovery-Endpunkts des Keycloak-Realm" + +[provider.oauth2.keycloak.clientId] +label = "Client ID" +description = "Die OAuth2 Client ID aus Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Client Secret" +description = "Das OAuth2 Client Secret aus Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "Scopes" +description = "Kommagetrennte OAuth2-Scopes" + +[provider.oauth2.keycloak.useAsUsername] +label = "Als Benutzername verwenden" +description = "Feld, das als Benutzername verwendet wird (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "Generisches OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Generisches OAuth2 aktivieren" +description = "Authentifizierung mit einem benutzerdefinierten OAuth2-Anbieter aktivieren" + +[provider.oauth2.generic.provider] +label = "Anbietername" +description = "Der Name Ihres OAuth2-Anbieters (z. B. Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "Issuer-URL" +description = "Anbieter, der OpenID Connect Discovery unterstützt (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "Client ID" +description = "Die OAuth2 Client ID Ihres Anbieters" + +[provider.oauth2.generic.clientSecret] +label = "Client Secret" +description = "Das OAuth2 Client Secret Ihres Anbieters" + +[provider.oauth2.generic.scopes] +label = "Scopes" +description = "Kommagetrennte OAuth2-Scopes" + +[provider.oauth2.generic.useAsUsername] +label = "Als Benutzername verwenden" +description = "Feld, das als Benutzername verwendet wird" + +[provider.oauth2.generic.autoCreateUser] +label = "Benutzer automatisch erstellen" +description = "Benutzerkonten beim ersten OAuth2-Login automatisch erstellen" + +[provider.oauth2.generic.blockRegistration] +label = "Registrierung blockieren" +description = "Neue Benutzerregistrierung via OAuth2 verhindern" + +[provider.smtp] +name = "SMTP-Mail" +scope = "E-Mail-Benachrichtigungen" + +[provider.smtp.enabled] +label = "E-Mail aktivieren" +description = "E-Mail-Benachrichtigungen und SMTP-Funktionalität aktivieren" + +[provider.smtp.host] +label = "SMTP-Host" +description = "Der Hostname oder die IP-Adresse Ihres SMTP-Servers" + +[provider.smtp.port] +label = "SMTP-Port" +description = "Die Portnummer für die SMTP-Verbindung (typisch 25, 465 oder 587)" + +[provider.smtp.username] +label = "SMTP-Benutzername" +description = "Benutzername für die SMTP-Authentifizierung" + +[provider.smtp.password] +label = "SMTP-Passwort" +description = "Passwort für die SMTP-Authentifizierung" + +[provider.smtp.from] +label = "Absenderadresse" +description = "Die E-Mail-Adresse, die als Absender verwendet werden soll" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "SAML2 aktivieren" +description = "SAML2-Authentifizierung aktivieren (nur Enterprise)" + +[provider.saml2.provider] +label = "Anbietername" +description = "Der Name Ihres SAML2-Anbieters" + +[provider.saml2.registrationId] +label = "Registrierungs-ID" +description = "Der Name Ihrer Service Provider (SP)-App" + +[provider.saml2.idpMetadataUri] +label = "IDP-Metadaten-URI" +description = "Die URI für die Metadaten Ihres Anbieters" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login-URL" +description = "Die URL zum Initiieren von SSO" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout-URL" +description = "Die URL zum Initiieren von SLO" + +[provider.saml2.idpIssuer] +label = "IDP-Issuer" +description = "Die ID Ihres Anbieters" + +[provider.saml2.idpCert] +label = "IDP-Zertifikat" +description = "Zertifikatspfad (z. B. classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Privater Schlüssel" +description = "Pfad zu Ihrem privaten Schlüssel" + +[provider.saml2.spCert] +label = "SP-Zertifikat" +description = "Pfad zu Ihrem Signaturzertifikat" + +[provider.saml2.autoCreateUser] +label = "Benutzer automatisch erstellen" +description = "Benutzerkonten beim ersten SAML2-Login automatisch erstellen" + +[provider.saml2.blockRegistration] +label = "Registrierung blockieren" +description = "Neue Benutzerregistrierung via SAML2 verhindern" + +[provider.googledrive] +name = "Google Drive" +scope = "Dateiimport" + +[provider.googledrive.enabled] +label = "Google Drive-Dateiauswahl aktivieren" +description = "Benutzern erlauben, Dateien direkt aus Google Drive zu importieren" + +[provider.googledrive.clientId] +label = "Client ID" +description = "Google OAuth 2.0 Client ID aus der Google Cloud Console" + +[provider.googledrive.apiKey] +label = "API Key" +description = "Google API Key für die Google Picker API aus der Google Cloud Console" + +[provider.googledrive.appId] +label = "App-ID" +description = "Google Drive App-ID aus der Google Cloud Console" diff --git a/frontend/public/locales/el-GR/translation.toml b/frontend/public/locales/el-GR/translation.toml index f676548dd..e8d329687 100644 --- a/frontend/public/locales/el-GR/translation.toml +++ b/frontend/public/locales/el-GR/translation.toml @@ -96,6 +96,8 @@ pin = "Καρφίτσωμα αρχείου (παραμένει ενεργό με poweredBy = "Με την υποστήριξη του" pro = "Pro" processTimeWarning = "Προειδοποίηση: Αυτή η διαδικασία μπορεί να διαρκέσει έως ένα λεπτό ανάλογα με το μέγεθος του αρχείου" +processingComplete = "Το αρχείο σας είναι έτοιμο." +processingCompleteMultiple = "{{count}} αρχεία είναι έτοιμα." property = "Ιδιότητα" quickPosition = "Γρήγορη θέση" red = "Κόκκινο" @@ -105,6 +107,7 @@ save = "Αποθήκευση" saveToBrowser = "Αποθήκευση στον περιηγητή" saveUnavailable = "Η αποθήκευση δεν είναι διαθέσιμη για αυτό το στοιχείο" seeDockerHub = "Δείτε το Docker Hub" +editSecret = "Επεξεργασία αυτής της τιμής" selectFillter = "-- Επιλέξτε --" size = "Μέγεθος" sponsor = "Χορηγός" @@ -651,6 +654,7 @@ description = "Ρυθμίστε εξωτερικούς παρόχους ελέγ disconnect = "Αποσύνδεση" disconnected = "Ο πάροχος αποσυνδέθηκε με επιτυχία" disconnectError = "Αποτυχία αποσύνδεσης παρόχου" +documentation = "Προβολή τεκμηρίωσης" imageResolutionFull = "Πλήρης (Αρχικό μέγεθος)" imageResolutionReduced = "Μειωμένη (Μέχρι 1200px)" linkedServices = "Συνδεδεμένες υπηρεσίες" @@ -964,6 +968,18 @@ label = "Προεπιλεγμένη γλώσσα/τοπικότητα" description = "Μέγιστο μέγεθος μεταφόρτωσης αρχείου (π.χ., 100MB, 1GB)" label = "Όριο μεταφόρτωσης αρχείων" +[admin.settings.general.hideDisabledTools] +description = "Απόκρυψη απενεργοποιημένων εργαλείων από τη διεπαφή" +label = "Απόκρυψη απενεργοποιημένων εργαλείων" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Απόκρυψη του κουμπιού Google Drive όταν δεν είναι ενεργό" +label = "Απόκρυψη Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Απόκρυψη του κουμπιού σαρωτή QR για κινητά όταν δεν είναι ενεργό" +label = "Απόκρυψη κινητού σαρωτή" + [admin.settings.general.frontendUrl] description = "Βασικό URL για το frontend (π.χ., https://pdf.example.com). Χρησιμοποιείται για συνδέσμους πρόσκλησης email και μεταφορές μέσω QR από κινητό. Αφήστε κενό για χρήση του backend URL." label = "Frontend URL" @@ -1148,6 +1164,8 @@ title = "Ασφάλεια" [admin.settings.security.audit] label = "Καταγραφή ελέγχου" +showDetails = "Εμφάνιση λεπτομερειών επιπέδου ελέγχου" +hideDetails = "Απόκρυψη λεπτομερειών επιπέδου ελέγχου" [admin.settings.security.audit.enabled] description = "Παρακολούθηση ενεργειών χρηστών και συμβάντων συστήματος για συμμόρφωση και ασφάλεια" @@ -1157,10 +1175,32 @@ label = "Ενεργοποίηση καταγραφής ελέγχου" description = "0=OFF, 1=BASIC, 2=STANDARD, 3=VERBOSE" label = "Επίπεδο ελέγχου" +[admin.settings.security.audit.levelDetails] +off = "Χωρίς καταγραφή ελέγχου (εκτός από κρίσιμα συμβάντα ασφαλείας)" +basic = "Λειτουργίες αρχείων PDF (συμπίεση, διαίρεση, συγχώνευση κ.λπ.) και αλλαγές ρυθμίσεων. Καταγράφει: κατάσταση λειτουργίας (επιτυχία/αποτυχία), παραμέτρους μεθόδου, χρονισμούς. Ελάχιστος όγκος καταγραφών." +standard = "Συμβάντα BASIC συν: σύνδεση/αποσύνδεση χρήστη, αλλαγές λογαριασμού, γενικά αιτήματα GET. Εξαιρεί συνεχείς κλήσεις polling (/auth/me, /app-config, /health, κ.λπ.) για μείωση θορύβου. Ιδανικό για τις περισσότερες εγκαταστάσεις." +verbose = "Συμβάντα STANDARD συν: συνεχείς κλήσεις polling, όλα τα αιτήματα GET, λεπτομερείς χρονισμοί. Προσοχή: υψηλός όγκος καταγραφών και επίπτωση στην απόδοση." + [admin.settings.security.audit.retentionDays] description = "Αριθμός ημερών διατήρησης των καταγραφών ελέγχου" label = "Διατήρηση αρχείων ελέγχου (ημέρες)" +[admin.settings.security.audit.advancedOptions] +title = "Προηγμένες επιλογές" +description = "Οι παρακάτω επιλογές αυξάνουν τον χρόνο επεξεργασίας και τη χρήση μνήμης. Ενεργοποιήστε μόνο αν είναι πραγματικά απαραίτητο." + +[admin.settings.security.audit.captureFileHash] +description = "Εξαγωγή κατακερματισμού SHA-256 των ανεβασμένων αρχείων PDF για επαλήθευση ακεραιότητας. Ανεξάρτητα από το επίπεδο ελέγχου." +label = "Καταγραφή κατακερματισμού αρχείου (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Εξαγωγή πεδίου συγγραφέα από έγγραφα PDF κατά την επεξεργασία. Απαιτεί ανάλυση PDF, αυξάνει την καθυστέρηση. Ανεξάρτητα από το επίπεδο ελέγχου." +label = "Καταγραφή μεταδεδομένων συγγραφέα PDF" + +[admin.settings.security.audit.captureOperationResults] +description = "Καταγραφή τιμών επιστροφής μεθόδων. Δεν συνιστάται: αυξάνει σημαντικά τον όγκο καταγραφών και τη χρήση δίσκου." +label = "Καταγραφή αποτελεσμάτων λειτουργιών" + [admin.settings.security.csrfDisabled] description = "Απενεργοποίηση προστασίας Cross-Site Request Forgery (δεν συνιστάται)" label = "Απενεργοποίηση προστασίας CSRF" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "Ρύθμιση καταγραφής ελέγχου" +configureAuditMessage = "Προσαρμόστε το επίπεδο καταγραφής ελέγχου, την περίοδο διατήρησης και άλλες ρυθμίσεις στην ενότητα Ασφάλεια & Έλεγχος ταυτότητας." disabled = "Η καταγραφή ελέγχου είναι απενεργοποιημένη" disabledMessage = "Ενεργοποιήστε την καταγραφή ελέγχου στις ρυθμίσεις της εφαρμογής για παρακολούθηση συμβάντων συστήματος." enterpriseRequired = "Απαιτείται άδεια Enterprise" enterpriseRequiredMessage = "Το σύστημα καταγραφής ελέγχου είναι λειτουργία enterprise. Αναβαθμίστε σε άδεια Enterprise για πρόσβαση σε αρχεία καταγραφής ελέγχου και αναλυτικά στοιχεία." +goToSettings = "Μετάβαση στις ρυθμίσεις ελέγχου" notAvailable = "Το σύστημα ελέγχου δεν είναι διαθέσιμο" notAvailableMessage = "Το σύστημα ελέγχου δεν έχει ρυθμιστεί ή δεν είναι διαθέσιμο." -[audit.charts] -byType = "Συμβάντα ανά τύπο" -byUser = "Συμβάντα ανά χρήστη" -day = "Ημέρα" -error = "Σφάλμα φόρτωσης γραφημάτων" -month = "Μήνας" -overTime = "Συμβάντα με την πάροδο του χρόνου" -title = "Πίνακας ελέγχου ελέγχου" -week = "Εβδομάδα" - [audit.error] title = "Σφάλμα φόρτωσης συστήματος ελέγχου" -[audit.events] -actions = "Ενέργειες" -clearFilters = "Εκκαθάριση" -details = "Λεπτομέρειες" -endDate = "Ημερομηνία λήξης" -error = "Σφάλμα κατά τη φόρτωση των συμβάντων" -eventDetails = "Λεπτομέρειες συμβάντος" -filterByType = "Φιλτράρισμα ανά τύπο" -filterByUser = "Φιλτράρισμα ανά χρήστη" -ipAddress = "Διεύθυνση IP" -noEvents = "Δεν βρέθηκαν συμβάντα" -startDate = "Ημερομηνία έναρξης" -timestamp = "Χρονοσήμανση" -title = "Συμβάντα ελέγχου" -type = "Τύπος" -user = "Χρήστης" -viewDetails = "Προβολή λεπτομερειών" - [audit.export] clearFilters = "Εκκαθάριση" description = "Εξαγωγή συμβάντων ελέγχου σε μορφή CSV ή JSON. Χρησιμοποιήστε φίλτρα για να περιορίσετε τα εξαγόμενα δεδομένα." endDate = "Ημερομηνία λήξης" error = "Αποτυχία εξαγωγής δεδομένων" exportButton = "Εξαγωγή δεδομένων" +fieldAuthor = "Συγγραφέας (από PDF)" +fieldDate = "Ημερομηνία" +fieldDocumentName = "Όνομα εγγράφου" +fieldFileHash = "Κατακερματισμός αρχείου (SHA-256)" +fieldIpAddress = "Διεύθυνση IP" +fieldOperationResults = "Αποτελέσματα λειτουργίας" +fieldOutcome = "Αποτέλεσμα (Επιτυχία/Αποτυχία)" +fieldTool = "Εργαλείο" +fieldUsername = "Όνομα χρήστη" filterByType = "Φιλτράρισμα ανά τύπο" filterByUser = "Φιλτράρισμα ανά χρήστη" filters = "Φίλτρα (Προαιρετικά)" format = "Μορφή εξαγωγής" +selectFields = "Επιλογή πεδίων προς συμπερίληψη" startDate = "Ημερομηνία έναρξης" title = "Εξαγωγή δεδομένων ελέγχου" +verboseRequired = "Απαιτεί επίπεδο ελέγχου VERBOSE" [audit.systemStatus] +autoRefresh = "Αυτόματη ανανέωση" +autoRefreshLabel = "Αυτόματη ανανέωση κάθε 30 δευτ." +captureBySettings = "Ενεργοποίηση από τις ρυθμίσεις" +capturedFields = "Καταγεγραμμένα πεδία" +date = "Ημερομηνία" days = "ημέρες" disabled = "Ανενεργή" +documentName = "Όνομα εγγράφου" enabled = "Ενεργή" +fileHash = "Κατακερματισμός αρχείου" level = "Επίπεδο ελέγχου" +pdfAuthor = "Συγγραφέας PDF" retention = "Περίοδος διατήρησης" status = "Καταγραφή ελέγχου" title = "Κατάσταση συστήματος" +tool = "Εργαλείο" totalEvents = "Σύνολο συμβάντων" +username = "Όνομα χρήστη" +verboseOnly = "Μόνο VERBOSE" + +[audit.stats] +activeUsers = "Ενεργοί χρήστες" +attention = "Απαιτεί προσοχή" +avgLatency = "Μέση καθυστέρηση" +error = "Σφάλμα φόρτωσης στατιστικών" +errorLoadingStats = "Αποτυχία φόρτωσης στατιστικών" +excellent = "Άριστο" +good = "Καλό" +noData = "N/A" +successRate = "Ποσοστό επιτυχίας" +title = "Σύνοψη" +totalEvents = "Συνολικά συμβάντα" +vsLastPeriod = "σε σχέση με την προηγούμενη περίοδο" + +[audit.charts] +byTool = "Κορυφαία χρησιμοποιούμενα εργαλεία" +byType = "Συμβάντα ανά τύπο" +byUser = "Συμβάντα ανά χρήστη" +day = "Ημέρα" +error = "Σφάλμα φόρτωσης γραφημάτων" +hourlyActivity = "Ωριαία δραστηριότητα" +month = "Μήνας" +noData = "Δεν υπάρχουν δεδομένα για αυτήν την περίοδο" +overTime = "Συμβάντα με την πάροδο του χρόνου" +title = "Πίνακας ελέγχου ελέγχου" +week = "Εβδομάδα" + +[audit.events] +actions = "Ενέργειες" +author = "Συγγραφέας" +clearFilters = "Εκκαθάριση" +details = "Λεπτομέρειες" +documentName = "Έγγραφο" +endDate = "Ημερομηνία λήξης" +error = "Σφάλμα κατά τη φόρτωση των συμβάντων" +eventDetails = "Λεπτομέρειες συμβάντος" +failure = "Αποτυχία" +fileHash = "Κατακερματισμός αρχείου" +filterByType = "Φιλτράρισμα ανά τύπο" +filterByUser = "Φιλτράρισμα ανά χρήστη" +ipAddress = "Διεύθυνση IP" +noEvents = "Δεν βρέθηκαν συμβάντα" +outcome = "Κατάσταση" +sortAsc = "Αύξουσα ταξινόμηση" +sortDesc = "Φθίνουσα ταξινόμηση" +startDate = "Ημερομηνία έναρξης" +success = "Επιτυχία" +timestamp = "Χρονοσήμανση" +title = "Συμβάντα ελέγχου" +type = "Τύπος" +user = "Χρήστης" +viewDetails = "Προβολή λεπτομερειών" + +[audit.filters] +allOutcomes = "Όλα" +failureOnly = "Μόνο αποτυχίες" +last7Days = "Τελευταίες 7 ημέρες" +last30Days = "Τελευταίες 30 ημέρες" +outcomeFilter = "Αποτέλεσμα" +quickPresets = "Γρήγορα φίλτρα" +successOnly = "Μόνο επιτυχίες" +thisMonth = "Αυτόν τον μήνα" +today = "Σήμερα" [audit.tabs] +clearData = "Καθαρισμός δεδομένων" dashboard = "Πίνακας ελέγχου" events = "Συμβάντα ελέγχου" export = "Εξαγωγή" +[audit.clearData] +cancel = "Ακύρωση" +codeDoesNotMatch = "Ο κωδικός δεν ταιριάζει" +codePlaceholder = "Πληκτρολογήστε τον κωδικό εδώ" +confirmationCode = "Κωδικός επιβεβαίωσης" +confirmationRequired = "Διαγραφή όλων των δεδομένων ελέγχου" +confirmMessage = "Αυτό θα αφαιρέσει μόνιμα όλα τα αρχεία καταγραφής ελέγχου. Εισαγάγετε τον κωδικό επιβεβαίωσης παρακάτω για να συνεχίσετε." +confirmTitle = "Επιβεβαιώστε ότι θέλετε να διαγράψετε" +deleteButton = "Διαγραφή" +enterCode = "Κωδικός επιβεβαίωσης" +enterCodeBelow = "Εισαγάγετε τον κωδικό ακριβώς όπως εμφανίζεται παραπάνω (διάκριση πεζών-κεφαλαίων)" +initiateDelete = "Διαγραφή όλων των δεδομένων" +irreversible = "ΜΗ ΑΝΑΣΤΡΕΨΙΜΟ" +success = "Επιτυχία" +successMessage = "Όλα τα δεδομένα ελέγχου διαγράφηκαν με επιτυχία" +warning1 = "Αυτή η ενέργεια δεν μπορεί να αναιρεθεί" +warning2 = "Η διαγραφή δεδομένων ελέγχου θα αφαιρέσει οριστικά όλα τα ιστορικά αρχεία καταγραφής ελέγχου, συμπεριλαμβανομένων συμβάντων ασφαλείας, δραστηριοτήτων χρηστών και λειτουργιών αρχείων από τη βάση δεδομένων." + [auth] accessDenied = "Απαγορεύεται η πρόσβαση" insufficientPermissions = "Δεν έχετε άδεια για αυτή την ενέργεια." @@ -2254,9 +2374,11 @@ copy = "Αντιγραφή" done = "Τέλος" error = "Σφάλμα" expand = "Ανάπτυξη" +learnMore = "Μάθετε περισσότερα" lines = "γραμμές" loading = "Φόρτωση..." next = "Επόμενο" +operation = "αυτή τη λειτουργία" preview = "Προεπισκόπηση" previous = "Προηγούμενο" refresh = "Ανανέωση" @@ -2920,6 +3042,7 @@ copyStack = "Αντιγραφή ίχνους στοίβας" discordSubmit = "Discord - Υποβολή αιτήματος υποστήριξης" dismissAllErrors = "Απόρριψη όλων των σφαλμάτων" encryptedPdfMustRemovePassword = "Αυτό το PDF είναι κρυπτογραφημένο ή προστατευμένο με κωδικό. Ξεκλειδώστε το πριν από τη μετατροπή σε PDF/A." +generic = "Παρουσιάστηκε σφάλμα" github = "Υποβολή ticket στο GitHub" githubSubmit = "GitHub - Υποβολή ticket" incorrectPasswordProvided = "Ο κωδικός πρόσβασης του PDF είναι εσφαλμένος ή δεν δόθηκε." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Η συνδρομή σας αναβαθμίστηκε upgradeSuccess = "Πληρωμή επιτυχής! Η συνδρομή σας αναβαθμίστηκε. Η άδεια ενημερώθηκε στον διακομιστή σας. Θα λάβετε σύντομα email επιβεβαίωσης." upgradeTitle = "Αναβάθμιση σε {{planName}}" yearly = "Ετήσια" +checkoutOpened = "Το ταμείο άνοιξε στον περιηγητή" +checkoutInstructions = "Ολοκληρώστε την αγορά σας στο παράθυρο περιηγητή που μόλις άνοιξε. Μετά την ολοκλήρωση της πληρωμής, επιστρέψτε εδώ και κάντε κλικ στο παρακάτω κουμπί για να ανανεώσετε τις πληροφορίες χρέωσης." +refreshBilling = "Ολοκλήρωσα την πληρωμή - Ανανέωση χρέωσης" +closeLater = "Θα το κάνω αργότερα" [payment.emailStage] continue = "Συνέχεια" @@ -4679,6 +4806,13 @@ prompt = "Επιλέξτε σελίδα για εξαγωγή πίνακα" submit = "Εξαγωγή" title = "PDF σε CSV" +[PDFToXLSX] +header = "PDF σε Excel" +prompt = "Επιλέξτε σελίδες για εξαγωγή πινάκων" +submit = "Μετατροπή" +title = "PDF σε Excel (XLSX)" +tags = "υπολογιστικό φύλλο,excel,xlsx,πίνακας,εξαγωγή,μετατροπή" + [PDFToHTML] credit = "Αυτή η υπηρεσία χρησιμοποιεί το pdftohtml για μετατροπή αρχείων." header = "PDF σε HTML" @@ -4835,6 +4969,7 @@ customPricing = "Προσαρμοσμένο" featureComparison = "Σύγκριση λειτουργιών" from = "Από" hideComparison = "Απόκρυψη σύγκρισης λειτουργιών" +included = "Περιλαμβάνεται" includedInCurrent = "Περιλαμβάνεται στο πλάνο σας" licensedSeats = "Αδειοδοτημένες: {{count}} θέσεις" manage = "Διαχείριση" @@ -4852,9 +4987,11 @@ title = "Ενεργό πλάνο" [plan.availablePlans] subtitle = "Επιλέξτε το πλάνο που ταιριάζει στις ανάγκες σας" +loadError = "Δεν ήταν δυνατή η φόρτωση τιμών πλάνων. Χρήση προεπιλεγμένων τιμών." title = "Διαθέσιμα πλάνα" [plan.enterprise] +siteLicense = "Site License" highlight1 = "Προσαρμοσμένη τιμολόγηση" highlight2 = "Αποκλειστική υποστήριξη" highlight3 = "Τελευταίες λειτουργίες" @@ -4928,6 +5065,81 @@ keyDescription = "Επικολλήστε το κλειδί άδειας από success = "Η άδεια ενεργοποιήθηκε!" successMessage = "Η άδειά σας ενεργοποιήθηκε με επιτυχία. Μπορείτε τώρα να κλείσετε αυτό το παράθυρο." +[plan.team] +name = "Team" +siteLicense = "Site License" + +[credits] +enableOverageBilling = "Ενεργοποίηση χρέωσης υπέρβασης" +maybeLater = "Ίσως αργότερα" +upgrade = "Αναβάθμιση" + +[credits.modal] +advancedMonitoring = "Προηγμένη παρακολούθηση" +allInOneWorkspace = "Ενιαίος χώρος εργασίας PDF (προβολέας, εργαλεία & agent)" +apiSandbox = "API sandbox" +contactSales = "Επικοινωνία με Πωλήσεις" +creditsRemaining = "Απομένουν {{current}} από {{total}}" +creditsThisMonth = "Μηνιαίες πιστώσεις" +current = "Τρέχον πλάνο" +customPricing = "Προσαρμοσμένη" +customSmartFolders = "Προσαρμοσμένοι Έξυπνοι Φάκελοι" +dedicatedSupportSlas = "Αφοσιωμένη υποστήριξη & SLA" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Ό,τι στο Credits, συν:" +everythingInFree = "Ό,τι στο Free, συν:" +fasterThroughput = "10x ταχύτερος ρυθμός επεξεργασίας" +forRegularWork = "Για τακτική εργασία με PDF:" +freeTier = "Free Tier" +fullyPrivateFiles = "Πλήρως ιδιωτικά αρχεία" +largeFileProcessing = "Επεξεργασία μεγάλων αρχείων" +managedMemberMessage = "Έχετε απεριόριστη πρόσβαση σε πιστώσεις μέσω της ομάδας σας. Αν χρειάζεστε βοήθεια, επικοινωνήστε με τον επικεφαλής της ομάδας σας." +managedMemberTitle = "Απεριόριστες πιστώσεις" +meteringBillingNote = "Οι πιστώσεις υπέρβασης χρεώνονται μηνιαίως μαζί με τη συνδρομή Team. Παρακολουθήστε τη χρήση σας οποιαδήποτε στιγμή στις ρυθμίσεις λογαριασμού." +meteringExplanation = "Το πλάνο Team περιλαμβάνει {{credits}} πιστώσεις τον μήνα. Όταν εξαντληθούν, η χρέωση υπέρβασης παρέχει αυτόματα επιπλέον πιστώσεις ώστε να μη χρειαστεί ποτέ να σταματήσετε να εργάζεστε." +meteringIncluded = "{{credits}} πιστώσεις/μήνα περιλαμβάνονται με το Team" +meteringNoCommitment = "Χωρίς δέσμευση, ακυρώνετε οποτεδήποτε" +meteringNeverRunOut = "Μην ξεμείνετε ποτέ από πιστώσεις" +meteringPayAsYouGo = "Πληρώνετε μόνο ό,τι χρησιμοποιείτε" +meteringPrice = "Επιπλέον πιστώσεις με {{price}}/πίστωση" +meteringTitle = "Χρέωση υπέρβασης ανά χρήση" +monthlyCredits = "μηνιαίες πιστώσεις" +orgWideAccess = "Έλεγχοι πρόσβασης σε όλο τον οργανισμό" +overage = "υπέρβαση" +perMonth = "/μήνα" +popular = "Δημοφιλές" +premiumAiModels = "Premium μοντέλα AI" +prioritySupport = "Υποστήριξη προτεραιότητας" +privateDocCloud = "Ιδιωτικό Document Cloud" +ragFineTuning = "RAG + fine-tuning" +secureApiAccess = "Ασφαλής πρόσβαση API" +selfHostLink = "Δείτε την τεκμηρίωση και τα πλάνα" +selfHostPrompt = "Θέλετε να το φιλοξενήσετε μόνοι σας;" +standardThroughput = "Τυπικός ρυθμός επεξεργασίας" +subtitle = "Αναβαθμίστε σε Team για 10x τις πιστώσεις και ταχύτερη επεξεργασία." +subtitlePro = "Ενεργοποιήστε αυτόματη χρέωση υπέρβασης ώστε να μην ξεμείνετε ποτέ από πιστώσεις." +teamLeaderOnly = "Μόνο οι επικεφαλής ομάδας μπορούν να ενεργοποιήσουν τη χρέωση υπέρβασης" +teamSubscription = "Team" +titleExhausted = "Έχετε χρησιμοποιήσει τις δωρεάν πιστώσεις σας" +titleExhaustedPro = "Έχετε εξαντλήσει τις πιστώσεις σας" +unlimitedApiAccess = "Απεριόριστη πρόσβαση API" +unlimitedMonthlyCredits = "Site License" +unlimitedSeats = "Απεριόριστες θέσεις" + +[credits.modal.features] +everythingInCredits = "Ό,τι στο Credits, συν:" +everythingInFree = "Ό,τι στο Free, συν:" +forRegularWork = "Για τακτική εργασία με PDF:" + +[credits.insufficient] +brief = "Μη επαρκείς πιστώσεις. Χρειάζεστε {{required}} πιστώσεις αλλά έχετε {{current}}." +freeTier = "Αναβαθμίστε σε Team για 10x περισσότερες πιστώσεις και απεριόριστη χρέωση υπέρβασης." +managedMember = "Επικοινωνήστε με τον επικεφαλής της ομάδας σας για βοήθεια." +message = "Δεν έχετε αρκετές πιστώσεις για να εκτελέσετε το {{tool}}. Αυτή τη στιγμή έχετε {{current}} πιστώσεις." +messageWithAmount = "Χρειάζεστε {{required}} πιστώσεις για να εκτελέσετε το {{tool}}, αλλά έχετε μόνο {{current}}." +teamMember = "Ενεργοποιήστε τη χρέωση υπέρβασης ώστε να μην ξεμείνετε ποτέ από πιστώσεις." +title = "Μη επαρκείς πιστώσεις" + [printFile] header = "Εκτύπωση αρχείου σε εκτυπωτή" submit = "Εκτύπωση" @@ -5565,6 +5777,70 @@ user = "Συνδεθήκατε ως" saas = "Stirling Cloud" selfhosted = "Self-Hosted" +[settings.planBilling] +currentPlan = "Τρέχον πλάνο" +loading = "Φόρτωση πληροφοριών χρέωσης..." +notAvailable = "Το Plan & Billing είναι διαθέσιμο μόνο όταν υπάρχει σύνδεση με το Stirling Cloud (λειτουργία SaaS)." +title = "Πλάνο & Χρέωση" + +[settings.planBilling.billing] +manageBilling = "Διαχείριση χρέωσης" +nextBillingDate = "Επόμενη ημερομηνία χρέωσης" +overageCost = "Τρέχον κόστος υπέρβασης: {{amount}} ({{credits}} πιστώσεις)" + +[settings.planBilling.credits] +estimatedCost = "Εκτιμώμενο κόστος: {{amount}}" +freeTierInfo = "Το δωρεάν πλάνο περιλαμβάνει {{freeCredits}} πιστώσεις ανά μήνα. Αναβαθμίστε σε Team για {{teamCredits}} πιστώσεις/μήνα και χρέωση υπέρβασης ανά χρήση." +included = "{{count}} πιστώσεις/μήνα (περιλαμβάνονται)" +noOverage = "Καμία χρέωση υπέρβασης αυτόν τον μήνα. Χρησιμοποιείτε τις {{count}} πιστώσεις που περιλαμβάνονται." +overage = "+ {{count}} υπέρβαση" +overageInfo = "Οι πιστώσεις υπέρβασης χρεώνονται με {{price}} ανά πίστωση. Θα πληρώσετε μόνο για ό,τι χρησιμοποιείτε πέρα από το μηνιαίο σας όριο." +title = "Χρήση πιστώσεων" + +[settings.planBilling.errors] +fetchFailed = "Δεν ήταν δυνατή η ανάκτηση δεδομένων χρέωσης" +retry = "Προσπάθεια ξανά" + +[settings.planBilling.status] +active = "Ενεργό" +canceled = "Ακυρωμένο" +pastDue = "Ληξιπρόθεσμο" +trial = "Δοκιμή" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Προσαρμοσμένες δυνατότητες και υποστήριξη για επιχειρήσεις" +free = "Free" +freeDescription = "50 πιστώσεις ανά μήνα" +team = "Team" +teamBadge = "Team" +teamDescription = "500 πιστώσεις/μήνα περιλαμβάνονται, αυτόματη χρέωση υπέρβασης για αδιάλειπτη υπηρεσία" +teamTooltipCredits = "Το πλάνο Team περιλαμβάνει {{credits}} πιστώσεις/μήνα." +teamTooltipFineprint = "Πληρώνετε μόνο για ό,τι χρησιμοποιείτε πέρα από τις περιλαμβανόμενες πιστώσεις." +teamTooltipOverage = "Αυτόματη χρέωση υπέρβασης με {{price}}/πίστωση εξασφαλίζει αδιάλειπτη υπηρεσία." + +[settings.planBilling.team] +managedByTeam = "Διαχειρίζεται από την ομάδα" +memberCount = "{{count}} μέλη ομάδας" + +[settings.planBilling.trial] +daysRemaining = "Απομένουν {{days}} ημέρες" +daysRemainingFull = "Η δοκιμή σας λήγει σε {{days}} ημέρες" +endDate = "Λήγει: {{date}}" +endsOn = "Λήξη δοκιμής" +title = "Ενεργή δωρεάν δοκιμή" + +[settings.planBilling.upgrade] +cta = "Αναβάθμιση σε Team" +featureApi = "Πρόσβαση API για αυτοματοποίηση" +featureCredits = "{{teamCredits}} πιστώσεις ανά μήνα (σε σύγκριση με {{freeCredits}} στο Free)" +featureMembers = "Απεριόριστα μέλη ομάδας" +featureSupport = "Υποστήριξη προτεραιότητας" +featureThroughput = "Ταχύτερος ρυθμός επεξεργασίας" +opensInBrowser = "Ανοίγει στον περιηγητή για ολοκλήρωση της αναβάθμισης" +subtitle = "Αναβαθμίστε σε Team για:" +title = "Αναβαθμίστε το πλάνο σας" + [settings.developer] apiKeys = "API Keys" title = "Προγραμματιστής" @@ -5689,6 +5965,9 @@ people = "Άτομα" teams = "Ομάδες" title = "Χώρος εργασίας" +[settings.team] +title = "Ομάδα" + [setup] description = "Ξεκινήστε επιλέγοντας πώς θέλετε να χρησιμοποιείτε το Stirling PDF" welcome = "Καλώς ήρθατε στο Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "Αυτόματος διαχωρισμός με φύλλα διαχωρι name = "Διαχωριστικό σελίδας" tooltip = "Χρησιμοποιήστε φύλλα διαχωρισμού με QR μεταξύ εγγράφων κατά τη σάρωση" +[split.methods.byPoster] +name = "Εκτυπώσιμα τμήματα" +desc = "Διαίρεση μεγάλων σελίδων σε εκτυπώσιμα μεγέθη" +tooltip = "Διαίρεση υπερμεγεθών σελίδων σε μικρότερα τμήματα κατάλληλα για εκτύπωση σε τυπικό χαρτί (A4, Letter, κ.λπ.)" + [split.methods.byPages] desc = "Εξαγωγή συγκεκριμένων σελίδων (1,3,5-10)" name = "Αριθμοί σελίδων" @@ -6029,6 +6313,7 @@ tooltip = "Καθορίστε μέγιστο μέγεθος αρχείου (π. [split.methods.prefix] splitAt = "Διαχωρισμός στο" splitBy = "Διαχωρισμός κατά" +splitInto = "Διαίρεση σε" [split.methodSelection.tooltip] bullet1 = "Κάντε κλικ σε μια κάρτα μεθόδου για να την επιλέξετε" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Παρακαλώ επιλέξτε πρώτα μια μέθ chooseMethod = "Επιλογή μεθόδου" settings = "Ρυθμίσεις" +[split.poster] +rightToLeft = "Διαίρεση από δεξιά προς αριστερά" + +[split.poster.pageSize] +label = "Στοχευμένο μέγεθος σελίδας" +description = "Μέγεθος σελίδων εξόδου για εκτύπωση" + +[split.poster.xFactor] +label = "Οριζόντιες διαιρέσεις" +description = "Αριθμός στηλών στις οποίες θα διαιρεθεί κάθε σελίδα" + +[split.poster.yFactor] +label = "Κάθετες διαιρέσεις" +description = "Αριθμός γραμμών στις οποίες θα διαιρεθεί κάθε σελίδα" + [split.tooltip.byChapters] bullet1 = "Επίπεδο σελιδοδείκτη: Σε ποιο επίπεδο θα γίνει ο διαχωρισμός (1=ανώτατο επίπεδο)" bullet2 = "Συμπερίληψη μεταδεδομένων: Διατήρηση ιδιοτήτων εγγράφου" @@ -6085,6 +6385,14 @@ bullet5 = "Ενεργοποιήστε τη λειτουργία διπλής ό text = "Διαχωρίστε αυτόματα σκαναρισμένα έγγραφα χρησιμοποιώντας φυσικά φύλλα διαχωρισμού με QR. Ιδανικό για επεξεργασία πολλών εγγράφων που σαρώθηκαν μαζί." title = "Διαχωρισμός με διαχωριστικό σελίδας" +[split.tooltip.byPoster] +bullet1 = "Στοχευμένο μέγεθος σελίδας: Επιλέξτε μέγεθος χαρτιού εξόδου (A4, Letter, κ.λπ.)" +bullet2 = "Οριζόντιες/Κάθετες διαιρέσεις: Μέγεθος πλέγματος για διαίρεση" +bullet3 = "Δεξιά προς αριστερά: Αντιστροφή σειράς στηλών για διατάξεις RTL" +bullet4 = "Εκτυπώστε και συναρμολογήστε τα κομμάτια για να δημιουργήσετε την αφίσα σας" +text = "Διαιρέστε μεγάλες σελίδες PDF σε μικρότερα εκτυπώσιμα τμήματα κατάλληλα για τυπικά μεγέθη χαρτιού. Ιδανικό για δημιουργία αφίσας από υπερμεγέθεις σελίδες." +title = "Διαίρεση για εκτύπωση αφίσας" + [split.tooltip.byPages] bullet1 = "Μεμονωμένα σημεία διαχωρισμού: 3,7 (διαχωρίζει μετά τις σελίδες 3 και 7)" bullet2 = "Σημεία διαχωρισμού εύρους: 3-8 (διαχωρίζει πριν από τη σελίδα 3 και μετά τη σελίδα 8)" @@ -6364,9 +6672,13 @@ tags = "λήψη-ιστοσελίδας,αποθήκευση-σελίδας,web- title = "URL σε PDF" [usage] +aboutUsageAnalytics = "Σχετικά με τα αναλυτικά χρήσης" +configureSettings = "Ρύθμιση αναλυτικών" error = "Σφάλμα κατά τη φόρτωση στατιστικών χρήσης" noData = "Δεν υπάρχουν διαθέσιμα δεδομένα" noDataMessage = "Δεν υπάρχουν προς το παρόν διαθέσιμα στατιστικά χρήσης." +usageAnalyticsExplanation = "Τα αναλυτικά χρήσης παρακολουθούν αιτήματα endpoints και μοτίβα χρήσης εργαλείων. Σε συνδυασμό με τον πίνακα ελέγχου καταγραφής ελέγχου, έχετε πλήρη ορατότητα στη δραστηριότητα συστήματος, την απόδοση και τα συμβάντα ασφαλείας." +viewAuditLogs = "Προβολή αρχείων καταγραφής ελέγχου" [usage.chart] title = "Διάγραμμα χρήσης Endpoints" @@ -6947,3 +7259,278 @@ cancel = "Άκυρο" confirm = "Αποσυμπίεση" message = "Αυτό το ZIP περιέχει {{count}} αρχεία. Να γίνει αποσυμπίεση ούτως ή άλλως;" title = "Μεγάλο αρχείο ZIP" + +[cloudBadge] +tooltip = "Αυτή η λειτουργία θα χρησιμοποιήσει τις πιστώσεις cloud σας" + +[team] +cancelInviteError = "Αποτυχία ακύρωσης πρόσκλησης" +confirmCancelInvite = "Είστε βέβαιοι ότι θέλετε να ακυρώσετε αυτήν την πρόσκληση;" +confirmLeave = "Είστε βέβαιοι ότι θέλετε να αποχωρήσετε από αυτήν την ομάδα;" +confirmLeaveLeader = "Ως επικεφαλής ομάδας, αν αποχωρήσετε θα αφαιρεθείτε από την ομάδα. Είστε βέβαιοι;" +confirmRemove = "Είστε βέβαιοι ότι θέλετε να αφαιρέσετε αυτό το μέλος;" +editName = "Επεξεργασία ονόματος ομάδας" +inviteCancelled = "Η πρόσκληση ακυρώθηκε" +inviteError = "Αποτυχία αποστολής πρόσκλησης" +inviteSent = "Η πρόσκληση εστάλη με επιτυχία" +leader = "Επικεφαλής" +leaveButton = "Αποχώρηση από την ομάδα" +leaveError = "Αποτυχία αποχώρησης από την ομάδα" +leaveSuccess = "Αποχωρήσατε με επιτυχία από την ομάδα" +loading = "Φόρτωση πληροφοριών ομάδας..." +memberCount = "{{count}} μέλη" +memberRemoved = "Το μέλος αφαιρέθηκε με επιτυχία" +namePlaceholder = "Εισαγάγετε όνομα ομάδας" +personal = "Προσωπικό" +removeError = "Αποτυχία αφαίρεσης μέλους" +renameError = "Αποτυχία μετονομασίας ομάδας" +renameSuccess = "Η ομάδα μετονομάστηκε με επιτυχία" + +[team.invitationBanner] +message = "σας προσκάλεσε να συμμετάσχετε" +acceptButton = "Αποδοχή" +rejectButton = "Άρνηση" + +[team.features] +badge = "Δυνατότητες Team" +subtitle = "Συνεργαστείτε με την ομάδα σας" +title = "Συνεργασία ομάδας" +viewPlans = "Προβολή πλάνων" + +[team.features.billing] +description = "Διαχείριση χρέωσης και συνδρομών" +title = "Διαχείριση χρέωσης" + +[team.features.credits] +description = "Κοινόχρηστη δεξαμενή πιστώσεων για όλα τα μέλη" +title = "Κοινόχρηστες πιστώσεις" + +[team.features.dashboard] +description = "Προβολή δραστηριότητας και χρήσης ομάδας" +title = "Πίνακας ελέγχου ομάδας" + +[team.features.invite] +description = "Προσθέστε μέλη στην ομάδα σας" +title = "Πρόσκληση μελών" + +[team.invite] +cancelLabel = "Ακύρωση" +invalidEmail = "Μη έγκυρη διεύθυνση email" +placeholder = "Εισαγάγετε διεύθυνση email" +sendButton = "Αποστολή πρόσκλησης" +title = "Πρόσκληση μέλους ομάδας" + +[team.members] +emailColumn = "Email" +empty = "Δεν υπάρχουν ακόμη μέλη ομάδας" +nameColumn = "Όνομα" +pending = "Σε εκκρεμότητα" +remove = "Αφαίρεση" +roleColumn = "Ρόλος" +title = "Μέλη ομάδας" + +[team.upgrade] +button = "Αναβάθμιση σε Team" +description = "Ξεκλειδώστε δυνατότητες συνεργασίας ομάδας" +title = "Αναβάθμιση σε πλάνο Team" + +[provider.oauth2.google] +scope = "Έλεγχος ταυτότητας σύνδεσης" + +[provider.oauth2.google.clientId] +label = "Client ID" +description = "Το OAuth2 client ID από το Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Client Secret" +description = "Το OAuth2 client secret από το Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Πεδία πρόσβασης" +description = "Πεδία πρόσβασης OAuth2 χωρισμένα με κόμμα" + +[provider.oauth2.google.useAsUsername] +label = "Χρήση ως όνομα χρήστη" +description = "Πεδίο προς χρήση ως όνομα χρήστη (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Έλεγχος ταυτότητας σύνδεσης" + +[provider.oauth2.github.clientId] +label = "Client ID" +description = "Το OAuth2 client ID από το GitHub Developer Settings" + +[provider.oauth2.github.clientSecret] +label = "Client Secret" +description = "Το OAuth2 client secret από το GitHub Developer Settings" + +[provider.oauth2.github.scopes] +label = "Πεδία πρόσβασης" +description = "Πεδία πρόσβασης OAuth2 χωρισμένα με κόμμα" + +[provider.oauth2.github.useAsUsername] +label = "Χρήση ως όνομα χρήστη" +description = "Πεδίο προς χρήση ως όνομα χρήστη (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Issuer URL" +description = "URL του OpenID Connect Discovery endpoint του realm του Keycloak" + +[provider.oauth2.keycloak.clientId] +label = "Client ID" +description = "Το OAuth2 client ID από το Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Client Secret" +description = "Το OAuth2 client secret από το Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "Πεδία πρόσβασης" +description = "Πεδία πρόσβασης OAuth2 χωρισμένα με κόμμα" + +[provider.oauth2.keycloak.useAsUsername] +label = "Χρήση ως όνομα χρήστη" +description = "Πεδίο προς χρήση ως όνομα χρήστη (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "Generic OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Ενεργοποίηση Generic OAuth2" +description = "Ενεργοποίηση ελέγχου ταυτότητας με προσαρμοσμένο πάροχο OAuth2" + +[provider.oauth2.generic.provider] +label = "Όνομα παρόχου" +description = "Το όνομα του παρόχου OAuth2 (π.χ., Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "Issuer URL" +description = "Πάροχος που υποστηρίζει OpenID Connect Discovery (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "Client ID" +description = "Το OAuth2 client ID από τον πάροχό σας" + +[provider.oauth2.generic.clientSecret] +label = "Client Secret" +description = "Το OAuth2 client secret από τον πάροχό σας" + +[provider.oauth2.generic.scopes] +label = "Πεδία πρόσβασης" +description = "Πεδία πρόσβασης OAuth2 χωρισμένα με κόμμα" + +[provider.oauth2.generic.useAsUsername] +label = "Χρήση ως όνομα χρήστη" +description = "Πεδίο προς χρήση ως όνομα χρήστη" + +[provider.oauth2.generic.autoCreateUser] +label = "Αυτόματη δημιουργία χρηστών" +description = "Αυτόματη δημιουργία λογαριασμών χρηστών στην πρώτη σύνδεση μέσω OAuth2" + +[provider.oauth2.generic.blockRegistration] +label = "Αποκλεισμός εγγραφών" +description = "Αποτροπή νέων εγγραφών χρηστών μέσω OAuth2" + +[provider.smtp] +name = "SMTP Mail" +scope = "Ειδοποιήσεις email" + +[provider.smtp.enabled] +label = "Ενεργοποίηση email" +description = "Ενεργοποίηση ειδοποιήσεων email και λειτουργίας SMTP" + +[provider.smtp.host] +label = "Διακομιστής SMTP" +description = "Το όνομα κεντρικού υπολογιστή ή η διεύθυνση IP του διακομιστή SMTP" + +[provider.smtp.port] +label = "Θύρα SMTP" +description = "Ο αριθμός θύρας για σύνδεση SMTP (συνήθως 25, 465 ή 587)" + +[provider.smtp.username] +label = "Όνομα χρήστη SMTP" +description = "Όνομα χρήστη για έλεγχο ταυτότητας SMTP" + +[provider.smtp.password] +label = "Κωδικός πρόσβασης SMTP" +description = "Κωδικός πρόσβασης για έλεγχο ταυτότητας SMTP" + +[provider.smtp.from] +label = "Διεύθυνση αποστολέα" +description = "Η διεύθυνση email που θα χρησιμοποιείται ως αποστολέας" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "Ενεργοποίηση SAML2" +description = "Ενεργοποίηση ελέγχου ταυτότητας SAML2 (μόνο Enterprise)" + +[provider.saml2.provider] +label = "Όνομα παρόχου" +description = "Το όνομα του παρόχου SAML2" + +[provider.saml2.registrationId] +label = "Αναγνωριστικό εγγραφής" +description = "Το όνομα της εφαρμογής του Service Provider (SP)" + +[provider.saml2.idpMetadataUri] +label = "IDP Metadata URI" +description = "Το URI για τα μεταδεδομένα του παρόχου σας" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login URL" +description = "Το URL για εκκίνηση SSO" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout URL" +description = "Το URL για εκκίνηση SLO" + +[provider.saml2.idpIssuer] +label = "IDP Issuer" +description = "Το ID του παρόχου σας" + +[provider.saml2.idpCert] +label = "IDP Certificate" +description = "Η διαδρομή πιστοποιητικού (π.χ., classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Ιδιωτικό κλειδί" +description = "Η διαδρομή του ιδιωτικού σας κλειδιού" + +[provider.saml2.spCert] +label = "Πιστοποιητικό SP" +description = "Η διαδρομή του πιστοποιητικού υπογραφής σας" + +[provider.saml2.autoCreateUser] +label = "Αυτόματη δημιουργία χρηστών" +description = "Αυτόματη δημιουργία λογαριασμών χρηστών στην πρώτη σύνδεση SAML2" + +[provider.saml2.blockRegistration] +label = "Αποκλεισμός εγγραφών" +description = "Αποτροπή νέων εγγραφών χρηστών μέσω SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "Εισαγωγή αρχείων" + +[provider.googledrive.enabled] +label = "Ενεργοποίηση επιλογέα αρχείων Google Drive" +description = "Επιτρέψτε στους χρήστες να εισάγουν αρχεία απευθείας από το Google Drive" + +[provider.googledrive.clientId] +label = "Client ID" +description = "Google OAuth 2.0 Client ID από το Google Cloud Console" + +[provider.googledrive.apiKey] +label = "API Key" +description = "Google API Key για το Google Picker API από το Google Cloud Console" + +[provider.googledrive.appId] +label = "App ID" +description = "Google Drive App ID από το Google Cloud Console" diff --git a/frontend/public/locales/es-ES/translation.toml b/frontend/public/locales/es-ES/translation.toml index 466118452..20b43e77a 100644 --- a/frontend/public/locales/es-ES/translation.toml +++ b/frontend/public/locales/es-ES/translation.toml @@ -96,6 +96,8 @@ pin = "Fijar archivo (mantener activo tras ejecutar la herramienta)" poweredBy = "Desarrollado por" pro = "Pro" processTimeWarning = "Advertencia: este proceso puede tardar hasta un minuto dependiendo del tamaño del archivo" +processingComplete = "Tu archivo está listo." +processingCompleteMultiple = "{{count}} archivos están listos." property = "Propiedad" quickPosition = "Posición rápida" red = "Rojo" @@ -105,6 +107,7 @@ save = "Guardar" saveToBrowser = "Guardar en el navegador" saveUnavailable = "Guardar no disponible para este elemento" seeDockerHub = "Ver Docker Hub" +editSecret = "Editar este valor" selectFillter = "-- Seleccionar --" size = "Tamaño" sponsor = "Patrocinador" @@ -651,6 +654,7 @@ description = "Configura proveedores de autenticación externos como OAuth2 y SA disconnect = "Desconectar" disconnected = "Proveedor desconectado correctamente" disconnectError = "No se pudo desconectar el proveedor" +documentation = "Ver documentación" imageResolutionFull = "Completa (tamaño original)" imageResolutionReduced = "Reducida (máx. 1200px)" linkedServices = "Servicios vinculados" @@ -964,6 +968,18 @@ label = "Configuración regional predeterminada" description = "Tamaño máximo de carga de archivos (p. ej., 100MB, 1GB)" label = "Límite de carga de archivos" +[admin.settings.general.hideDisabledTools] +description = "Ocultar las herramientas deshabilitadas de la interfaz" +label = "Ocultar herramientas deshabilitadas" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Ocultar el botón de Google Drive cuando no esté habilitado" +label = "Ocultar Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Ocultar el botón del escáner QR móvil cuando no esté habilitado" +label = "Ocultar escáner móvil" + [admin.settings.general.frontendUrl] description = "URL base para el frontend (p. ej., https://pdf.example.com). Se usa para enlaces de invitación por correo y subidas por código QR desde el móvil. Déjalo vacío para usar la URL del backend." label = "Frontend URL" @@ -1148,6 +1164,8 @@ title = "Seguridad" [admin.settings.security.audit] label = "Registro de auditoría" +showDetails = "Mostrar detalles del nivel de auditoría" +hideDetails = "Ocultar detalles del nivel de auditoría" [admin.settings.security.audit.enabled] description = "Rastrear acciones de usuarios y eventos del sistema para cumplimiento y monitoreo de seguridad" @@ -1157,10 +1175,32 @@ label = "Habilitar registro de auditoría" description = "0=OFF, 1=BÁSICO, 2=ESTÁNDAR, 3=DETALLADO" label = "Nivel de auditoría" +[admin.settings.security.audit.levelDetails] +off = "Sin registro de auditoría (excepto eventos de seguridad críticos)" +basic = "Operaciones de archivos PDF (comprimir, dividir, fusionar, etc.) y cambios de configuración. Captura: estado de la operación (éxito/fallo), parámetros del método, tiempos. Volumen mínimo de registros." +standard = "Eventos BASIC más: inicio/cierre de sesión de usuario, cambios de cuenta, solicitudes GET generales. Excluye llamadas de sondeo continuo (/auth/me, /app-config, /health, etc.) para reducir el ruido de registros. Ideal para la mayoría de despliegues." +verbose = "Eventos STANDARD más: llamadas de sondeo continuo, todas las solicitudes GET, tiempos detallados. Advertencia: alto volumen de registros e impacto en el rendimiento." + [admin.settings.security.audit.retentionDays] description = "Número de días para conservar los registros de auditoría" label = "Retención de auditoría (días)" +[admin.settings.security.audit.advancedOptions] +title = "Opciones avanzadas" +description = "Las siguientes opciones aumentan el tiempo de procesamiento y el uso de memoria. Habilítalas solo si es realmente necesario." + +[admin.settings.security.audit.captureFileHash] +description = "Extraer el hash SHA-256 de los archivos PDF subidos para verificación de integridad. Independiente del nivel de auditoría." +label = "Capturar hash de archivo (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Extraer el campo de autor de documentos PDF durante el procesamiento. Requiere analizar PDF, aumenta la latencia. Independiente del nivel de auditoría." +label = "Capturar metadatos de autor de PDF" + +[admin.settings.security.audit.captureOperationResults] +description = "Capturar valores de retorno del método. No recomendado: aumenta significativamente el volumen de registros y el uso de disco." +label = "Capturar resultados de la operación" + [admin.settings.security.csrfDisabled] description = "Desactivar la protección contra Cross-Site Request Forgery (no recomendado)" label = "Desactivar la protección CSRF" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "Configurar el registro de auditoría" +configureAuditMessage = "Ajusta el nivel de registro de auditoría, el período de retención y otros ajustes en la sección Seguridad y autenticación." disabled = "El registro de auditoría está desactivado" disabledMessage = "Habilita el registro de auditoría en la configuración de tu aplicación para rastrear eventos del sistema." enterpriseRequired = "Se requiere licencia Enterprise" enterpriseRequiredMessage = "El sistema de registro de auditoría es una función empresarial. Actualiza a una licencia Enterprise para acceder a los registros de auditoría y analíticas." +goToSettings = "Ir a la configuración de auditoría" notAvailable = "Sistema de auditoría no disponible" notAvailableMessage = "El sistema de auditoría no está configurado o no está disponible." -[audit.charts] -byType = "Eventos por tipo" -byUser = "Eventos por usuario" -day = "Día" -error = "Error al cargar los gráficos" -month = "Mes" -overTime = "Eventos a lo largo del tiempo" -title = "Panel de auditoría" -week = "Semana" - [audit.error] title = "Error al cargar el sistema de auditoría" -[audit.events] -actions = "Acciones" -clearFilters = "Limpiar" -details = "Detalles" -endDate = "Fecha de fin" -error = "Error al cargar los eventos" -eventDetails = "Detalles del evento" -filterByType = "Filtrar por tipo" -filterByUser = "Filtrar por usuario" -ipAddress = "Dirección IP" -noEvents = "No se encontraron eventos" -startDate = "Fecha de inicio" -timestamp = "Marca de tiempo" -title = "Eventos de auditoría" -type = "Tipo" -user = "Usuario" -viewDetails = "Ver detalles" - [audit.export] clearFilters = "Limpiar" description = "Exporta eventos de auditoría en formato CSV o JSON. Usa filtros para limitar los datos exportados." endDate = "Fecha de fin" error = "No se pudieron exportar los datos" exportButton = "Exportar datos" +fieldAuthor = "Autor (desde PDF)" +fieldDate = "Fecha" +fieldDocumentName = "Nombre del documento" +fieldFileHash = "Hash de archivo (SHA-256)" +fieldIpAddress = "Dirección IP" +fieldOperationResults = "Resultados de la operación" +fieldOutcome = "Resultado (Éxito/Fallo)" +fieldTool = "Herramienta" +fieldUsername = "Nombre de usuario" filterByType = "Filtrar por tipo" filterByUser = "Filtrar por usuario" filters = "Filtros (opcional)" format = "Formato de exportación" +selectFields = "Selecciona los campos a incluir" startDate = "Fecha de inicio" title = "Exportar datos de auditoría" +verboseRequired = "Requiere nivel de auditoría VERBOSE" [audit.systemStatus] +autoRefresh = "Actualización automática" +autoRefreshLabel = "Actualización automática cada 30 s" +captureBySettings = "Habilitar en configuración" +capturedFields = "Campos capturados" +date = "Fecha" days = "días" disabled = "Desactivado" +documentName = "Nombre del documento" enabled = "Activado" +fileHash = "Hash de archivo" level = "Nivel de auditoría" +pdfAuthor = "Autor de PDF" retention = "Periodo de retención" status = "Registro de auditoría" title = "Estado del sistema" +tool = "Herramienta" totalEvents = "Eventos totales" +username = "Nombre de usuario" +verboseOnly = "Solo VERBOSE" + +[audit.stats] +activeUsers = "Usuarios activos" +attention = "Requiere atención" +avgLatency = "Latencia media" +error = "Error al cargar las estadísticas" +errorLoadingStats = "No se pudieron cargar las estadísticas" +excellent = "Excelente" +good = "Bueno" +noData = "N/D" +successRate = "Tasa de éxito" +title = "Resumen" +totalEvents = "Eventos totales" +vsLastPeriod = "vs periodo anterior" + +[audit.charts] +byTool = "Herramientas más usadas" +byType = "Eventos por tipo" +byUser = "Eventos por usuario" +day = "Día" +error = "Error al cargar los gráficos" +hourlyActivity = "Actividad por hora" +month = "Mes" +noData = "No hay datos para este periodo" +overTime = "Eventos a lo largo del tiempo" +title = "Panel de auditoría" +week = "Semana" + +[audit.events] +actions = "Acciones" +author = "Autor" +clearFilters = "Limpiar" +details = "Detalles" +documentName = "Documento" +endDate = "Fecha de fin" +error = "Error al cargar los eventos" +eventDetails = "Detalles del evento" +failure = "Fallo" +fileHash = "Hash de archivo" +filterByType = "Filtrar por tipo" +filterByUser = "Filtrar por usuario" +ipAddress = "Dirección IP" +noEvents = "No se encontraron eventos" +outcome = "Estado" +sortAsc = "Ordenar ascendente" +sortDesc = "Ordenar descendente" +startDate = "Fecha de inicio" +success = "Éxito" +timestamp = "Marca de tiempo" +title = "Eventos de auditoría" +type = "Tipo" +user = "Usuario" +viewDetails = "Ver detalles" + +[audit.filters] +allOutcomes = "Todos" +failureOnly = "Solo fallos" +last7Days = "Últimos 7 días" +last30Days = "Últimos 30 días" +outcomeFilter = "Resultado" +quickPresets = "Filtros rápidos" +successOnly = "Solo éxitos" +thisMonth = "Este mes" +today = "Hoy" [audit.tabs] +clearData = "Borrar datos" dashboard = "Panel" events = "Eventos de auditoría" export = "Exportar" +[audit.clearData] +cancel = "Cancelar" +codeDoesNotMatch = "El código no coincide" +codePlaceholder = "Escribe el código aquí" +confirmationCode = "Código de confirmación" +confirmationRequired = "Eliminar todos los datos de auditoría" +confirmMessage = "Esto eliminará permanentemente todos los registros de auditoría. Introduce el código de confirmación a continuación para continuar." +confirmTitle = "Confirma que deseas eliminar" +deleteButton = "Eliminar" +enterCode = "Código de confirmación" +enterCodeBelow = "Introduce el código exactamente como se muestra arriba (sensible a mayúsculas y minúsculas)" +initiateDelete = "Eliminar todos los datos" +irreversible = "IRREVERSIBLE" +success = "Éxito" +successMessage = "Todos los datos de auditoría se han borrado correctamente" +warning1 = "Esta acción no se puede deshacer" +warning2 = "Eliminar los datos de auditoría eliminará permanentemente todos los registros de auditoría históricos, incluidos eventos de seguridad, actividades de usuario y operaciones de archivos de la base de datos." + [auth] accessDenied = "Acceso denegado" insufficientPermissions = "No tienes permiso para realizar esta acción." @@ -2254,9 +2374,11 @@ copy = "Copiar" done = "Hecho" error = "Error" expand = "Expandir" +learnMore = "Más información" lines = "líneas" loading = "Cargando..." next = "Siguiente" +operation = "esta operación" preview = "Vista previa" previous = "Anterior" refresh = "Actualizar" @@ -2920,6 +3042,7 @@ copyStack = "Copiar seguimiento de pila" discordSubmit = "Discord - Enviar publicación de soporte" dismissAllErrors = "Descartar Todos los Errores" encryptedPdfMustRemovePassword = "Este PDF está cifrado o protegido con contraseña. Por favor desbloquéelo antes de convertir a PDF/A." +generic = "Ocurrió un error" github = "Envíe un ticket en GitHub" githubSubmit = "GitHub - Enviar un ticket" incorrectPasswordProvided = "La contraseña del PDF es incorrecta o no fue proporcionada." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Su suscripción se ha actualizado correctamente. Su cl upgradeSuccess = "¡Pago correcto! Su suscripción se ha actualizado. La licencia se ha actualizado en su servidor. Recibirá un correo electrónico de confirmación en breve." upgradeTitle = "Actualizar a {{planName}}" yearly = "Anual" +checkoutOpened = "Pago abierto en el navegador" +checkoutInstructions = "Completa tu compra en la ventana del navegador que se acaba de abrir. Después de completar el pago, vuelve aquí y haz clic en el botón de abajo para actualizar tu información de facturación." +refreshBilling = "He completado el pago: actualizar la facturación" +closeLater = "Lo haré más tarde" [payment.emailStage] continue = "Continuar" @@ -4679,6 +4806,13 @@ prompt = "Elija una página para extraer la tabla" submit = "Extraer" title = "PDF a CSV" +[PDFToXLSX] +header = "PDF a Excel" +prompt = "Elige las páginas para extraer tablas" +submit = "Convertir" +title = "PDF a Excel (XLSX)" +tags = "hoja de cálculo,excel,xlsx,tabla,extraer,convertir" + [PDFToHTML] credit = "Este servicio utiliza pdftohtml para la conversión de archivos" header = "PDF a HTML" @@ -4835,6 +4969,7 @@ customPricing = "Personalizado" featureComparison = "Comparación de funciones" from = "Desde" hideComparison = "Ocultar comparación de funciones" +included = "Incluido" includedInCurrent = "Incluido en su plan" licensedSeats = "Con licencia: {{count}} plazas" manage = "Gestionar" @@ -4852,9 +4987,11 @@ title = "Plan activo" [plan.availablePlans] subtitle = "Elige el plan que se ajuste a tus necesidades" +loadError = "No se pudo cargar la información de precios del plan. Se usarán valores predeterminados." title = "Planes disponibles" [plan.enterprise] +siteLicense = "Licencia de sitio" highlight1 = "Precios personalizados" highlight2 = "Soporte dedicado" highlight3 = "Funciones más recientes" @@ -4928,6 +5065,81 @@ keyDescription = "Pega la clave de licencia de tu correo" success = "¡Licencia activada!" successMessage = "Tu licencia se ha activado correctamente. Ya puedes cerrar esta ventana." +[plan.team] +name = "Team" +siteLicense = "Licencia de sitio" + +[credits] +enableOverageBilling = "Habilitar facturación por excedente" +maybeLater = "Quizás más tarde" +upgrade = "Actualizar" + +[credits.modal] +advancedMonitoring = "Supervisión avanzada" +allInOneWorkspace = "Espacio de trabajo PDF todo en uno (visor, herramientas y agente)" +apiSandbox = "Entorno de pruebas de API" +contactSales = "Contactar con Ventas" +creditsRemaining = "Quedan {{current}} de {{total}}" +creditsThisMonth = "Créditos mensuales" +current = "Plan actual" +customPricing = "Personalizado" +customSmartFolders = "Carpetas inteligentes personalizadas" +dedicatedSupportSlas = "Soporte dedicado y SLA" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Todo lo de Credits, además:" +everythingInFree = "Todo lo de Free, además:" +fasterThroughput = "10x más rendimiento" +forRegularWork = "Para trabajo habitual con PDF:" +freeTier = "Nivel gratuito" +fullyPrivateFiles = "Archivos totalmente privados" +largeFileProcessing = "Procesamiento de archivos grandes" +managedMemberMessage = "Tienes acceso ilimitado a créditos a través de tu equipo. Si necesitas ayuda, contacta con tu líder de equipo." +managedMemberTitle = "Créditos ilimitados" +meteringBillingNote = "Los créditos por excedente se facturan mensualmente junto con tu suscripción de Team. Puedes seguir tu uso en cualquier momento en la configuración de tu cuenta." +meteringExplanation = "Tu plan Team incluye {{credits}} créditos al mes. Cuando se agoten, la facturación por excedente proporcionará automáticamente créditos adicionales para que no tengas que dejar de trabajar." +meteringIncluded = "{{credits}} créditos/mes incluidos con Team" +meteringNoCommitment = "Sin compromiso, cancela en cualquier momento" +meteringNeverRunOut = "Nunca te quedes sin créditos" +meteringPayAsYouGo = "Solo pagas por lo que usas" +meteringPrice = "Créditos adicionales a {{price}}/crédito" +meteringTitle = "Facturación por excedente según uso" +monthlyCredits = "créditos mensuales" +orgWideAccess = "Controles de acceso para toda la organización" +overage = "excedente" +perMonth = "/mes" +popular = "Popular" +premiumAiModels = "Modelos de IA premium" +prioritySupport = "Soporte prioritario" +privateDocCloud = "Nube de documentos privada" +ragFineTuning = "RAG + ajuste fino" +secureApiAccess = "Acceso seguro a la API" +selfHostLink = "Consulta la documentación y los planes" +selfHostPrompt = "¿Quieres autoalojarlo?" +standardThroughput = "Rendimiento estándar" +subtitle = "Actualiza a Team para obtener 10x los créditos y un procesamiento más rápido." +subtitlePro = "Habilita la facturación por excedente automática para no quedarte sin créditos." +teamLeaderOnly = "Solo los líderes de equipo pueden habilitar la facturación por excedente" +teamSubscription = "Team" +titleExhausted = "Has usado tus créditos gratuitos" +titleExhaustedPro = "Te has quedado sin créditos" +unlimitedApiAccess = "Acceso ilimitado a la API" +unlimitedMonthlyCredits = "Licencia de sitio" +unlimitedSeats = "Usuarios ilimitados" + +[credits.modal.features] +everythingInCredits = "Todo lo de Credits, además:" +everythingInFree = "Todo lo de Free, además:" +forRegularWork = "Para trabajo habitual con PDF:" + +[credits.insufficient] +brief = "Créditos insuficientes. Necesitas {{required}} créditos, pero tienes {{current}}." +freeTier = "Actualiza a Team para 10x más créditos y facturación por excedente ilimitada." +managedMember = "Contacta con tu líder de equipo para obtener ayuda." +message = "No tienes suficientes créditos para ejecutar {{tool}}. Actualmente tienes {{current}} créditos." +messageWithAmount = "Necesitas {{required}} créditos para ejecutar {{tool}}, pero solo tienes {{current}}." +teamMember = "Habilita la facturación por excedente para no quedarte sin créditos." +title = "Créditos insuficientes" + [printFile] header = "Imprimir archivo en la impresora" submit = "Imprimir" @@ -5565,6 +5777,70 @@ user = "Conectado como" saas = "Stirling Cloud" selfhosted = "Autoalojado" +[settings.planBilling] +currentPlan = "Plan actual" +loading = "Cargando información de facturación..." +notAvailable = "Plan y facturación solo están disponibles cuando estás conectado a Stirling Cloud (modo SaaS)." +title = "Plan y facturación" + +[settings.planBilling.billing] +manageBilling = "Gestionar facturación" +nextBillingDate = "Próxima fecha de facturación" +overageCost = "Coste actual por excedente: {{amount}} ({{credits}} créditos)" + +[settings.planBilling.credits] +estimatedCost = "Coste estimado: {{amount}}" +freeTierInfo = "El plan Free incluye {{freeCredits}} créditos al mes. Actualiza a Team para {{teamCredits}} créditos/mes y facturación por excedente de pago por uso." +included = "{{count}} créditos/mes (incluidos)" +noOverage = "No hay cargos por excedente este mes. Estás usando tus {{count}} créditos incluidos." +overage = "+ {{count}} excedente" +overageInfo = "Los créditos por excedente se facturan a {{price}} por crédito. Solo pagarás por lo que uses más allá de tu asignación mensual." +title = "Uso de créditos" + +[settings.planBilling.errors] +fetchFailed = "No se pudieron obtener los datos de facturación" +retry = "Reintentar" + +[settings.planBilling.status] +active = "Activo" +canceled = "Cancelado" +pastDue = "Vencido" +trial = "Prueba" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Funciones y soporte empresariales personalizados" +free = "Free" +freeDescription = "50 créditos al mes" +team = "Team" +teamBadge = "Team" +teamDescription = "500 créditos/mes incluidos, facturación por excedente automática para un servicio ininterrumpido" +teamTooltipCredits = "El plan Team incluye {{credits}} créditos/mes." +teamTooltipFineprint = "Solo pagas por lo que usas más allá de los créditos incluidos." +teamTooltipOverage = "La facturación por excedente automática a {{price}}/crédito garantiza un servicio ininterrumpido." + +[settings.planBilling.team] +managedByTeam = "Gestionado por el equipo" +memberCount = "{{count}} miembros del equipo" + +[settings.planBilling.trial] +daysRemaining = "{{days}} días restantes" +daysRemainingFull = "Tu prueba termina en {{days}} días" +endDate = "Caduca: {{date}}" +endsOn = "Fin de la prueba" +title = "Prueba gratuita activa" + +[settings.planBilling.upgrade] +cta = "Actualizar a Team" +featureApi = "Acceso a API para automatización" +featureCredits = "{{teamCredits}} créditos al mes (frente a {{freeCredits}} en Free)" +featureMembers = "Miembros de equipo ilimitados" +featureSupport = "Soporte prioritario" +featureThroughput = "Procesamiento más rápido" +opensInBrowser = "Se abre en el navegador para completar la actualización" +subtitle = "Actualiza a Team para:" +title = "Actualiza tu plan" + [settings.developer] apiKeys = "Claves API" title = "Desarrollador" @@ -5689,6 +5965,9 @@ people = "Personas" teams = "Equipos" title = "Espacio de trabajo" +[settings.team] +title = "Team" + [setup] description = "Empiece eligiendo cómo quiere usar Stirling PDF" welcome = "Bienvenido a Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "División automática con hojas divisoras" name = "Divisor de Páginas" tooltip = "Use hojas divisoras con código QR entre documentos al escanear" +[split.methods.byPoster] +name = "Fragmentos imprimibles" +desc = "Divide páginas grandes en tamaños imprimibles" +tooltip = "Divide páginas sobredimensionadas en fragmentos más pequeños adecuados para imprimir en papel estándar (A4, Letter, etc.)" + [split.methods.byPages] desc = "Extraer páginas específicas (1,3,5-10)" name = "Números de Página" @@ -6029,6 +6313,7 @@ tooltip = "Especificar tamaño máximo de archivo (ej. 10MB, 500KB)" [split.methods.prefix] splitAt = "Dividir en" splitBy = "Dividir por" +splitInto = "Dividir en" [split.methodSelection.tooltip] bullet1 = "Haz clic en una tarjeta de método para seleccionarla" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Por favor, seleccione primero un método de división" chooseMethod = "Elegir Método" settings = "Configuración" +[split.poster] +rightToLeft = "Dividir de derecha a izquierda" + +[split.poster.pageSize] +label = "Tamaño de página objetivo" +description = "Tamaño de las páginas de salida para impresión" + +[split.poster.xFactor] +label = "Divisiones horizontales" +description = "Número de columnas en las que dividir cada página" + +[split.poster.yFactor] +label = "Divisiones verticales" +description = "Número de filas en las que dividir cada página" + [split.tooltip.byChapters] bullet1 = "Nivel de Marcador: En qué nivel dividir (1=nivel superior)" bullet2 = "Incluir Metadatos: Preservar propiedades del documento" @@ -6085,6 +6385,14 @@ bullet5 = "Activa el modo dúplex si escaneas ambos lados de las hojas separador text = "Divide automáticamente documentos escaneados usando hojas separadoras físicas con códigos QR. Perfecto para procesar varios documentos escaneados juntos." title = "Dividir por separador de páginas" +[split.tooltip.byPoster] +bullet1 = "Tamaño de página objetivo: Elige el tamaño de papel de salida (A4, Letter, etc.)" +bullet2 = "Divisiones horizontales/verticales: Tamaño de la cuadrícula para dividir" +bullet3 = "De derecha a izquierda: Invierte el orden de las columnas para diseños RTL" +bullet4 = "Imprime y ensambla las piezas para crear tu póster" +text = "Divide páginas PDF grandes en fragmentos pequeños imprimibles adecuados para tamaños de papel estándar. Perfecto para crear impresiones de póster a partir de páginas sobredimensionadas." +title = "Dividir para impresión de póster" + [split.tooltip.byPages] bullet1 = "Puntos de división únicos: 3,7 (divide después de las páginas 3 y 7)" bullet2 = "Puntos de división por rango: 3-8 (divide antes de la página 3 y después de la página 8)" @@ -6364,9 +6672,13 @@ tags = "captura web,guardar página,web a documento,archivo" title = "URL a PDF" [usage] +aboutUsageAnalytics = "Acerca de las analíticas de uso" +configureSettings = "Configurar ajustes de analíticas" error = "Error al cargar las estadísticas de uso" noData = "No hay datos disponibles" noDataMessage = "Actualmente no hay estadísticas de uso disponibles." +usageAnalyticsExplanation = "Las analíticas de uso registran las solicitudes a endpoints y los patrones de uso de herramientas. Combinadas con el panel de registro de auditoría, obtienes visibilidad completa de la actividad del sistema, el rendimiento y los eventos de seguridad." +viewAuditLogs = "Ver registros de auditoría" [usage.chart] title = "Gráfico de uso de endpoints" @@ -6947,3 +7259,278 @@ cancel = "Cancelar" confirm = "Extraer" message = "Este ZIP contiene {{count}} archivos. ¿Extraer de todos modos?" title = "Archivo ZIP grande" + +[cloudBadge] +tooltip = "Esta operación usará tus créditos en la nube" + +[team] +cancelInviteError = "No se pudo cancelar la invitación" +confirmCancelInvite = "¿Seguro que quieres cancelar esta invitación?" +confirmLeave = "¿Seguro que quieres salir de este equipo?" +confirmLeaveLeader = "Como líder de equipo, al salir te eliminarás del equipo. ¿Seguro?" +confirmRemove = "¿Seguro que quieres eliminar a este miembro?" +editName = "Editar nombre del equipo" +inviteCancelled = "Invitación cancelada" +inviteError = "No se pudo enviar la invitación" +inviteSent = "Invitación enviada correctamente" +leader = "Líder" +leaveButton = "Salir del equipo" +leaveError = "No se pudo salir del equipo" +leaveSuccess = "Has salido del equipo correctamente" +loading = "Cargando información del equipo..." +memberCount = "{{count}} miembros" +memberRemoved = "Miembro eliminado correctamente" +namePlaceholder = "Introduce el nombre del equipo" +personal = "Personal" +removeError = "No se pudo eliminar al miembro" +renameError = "No se pudo cambiar el nombre del equipo" +renameSuccess = "Equipo renombrado correctamente" + +[team.invitationBanner] +message = "te ha invitado a unirte" +acceptButton = "Aceptar" +rejectButton = "Rechazar" + +[team.features] +badge = "Funciones del equipo" +subtitle = "Colabora con tu equipo" +title = "Colaboración en equipo" +viewPlans = "Ver planes" + +[team.features.billing] +description = "Gestiona la facturación y las suscripciones" +title = "Gestión de facturación" + +[team.features.credits] +description = "Bolsa de créditos compartida para todos los miembros" +title = "Créditos compartidos" + +[team.features.dashboard] +description = "Ver la actividad y el uso del equipo" +title = "Panel del equipo" + +[team.features.invite] +description = "Añade miembros a tu equipo" +title = "Invitar miembros" + +[team.invite] +cancelLabel = "Cancelar" +invalidEmail = "Dirección de correo no válida" +placeholder = "Introduce la dirección de correo" +sendButton = "Enviar invitación" +title = "Invitar miembro del equipo" + +[team.members] +emailColumn = "Correo electrónico" +empty = "Aún no hay miembros del equipo" +nameColumn = "Nombre" +pending = "Pendiente" +remove = "Eliminar" +roleColumn = "Rol" +title = "Miembros del equipo" + +[team.upgrade] +button = "Actualizar a Team" +description = "Desbloquea las funciones de colaboración en equipo" +title = "Actualizar al plan Team" + +[provider.oauth2.google] +scope = "Autenticación de inicio de sesión" + +[provider.oauth2.google.clientId] +label = "ID de cliente" +description = "El ID de cliente OAuth2 de Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Secreto de cliente" +description = "El secreto de cliente OAuth2 de Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Ámbitos" +description = "Ámbitos OAuth2 separados por comas" + +[provider.oauth2.google.useAsUsername] +label = "Usar como nombre de usuario" +description = "Campo a usar como nombre de usuario (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Autenticación de inicio de sesión" + +[provider.oauth2.github.clientId] +label = "ID de cliente" +description = "El ID de cliente OAuth2 de GitHub Developer Settings" + +[provider.oauth2.github.clientSecret] +label = "Secreto de cliente" +description = "El secreto de cliente OAuth2 de GitHub Developer Settings" + +[provider.oauth2.github.scopes] +label = "Ámbitos" +description = "Ámbitos OAuth2 separados por comas" + +[provider.oauth2.github.useAsUsername] +label = "Usar como nombre de usuario" +description = "Campo a usar como nombre de usuario (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "URL del emisor" +description = "URL del endpoint de OpenID Connect Discovery del realm de Keycloak" + +[provider.oauth2.keycloak.clientId] +label = "ID de cliente" +description = "El ID de cliente OAuth2 de Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Secreto de cliente" +description = "El secreto de cliente OAuth2 de Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "Ámbitos" +description = "Ámbitos OAuth2 separados por comas" + +[provider.oauth2.keycloak.useAsUsername] +label = "Usar como nombre de usuario" +description = "Campo a usar como nombre de usuario (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "OAuth2 genérico" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Habilitar OAuth2 genérico" +description = "Habilitar la autenticación usando un proveedor OAuth2 personalizado" + +[provider.oauth2.generic.provider] +label = "Nombre del proveedor" +description = "El nombre de tu proveedor OAuth2 (p. ej., Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "URL del emisor" +description = "Proveedor que admite OpenID Connect Discovery (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "ID de cliente" +description = "El ID de cliente OAuth2 de tu proveedor" + +[provider.oauth2.generic.clientSecret] +label = "Secreto de cliente" +description = "El secreto de cliente OAuth2 de tu proveedor" + +[provider.oauth2.generic.scopes] +label = "Ámbitos" +description = "Ámbitos OAuth2 separados por comas" + +[provider.oauth2.generic.useAsUsername] +label = "Usar como nombre de usuario" +description = "Campo a usar como nombre de usuario" + +[provider.oauth2.generic.autoCreateUser] +label = "Crear usuarios automáticamente" +description = "Crear automáticamente cuentas de usuario en el primer inicio de sesión con OAuth2" + +[provider.oauth2.generic.blockRegistration] +label = "Bloquear registro" +description = "Impedir el registro de nuevos usuarios mediante OAuth2" + +[provider.smtp] +name = "Correo SMTP" +scope = "Notificaciones por correo electrónico" + +[provider.smtp.enabled] +label = "Habilitar correo" +description = "Habilitar notificaciones por correo electrónico y funcionalidad SMTP" + +[provider.smtp.host] +label = "Host SMTP" +description = "El nombre de host o la dirección IP de tu servidor SMTP" + +[provider.smtp.port] +label = "Puerto SMTP" +description = "El número de puerto para la conexión SMTP (normalmente 25, 465 o 587)" + +[provider.smtp.username] +label = "Nombre de usuario SMTP" +description = "Nombre de usuario para la autenticación SMTP" + +[provider.smtp.password] +label = "Contraseña SMTP" +description = "Contraseña para la autenticación SMTP" + +[provider.smtp.from] +label = "Dirección del remitente" +description = "La dirección de correo que se usará como remitente" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "Habilitar SAML2" +description = "Habilitar autenticación SAML2 (solo Enterprise)" + +[provider.saml2.provider] +label = "Nombre del proveedor" +description = "El nombre de tu proveedor SAML2" + +[provider.saml2.registrationId] +label = "ID de registro" +description = "El nombre de tu aplicación de Service Provider (SP)" + +[provider.saml2.idpMetadataUri] +label = "URI de metadatos de IDP" +description = "El URI de los metadatos de tu proveedor" + +[provider.saml2.idpSingleLoginUrl] +label = "URL de inicio de sesión único de IDP" +description = "La URL para iniciar SSO" + +[provider.saml2.idpSingleLogoutUrl] +label = "URL de cierre de sesión único de IDP" +description = "La URL para iniciar SLO" + +[provider.saml2.idpIssuer] +label = "Emisor de IDP" +description = "El ID de tu proveedor" + +[provider.saml2.idpCert] +label = "Certificado de IDP" +description = "La ruta del certificado (p. ej., classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Clave privada" +description = "La ruta de tu clave privada" + +[provider.saml2.spCert] +label = "Certificado SP" +description = "La ruta de tu certificado de firma" + +[provider.saml2.autoCreateUser] +label = "Crear usuarios automáticamente" +description = "Crear automáticamente cuentas de usuario en el primer inicio de sesión con SAML2" + +[provider.saml2.blockRegistration] +label = "Bloquear registro" +description = "Impedir el registro de nuevos usuarios mediante SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "Importación de archivos" + +[provider.googledrive.enabled] +label = "Habilitar selector de archivos de Google Drive" +description = "Permitir que los usuarios importen archivos directamente desde Google Drive" + +[provider.googledrive.clientId] +label = "ID de cliente" +description = "ID de cliente de Google OAuth 2.0 de Google Cloud Console" + +[provider.googledrive.apiKey] +label = "Clave de API" +description = "Clave de API de Google para Google Picker API de Google Cloud Console" + +[provider.googledrive.appId] +label = "ID de aplicación" +description = "ID de aplicación de Google Drive de Google Cloud Console" diff --git a/frontend/public/locales/eu-ES/translation.toml b/frontend/public/locales/eu-ES/translation.toml index 0726175c8..320468600 100644 --- a/frontend/public/locales/eu-ES/translation.toml +++ b/frontend/public/locales/eu-ES/translation.toml @@ -96,6 +96,8 @@ pin = "Ainguratu fitxategia (aktibo mantendu tresna exekutatu ondoren)" poweredBy = "Honako honek bultzatzen du" pro = "Pro" processTimeWarning = "Oharra: prozesu honetarako minutu bat ere beharko da fitxategiaren tamaiaren arabera" +processingComplete = "Zure fitxategia prest dago." +processingCompleteMultiple = "{{count}} fitxategi prest daude." property = "Propietate" quickPosition = "Posizio azkarra" red = "Gorria" @@ -105,6 +107,7 @@ save = "Gorde" saveToBrowser = "Gorde nabigatzailean" saveUnavailable = "Ezin da gorde elementu honetarako" seeDockerHub = "Ikusi Docker Hub" +editSecret = "Editatu balio hau" selectFillter = "-- Aukeratu filtroa --" size = "Tamaina" sponsor = "Babestu" @@ -651,6 +654,7 @@ description = "Konfiguratu kanpoko autentifikazio-hornitzaileak, hala nola OAuth disconnect = "Deskonektatu" disconnected = "Hornitzailea ondo deskonektatu da" disconnectError = "Hornitzailea deskonektatzeak huts egin du" +documentation = "Ikusi dokumentazioa" imageResolutionFull = "Osoa (Jatorrizko tamaina)" imageResolutionReduced = "Murriztua (Gehienez 1200px)" linkedServices = "Estekatutako zerbitzuak" @@ -964,6 +968,18 @@ label = "Hizkuntza lehenetsia" description = "Fitxategiak igotzeko gehienezko tamaina (adib., 100MB, 1GB)" label = "Fitxategi-igoeraren muga" +[admin.settings.general.hideDisabledTools] +description = "Ezkutatu desgaitutako tresnak interfazean" +label = "Ezkutatu desgaitutako tresnak" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Ezkutatu Google Drive botoia gaituta ez dagoenean" +label = "Ezkutatu Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Ezkutatu mugikorreko QR eskaneatzailearen botoia gaituta ez dagoenean" +label = "Ezkutatu mugikorreko eskaneatzailea" + [admin.settings.general.frontendUrl] description = "Frontendarentzako oinarrizko URL (adib., https://pdf.example.com). Postaz bidalitako gonbidapen esteketarako eta mugikorreko QR kode bidezko igoeretarako erabiltzen da. Utzi hutsik backend URLa erabiltzeko." label = "Frontend URL" @@ -1148,6 +1164,8 @@ title = "Segurtasuna" [admin.settings.security.audit] label = "Ikuskaritza-erregistroa" +showDetails = "Erakutsi ikuskaritza-mailaren xehetasunak" +hideDetails = "Ezkutatu ikuskaritza-mailaren xehetasunak" [admin.settings.security.audit.enabled] description = "Erabiltzaileen ekintzak eta sistemaren gertaerak jarraitu betebeharrak eta segurtasuna kontrolatzeko" @@ -1157,10 +1175,32 @@ label = "Ikuskaritza-erregistroa gaitu" description = "0=OFF, 1=BASIC, 2=STANDARD, 3=VERBOSE" label = "Ikuskaritza maila" +[admin.settings.security.audit.levelDetails] +off = "Ez dago ikuskaritza-erregistrorik (segurtasun gertaera kritikoak izan ezik)" +basic = "PDF fitxategi eragiketak (konprimitu, zatitu, batu, eta abar) eta ezarpenen aldaketak. Erregistratzen du: eragiketaren egoera (arrakasta/hutsegitea), metodoaren parametroak, denboraketa. Erregistro bolumen minimoa." +standard = "BASIC gertaerak gehi: erabiltzailearen saio-hasiera/saio-amaiera, kontu-aldaketak, GET eskaera orokorrak. Ez ditu barne etengabeko inkesta-deiak (/auth/me, /app-config, /health, eta abar) erregistroen zarata murrizteko. Instalazio gehienentzat egokia." +verbose = "STANDARD gertaerak gehi: etengabeko inkesta-deiak, GET eskaera guztiak, denboraketa xehea. Abisua: erregistro bolumen handia eta errendimenduari eragina." + [admin.settings.security.audit.retentionDays] description = "Ikuskaritza-erregistroak gordetzeko egun kopurua" label = "Ikuskaritza atxikipena (egunak)" +[admin.settings.security.audit.advancedOptions] +title = "Aukera aurreratuak" +description = "Ondoko aukerek prozesatzeko denbora eta memoria erabilera handitzen dute. Behar-beharrezkoa denean bakarrik gaitu." + +[admin.settings.security.audit.captureFileHash] +description = "Igotako PDF fitxategien SHA-256 hash-a ateratzea osotasuna egiaztatzeko. Ikuskaritza-mailatik independentea." +label = "Atzeman fitxategiaren hash-a (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "PDF dokumentuetako egile eremua ateratzea prozesatzean. PDF azterketa behar du; latentzia handitzen du. Ikuskaritza-mailatik independentea." +label = "Atzeman PDF egilearen metadatuak" + +[admin.settings.security.audit.captureOperationResults] +description = "Itzulera-balioak atzematea. Ez da gomendagarria: nabarmen handitzen du erregistro bolumena eta disko erabilera." +label = "Atzeman eragiketen emaitzak" + [admin.settings.security.csrfDisabled] description = "Desgaitu Cross-Site Request Forgery babesa (ez da gomendatzen)" label = "CSRF babesa desgaitu" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "Ikuskaritza-erregistroa konfiguratu" +configureAuditMessage = "Doitu ikuskaritza-erregistro maila, atxikipen epea eta beste ezarpenak Segurtasuna eta Autentifikazioa atalean." disabled = "Auditoretza-erregistroa desgaituta dago" disabledMessage = "Gaitu auditoretza-erregistroa zure aplikazioaren konfigurazioan sistemaren gertaerak jarraitzeko." enterpriseRequired = "Enterprise lizentzia behar da" enterpriseRequiredMessage = "Ikuskaritza-erregistroen sistema Enterprise ezaugarria da. Eguneratu Enterprise lizentziara auditoretza-erregistroak eta analitikak atzitzeko." +goToSettings = "Joan ikuskaritza ezarpenetara" notAvailable = "Auditoretza-sistema ez dago eskuragarri" notAvailableMessage = "Auditoretza-sistema ez dago konfiguratuta edo ez dago eskuragarri." -[audit.charts] -byType = "Gertaerak motaren arabera" -byUser = "Gertaerak erabiltzailearen arabera" -day = "Egun" -error = "Errorea grafikoak kargatzean" -month = "Hilabetea" -overTime = "Gertaerak denboran zehar" -title = "Auditoretza aginte-panela" -week = "Astea" - [audit.error] title = "Errorea auditoretza-sistema kargatzean" -[audit.events] -actions = "Ekintzak" -clearFilters = "Garbitu" -details = "Xehetasunak" -endDate = "Amaiera-data" -error = "Errorea gertaerak kargatzean" -eventDetails = "Gertaeraren xehetasunak" -filterByType = "Iragazi motaren arabera" -filterByUser = "Iragazi erabiltzailearen arabera" -ipAddress = "IP helbidea" -noEvents = "Ez da gertaerarik aurkitu" -startDate = "Hasiera-data" -timestamp = "Denbora-zigilua" -title = "Auditoretza-gertaerak" -type = "Mota" -user = "Erabiltzailea" -viewDetails = "Ikusi xehetasunak" - [audit.export] clearFilters = "Garbitu" description = "Esportatu auditoretza-gertaerak CSV edo JSON formatura. Erabili iragazkiak esportatutako datuak mugatzeko." endDate = "Amaiera-data" error = "Ezin izan dira datuak esportatu" exportButton = "Esportatu datuak" +fieldAuthor = "Egilea (PDFtik)" +fieldDate = "Data" +fieldDocumentName = "Dokumentuaren izena" +fieldFileHash = "Fitxategiaren hash-a (SHA-256)" +fieldIpAddress = "IP helbidea" +fieldOperationResults = "Eragiketen emaitzak" +fieldOutcome = "Emaitza (Arrakasta/Hutsegitea)" +fieldTool = "Tresna" +fieldUsername = "Erabiltzaile-izena" filterByType = "Iragazi motaren arabera" filterByUser = "Iragazi erabiltzailearen arabera" filters = "Iragazkiak (aukerakoa)" format = "Esportazio-formatua" +selectFields = "Hautatu sartu beharreko eremuak" startDate = "Hasiera-data" title = "Auditoretza-datuak esportatu" +verboseRequired = "VERBOSE ikuskaritza-maila behar da" [audit.systemStatus] +autoRefresh = "Auto-freskatzea" +autoRefreshLabel = "Auto-freskatu 30 segundoro" +captureBySettings = "Gaitu ezarpenetan" +capturedFields = "Atzemandako eremuak" +date = "Data" days = "egun" disabled = "Desgaituta" +documentName = "Dokumentuaren izena" enabled = "Gaituta" +fileHash = "Fitxategiaren hash-a" level = "Auditoretza-maila" +pdfAuthor = "PDF egilea" retention = "Atxikipen epea" status = "Auditoretza-erregistroa" title = "Sistemaren egoera" +tool = "Tresna" totalEvents = "Gertaerak guztira" +username = "Erabiltzaile-izena" +verboseOnly = "Soilik VERBOSE" + +[audit.stats] +activeUsers = "Erabiltzaile aktiboak" +attention = "Arreta behar da" +avgLatency = "Batez besteko latentzia" +error = "Errorea estatistikak kargatzean" +errorLoadingStats = "Ezin izan dira estatistikak kargatu" +excellent = "Bikain" +good = "Ona" +noData = "N/A" +successRate = "Arrakasta tasa" +title = "Laburpena" +totalEvents = "Gertaera kopurua" +vsLastPeriod = "aurreko aldiarekin alderatuta" + +[audit.charts] +byTool = "Gehien erabilitako tresnak" +byType = "Gertaerak motaren arabera" +byUser = "Gertaerak erabiltzailearen arabera" +day = "Egun" +error = "Errorea grafikoak kargatzean" +hourlyActivity = "Orduz orduko jarduera" +month = "Hilabetea" +noData = "Ez dago daturik epe honetarako" +overTime = "Gertaerak denboran zehar" +title = "Auditoretza aginte-panela" +week = "Astea" + +[audit.events] +actions = "Ekintzak" +author = "Egilea" +clearFilters = "Garbitu" +details = "Xehetasunak" +documentName = "Dokumentua" +endDate = "Amaiera-data" +error = "Errorea gertaerak kargatzean" +eventDetails = "Gertaeraren xehetasunak" +failure = "Hutsegitea" +fileHash = "Fitxategiaren hash-a" +filterByType = "Iragazi motaren arabera" +filterByUser = "Iragazi erabiltzailearen arabera" +ipAddress = "IP helbidea" +noEvents = "Ez da gertaerarik aurkitu" +outcome = "Egoera" +sortAsc = "Ordenatu gorantz" +sortDesc = "Ordenatu beherantz" +startDate = "Hasiera-data" +success = "Arrakasta" +timestamp = "Denbora-zigilua" +title = "Auditoretza-gertaerak" +type = "Mota" +user = "Erabiltzailea" +viewDetails = "Ikusi xehetasunak" + +[audit.filters] +allOutcomes = "Guztiak" +failureOnly = "Hutsegiteak bakarrik" +last7Days = "Azken 7 egunak" +last30Days = "Azken 30 egunak" +outcomeFilter = "Emaitza" +quickPresets = "Iragazki azkarrak" +successOnly = "Arrakasta bakarrik" +thisMonth = "Hilabete hau" +today = "Gaur" [audit.tabs] +clearData = "Garbitu datuak" dashboard = "Aginte-panela" events = "Auditoretza-gertaerak" export = "Esportatu" +[audit.clearData] +cancel = "Utzi" +codeDoesNotMatch = "Kodea ez dator bat" +codePlaceholder = "Idatzi kodea hemen" +confirmationCode = "Baieztapen-kodea" +confirmationRequired = "Ezabatu ikuskaritza-datu guztiak" +confirmMessage = "Honek betiko kenduko ditu ikuskaritza erregistro guztiak. Sartu behean baieztapen-kodea jarraitzeko." +confirmTitle = "Mesedez baieztatu ezabatu nahi duzula" +deleteButton = "Ezabatu" +enterCode = "Baieztapen-kodea" +enterCodeBelow = "Sartu kodea goian agertzen den bezala zehazki (maiuskulak/minuskulak bereizten dira)" +initiateDelete = "Ezabatu datu guztiak" +irreversible = "ITZULEZINA" +success = "Arrakasta" +successMessage = "Ikuskaritza-datu guztiak ongi garbitu dira" +warning1 = "Ekintza hau ezin da desegin" +warning2 = "Ikuskaritza-datuak ezabatzeak betiko kenduko ditu datu-baseko aurreko ikuskaritza erregistro guztiak, segurtasun gertaerak, erabiltzaile jarduerak eta fitxategi eragiketak barne." + [auth] accessDenied = "Sarbidea ukatuta" insufficientPermissions = "Ez duzu ekintza hau egiteko baimenik." @@ -2254,9 +2374,11 @@ copy = "Kopiatu" done = "Eginda" error = "Errorea" expand = "Zabaldu" +learnMore = "Gehiago jakin" lines = "lerro" loading = "Kargatzen..." next = "Hurrengoa" +operation = "eragiketa hau" preview = "Aurrebista" previous = "Aurrekoa" refresh = "Freskatu" @@ -2920,6 +3042,7 @@ copyStack = "Kopiatu stack trazadura" discordSubmit = "Discord - Bidali laguntza-mezua" dismissAllErrors = "Itxi errore guztiak" encryptedPdfMustRemovePassword = "PDF hau zifratuta edo pasahitzarekin babestuta dago. Mesedez, desblokeatu PDF/A bihurtu aurretik." +generic = "Errore bat gertatu da" github = "Bidali tiketa GitHuben" githubSubmit = "GitHub - Bidali tiketa" incorrectPasswordProvided = "PDFaren pasahitza okerra da edo ez da eman." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Zure harpidetza behar bezala eguneratu da. Zure oraing upgradeSuccess = "Ordainketa arrakastatsua! Zure harpidetza eguneratu da. Lizentzia zure zerbitzarian eguneratu da. Laster jasoko duzu berrespen email bat." upgradeTitle = "Bertsio-berritu {{planName}} planera" yearly = "Urtero" +checkoutOpened = "Ordainketa-leihoa arakatzailean ireki da" +checkoutInstructions = "Amaitu zure erosketa orain ireki den arakatzaile-leihoan. Ordainketa amaitutakoan, itzuli hona eta egin klik beheko botoian zure fakturazio informazioa freskatzeko." +refreshBilling = "Ordainketa egin dut - Freskatu fakturazioa" +closeLater = "Geroago egingo dut" [payment.emailStage] continue = "Jarraitu" @@ -4679,6 +4806,13 @@ prompt = "Hautatu taula erauzteko orria" submit = "Extracto" title = "PDF a CSV" +[PDFToXLSX] +header = "PDFtik Excelera" +prompt = "Aukeratu orriak taulak erauzteko" +submit = "Bihurtu" +title = "PDFtik Excelera (XLSX)" +tags = "kalkulu-orria,excel,xlsx,taula,erauzi,bihurtu" + [PDFToHTML] credit = "Zerbitzu honek pdftohtml erabiltzen du fitxategiak bihurtzeko" header = "PDFa HTML bihurtu" @@ -4835,6 +4969,7 @@ customPricing = "Pertsonalizatua" featureComparison = "Ezaugarrien konparazioa" from = "Hasita" hideComparison = "Ezkutatu ezaugarrien konparazioa" +included = "Sartuta" includedInCurrent = "Zure planean sartuta" licensedSeats = "Lizentziadunak: {{count}} eserleku" manage = "Kudeatu" @@ -4852,9 +4987,11 @@ title = "Plan aktiboa" [plan.availablePlans] subtitle = "Aukeratu zure beharretara egokitzen den plana" +loadError = "Ezin izan da planaren prezioa kargatu. Balio lehenetsiak erabiliko dira." title = "Plan eskuragarriak" [plan.enterprise] +siteLicense = "Site License" highlight1 = "Prezio pertsonalizatua" highlight2 = "Laguntza espezializatua" highlight3 = "Azken ezaugarriak" @@ -4928,6 +5065,81 @@ keyDescription = "Itsatsi lizentzia-gakoa zure postatik" success = "Lizentzia aktibatuta!" successMessage = "Zure lizentzia ongi aktibatu da. Orain leiho hau itxi dezakezu." +[plan.team] +name = "Taldea" +siteLicense = "Site License" + +[credits] +enableOverageBilling = "Gaitu gain-erabileraren fakturazioa" +maybeLater = "Agian geroago" +upgrade = "Eguneratu" + +[credits.modal] +advancedMonitoring = "Monitorizazio aurreratua" +allInOneWorkspace = "PDF lanerako ingurune osoa (ikusgailua, tresnak eta agentea)" +apiSandbox = "API sandbox" +contactSales = "Jarri harremanetan salmentekin" +creditsRemaining = "{{current}}/{{total}} geratzen dira" +creditsThisMonth = "Hileko kredituak" +current = "Uneko plana" +customPricing = "Pertsonalizatua" +customSmartFolders = "Karpeta adimendun pertsonalizatuak" +dedicatedSupportSlas = "Laguntza dedikatua eta SLAak" +enterpriseSubscription = "Enpresa" +everythingInCredits = "Kredituetan dagoen guztia, gehi:" +everythingInFree = "Doakoan dagoen guztia, gehi:" +fasterThroughput = "10x azkarragoa" +forRegularWork = "PDF lan arrunterako:" +freeTier = "Doako maila" +fullyPrivateFiles = "Fitxategi erabat pribatuak" +largeFileProcessing = "Fitxategi handien prozesamendua" +managedMemberMessage = "Taldearen bidez kredituetarako sarbide mugagabea duzu. Laguntza behar baduzu, jar zaitez harremanetan zure talde-buruarekin." +managedMemberTitle = "Kreditu mugagabeak" +meteringBillingNote = "Gain-erabilerako kredituak hilero fakturatzen dira zure Team harpidetzarekin batera. Jarraitu zure erabilera edozein unetan zure kontuaren ezarpenetan." +meteringExplanation = "Zure Team planak {{credits}} kreditu hilean ditu. Agortzen direnean, gain-erabileraren fakturazio automatikoak kreditu gehigarriak emango dizkizu inoiz gelditu behar ez dezazun." +meteringIncluded = "{{credits}} kreditu/hil Team-ekin sartuta" +meteringNoCommitment = "Konpromisorik ez, ezeztatu edonoiz" +meteringNeverRunOut = "Inoiz ez geratu krediturik gabe" +meteringPayAsYouGo = "Erabili ahala ordaindu" +meteringPrice = "Kreditu gehigarriak {{price}}/kreditu" +meteringTitle = "Erabileraren araberako gain-erabilera fakturazioa" +monthlyCredits = "hileko kredituak" +orgWideAccess = "Erakunde osoko sarbide-kontrolak" +overage = "gain-erabilera" +perMonth = "/hilean" +popular = "Ezaguna" +premiumAiModels = "Premium IA ereduak" +prioritySupport = "Lehentasunezko laguntza" +privateDocCloud = "Dokumentu-hodei pribatua" +ragFineTuning = "RAG + fintzea" +secureApiAccess = "API sarbide segurua" +selfHostLink = "Ikusi dokumentazioa eta planak" +selfHostPrompt = "Auto-ostatzea nahi duzu?" +standardThroughput = "Errendimendu estandarra" +subtitle = "Eguneratu Team-era 10x kreditu eta prozesamendu azkarragoa izateko." +subtitlePro = "Gaitu gain-erabileraren fakturazio automatikoa inoiz kreditu gabe ez gelditzeko." +teamLeaderOnly = "Talde-buruek bakarrik gaitu dezakete gain-erabilera fakturazioa" +teamSubscription = "Taldea" +titleExhausted = "Zure doako kredituak erabili dituzu" +titleExhaustedPro = "Kredituak agortu zaizkizu" +unlimitedApiAccess = "API sarbide mugagabea" +unlimitedMonthlyCredits = "Site License" +unlimitedSeats = "Eserleku mugagabeak" + +[credits.modal.features] +everythingInCredits = "Kredituetan dagoen guztia, gehi:" +everythingInFree = "Doakoan dagoen guztia, gehi:" +forRegularWork = "PDF lan arrunterako:" + +[credits.insufficient] +brief = "Kreditu nahikorik ez. {{required}} kreditu behar dituzu baina {{current}}." +freeTier = "Eguneratu Team-era 10x kreditu gehiago eta gain-erabileraren fakturazio mugagabea izateko." +managedMember = "Mesedez, jar zaitez harremanetan zure talde-buruarekin laguntza lortzeko." +message = "Ez duzu nahikoa kreditu {{tool}} exekutatzeko. Une honetan {{current}} kreditu dituzu." +messageWithAmount = "{{tool}} exekutatzeko {{required}} kreditu behar dituzu, baina {{current}} besterik ez daukazu." +teamMember = "Gaitu gain-erabilera fakturazioa inoiz kreditu gabe ez gelditzeko." +title = "Kreditu nahikorik ez" + [printFile] header = "Inprimatu fitxategia inprimagailuan" submit = "Inprimatu" @@ -5565,6 +5777,70 @@ user = "Saioa hasita:" saas = "Stirling Cloud" selfhosted = "Auto-ostatua" +[settings.planBilling] +currentPlan = "Uneko plana" +loading = "Fakturazio-informazioa kargatzen..." +notAvailable = "Planak eta Fakturazioa erabilgarri daude soilik Stirling Cloud-era konektatuta dagoenean (SaaS modua)." +title = "Plana eta Fakturazioa" + +[settings.planBilling.billing] +manageBilling = "Kudeatu fakturazioa" +nextBillingDate = "Hurrengo fakturazio-data" +overageCost = "Uneko gain-erabileraren kostua: {{amount}} ({{credits}} kreditu)" + +[settings.planBilling.credits] +estimatedCost = "Kostu estimatua: {{amount}}" +freeTierInfo = "Doako planak {{freeCredits}} kreditu hilean barne hartzen ditu. Eguneratu Team-era {{teamCredits}} kreditu/hil izateko eta erabili ahala gain-erabilera fakturatzea." +included = "{{count}} kreditu/hil (sartuta)" +noOverage = "Hil honetan ez dago gain-erabilerako kargurik. Zure {{count}} kreditu sartuekin ari zara erabiltzen." +overage = "+ {{count}} gain-erabilera" +overageInfo = "Gain-erabilerako kredituak {{price}} kreditu bakoitzeko fakturatzen dira. Hileko muga gainditzen duzun erabileragatik soilik ordainduko duzu." +title = "Kredituen erabilera" + +[settings.planBilling.errors] +fetchFailed = "Ezin izan da fakturazio-daturik eskuratu" +retry = "Saiatu berriro" + +[settings.planBilling.status] +active = "Aktibo" +canceled = "Ezeztatuta" +pastDue = "Atzeratua" +trial = "Proba" + +[settings.planBilling.tier] +enterprise = "Enpresa" +enterpriseDescription = "Enpresa-mailako ezaugarri eta laguntza pertsonalizatuak" +free = "Doakoa" +freeDescription = "50 kreditu hilean" +team = "Taldea" +teamBadge = "Taldea" +teamDescription = "500 kreditu/hil sartuta, gain-erabilera fakturazio automatikoa zerbitzua etenik gabe izateko" +teamTooltipCredits = "Team planak {{credits}} kreditu/hil barne hartzen ditu." +teamTooltipFineprint = "Sartutako kredituak gainditzen dituzun erabileragatik bakarrik ordaindu." +teamTooltipOverage = "Gain-erabilera automatikoa {{price}}/kreditu prezioan, zerbitzua etenik gabe bermatzeko." + +[settings.planBilling.team] +managedByTeam = "Taldeak kudeatua" +memberCount = "{{count}} taldeko kide" + +[settings.planBilling.trial] +daysRemaining = "{{days}} egun falta dira" +daysRemainingFull = "Zure probaldia {{days}} egunetan amaituko da" +endDate = "Iraungitzen da: {{date}}" +endsOn = "Probaldia amaitzen da" +title = "Doako probaldia aktibo" + +[settings.planBilling.upgrade] +cta = "Eguneratu Team-era" +featureApi = "Automatizaziorako API sarbidea" +featureCredits = "{{teamCredits}} kreditu hilean (Free-n {{freeCredits}} baino)" +featureMembers = "Taldekide mugagabeak" +featureSupport = "Lehentasunezko laguntza" +featureThroughput = "Prozesamendu azkarragoa" +opensInBrowser = "Arakatzailean irekiko da eguneratzea osatzeko" +subtitle = "Eguneratu Team-era, honakoetarako:" +title = "Eguneratu zure plana" + [settings.developer] apiKeys = "API gakoak" title = "Garatzailea" @@ -5689,6 +5965,9 @@ people = "Pertsonak" teams = "Taldeak" title = "Lan-espazioa" +[settings.team] +title = "Taldea" + [setup] description = "Hasi Stirling PDF nola erabili nahi duzun aukeratuz" welcome = "Ongi etorri Stirling PDF-era" @@ -6011,6 +6290,11 @@ desc = "Banaketa automatikoa banatzaile-orriak erabiliz" name = "Orri-banatzailea" tooltip = "Erabili QR kode banatzaile orriak dokumentuen artean eskaneatzean" +[split.methods.byPoster] +name = "Inprimagarri zatitan" +desc = "Zatitu orri handiak inprimagarri tamainetan" +tooltip = "Tamaina handiko orriak zatitu paper estandarrean (A4, Letter, eta abar) inprimatzeko egokiak diren zatitan" + [split.methods.byPages] desc = "Atera orrialde zehatzak (1,3,5-10)" name = "Orri-zenbakiak" @@ -6029,6 +6313,7 @@ tooltip = "Zehaztu gehieneko fitxategi-tamaina (adib. 10MB, 500KB)" [split.methods.prefix] splitAt = "Zatitu hemen" splitBy = "Zatitu honen arabera" +splitInto = "Zatitu zatitan" [split.methodSelection.tooltip] bullet1 = "Egin klik metodo txartelean hura hautatzeko" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Mesedez, hautatu banaketa-metodo bat lehenik" chooseMethod = "Aukeratu metodoa" settings = "Ezarpenak" +[split.poster] +rightToLeft = "Zatitu eskuinetik ezkerrera" + +[split.poster.pageSize] +label = "Helburu orri tamaina" +description = "Inprimatzeko irteerako orrien tamaina" + +[split.poster.xFactor] +label = "Zatiketa horizontalak" +description = "Orri bakoitza zatitzeko zutabe kopurua" + +[split.poster.yFactor] +label = "Zatiketa bertikalak" +description = "Orri bakoitza zatitzeko errenkada kopurua" + [split.tooltip.byChapters] bullet1 = "Laster-marka maila: Zein mailatan zatitu (1=goi maila)" bullet2 = "Metadatuak sartu: Dokumentuaren propietateak mantendu" @@ -6085,6 +6385,14 @@ bullet5 = "Gaitu Duplex modua banaketa-orriaren bi aldeak eskaneatzen badituzu" text = "Automatikoki zatitu eskaneatutako dokumentuak QR kodeak dituzten banaketa-orri fisikoak erabiliz. Aproposa batera eskaneatutako dokumentu anitzak prozesatzeko." title = "Zatitu orrialde-banatzaileren bidez" +[split.tooltip.byPoster] +bullet1 = "Helburu orri tamaina: Aukeratu irteerako paper tamaina (A4, Letter, eta abar)" +bullet2 = "Zatiketa horizontal/bertikalak: banatzeko sarearen tamaina" +bullet3 = "Eskuinetik ezkerrera: alderantzikatu zutabeen ordena RTL diseinuetarako" +bullet4 = "Inprimatu eta elkartu piezak zure posterra sortzeko" +text = "Zatitu PDFko orri handiak paper estandar tamainetarako egokiak diren zati inprimagarrietan. Ezin hobea tamaina handiegiko orrietatik poster inprimatzeko." +title = "Zatitu poster inprimaketarako" + [split.tooltip.byPages] bullet1 = "Banaketa-puntu bakarrak: 3,7 (3. eta 7. orrien ondoren zatitzen du)" bullet2 = "Tarteko banaketa-puntuak: 3-8 (3. orriaren aurretik eta 8. orriaren ondoren zatitzen du)" @@ -6364,9 +6672,13 @@ tags = "web-harrapaketa,orria-gorde,webetik-dokumentura,artxibatu" title = "URL bat PDF-ra" [usage] +aboutUsageAnalytics = "Erabilera-analitikari buruz" +configureSettings = "Konfiguratu analitika ezarpenak" error = "Errorea erabilera-estatistikak kargatzean" noData = "Ez dago daturik eskuragarri" noDataMessage = "Une honetan ez dago erabilera-estatistikarik eskuragarri." +usageAnalyticsExplanation = "Erabilera-analitikak endpoint-eskaerak eta tresnen erabilera ereduak jarraitzen ditu. Ikuskaritza-erregistroen aginte-panelekin batera, sistemaren jardueraren, errendimenduaren eta segurtasun gertaeren ikusgarritasun osoa lortzen duzu." +viewAuditLogs = "Ikusi ikuskaritza-erregistroak" [usage.chart] title = "Endpoints erabileraren diagrama" @@ -6947,3 +7259,278 @@ cancel = "Utzi" confirm = "Erauzi" message = "ZIP honek {{count}} fitxategi ditu. Erauzi hala ere?" title = "ZIP fitxategi handia" + +[cloudBadge] +tooltip = "Eragiketa honek zure hodeiko kredituak erabiliko ditu" + +[team] +cancelInviteError = "Ezin izan da gonbidapena ezeztatu" +confirmCancelInvite = "Ziur zaude gonbidapen hau ezeztatu nahi duzula?" +confirmLeave = "Ziur zaude talde hau utzi nahi duzula?" +confirmLeaveLeader = "Talde-burua zaren heinean, alde eginez gero taldetik kenduko zara. Ziur zaude?" +confirmRemove = "Ziur zaude kide hau kendu nahi duzula?" +editName = "Editatu taldearen izena" +inviteCancelled = "Gonbidapena ezeztatua" +inviteError = "Ezin izan da gonbidapena bidali" +inviteSent = "Gonbidapena ongi bidali da" +leader = "Burua" +leaveButton = "Utzi taldea" +leaveError = "Ezin izan da taldea utzi" +leaveSuccess = "Taldea ongi utzi da" +loading = "Talde-informazioa kargatzen..." +memberCount = "{{count}} kide" +memberRemoved = "Kidea ongi kendu da" +namePlaceholder = "Sartu taldearen izena" +personal = "Pertsonala" +removeError = "Ezin izan da kidea kendu" +renameError = "Ezin izan da taldea berrizendatu" +renameSuccess = "Taldea ongi berrizendatu da" + +[team.invitationBanner] +message = "bat egitera gonbidatu zaitu" +acceptButton = "Onartu" +rejectButton = "Ukatu" + +[team.features] +badge = "Taldearen ezaugarriak" +subtitle = "Elkarlanean aritu zure taldearekin" +title = "Taldeko lankidetza" +viewPlans = "Ikusi planak" + +[team.features.billing] +description = "Kudeatu fakturazioa eta harpidetzak" +title = "Fakturazio kudeaketa" + +[team.features.credits] +description = "Kreditu partekatuen multzoa kide guztientzat" +title = "Kreditu partekatuak" + +[team.features.dashboard] +description = "Ikusi taldearen jarduera eta erabilera" +title = "Taldearen panela" + +[team.features.invite] +description = "Gehitu kideak zure taldera" +title = "Gonbidatu kideak" + +[team.invite] +cancelLabel = "Utzi" +invalidEmail = "Helbide elektroniko baliogabea" +placeholder = "Sartu helbide elektronikoa" +sendButton = "Bidali gonbidapena" +title = "Gonbidatu taldeko kidea" + +[team.members] +emailColumn = "Posta elektronikoa" +empty = "Oraindik ez dago taldekiderik" +nameColumn = "Izena" +pending = "Zain" +remove = "Kendu" +roleColumn = "Rola" +title = "Taldekideak" + +[team.upgrade] +button = "Eguneratu Team-era" +description = "Desblokeatu talde-lankidetzako ezaugarriak" +title = "Eguneratu Team planera" + +[provider.oauth2.google] +scope = "Saioa hasteko autentifikazioa" + +[provider.oauth2.google.clientId] +label = "Bezeroaren IDa" +description = "Google Cloud Console-ko OAuth2 bezeroaren IDa" + +[provider.oauth2.google.clientSecret] +label = "Bezeroaren sekretua" +description = "Google Cloud Console-ko OAuth2 bezeroaren sekretua" + +[provider.oauth2.google.scopes] +label = "Esparruak" +description = "Komez bereizitako OAuth2 esparruak" + +[provider.oauth2.google.useAsUsername] +label = "Erabili erabiltzaile-izen gisa" +description = "Erabiltzaile-izen gisa erabiliko den eremua (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Saioa hasteko autentifikazioa" + +[provider.oauth2.github.clientId] +label = "Bezeroaren IDa" +description = "GitHub Developer Settings-etik ateratako OAuth2 bezeroaren IDa" + +[provider.oauth2.github.clientSecret] +label = "Bezeroaren sekretua" +description = "GitHub Developer Settings-etik ateratako OAuth2 bezeroaren sekretua" + +[provider.oauth2.github.scopes] +label = "Esparruak" +description = "Komez bereizitako OAuth2 esparruak" + +[provider.oauth2.github.useAsUsername] +label = "Erabili erabiltzaile-izen gisa" +description = "Erabiltzaile-izen gisa erabiliko den eremua (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Jaulkitzailearen URLa" +description = "Keycloak erreinuaren OpenID Connect Discovery endpoint-aren URLa" + +[provider.oauth2.keycloak.clientId] +label = "Bezeroaren IDa" +description = "Keycloak-eko OAuth2 bezeroaren IDa" + +[provider.oauth2.keycloak.clientSecret] +label = "Bezeroaren sekretua" +description = "Keycloak-eko OAuth2 bezeroaren sekretua" + +[provider.oauth2.keycloak.scopes] +label = "Esparruak" +description = "Komez bereizitako OAuth2 esparruak" + +[provider.oauth2.keycloak.useAsUsername] +label = "Erabili erabiltzaile-izen gisa" +description = "Erabiltzaile-izen gisa erabiliko den eremua (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "OAuth2 generikoa" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Gaitu OAuth2 generikoa" +description = "Gaitu autentifikazioa pertsonalizatutako OAuth2 hornitzaile batekin" + +[provider.oauth2.generic.provider] +label = "Hornitzailearen izena" +description = "Zure OAuth2 hornitzailearen izena (adib., Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "Jaulkitzailearen URLa" +description = "OpenID Connect Discovery (/.well-known/openid-configuration) onartzen duen hornitzailea" + +[provider.oauth2.generic.clientId] +label = "Bezeroaren IDa" +description = "Zure hornitzailearen OAuth2 bezeroaren IDa" + +[provider.oauth2.generic.clientSecret] +label = "Bezeroaren sekretua" +description = "Zure hornitzailearen OAuth2 bezeroaren sekretua" + +[provider.oauth2.generic.scopes] +label = "Esparruak" +description = "Komez bereizitako OAuth2 esparruak" + +[provider.oauth2.generic.useAsUsername] +label = "Erabili erabiltzaile-izen gisa" +description = "Erabiltzaile-izen gisa erabiliko den eremua" + +[provider.oauth2.generic.autoCreateUser] +label = "Erabiltzaileak automatikoki sortu" +description = "Automatikoki sortu erabiltzaile-kontuak lehen OAuth2 saio-hasieran" + +[provider.oauth2.generic.blockRegistration] +label = "Erregistroa blokeatu" +description = "Eragotzi erabiltzaile berrien erregistroa OAuth2 bidez" + +[provider.smtp] +name = "SMTP posta" +scope = "Posta jakinarazpenak" + +[provider.smtp.enabled] +label = "Gaitu posta" +description = "Gaitu posta jakinarazpenak eta SMTP funtzionaltasuna" + +[provider.smtp.host] +label = "SMTP ostalaria" +description = "Zure SMTP zerbitzariaren ostalari-izena edo IP helbidea" + +[provider.smtp.port] +label = "SMTP ataka" +description = "SMTP konexiorako ataka zenbakia (normalean 25, 465 edo 587)" + +[provider.smtp.username] +label = "SMTP erabiltzaile-izena" +description = "Erabiltzaile-izena SMTP autentifikaziorako" + +[provider.smtp.password] +label = "SMTP pasahitza" +description = "Pasahitza SMTP autentifikaziorako" + +[provider.smtp.from] +label = "Bidaltzailearen helbidea" +description = "Bidaltzaile gisa erabiliko den helbide elektronikoa" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "Gaitu SAML2" +description = "Gaitu SAML2 autentifikazioa (Enterprise soilik)" + +[provider.saml2.provider] +label = "Hornitzailearen izena" +description = "Zure SAML2 hornitzailearen izena" + +[provider.saml2.registrationId] +label = "Erregistro IDa" +description = "Zure Service Provider (SP) aplikazioaren izena" + +[provider.saml2.idpMetadataUri] +label = "IDP Metadata URIa" +description = "Zure hornitzailearen metadatarako URIa" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login URLa" +description = "SSO abiarazteko URLa" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout URLa" +description = "SLO abiarazteko URLa" + +[provider.saml2.idpIssuer] +label = "IDP jaulkitzailea" +description = "Zure hornitzailearen IDa" + +[provider.saml2.idpCert] +label = "IDP ziurtagiria" +description = "Ziurtagiriaren bidea (adib., classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Gako pribatua" +description = "Zure gako pribatuaren bidea" + +[provider.saml2.spCert] +label = "SP ziurtagiria" +description = "Zure sinadura-ziurtagiriaren bidea" + +[provider.saml2.autoCreateUser] +label = "Erabiltzaileak automatikoki sortu" +description = "Automatikoki sortu erabiltzaile-kontuak lehen SAML2 saio-hasieran" + +[provider.saml2.blockRegistration] +label = "Erregistroa blokeatu" +description = "Eragotzi erabiltzaile berrien erregistroa SAML2 bidez" + +[provider.googledrive] +name = "Google Drive" +scope = "Fitxategi inportazioa" + +[provider.googledrive.enabled] +label = "Gaitu Google Drive fitxategi hautatzailea" +description = "Baimendu erabiltzaileei fitxategiak zuzenean Google Drivetik inportatzea" + +[provider.googledrive.clientId] +label = "Bezeroaren IDa" +description = "Google Cloud Console-ko Google OAuth 2.0 Bezero IDa" + +[provider.googledrive.apiKey] +label = "API gakoa" +description = "Google Picker API-rako Google API gakoa Google Cloud Console-tik" + +[provider.googledrive.appId] +label = "Aplikazioaren IDa" +description = "Google Cloud-eko Google Drive Aplikazioaren IDa" diff --git a/frontend/public/locales/fa-IR/translation.toml b/frontend/public/locales/fa-IR/translation.toml index 96fe9c674..ef163ba1f 100644 --- a/frontend/public/locales/fa-IR/translation.toml +++ b/frontend/public/locales/fa-IR/translation.toml @@ -96,6 +96,8 @@ pin = "سنجاق کردن فایل (پس از اجرای ابزار فعال ب poweredBy = "قدرت گرفته از" pro = "نسخه حرفه‌ای" processTimeWarning = "هشدار: این فرآیند ممکن است بسته به اندازه فایل تا یک دقیقه طول بکشد" +processingComplete = "فایل شما آماده است." +processingCompleteMultiple = "{{count}} فایل آماده‌اند." property = "ویژگی" quickPosition = "موقعیت سریع" red = "قرمز" @@ -105,6 +107,7 @@ save = "ذخیره" saveToBrowser = "ذخیره در مرورگر" saveUnavailable = "ذخیره برای این مورد در دسترس نیست" seeDockerHub = "مشاهده Docker Hub" +editSecret = "ویرایش این مقدار" selectFillter = "-- انتخاب کنید --" size = "اندازه" sponsor = "حمایت مالی" @@ -651,6 +654,7 @@ description = "پیکربندی ارائه‌دهندگان احراز هویت disconnect = "قطع اتصال" disconnected = "ارائه‌دهنده با موفقیت قطع شد" disconnectError = "قطع ارتباط ارائه‌دهنده ناموفق بود" +documentation = "مشاهده مستندات" imageResolutionFull = "کامل (اندازه اصلی)" imageResolutionReduced = "کاهش‌یافته (حداکثر 1200px)" linkedServices = "سرویس‌های متصل" @@ -964,6 +968,18 @@ label = "زبان پیش‌فرض" description = "حداکثر اندازه بارگذاری فایل (مثلاً 100MB, 1GB)" label = "محدودیت بارگذاری فایل" +[admin.settings.general.hideDisabledTools] +description = "ابزارهای غیرفعال را از رابط کاربری پنهان کنید" +label = "پنهان کردن ابزارهای غیرفعال" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "دکمه Google Drive را هنگام غیرفعال بودن پنهان کنید" +label = "پنهان کردن Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "دکمه اسکنر QR موبایل را هنگام غیرفعال بودن پنهان کنید" +label = "پنهان کردن اسکنر موبایل" + [admin.settings.general.frontendUrl] description = "آدرس پایه برای فرانت‌اند (مثلاً https://pdf.example.com). برای لینک‌های دعوت ایمیل و آپلودهای کد QR موبایل استفاده می‌شود. برای استفاده از آدرس بک‌اند خالی بگذارید." label = "Frontend URL" @@ -1148,6 +1164,8 @@ title = "امنیت" [admin.settings.security.audit] label = "گزارش حسابرسی" +showDetails = "نمایش جزئیات سطح ممیزی" +hideDetails = "پنهان کردن جزئیات سطح ممیزی" [admin.settings.security.audit.enabled] description = "رهگیری اقدامات کاربر و رویدادهای سیستم برای انطباق و پایش امنیتی" @@ -1157,10 +1175,32 @@ label = "فعال‌سازی گزارش حسابرسی" description = "0=OFF، 1=BASIC، 2=STANDARD، 3=VERBOSE" label = "سطح حسابرسی" +[admin.settings.security.audit.levelDetails] +off = "بدون ثبت لاگ ممیزی (به‌جز رویدادهای امنیتی بحرانی)" +basic = "عملیات فایل PDF (فشرده‌سازی، تقسیم، ادغام و غیره) و تغییرات تنظیمات. ثبت می‌شود: وضعیت عملیات (موفق/ناموفق)، پارامترهای متد، زمان‌بندی. حجم لاگ حداقلی." +standard = "رویدادهای BASIC به‌علاوه: ورود/خروج کاربر، تغییرات حساب، درخواست‌های عمومی GET. برای کاهش نویز لاگ، فراخوانی‌های polling پیوسته (/auth/me، /app-config، /health و غیره) مستثنا می‌شوند. ایده‌آل برای اکثر استقرارها." +verbose = "رویدادهای STANDARD به‌علاوه: فراخوانی‌های polling پیوسته، همه درخواست‌های GET، زمان‌بندی دقیق. هشدار: حجم لاگ بالا و تأثیر بر عملکرد." + [admin.settings.security.audit.retentionDays] description = "تعداد روزهای نگهداری گزارش‌های حسابرسی" label = "نگهداری گزارش (روز)" +[admin.settings.security.audit.advancedOptions] +title = "گزینه‌های پیشرفته" +description = "گزینه‌های زیر زمان پردازش و مصرف حافظه را افزایش می‌دهند. فقط در صورت نیاز واقعی فعال کنید." + +[admin.settings.security.audit.captureFileHash] +description = "استخراج هش SHA-256 فایل‌های PDF آپلودشده برای راستی‌آزمایی یکپارچگی. مستقل از سطح ممیزی." +label = "گرفتن هش فایل (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "استخراج فیلد نویسنده از اسناد PDF در حین پردازش. نیازمند پردازش PDF است و تأخیر را افزایش می‌دهد. مستقل از سطح ممیزی." +label = "گرفتن فراداده نویسنده PDF" + +[admin.settings.security.audit.captureOperationResults] +description = "ثبت مقادیر بازگشتی متدها. توصیه نمی‌شود: حجم لاگ و مصرف دیسک را به‌طور قابل‌توجهی افزایش می‌دهد." +label = "گرفتن نتایج عملیات" + [admin.settings.security.csrfDisabled] description = "غیرفعال کردن محافظت Cross-Site Request Forgery (توصیه نمی‌شود)" label = "غیرفعال کردن محافظت CSRF" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "پیکربندی لاگ ممیزی" +configureAuditMessage = "سطح لاگ ممیزی، دوره نگه‌داری و سایر تنظیمات را در بخش امنیت و احراز هویت تنظیم کنید." disabled = "ثبت وقایع ممیزی غیرفعال است" disabledMessage = "برای پیگیری رویدادهای سیستم، ثبت ممیزی را در پیکربندی برنامه خود فعال کنید." enterpriseRequired = "نیازمند لایسنس سازمانی" enterpriseRequiredMessage = "سیستم ثبت وقایع یک ویژگی سازمانی است. لطفاً برای دسترسی به لاگ‌های ممیزی و تحلیل‌ها به لایسنس سازمانی ارتقا دهید." +goToSettings = "رفتن به تنظیمات ممیزی" notAvailable = "سیستم ممیزی در دسترس نیست" notAvailableMessage = "سیستم ممیزی پیکربندی نشده یا در دسترس نیست." -[audit.charts] -byType = "رویدادها بر اساس نوع" -byUser = "رویدادها بر اساس کاربر" -day = "روز" -error = "خطا در بارگذاری نمودارها" -month = "ماه" -overTime = "رویدادها در گذر زمان" -title = "داشبورد ممیزی" -week = "هفته" - [audit.error] title = "خطا در بارگذاری سیستم ممیزی" -[audit.events] -actions = "اقدامات" -clearFilters = "پاک‌سازی" -details = "جزئیات" -endDate = "تاریخ پایان" -error = "خطا در بارگذاری رویدادها" -eventDetails = "جزئیات رویداد" -filterByType = "فیلتر بر اساس نوع" -filterByUser = "فیلتر بر اساس کاربر" -ipAddress = "نشانی IP" -noEvents = "هیچ رویدادی یافت نشد" -startDate = "تاریخ شروع" -timestamp = "مُهر زمانی" -title = "رویدادهای ممیزی" -type = "نوع" -user = "کاربر" -viewDetails = "مشاهده جزئیات" - [audit.export] clearFilters = "پاک‌سازی" description = "رویدادهای ممیزی را به قالب CSV یا JSON برون‌بری کنید. برای محدود کردن داده‌های برون‌بری‌شده از فیلترها استفاده کنید." endDate = "تاریخ پایان" error = "برون‌بری داده‌ها ناموفق بود" exportButton = "برون‌بری داده‌ها" +fieldAuthor = "نویسنده (از PDF)" +fieldDate = "تاریخ" +fieldDocumentName = "نام سند" +fieldFileHash = "هش فایل (SHA-256)" +fieldIpAddress = "نشانی IP" +fieldOperationResults = "نتایج عملیات" +fieldOutcome = "نتیجه (موفق/ناموفق)" +fieldTool = "ابزار" +fieldUsername = "نام کاربری" filterByType = "فیلتر بر اساس نوع" filterByUser = "فیلتر بر اساس کاربر" filters = "فیلترها (اختیاری)" format = "قالب برون‌بری" +selectFields = "انتخاب فیلدهای قابل درج" startDate = "تاریخ شروع" title = "برون‌بری داده‌های ممیزی" +verboseRequired = "نیازمند سطح ممیزی VERBOSE" [audit.systemStatus] +autoRefresh = "نوسازی خودکار" +autoRefreshLabel = "نوسازی خودکار هر ۳۰ ثانیه" +captureBySettings = "در تنظیمات فعال کنید" +capturedFields = "فیلدهای ثبت‌شده" +date = "تاریخ" days = "روز" disabled = "غیرفعال" +documentName = "نام سند" enabled = "فعال" +fileHash = "هش فایل" level = "سطح ممیزی" +pdfAuthor = "نویسنده PDF" retention = "دوره نگهداری" status = "ثبت ممیزی" title = "وضعیت سیستم" +tool = "ابزار" totalEvents = "کل رویدادها" +username = "نام کاربری" +verboseOnly = "فقط در حالت VERBOSE" + +[audit.stats] +activeUsers = "کاربران فعال" +attention = "نیاز به توجه" +avgLatency = "میانگین تأخیر" +error = "خطا در بارگذاری آمار" +errorLoadingStats = "بارگذاری آمار ناموفق بود" +excellent = "عالی" +good = "خوب" +noData = "ناموجود" +successRate = "نرخ موفقیت" +title = "خلاصه" +totalEvents = "کل رویدادها" +vsLastPeriod = "نسبت به دوره قبل" + +[audit.charts] +byTool = "پراستفاده‌ترین ابزارها" +byType = "رویدادها بر اساس نوع" +byUser = "رویدادها بر اساس کاربر" +day = "روز" +error = "خطا در بارگذاری نمودارها" +hourlyActivity = "فعالیت ساعتی" +month = "ماه" +noData = "برای این بازه داده‌ای وجود ندارد" +overTime = "رویدادها در گذر زمان" +title = "داشبورد ممیزی" +week = "هفته" + +[audit.events] +actions = "اقدامات" +author = "نویسنده" +clearFilters = "پاک‌سازی" +details = "جزئیات" +documentName = "سند" +endDate = "تاریخ پایان" +error = "خطا در بارگذاری رویدادها" +eventDetails = "جزئیات رویداد" +failure = "ناموفق" +fileHash = "هش فایل" +filterByType = "فیلتر بر اساس نوع" +filterByUser = "فیلتر بر اساس کاربر" +ipAddress = "نشانی IP" +noEvents = "هیچ رویدادی یافت نشد" +outcome = "وضعیت" +sortAsc = "مرتب‌سازی صعودی" +sortDesc = "مرتب‌سازی نزولی" +startDate = "تاریخ شروع" +success = "موفق" +timestamp = "مُهر زمانی" +title = "رویدادهای ممیزی" +type = "نوع" +user = "کاربر" +viewDetails = "مشاهده جزئیات" + +[audit.filters] +allOutcomes = "همه" +failureOnly = "فقط ناموفق‌ها" +last7Days = "۷ روز گذشته" +last30Days = "۳۰ روز گذشته" +outcomeFilter = "نتیجه" +quickPresets = "فیلترهای سریع" +successOnly = "فقط موفق‌ها" +thisMonth = "این ماه" +today = "امروز" [audit.tabs] +clearData = "پاک‌سازی داده‌ها" dashboard = "داشبورد" events = "رویدادهای ممیزی" export = "برون‌بری" +[audit.clearData] +cancel = "لغو" +codeDoesNotMatch = "کد مطابقت ندارد" +codePlaceholder = "کد را اینجا وارد کنید" +confirmationCode = "کد تأیید" +confirmationRequired = "حذف همه داده‌های ممیزی" +confirmMessage = "این کار همه لاگ‌های ممیزی را برای همیشه حذف می‌کند. برای ادامه، کد تأیید را در زیر وارد کنید." +confirmTitle = "لطفاً حذف را تأیید کنید" +deleteButton = "حذف" +enterCode = "کد تأیید" +enterCodeBelow = "کد را دقیقاً مطابق نمایش بالا وارد کنید (حساس به حروف بزرگ/کوچک)" +initiateDelete = "حذف همه داده‌ها" +irreversible = "غیرقابل‌بازگشت" +success = "موفق" +successMessage = "همه داده‌های ممیزی با موفقیت پاک شد" +warning1 = "این اقدام قابل بازگشت نیست" +warning2 = "حذف داده‌های ممیزی، همه لاگ‌های ممیزی تاریخی از جمله رویدادهای امنیتی، فعالیت‌های کاربر و عملیات فایل را برای همیشه از پایگاه داده حذف می‌کند." + [auth] accessDenied = "دسترسی رد شد" insufficientPermissions = "شما مجوز انجام این اقدام را ندارید." @@ -2254,9 +2374,11 @@ copy = "کپی" done = "انجام شد" error = "خطا" expand = "گسترش دادن" +learnMore = "بیشتر بدانید" lines = "خطوط" loading = "در حال بارگذاری..." next = "بعدی" +operation = "این عملیات" preview = "پیش‌نمایش" previous = "قبلی" refresh = "تازه‌سازی" @@ -2920,6 +3042,7 @@ copyStack = "کپی Trace Stack" discordSubmit = "Discord - ارسال پست پشتیبانی" dismissAllErrors = "نادیده گرفتن همه خطاها" encryptedPdfMustRemovePassword = "این PDF رمزگذاری یا با گذرواژه محافظت شده است. لطفاً پیش از تبدیل به PDF/A قفل آن را باز کنید." +generic = "خطایی رخ داد" github = "ارسال تیکت در GitHub" githubSubmit = "GitHub - ارسال تیکت" incorrectPasswordProvided = "گذرواژه PDF نادرست است یا ارائه نشده است." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "اشتراک شما با موفقیت ارتقا یا upgradeSuccess = "پرداخت موفق بود! اشتراک شما ارتقا یافت. لایسنس روی سرورتان به‌روزرسانی شد. به‌زودی یک ایمیل تأیید دریافت می‌کنید." upgradeTitle = "ارتقا به {{planName}}" yearly = "سالانه" +checkoutOpened = "فرآیند پرداخت در مرورگر باز شد" +checkoutInstructions = "خرید خود را در پنجره مرورگری که همین حالا باز شد تکمیل کنید. پس از اتمام پرداخت، به اینجا برگردید و برای به‌روزرسانی اطلاعات صورتحساب روی دکمه زیر کلیک کنید." +refreshBilling = "پرداخت را انجام دادم - صورتحساب را به‌روزرسانی کن" +closeLater = "بعداً انجام می‌دهم" [payment.emailStage] continue = "ادامه" @@ -4679,6 +4806,13 @@ prompt = "صفحه‌ای که می‌خواهید جدول استخراج شو submit = "استخراج" title = "PDF به CSV" +[PDFToXLSX] +header = "تبدیل PDF به Excel" +prompt = "صفحات برای استخراج جدول‌ها را انتخاب کنید" +submit = "تبدیل" +title = "تبدیل PDF به Excel (XLSX)" +tags = "صفحه‌گسترده,excel,xlsx,جدول,استخراج,تبدیل" + [PDFToHTML] credit = "این سرویس از pdftohtml برای تبدیل فایل استفاده می‌کند." header = "PDF به HTML" @@ -4835,6 +4969,7 @@ customPricing = "سفارشی" featureComparison = "مقایسه قابلیت‌ها" from = "از" hideComparison = "پنهان کردن مقایسه قابلیت‌ها" +included = "شامل" includedInCurrent = "در پلن شما شامل است" licensedSeats = "دارای مجوز: {{count}} صندلی" manage = "مدیریت" @@ -4852,9 +4987,11 @@ title = "طرح فعال" [plan.availablePlans] subtitle = "طرحی را انتخاب کنید که با نیازهای شما سازگار است" +loadError = "امکان بارگذاری قیمت طرح‌ها نیست. از مقادیر پیش‌فرض استفاده می‌شود." title = "طرح‌های موجود" [plan.enterprise] +siteLicense = "مجوز سراسری" highlight1 = "قیمت‌گذاری سفارشی" highlight2 = "پشتیبانی اختصاصی" highlight3 = "جدیدترین قابلیت‌ها" @@ -4928,6 +5065,81 @@ keyDescription = "کلید لایسنس موجود در ایمیل خود را success = "لایسنس فعال شد!" successMessage = "لایسنس شما با موفقیت فعال شد. اکنون می‌توانید این پنجره را ببندید." +[plan.team] +name = "تیم" +siteLicense = "مجوز سراسری" + +[credits] +enableOverageBilling = "فعال‌سازی صورت‌حساب اضافه‌مصرف" +maybeLater = "بعداً" +upgrade = "ارتقا" + +[credits.modal] +advancedMonitoring = "پایش پیشرفته" +allInOneWorkspace = "فضای کاری یکپارچه PDF (نمایشگر، ابزارها و عامل)" +apiSandbox = "محیط آزمایشی API" +contactSales = "تماس با فروش" +creditsRemaining = "{{current}} از {{total}} باقیمانده" +creditsThisMonth = "اعتبارهای ماهانه" +current = "طرح فعلی" +customPricing = "سفارشی" +customSmartFolders = "پوشه‌های هوشمند سفارشی" +dedicatedSupportSlas = "پشتیبانی اختصاصی و SLAها" +enterpriseSubscription = "سازمانی" +everythingInCredits = "همه امکانات طرح Credits، به‌علاوه:" +everythingInFree = "همه امکانات طرح رایگان، به‌علاوه:" +fasterThroughput = "توان عبوری ۱۰ برابری" +forRegularWork = "برای کارهای معمول PDF:" +freeTier = "طرح رایگان" +fullyPrivateFiles = "فایل‌ها کاملاً خصوصی" +largeFileProcessing = "پردازش فایل‌های بزرگ" +managedMemberMessage = "شما از طریق تیم خود به اعتبارها دسترسی نامحدود دارید. در صورت نیاز به کمک، لطفاً با رهبر تیم خود تماس بگیرید." +managedMemberTitle = "اعتبار نامحدود" +meteringBillingNote = "اعتبارهای اضافه‌مصرف به‌صورت ماهانه همراه با اشتراک تیم شما صورتحساب می‌شوند. می‌توانید هر زمان در تنظیمات حساب، مصرف خود را پیگیری کنید." +meteringExplanation = "طرح تیم شما شامل {{credits}} اعتبار در ماه است. وقتی تمام شوند، صورت‌حساب اضافه‌مصرف به‌طور خودکار اعتبارهای بیشتری فراهم می‌کند تا هرگز کارتان متوقف نشود." +meteringIncluded = "{{credits}} اعتبار/ماه همراه با طرح تیم" +meteringNoCommitment = "بدون تعهد، هر زمان بخواهید لغو کنید" +meteringNeverRunOut = "هرگز اعتبارتان تمام نمی‌شود" +meteringPayAsYouGo = "فقط به‌اندازه استفاده پرداخت کنید" +meteringPrice = "اعتبارهای اضافی با نرخ {{price}} به‌ازای هر اعتبار" +meteringTitle = "صورت‌حساب اضافه‌مصرف بر اساس میزان استفاده" +monthlyCredits = "اعتبارهای ماهانه" +orgWideAccess = "کنترل‌های دسترسی در سطح سازمان" +overage = "اضافه‌مصرف" +perMonth = "/ماه" +popular = "محبوب" +premiumAiModels = "مدل‌های هوش مصنوعی پریمیوم" +prioritySupport = "پشتیبانی اولویت‌دار" +privateDocCloud = "ابر اسناد خصوصی" +ragFineTuning = "RAG + fine-tuning" +secureApiAccess = "دسترسی امن API" +selfHostLink = "مرور مستندات و طرح‌ها" +selfHostPrompt = "می‌خواهید خود میزبانی کنید؟" +standardThroughput = "توان عبوری استاندارد" +subtitle = "ارتقا به طرح تیم برای ۱۰ برابر اعتبار و پردازش سریع‌تر." +subtitlePro = "صورت‌حساب اضافه‌مصرف را فعال کنید تا هرگز اعتبارتان تمام نشود." +teamLeaderOnly = "فقط رهبر تیم می‌تواند صورت‌حساب اضافه‌مصرف را فعال کند" +teamSubscription = "تیم" +titleExhausted = "اعتبار رایگان خود را مصرف کرده‌اید" +titleExhaustedPro = "اعتبار شما تمام شده است" +unlimitedApiAccess = "دسترسی نامحدود به API" +unlimitedMonthlyCredits = "مجوز سراسری" +unlimitedSeats = "کاربران نامحدود" + +[credits.modal.features] +everythingInCredits = "همه امکانات طرح Credits، به‌علاوه:" +everythingInFree = "همه امکانات طرح رایگان، به‌علاوه:" +forRegularWork = "برای کارهای معمول PDF:" + +[credits.insufficient] +brief = "اعتبار کافی نیست. شما به {{required}} اعتبار نیاز دارید اما {{current}} اعتبار دارید." +freeTier = "برای ۱۰ برابر اعتبار بیشتر و صورت‌حساب اضافه‌مصرف نامحدود، به طرح تیم ارتقا دهید." +managedMember = "لطفاً برای دریافت کمک با رهبر تیم خود تماس بگیرید." +message = "اعتبار کافی برای اجرای {{tool}} ندارید. در حال حاضر {{current}} اعتبار دارید." +messageWithAmount = "برای اجرای {{tool}} به {{required}} اعتبار نیاز دارید، اما فقط {{current}} اعتبار دارید." +teamMember = "صورت‌حساب اضافه‌مصرف را فعال کنید تا هرگز اعتبارتان تمام نشود." +title = "اعتبار کافی نیست" + [printFile] header = "چاپ فایل به چاپگر" submit = "چاپ" @@ -5565,6 +5777,70 @@ user = "وارد شده با" saas = "Stirling Cloud" selfhosted = "خودمیزبان" +[settings.planBilling] +currentPlan = "طرح فعلی" +loading = "در حال بارگذاری اطلاعات صورتحساب..." +notAvailable = "بخش طرح و صورتحساب فقط هنگام اتصال به Stirling Cloud (حالت SaaS) در دسترس است." +title = "طرح و صورتحساب" + +[settings.planBilling.billing] +manageBilling = "مدیریت صورتحساب" +nextBillingDate = "تاریخ صورتحساب بعدی" +overageCost = "هزینه اضافه‌مصرف فعلی: {{amount}} ({{credits}} اعتبار)" + +[settings.planBilling.credits] +estimatedCost = "هزینه تخمینی: {{amount}}" +freeTierInfo = "طرح رایگان شامل {{freeCredits}} اعتبار در ماه است. برای {{teamCredits}} اعتبار/ماه و صورت‌حساب اضافه‌مصرفِ پرداخت به‌اندازه استفاده، به طرح تیم ارتقا دهید." +included = "{{count}} اعتبار/ماه (شامل)" +noOverage = "در این ماه هزینه اضافه‌مصرف ندارید. شما در حال استفاده از {{count}} اعتبارِ مشمول خود هستید." +overage = "+ {{count}} اضافه‌مصرف" +overageInfo = "اعتبارهای اضافه‌مصرف با نرخ {{price}} به‌ازای هر اعتبار صورتحساب می‌شوند. فقط بابت مصرف فراتر از سهمیه ماهانه خود پرداخت خواهید کرد." +title = "مصرف اعتبار" + +[settings.planBilling.errors] +fetchFailed = "امکان بازیابی داده‌های صورتحساب نیست" +retry = "تلاش مجدد" + +[settings.planBilling.status] +active = "فعال" +canceled = "لغوشده" +pastDue = "عقب‌افتاده" +trial = "آزمایشی" + +[settings.planBilling.tier] +enterprise = "سازمانی" +enterpriseDescription = "ویژگی‌ها و پشتیبانی سازمانی سفارشی" +free = "رایگان" +freeDescription = "۵۰ اعتبار در ماه" +team = "تیم" +teamBadge = "تیم" +teamDescription = "۵۰۰ اعتبار/ماه شامل، صورت‌حساب خودکار اضافه‌مصرف برای خدمت بی‌وقفه" +teamTooltipCredits = "طرح تیم شامل {{credits}} اعتبار/ماه است." +teamTooltipFineprint = "فقط برای مصرف فراتر از اعتبارهای مشمول پرداخت کنید." +teamTooltipOverage = "صورت‌حساب خودکار اضافه‌مصرف با نرخ {{price}}/اعتبار، سرویس بی‌وقفه را تضمین می‌کند." + +[settings.planBilling.team] +managedByTeam = "توسط تیم مدیریت می‌شود" +memberCount = "{{count}} عضو تیم" + +[settings.planBilling.trial] +daysRemaining = "{{days}} روز باقی‌مانده" +daysRemainingFull = "دوره آزمایشی شما تا {{days}} روز دیگر به پایان می‌رسد" +endDate = "انقضا: {{date}}" +endsOn = "پایان دوره آزمایشی" +title = "آزمایشی رایگان فعال است" + +[settings.planBilling.upgrade] +cta = "ارتقا به طرح تیم" +featureApi = "دسترسی API برای خودکارسازی" +featureCredits = "{{teamCredits}} اعتبار در ماه (در مقابل {{freeCredits}} در طرح رایگان)" +featureMembers = "اعضای تیم نامحدود" +featureSupport = "پشتیبانی اولویت‌دار" +featureThroughput = "توان عبوری پردازش سریع‌تر" +opensInBrowser = "برای تکمیل ارتقا در مرورگر باز می‌شود" +subtitle = "ارتقا به طرح تیم برای:" +title = "ارتقا طرح شما" + [settings.developer] apiKeys = "کلیدهای API" title = "توسعه‌دهنده" @@ -5689,6 +5965,9 @@ people = "افراد" teams = "تیم‌ها" title = "فضای کاری" +[settings.team] +title = "تیم" + [setup] description = "با انتخاب نحوه استفاده از Stirling PDF شروع کنید" welcome = "به Stirling PDF خوش آمدید" @@ -6011,6 +6290,11 @@ desc = "تفکیک خودکار با برگه‌های جداکننده" name = "جداکننده صفحه" tooltip = "از برگه‌های جداکننده QR بین اسناد هنگام اسکن استفاده کنید" +[split.methods.byPoster] +name = "قطعات قابل چاپ" +desc = "تقسیم صفحات بزرگ به اندازه‌های قابل چاپ" +tooltip = "تقسیم صفحات بزرگ به قطعات کوچک‌تر مناسب چاپ روی کاغذ استاندارد (A4، Letter و غیره)" + [split.methods.byPages] desc = "استخراج صفحات خاص (1,3,5-10)" name = "شماره صفحات" @@ -6029,6 +6313,7 @@ tooltip = "حداکثر اندازه فایل را مشخص کنید (مثلاً [split.methods.prefix] splitAt = "تفکیک در" splitBy = "تفکیک بر اساس" +splitInto = "تقسیم به" [split.methodSelection.tooltip] bullet1 = "برای انتخاب، روی کارت یک روش کلیک کنید" @@ -6048,6 +6333,21 @@ selectMethodFirst = "لطفاً ابتدا یک روش تفکیک انتخاب chooseMethod = "انتخاب روش" settings = "تنظیمات" +[split.poster] +rightToLeft = "تقسیم از راست به چپ" + +[split.poster.pageSize] +label = "اندازه صفحه هدف" +description = "اندازه صفحات خروجی برای چاپ" + +[split.poster.xFactor] +label = "تقسیمات افقی" +description = "تعداد ستون‌ها برای تقسیم هر صفحه" + +[split.poster.yFactor] +label = "تقسیمات عمودی" +description = "تعداد ردیف‌ها برای تقسیم هر صفحه" + [split.tooltip.byChapters] bullet1 = "سطح نشانک: سطحی که باید در آن تفکیک شود (1=سطح بالا)" bullet2 = "شامل فراداده: حفظ ویژگی‌های سند" @@ -6085,6 +6385,14 @@ bullet5 = "اگر هر دو طرف برگه‌های جداکننده را اس text = "با استفاده از برگه‌های جداکننده فیزیکی دارای QR، اسناد اسکن‌شده را به‌طور خودکار تفکیک کنید. برای پردازش چند سند اسکن‌شده با هم ایده‌آل است." title = "تفکیک بر اساس جداکننده صفحه" +[split.tooltip.byPoster] +bullet1 = "اندازه صفحه هدف: اندازه کاغذ خروجی را انتخاب کنید (A4، Letter و غیره)" +bullet2 = "تقسیمات افقی/عمودی: اندازه شبکه برای تقسیم" +bullet3 = "راست‌به‌چپ: معکوس کردن ترتیب ستون‌ها برای چیدمان‌های RTL" +bullet4 = "قطعات را چاپ و سرهم کنید تا پوستر خود را بسازید" +text = "صفحات بزرگ PDF را به قطعات کوچک‌ترِ قابل چاپ تقسیم کنید که مناسب اندازه‌های استاندارد کاغذ هستند. ایده‌آل برای ساخت چاپ پوستر از صفحات بزرگ." +title = "تقسیم برای چاپ پوستر" + [split.tooltip.byPages] bullet1 = "نقاط تفکیک تکی: 3,7 (بعد از صفحات 3 و 7 تفکیک می‌کند)" bullet2 = "نقاط تفکیک بازه: 3-8 (قبل از صفحه 3 و بعد از صفحه 8 تفکیک می‌کند)" @@ -6364,9 +6672,13 @@ tags = "ذخیره صفحه وب،تبدیل وب به سند،آرشیو" title = "URL به PDF" [usage] +aboutUsageAnalytics = "درباره تحلیل استفاده" +configureSettings = "پیکربندی تنظیمات تحلیل" error = "خطا در بارگذاری آمار استفاده" noData = "داده‌ای در دسترس نیست" noDataMessage = "در حال حاضر هیچ آمار استفاده‌ای در دسترس نیست." +usageAnalyticsExplanation = "تحلیل استفاده، درخواست‌های endpoint و الگوهای استفاده از ابزارها را ردیابی می‌کند. با ترکیب داشبورد لاگ ممیزی، دید کاملی از فعالیت سیستم، عملکرد و رویدادهای امنیتی خواهید داشت." +viewAuditLogs = "مشاهده لاگ‌های ممیزی" [usage.chart] title = "نمودار استفاده از اندپوینت‌ها" @@ -6947,3 +7259,278 @@ cancel = "انصراف" confirm = "استخراج" message = "این ZIP شامل {{count}} فایل است. با این حال استخراج شود؟" title = "فایل ZIP بزرگ" + +[cloudBadge] +tooltip = "این عملیات از اعتبارهای ابری شما استفاده می‌کند" + +[team] +cancelInviteError = "لغو دعوت‌نامه ناموفق بود" +confirmCancelInvite = "آیا از لغو این دعوت‌نامه مطمئن هستید؟" +confirmLeave = "آیا مطمئن هستید می‌خواهید این تیم را ترک کنید؟" +confirmLeaveLeader = "به‌عنوان رهبر تیم، با ترک کردن از تیم حذف خواهید شد. مطمئن هستید؟" +confirmRemove = "آیا از حذف این عضو مطمئن هستید؟" +editName = "ویرایش نام تیم" +inviteCancelled = "دعوت‌نامه لغو شد" +inviteError = "ارسال دعوت‌نامه ناموفق بود" +inviteSent = "دعوت‌نامه با موفقیت ارسال شد" +leader = "رهبر تیم" +leaveButton = "ترک تیم" +leaveError = "ترک تیم ناموفق بود" +leaveSuccess = "با موفقیت از تیم خارج شدید" +loading = "در حال بارگذاری اطلاعات تیم..." +memberCount = "{{count}} عضو" +memberRemoved = "عضو با موفقیت حذف شد" +namePlaceholder = "نام تیم را وارد کنید" +personal = "شخصی" +removeError = "حذف عضو ناموفق بود" +renameError = "تغییر نام تیم ناموفق بود" +renameSuccess = "نام تیم با موفقیت تغییر کرد" + +[team.invitationBanner] +message = "شما را برای پیوستن دعوت کرده است" +acceptButton = "پذیرفتن" +rejectButton = "رد" + +[team.features] +badge = "امکانات تیم" +subtitle = "با تیم خود همکاری کنید" +title = "همکاری تیمی" +viewPlans = "مشاهده طرح‌ها" + +[team.features.billing] +description = "مدیریت صورتحساب و اشتراک‌ها" +title = "مدیریت صورتحساب" + +[team.features.credits] +description = "استخر اعتبار مشترک برای همه اعضا" +title = "اعتبارهای مشترک" + +[team.features.dashboard] +description = "مشاهده فعالیت و مصرف تیم" +title = "داشبورد تیم" + +[team.features.invite] +description = "افزودن اعضا به تیم شما" +title = "دعوت از اعضا" + +[team.invite] +cancelLabel = "لغو" +invalidEmail = "آدرس ایمیل نامعتبر است" +placeholder = "آدرس ایمیل را وارد کنید" +sendButton = "ارسال دعوت‌نامه" +title = "دعوت عضو تیم" + +[team.members] +emailColumn = "ایمیل" +empty = "هنوز عضوی در تیم نیست" +nameColumn = "نام" +pending = "در انتظار" +remove = "حذف" +roleColumn = "نقش" +title = "اعضای تیم" + +[team.upgrade] +button = "ارتقا به طرح تیم" +description = "قابلیت‌های همکاری تیمی را آزاد کنید" +title = "ارتقا به طرح تیم" + +[provider.oauth2.google] +scope = "احراز هویت ورود" + +[provider.oauth2.google.clientId] +label = "Client ID" +description = "Client ID مربوط به OAuth2 از Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Client Secret" +description = "Client Secret مربوط به OAuth2 از Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Scopeها" +description = "Scopeهای OAuth2 جداشده با ویرگول" + +[provider.oauth2.google.useAsUsername] +label = "استفاده به‌عنوان نام کاربری" +description = "فیلدی که به‌عنوان نام کاربری استفاده شود (email، name، given_name، family_name)" + +[provider.oauth2.github] +scope = "احراز هویت ورود" + +[provider.oauth2.github.clientId] +label = "Client ID" +description = "Client ID مربوط به OAuth2 از GitHub Developer Settings" + +[provider.oauth2.github.clientSecret] +label = "Client Secret" +description = "Client Secret مربوط به OAuth2 از GitHub Developer Settings" + +[provider.oauth2.github.scopes] +label = "Scopeها" +description = "Scopeهای OAuth2 جداشده با ویرگول" + +[provider.oauth2.github.useAsUsername] +label = "استفاده به‌عنوان نام کاربری" +description = "فیلدی که به‌عنوان نام کاربری استفاده شود (email، login، name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "نشانی URL صادرکننده" +description = "نشانی URL نقطه OpenID Connect Discovery قلمرو Keycloak" + +[provider.oauth2.keycloak.clientId] +label = "Client ID" +description = "Client ID مربوط به OAuth2 از Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Client Secret" +description = "Client Secret مربوط به OAuth2 از Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "Scopeها" +description = "Scopeهای OAuth2 جداشده با ویرگول" + +[provider.oauth2.keycloak.useAsUsername] +label = "استفاده به‌عنوان نام کاربری" +description = "فیلدی که به‌عنوان نام کاربری استفاده شود (email، name، given_name، family_name، preferred_username)" + +[provider.oauth2.generic] +name = "OAuth2 عمومی" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "فعال‌سازی OAuth2 عمومی" +description = "فعال‌سازی احراز هویت با ارائه‌دهنده سفارشی OAuth2" + +[provider.oauth2.generic.provider] +label = "نام ارائه‌دهنده" +description = "نام ارائه‌دهنده OAuth2 شما (مثلاً Azure AD، Okta)" + +[provider.oauth2.generic.issuer] +label = "نشانی URL صادرکننده" +description = "ارائه‌دهنده‌ای که از OpenID Connect Discovery (/.well-known/openid-configuration) پشتیبانی می‌کند" + +[provider.oauth2.generic.clientId] +label = "Client ID" +description = "Client ID مربوط به OAuth2 از ارائه‌دهنده شما" + +[provider.oauth2.generic.clientSecret] +label = "Client Secret" +description = "Client Secret مربوط به OAuth2 از ارائه‌دهنده شما" + +[provider.oauth2.generic.scopes] +label = "Scopeها" +description = "Scopeهای OAuth2 جداشده با ویرگول" + +[provider.oauth2.generic.useAsUsername] +label = "استفاده به‌عنوان نام کاربری" +description = "فیلدی برای استفاده به‌عنوان نام کاربری" + +[provider.oauth2.generic.autoCreateUser] +label = "ایجاد خودکار کاربران" +description = "ایجاد خودکار حساب کاربری در اولین ورود با OAuth2" + +[provider.oauth2.generic.blockRegistration] +label = "مسدودسازی ثبت‌نام" +description = "ممانعت از ثبت‌نام کاربر جدید از طریق OAuth2" + +[provider.smtp] +name = "ایمیل SMTP" +scope = "اعلان‌های ایمیلی" + +[provider.smtp.enabled] +label = "فعال‌سازی ایمیل" +description = "فعال‌سازی اعلان‌های ایمیلی و قابلیت SMTP" + +[provider.smtp.host] +label = "میزبان SMTP" +description = "نام میزبان یا نشانی IP سرور SMTP شما" + +[provider.smtp.port] +label = "درگاه SMTP" +description = "شماره درگاه برای اتصال SMTP (معمولاً 25، 465 یا 587)" + +[provider.smtp.username] +label = "نام کاربری SMTP" +description = "نام کاربری برای احراز هویت SMTP" + +[provider.smtp.password] +label = "گذرواژه SMTP" +description = "گذرواژه برای احراز هویت SMTP" + +[provider.smtp.from] +label = "نشانی فرستنده" +description = "نشانی ایمیلی که به‌عنوان فرستنده استفاده می‌شود" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "فعال‌سازی SAML2" +description = "فعال‌سازی احراز هویت SAML2 (فقط سازمانی)" + +[provider.saml2.provider] +label = "نام ارائه‌دهنده" +description = "نام ارائه‌دهنده SAML2 شما" + +[provider.saml2.registrationId] +label = "شناسه ثبت‌نام" +description = "نام اپلیکیشن ارائه‌دهنده سرویس (SP) شما" + +[provider.saml2.idpMetadataUri] +label = "IDP Metadata URI" +description = "URI فراداده ارائه‌دهنده شما" + +[provider.saml2.idpSingleLoginUrl] +label = "نشانی ورود تکی IDP" +description = "URL برای آغاز SSO" + +[provider.saml2.idpSingleLogoutUrl] +label = "نشانی خروج تکی IDP" +description = "URL برای آغاز SLO" + +[provider.saml2.idpIssuer] +label = "صادرکننده IDP" +description = "شناسه ارائه‌دهنده شما" + +[provider.saml2.idpCert] +label = "گواهی IDP" +description = "مسیر گواهی (مثلاً classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "کلید خصوصی" +description = "مسیر کلید خصوصی شما" + +[provider.saml2.spCert] +label = "گواهی SP" +description = "مسیر گواهی امضای شما" + +[provider.saml2.autoCreateUser] +label = "ایجاد خودکار کاربران" +description = "ایجاد خودکار حساب‌های کاربری در اولین ورود با SAML2" + +[provider.saml2.blockRegistration] +label = "مسدودسازی ثبت‌نام" +description = "ممانعت از ثبت‌نام کاربر جدید از طریق SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "وارد کردن فایل" + +[provider.googledrive.enabled] +label = "فعال‌سازی انتخاب‌گر فایل Google Drive" +description = "اجازه دهید کاربران مستقیماً از Google Drive فایل وارد کنند" + +[provider.googledrive.clientId] +label = "Client ID" +description = "Google OAuth 2.0 Client ID از Google Cloud Console" + +[provider.googledrive.apiKey] +label = "API Key" +description = "Google API Key برای Google Picker API از Google Cloud Console" + +[provider.googledrive.appId] +label = "App ID" +description = "Google Drive App ID از Google Cloud Console" diff --git a/frontend/public/locales/fr-FR/translation.toml b/frontend/public/locales/fr-FR/translation.toml index 448be0b1e..f2eeb353a 100644 --- a/frontend/public/locales/fr-FR/translation.toml +++ b/frontend/public/locales/fr-FR/translation.toml @@ -96,6 +96,8 @@ pin = "Épingler le fichier (le garder actif après l’exécution de l’outil) poweredBy = "Propulsé par" pro = "Pro" processTimeWarning = "Attention, ce processus peut prendre jusqu'à une minute en fonction de la taille du fichier." +processingComplete = "Votre fichier est prêt." +processingCompleteMultiple = "{{count}} fichiers sont prêts." property = "Propriété" quickPosition = "Position rapide" red = "Rouge" @@ -105,6 +107,7 @@ save = "Enregistrer" saveToBrowser = "Enregistrer dans le navigateur" saveUnavailable = "Enregistrement indisponible pour cet élément" seeDockerHub = "Consulter le Docker Hub" +editSecret = "Modifier cette valeur" selectFillter = "-- Sélectionnez --" size = "Taille" sponsor = "Sponsoriser" @@ -651,6 +654,7 @@ description = "Configurer des fournisseurs d’authentification externes comme O disconnect = "Déconnecter" disconnected = "Fournisseur déconnecté avec succès" disconnectError = "Échec de la déconnexion du fournisseur" +documentation = "Afficher la documentation" imageResolutionFull = "Pleine (taille d’origine)" imageResolutionReduced = "Réduite (Max 1200px)" linkedServices = "Services liés" @@ -964,6 +968,18 @@ label = "Langue par défaut" description = "Taille maximale de téléversement de fichier (ex. : 100MB, 1GB)" label = "Limite de téléversement" +[admin.settings.general.hideDisabledTools] +description = "Masquer les outils désactivés de l’interface" +label = "Masquer les outils désactivés" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Masquer le bouton Google Drive lorsqu’il n’est pas activé" +label = "Masquer Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Masquer le bouton du scanner QR mobile lorsqu’il n’est pas activé" +label = "Masquer le scanner mobile" + [admin.settings.general.frontendUrl] description = "URL de base du frontend (ex., https://pdf.example.com). Utilisée pour les liens d’invitation par e-mail et les téléversements mobiles via QR code. Laissez vide pour utiliser l’URL du backend." label = "URL du frontend" @@ -1148,6 +1164,8 @@ title = "Sécurité" [admin.settings.security.audit] label = "Journal d’audit" +showDetails = "Afficher les détails du niveau d’audit" +hideDetails = "Masquer les détails du niveau d’audit" [admin.settings.security.audit.enabled] description = "Suivre les actions des utilisateurs et les événements système pour la conformité et la surveillance de sécurité" @@ -1157,10 +1175,32 @@ label = "Activer le journal d’audit" description = "0=OFF, 1=BASIC, 2=STANDARD, 3=VERBOSE" label = "Niveau d’audit" +[admin.settings.security.audit.levelDetails] +off = "Aucune journalisation d’audit (sauf événements de sécurité critiques)" +basic = "Opérations sur les fichiers PDF (compress, split, merge, etc.) et modifications des paramètres. Capture : statut de l’opération (succès/échec), paramètres de méthode, temps. Volume de logs minimal." +standard = "Événements BASIC plus : connexion/déconnexion utilisateur, changements de compte, requêtes GET générales. Exclut les appels de sondage continus (/auth/me, /app-config, /health, etc.) pour réduire le bruit. Idéal pour la plupart des déploiements." +verbose = "Événements STANDARD plus : appels de sondage continus, toutes les requêtes GET, minutage détaillé. Avertissement : volume de journaux élevé et impact sur les performances." + [admin.settings.security.audit.retentionDays] description = "Nombre de jours de conservation des journaux d’audit" label = "Rétention des journaux (jours)" +[admin.settings.security.audit.advancedOptions] +title = "Options avancées" +description = "Les options suivantes augmentent le temps de traitement et l’utilisation mémoire. Activez-les uniquement si nécessaire." + +[admin.settings.security.audit.captureFileHash] +description = "Extraire le hachage SHA-256 des fichiers PDF téléversés pour vérifier l’intégrité. Indépendant du niveau d’audit." +label = "Capturer le hachage de fichier (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Extraire le champ auteur des documents PDF pendant le traitement. Nécessite l’analyse du PDF, augmente la latence. Indépendant du niveau d’audit." +label = "Capturer les métadonnées Auteur du PDF" + +[admin.settings.security.audit.captureOperationResults] +description = "Capturer les valeurs de retour des méthodes. Non recommandé : augmente significativement le volume des journaux et l’utilisation du disque." +label = "Capturer les résultats de l’opération" + [admin.settings.security.csrfDisabled] description = "Désactiver la protection contre la falsification de requête intersites (non recommandé)" label = "Désactiver la protection CSRF" @@ -1536,72 +1576,152 @@ tags = "intégrer,joindre,fichier,pièce,jointe,embed,attach,file,attachment,att title = "Ajouter des pièces jointes" [audit] +configureAudit = "Configurer la journalisation d’audit" +configureAuditMessage = "Ajustez le niveau de journalisation d’audit, la période de rétention et autres paramètres dans la section Sécurité et authentification." disabled = "La journalisation d’audit est désactivée" disabledMessage = "Activez la journalisation d’audit dans la configuration de votre application pour suivre les événements du système." enterpriseRequired = "Licence Enterprise requise" enterpriseRequiredMessage = "Le système de journalisation d’audit est une fonctionnalité Enterprise. Veuillez passer à une licence Enterprise pour accéder aux journaux d’audit et aux analyses." +goToSettings = "Aller aux paramètres d’audit" notAvailable = "Système d’audit non disponible" notAvailableMessage = "Le système d’audit n’est pas configuré ou n’est pas disponible." -[audit.charts] -byType = "Événements par type" -byUser = "Événements par utilisateur" -day = "Jour" -error = "Erreur lors du chargement des graphiques" -month = "Mois" -overTime = "Événements dans le temps" -title = "Tableau de bord d’audit" -week = "Semaine" - [audit.error] title = "Erreur lors du chargement du système d’audit" -[audit.events] -actions = "Actions" -clearFilters = "Effacer" -details = "Détails" -endDate = "Date de fin" -error = "Erreur lors du chargement des événements" -eventDetails = "Détails de l’événement" -filterByType = "Filtrer par type" -filterByUser = "Filtrer par utilisateur" -ipAddress = "Adresse IP" -noEvents = "Aucun événement trouvé" -startDate = "Date de début" -timestamp = "Horodatage" -title = "Événements d’audit" -type = "Type" -user = "Utilisateur" -viewDetails = "Voir les détails" - [audit.export] clearFilters = "Effacer" description = "Exporter les événements d’audit au format CSV ou JSON. Utilisez des filtres pour limiter les données exportées." endDate = "Date de fin" error = "Échec de l’export des données" exportButton = "Exporter les données" +fieldAuthor = "Auteur (depuis le PDF)" +fieldDate = "Date" +fieldDocumentName = "Nom du document" +fieldFileHash = "Hachage de fichier (SHA-256)" +fieldIpAddress = "Adresse IP" +fieldOperationResults = "Résultats de l’opération" +fieldOutcome = "Résultat (Succès/Échec)" +fieldTool = "Outil" +fieldUsername = "Nom d’utilisateur" filterByType = "Filtrer par type" filterByUser = "Filtrer par utilisateur" filters = "Filtres (facultatif)" format = "Format d’export" +selectFields = "Sélectionner les champs à inclure" startDate = "Date de début" title = "Exporter les données d’audit" +verboseRequired = "Nécessite le niveau d’audit VERBOSE" [audit.systemStatus] +autoRefresh = "Actualisation automatique" +autoRefreshLabel = "Actualisation automatique toutes les 30 s" +captureBySettings = "Activer dans les paramètres" +capturedFields = "Champs capturés" +date = "Date" days = "jours" disabled = "Désactivé" +documentName = "Nom du document" enabled = "Activé" +fileHash = "Hachage de fichier" level = "Niveau d’audit" +pdfAuthor = "Auteur PDF" retention = "Période de rétention" status = "Journalisation d’audit" title = "État du système" +tool = "Outil" totalEvents = "Nombre total d’événements" +username = "Nom d’utilisateur" +verboseOnly = "VERBOSE uniquement" + +[audit.stats] +activeUsers = "Utilisateurs actifs" +attention = "Attention requise" +avgLatency = "Latence moyenne" +error = "Erreur de chargement des statistiques" +errorLoadingStats = "Échec du chargement des statistiques" +excellent = "Excellent" +good = "Bon" +noData = "N/A" +successRate = "Taux de réussite" +title = "Résumé" +totalEvents = "Nombre total d’événements" +vsLastPeriod = "par rapport à la période précédente" + +[audit.charts] +byTool = "Outils les plus utilisés" +byType = "Événements par type" +byUser = "Événements par utilisateur" +day = "Jour" +error = "Erreur lors du chargement des graphiques" +hourlyActivity = "Activité horaire" +month = "Mois" +noData = "Aucune donnée pour cette période" +overTime = "Événements dans le temps" +title = "Tableau de bord d’audit" +week = "Semaine" + +[audit.events] +actions = "Actions" +author = "Auteur" +clearFilters = "Effacer" +details = "Détails" +documentName = "Document" +endDate = "Date de fin" +error = "Erreur lors du chargement des événements" +eventDetails = "Détails de l’événement" +failure = "Échec" +fileHash = "Hachage de fichier" +filterByType = "Filtrer par type" +filterByUser = "Filtrer par utilisateur" +ipAddress = "Adresse IP" +noEvents = "Aucun événement trouvé" +outcome = "Statut" +sortAsc = "Trier par ordre croissant" +sortDesc = "Trier par ordre décroissant" +startDate = "Date de début" +success = "Succès" +timestamp = "Horodatage" +title = "Événements d’audit" +type = "Type" +user = "Utilisateur" +viewDetails = "Voir les détails" + +[audit.filters] +allOutcomes = "Tous" +failureOnly = "Échecs uniquement" +last7Days = "7 derniers jours" +last30Days = "30 derniers jours" +outcomeFilter = "Résultat" +quickPresets = "Filtres rapides" +successOnly = "Succès uniquement" +thisMonth = "Ce mois-ci" +today = "Aujourd’hui" [audit.tabs] +clearData = "Effacer les données" dashboard = "Tableau de bord" events = "Événements d’audit" export = "Exporter" +[audit.clearData] +cancel = "Annuler" +codeDoesNotMatch = "Le code ne correspond pas" +codePlaceholder = "Saisissez le code ici" +confirmationCode = "Code de confirmation" +confirmationRequired = "Supprimer toutes les données d’audit" +confirmMessage = "Cela supprimera définitivement tous les journaux d’audit. Saisissez le code de confirmation ci-dessous pour continuer." +confirmTitle = "Veuillez confirmer que vous souhaitez supprimer" +deleteButton = "Supprimer" +enterCode = "Code de confirmation" +enterCodeBelow = "Entrez le code exactement tel qu’affiché ci-dessus (sensible à la casse)" +initiateDelete = "Supprimer toutes les données" +irreversible = "IRRÉVERSIBLE" +success = "Succès" +successMessage = "Toutes les données d’audit ont été supprimées avec succès" +warning1 = "Cette action est irréversible" +warning2 = "La suppression des données d’audit éliminera définitivement tous les journaux d’audit historiques, y compris les événements de sécurité, les activités des utilisateurs et les opérations sur fichiers de la base de données." + [auth] accessDenied = "Accès refusé" insufficientPermissions = "Vous n'avez pas l'autorisation d'effectuer cette action." @@ -2254,9 +2374,11 @@ copy = "Copier" done = "Terminé" error = "Erreur" expand = "Développer" +learnMore = "En savoir plus" lines = "lignes" loading = "Chargement…" next = "Suivant" +operation = "cette opération" preview = "Aperçu" previous = "Précédent" refresh = "Actualiser" @@ -2920,6 +3042,7 @@ copyStack = "Copier la Stack Trace" discordSubmit = "Discord - Poster un message de demande d'assistance" dismissAllErrors = "Ignorer toutes les erreurs" encryptedPdfMustRemovePassword = "Ce PDF est chiffré ou protégé par mot de passe. Veuillez le déverrouiller avant de convertir en PDF/A." +generic = "Une erreur s’est produite" github = "Créer un ticket sur GitHub" githubSubmit = "GitHub - Créer un ticket" incorrectPasswordProvided = "Le mot de passe du PDF est incorrect ou non fourni." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Votre abonnement a été mis à niveau avec succès. V upgradeSuccess = "Paiement réussi ! Votre abonnement a été mis à niveau. La licence a été mise à jour sur votre serveur. Vous recevrez bientôt un e‑mail de confirmation." upgradeTitle = "Mettre à niveau vers {{planName}}" yearly = "Annuel" +checkoutOpened = "Paiement ouvert dans le navigateur" +checkoutInstructions = "Finalisez votre achat dans la fenêtre de navigateur qui vient de s’ouvrir. Après le paiement, revenez ici et cliquez sur le bouton ci-dessous pour actualiser vos informations de facturation." +refreshBilling = "J’ai effectué le paiement - Actualiser la facturation" +closeLater = "Je le ferai plus tard" [payment.emailStage] continue = "Continuer" @@ -4679,6 +4806,13 @@ prompt = "Choisir la page pour en extraire le tableau" submit = "Extrait" title = "PDF en CSV" +[PDFToXLSX] +header = "PDF vers Excel" +prompt = "Choisissez les pages pour extraire les tableaux" +submit = "Convertir" +title = "PDF vers Excel (XLSX)" +tags = "feuille de calcul,excel,xlsx,tableau,extraire,convertir" + [PDFToHTML] credit = "Ce service utilise pdftohtml pour la conversion de fichiers." header = "PDF en HTML" @@ -4835,6 +4969,7 @@ customPricing = "Personnalisé" featureComparison = "Comparaison des fonctionnalités" from = "À partir de" hideComparison = "Masquer la comparaison des fonctionnalités" +included = "Inclus" includedInCurrent = "Inclus dans votre plan" licensedSeats = "Licences : {{count}} places" manage = "Gérer" @@ -4852,9 +4987,11 @@ title = "Forfait actif" [plan.availablePlans] subtitle = "Choisissez le forfait adapté à vos besoins" +loadError = "Impossible de charger les tarifs du plan. Valeurs par défaut utilisées." title = "Forfaits disponibles" [plan.enterprise] +siteLicense = "Licence site" highlight1 = "Tarification personnalisée" highlight2 = "Support dédié" highlight3 = "Fonctionnalités les plus récentes" @@ -4928,6 +5065,81 @@ keyDescription = "Collez la clé de licence depuis votre e-mail" success = "Licence activée !" successMessage = "Votre licence a été activée avec succès. Vous pouvez maintenant fermer cette fenêtre." +[plan.team] +name = "Team" +siteLicense = "Licence site" + +[credits] +enableOverageBilling = "Activer la facturation de dépassement" +maybeLater = "Peut-être plus tard" +upgrade = "Mettre à niveau" + +[credits.modal] +advancedMonitoring = "Surveillance avancée" +allInOneWorkspace = "Espace de travail PDF tout-en-un (visionneuse, outils et agent)" +apiSandbox = "Bac à sable API" +contactSales = "Contacter l’équipe commerciale" +creditsRemaining = "{{current}} sur {{total}} restants" +creditsThisMonth = "Crédits mensuels" +current = "Offre actuelle" +customPricing = "Personnalisé" +customSmartFolders = "Dossiers intelligents personnalisés" +dedicatedSupportSlas = "Support dédié et SLA" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Tout ce qui est dans Credits, plus :" +everythingInFree = "Tout ce qui est dans Free, plus :" +fasterThroughput = "Débit 10x plus rapide" +forRegularWork = "Pour un usage PDF régulier :" +freeTier = "Offre Free" +fullyPrivateFiles = "Fichiers entièrement privés" +largeFileProcessing = "Traitement de gros fichiers" +managedMemberMessage = "Vous avez un accès illimité aux crédits via votre équipe. Si vous avez besoin d’aide, contactez votre chef d’équipe." +managedMemberTitle = "Crédits illimités" +meteringBillingNote = "Les crédits de dépassement sont facturés mensuellement avec votre abonnement Team. Suivez votre utilisation à tout moment dans les paramètres de votre compte." +meteringExplanation = "Votre offre Team inclut {{credits}} crédits par mois. Lorsque vous n’en avez plus, la facturation de dépassement fournit automatiquement des crédits supplémentaires pour ne jamais vous arrêter." +meteringIncluded = "{{credits}} crédits/mois inclus avec Team" +meteringNoCommitment = "Sans engagement, résiliation à tout moment" +meteringNeverRunOut = "Ne soyez jamais à court de crédits" +meteringPayAsYouGo = "Payez uniquement ce que vous utilisez" +meteringPrice = "Crédits supplémentaires à {{price}}/crédit" +meteringTitle = "Facturation de dépassement à l’usage" +monthlyCredits = "crédits mensuels" +orgWideAccess = "Contrôles d’accès à l’échelle de l’organisation" +overage = "dépassement" +perMonth = "/mois" +popular = "Populaire" +premiumAiModels = "Modèles IA premium" +prioritySupport = "Support prioritaire" +privateDocCloud = "Cloud de documents privé" +ragFineTuning = "RAG + fine-tuning" +secureApiAccess = "Accès API sécurisé" +selfHostLink = "Consulter la documentation et les offres" +selfHostPrompt = "Vous souhaitez auto-héberger ?" +standardThroughput = "Débit standard" +subtitle = "Passez à Team pour 10x plus de crédits et un traitement plus rapide." +subtitlePro = "Activez la facturation de dépassement automatique pour ne jamais être à court de crédits." +teamLeaderOnly = "Seuls les chefs d’équipe peuvent activer la facturation de dépassement" +teamSubscription = "Team" +titleExhausted = "Vous avez utilisé vos crédits gratuits" +titleExhaustedPro = "Vous n’avez plus de crédits" +unlimitedApiAccess = "Accès API illimité" +unlimitedMonthlyCredits = "Licence site" +unlimitedSeats = "Postes illimités" + +[credits.modal.features] +everythingInCredits = "Tout ce qui est dans Credits, plus :" +everythingInFree = "Tout ce qui est dans Free, plus :" +forRegularWork = "Pour un usage PDF régulier :" + +[credits.insufficient] +brief = "Crédits insuffisants. Il vous faut {{required}} crédits mais vous en avez {{current}}." +freeTier = "Passez à Team pour 10x plus de crédits et une facturation de dépassement illimitée." +managedMember = "Veuillez contacter votre chef d’équipe pour obtenir de l’aide." +message = "Vous n’avez pas assez de crédits pour exécuter {{tool}}. Vous avez actuellement {{current}} crédits." +messageWithAmount = "Il vous faut {{required}} crédits pour exécuter {{tool}}, mais vous n’avez que {{current}}." +teamMember = "Activez la facturation de dépassement pour ne jamais être à court de crédits." +title = "Crédits insuffisants" + [printFile] header = "Imprimer le fichier sur l'imprimante" submit = "Imprimer" @@ -5565,6 +5777,70 @@ user = "Connecté en tant que" saas = "Stirling Cloud" selfhosted = "Auto-hébergé" +[settings.planBilling] +currentPlan = "Offre actuelle" +loading = "Chargement des informations de facturation..." +notAvailable = "Plan et facturation disponibles uniquement lorsque connecté à Stirling Cloud (mode SaaS)." +title = "Plan et facturation" + +[settings.planBilling.billing] +manageBilling = "Gérer la facturation" +nextBillingDate = "Prochaine date de facturation" +overageCost = "Coût de dépassement actuel : {{amount}} ({{credits}} crédits)" + +[settings.planBilling.credits] +estimatedCost = "Coût estimé : {{amount}}" +freeTierInfo = "L’offre Free inclut {{freeCredits}} crédits par mois. Passez à Team pour {{teamCredits}} crédits/mois et une facturation à l’usage en cas de dépassement." +included = "{{count}} crédits/mois (inclus)" +noOverage = "Aucun dépassement ce mois-ci. Vous utilisez vos {{count}} crédits inclus." +overage = "+ {{count}} de dépassement" +overageInfo = "Les crédits de dépassement sont facturés à {{price}} par crédit. Vous ne payez que ce que vous utilisez au-delà de votre allocation mensuelle." +title = "Utilisation des crédits" + +[settings.planBilling.errors] +fetchFailed = "Impossible de récupérer les données de facturation" +retry = "Réessayer" + +[settings.planBilling.status] +active = "Actif" +canceled = "Annulé" +pastDue = "En retard" +trial = "Essai" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Fonctionnalités et support entreprise personnalisés" +free = "Free" +freeDescription = "50 crédits par mois" +team = "Team" +teamBadge = "Team" +teamDescription = "500 crédits/mois inclus, facturation de dépassement automatique pour un service ininterrompu" +teamTooltipCredits = "L’offre Team inclut {{credits}} crédits/mois." +teamTooltipFineprint = "Payez uniquement ce que vous utilisez au-delà des crédits inclus." +teamTooltipOverage = "Facturation de dépassement automatique à {{price}}/crédit pour un service ininterrompu." + +[settings.planBilling.team] +managedByTeam = "Géré par l’équipe" +memberCount = "{{count}} membres de l’équipe" + +[settings.planBilling.trial] +daysRemaining = "{{days}} jours restants" +daysRemainingFull = "Votre essai se termine dans {{days}} jours" +endDate = "Expire le : {{date}}" +endsOn = "Fin de l’essai" +title = "Essai gratuit actif" + +[settings.planBilling.upgrade] +cta = "Passer à Team" +featureApi = "Accès API pour l’automatisation" +featureCredits = "{{teamCredits}} crédits par mois (contre {{freeCredits}} sur Free)" +featureMembers = "Membres d’équipe illimités" +featureSupport = "Support prioritaire" +featureThroughput = "Débit de traitement plus rapide" +opensInBrowser = "S’ouvre dans le navigateur pour finaliser la mise à niveau" +subtitle = "Passez à Team pour :" +title = "Mettre à niveau votre offre" + [settings.developer] apiKeys = "Clés API" title = "Développeur" @@ -5689,6 +5965,9 @@ people = "Personnes" teams = "Équipes" title = "Espace de travail" +[settings.team] +title = "Équipe" + [setup] description = "Commencez par choisir comment vous souhaitez utiliser Stirling PDF" welcome = "Bienvenue dans Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "Fractionnement automatique avec feuilles séparatrices" name = "Feuille séparatrice" tooltip = "Utilisez des feuilles séparatrices QR entre les documents lors de la numérisation" +[split.methods.byPoster] +name = "Segments imprimables" +desc = "Diviser les grandes pages en formats imprimables" +tooltip = "Divisez les pages surdimensionnées en segments plus petits adaptés à l’impression sur papier standard (A4, Letter, etc.)" + [split.methods.byPages] desc = "Extraire des pages spécifiques (1,3,5-10)" name = "Numéros de page" @@ -6029,6 +6313,7 @@ tooltip = "Spécifiez la taille maximale du fichier (p. ex. 10MB, 500KB)" [split.methods.prefix] splitAt = "Fractionner à" splitBy = "Fractionner par" +splitInto = "Diviser en" [split.methodSelection.tooltip] bullet1 = "Cliquez sur une carte de méthode pour la sélectionner" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Veuillez d’abord sélectionner une méthode de fractionne chooseMethod = "Choisir la méthode" settings = "Paramètres" +[split.poster] +rightToLeft = "Découper de droite à gauche" + +[split.poster.pageSize] +label = "Taille de page cible" +description = "Taille des pages de sortie pour l’impression" + +[split.poster.xFactor] +label = "Divisions horizontales" +description = "Nombre de colonnes pour diviser chaque page" + +[split.poster.yFactor] +label = "Divisions verticales" +description = "Nombre de lignes pour diviser chaque page" + [split.tooltip.byChapters] bullet1 = "Niveau de signet : niveau sur lequel fractionner (1 = niveau supérieur)" bullet2 = "Inclure les métadonnées : préserver les propriétés du document" @@ -6085,6 +6385,14 @@ bullet5 = "Activez le mode recto verso si vous numérisez les deux côtés des f text = "Divisez automatiquement des documents numérisés à l’aide de feuilles séparatrices physiques avec QR codes. Parfait pour traiter plusieurs documents numérisés ensemble." title = "Diviser par feuille séparatrice" +[split.tooltip.byPoster] +bullet1 = "Taille de page cible : Choisissez le format de papier de sortie (A4, Letter, etc.)" +bullet2 = "Divisions horizontales/verticales : Taille de la grille pour la découpe" +bullet3 = "De droite à gauche : Inverser l’ordre des colonnes pour les mises en page RTL" +bullet4 = "Imprimez et assemblez les morceaux pour créer votre poster" +text = "Divisez les grandes pages PDF en segments plus petits imprimables adaptés aux formats de papier standard. Parfait pour créer des impressions poster à partir de pages surdimensionnées." +title = "Découper pour impression poster" + [split.tooltip.byPages] bullet1 = "Points uniques : 3,7 (fractionne après les pages 3 et 7)" bullet2 = "Plages : 3-8 (fractionne avant la page 3 et après la page 8)" @@ -6364,9 +6672,13 @@ tags = "pdf,contenu Web,save-page,web-to-doc,archive" title = "URL en PDF" [usage] +aboutUsageAnalytics = "À propos des analyses d’utilisation" +configureSettings = "Configurer les paramètres d’analyse" error = "Erreur lors du chargement des statistiques d’utilisation" noData = "Aucune donnée disponible" noDataMessage = "Aucune statistique d’utilisation n’est actuellement disponible." +usageAnalyticsExplanation = "Les analyses d’utilisation suivent les requêtes des points de terminaison et les habitudes d’utilisation des outils. Combinées avec le tableau de bord de journalisation d’audit, vous obtenez une visibilité complète sur l’activité du système, les performances et les événements de sécurité." +viewAuditLogs = "Afficher les journaux d’audit" [usage.chart] title = "Graphique d’utilisation des endpoints" @@ -6947,3 +7259,278 @@ cancel = "Annuler" confirm = "Extraire" message = "Ce ZIP contient {{count}} fichiers. Extraire quand même ?" title = "Fichier ZIP volumineux" + +[cloudBadge] +tooltip = "Cette opération utilisera vos crédits cloud" + +[team] +cancelInviteError = "Échec de l’annulation de l’invitation" +confirmCancelInvite = "Voulez-vous vraiment annuler cette invitation ?" +confirmLeave = "Voulez-vous vraiment quitter cette équipe ?" +confirmLeaveLeader = "En tant que chef d’équipe, partir vous supprimera de l’équipe. Êtes-vous sûr ?" +confirmRemove = "Voulez-vous vraiment supprimer ce membre ?" +editName = "Modifier le nom de l’équipe" +inviteCancelled = "Invitation annulée" +inviteError = "Échec de l’envoi de l’invitation" +inviteSent = "Invitation envoyée avec succès" +leader = "Chef d’équipe" +leaveButton = "Quitter l’équipe" +leaveError = "Échec de la sortie de l’équipe" +leaveSuccess = "Équipe quittée avec succès" +loading = "Chargement des informations de l’équipe..." +memberCount = "{{count}} membres" +memberRemoved = "Membre supprimé avec succès" +namePlaceholder = "Saisir le nom de l’équipe" +personal = "Personnel" +removeError = "Échec de la suppression du membre" +renameError = "Échec du renommage de l’équipe" +renameSuccess = "Équipe renommée avec succès" + +[team.invitationBanner] +message = "vous a invité à rejoindre" +acceptButton = "Accepter" +rejectButton = "Refuser" + +[team.features] +badge = "Fonctionnalités d’équipe" +subtitle = "Collaborez avec votre équipe" +title = "Collaboration d’équipe" +viewPlans = "Voir les offres" + +[team.features.billing] +description = "Gérer la facturation et les abonnements" +title = "Gestion de la facturation" + +[team.features.credits] +description = "Réserve de crédits partagée pour tous les membres" +title = "Crédits partagés" + +[team.features.dashboard] +description = "Afficher l’activité et l’utilisation de l’équipe" +title = "Tableau de bord d’équipe" + +[team.features.invite] +description = "Ajouter des membres à votre équipe" +title = "Inviter des membres" + +[team.invite] +cancelLabel = "Annuler" +invalidEmail = "Adresse e-mail invalide" +placeholder = "Saisir l’adresse e-mail" +sendButton = "Envoyer l’invitation" +title = "Inviter un membre de l’équipe" + +[team.members] +emailColumn = "E-mail" +empty = "Aucun membre d’équipe pour le moment" +nameColumn = "Nom" +pending = "En attente" +remove = "Supprimer" +roleColumn = "Rôle" +title = "Membres de l’équipe" + +[team.upgrade] +button = "Passer à Team" +description = "Débloquez les fonctionnalités de collaboration d’équipe" +title = "Passer à l’offre Team" + +[provider.oauth2.google] +scope = "Authentification de connexion" + +[provider.oauth2.google.clientId] +label = "Client ID" +description = "Le client ID OAuth2 depuis Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Client Secret" +description = "Le client secret OAuth2 depuis Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Scopes" +description = "Scopes OAuth2 séparés par des virgules" + +[provider.oauth2.google.useAsUsername] +label = "Utiliser comme nom d’utilisateur" +description = "Champ à utiliser comme nom d’utilisateur (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Authentification de connexion" + +[provider.oauth2.github.clientId] +label = "Client ID" +description = "Le client ID OAuth2 depuis GitHub Developer Settings" + +[provider.oauth2.github.clientSecret] +label = "Client Secret" +description = "Le client secret OAuth2 depuis GitHub Developer Settings" + +[provider.oauth2.github.scopes] +label = "Scopes" +description = "Scopes OAuth2 séparés par des virgules" + +[provider.oauth2.github.useAsUsername] +label = "Utiliser comme nom d’utilisateur" +description = "Champ à utiliser comme nom d’utilisateur (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "URL de l’émetteur" +description = "URL du point de découverte OpenID Connect du realm Keycloak" + +[provider.oauth2.keycloak.clientId] +label = "Client ID" +description = "Le client ID OAuth2 depuis Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Client Secret" +description = "Le client secret OAuth2 depuis Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "Scopes" +description = "Scopes OAuth2 séparés par des virgules" + +[provider.oauth2.keycloak.useAsUsername] +label = "Utiliser comme nom d’utilisateur" +description = "Champ à utiliser comme nom d’utilisateur (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "OAuth2 générique" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Activer OAuth2 générique" +description = "Activer l’authentification via un fournisseur OAuth2 personnalisé" + +[provider.oauth2.generic.provider] +label = "Nom du fournisseur" +description = "Le nom de votre fournisseur OAuth2 (par ex., Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "URL de l’émetteur" +description = "Fournisseur prenant en charge OpenID Connect Discovery (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "Client ID" +description = "Le client ID OAuth2 de votre fournisseur" + +[provider.oauth2.generic.clientSecret] +label = "Client Secret" +description = "Le client secret OAuth2 de votre fournisseur" + +[provider.oauth2.generic.scopes] +label = "Scopes" +description = "Scopes OAuth2 séparés par des virgules" + +[provider.oauth2.generic.useAsUsername] +label = "Utiliser comme nom d’utilisateur" +description = "Champ à utiliser comme nom d’utilisateur" + +[provider.oauth2.generic.autoCreateUser] +label = "Créer automatiquement les utilisateurs" +description = "Créer automatiquement les comptes utilisateurs lors de la première connexion OAuth2" + +[provider.oauth2.generic.blockRegistration] +label = "Bloquer l’inscription" +description = "Empêcher l’inscription de nouveaux utilisateurs via OAuth2" + +[provider.smtp] +name = "Messagerie SMTP" +scope = "Notifications par e-mail" + +[provider.smtp.enabled] +label = "Activer l’e-mail" +description = "Activer les notifications par e-mail et la fonctionnalité SMTP" + +[provider.smtp.host] +label = "Hôte SMTP" +description = "Le nom d’hôte ou l’adresse IP de votre serveur SMTP" + +[provider.smtp.port] +label = "Port SMTP" +description = "Le numéro de port pour la connexion SMTP (généralement 25, 465 ou 587)" + +[provider.smtp.username] +label = "Nom d’utilisateur SMTP" +description = "Nom d’utilisateur pour l’authentification SMTP" + +[provider.smtp.password] +label = "Mot de passe SMTP" +description = "Mot de passe pour l’authentification SMTP" + +[provider.smtp.from] +label = "Adresse d’expéditeur" +description = "L’adresse e-mail à utiliser comme expéditeur" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "Activer SAML2" +description = "Activer l’authentification SAML2 (Enterprise uniquement)" + +[provider.saml2.provider] +label = "Nom du fournisseur" +description = "Le nom de votre fournisseur SAML2" + +[provider.saml2.registrationId] +label = "ID d’enregistrement" +description = "Le nom de votre application Fournisseur de services (SP)" + +[provider.saml2.idpMetadataUri] +label = "URI des métadonnées IDP" +description = "L’URI des métadonnées de votre fournisseur" + +[provider.saml2.idpSingleLoginUrl] +label = "URL de connexion unique IDP" +description = "L’URL pour initier le SSO" + +[provider.saml2.idpSingleLogoutUrl] +label = "URL de déconnexion unique IDP" +description = "L’URL pour initier le SLO" + +[provider.saml2.idpIssuer] +label = "Émetteur IDP" +description = "L’ID de votre fournisseur" + +[provider.saml2.idpCert] +label = "Certificat IDP" +description = "Le chemin du certificat (ex. : classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Clé privée" +description = "Le chemin de votre clé privée" + +[provider.saml2.spCert] +label = "Certificat SP" +description = "Le chemin de votre certificat de signature" + +[provider.saml2.autoCreateUser] +label = "Créer automatiquement les utilisateurs" +description = "Créer automatiquement les comptes utilisateurs lors de la première connexion SAML2" + +[provider.saml2.blockRegistration] +label = "Bloquer l’inscription" +description = "Empêcher l’inscription de nouveaux utilisateurs via SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "Import de fichiers" + +[provider.googledrive.enabled] +label = "Activer le sélecteur de fichiers Google Drive" +description = "Autoriser les utilisateurs à importer des fichiers directement depuis Google Drive" + +[provider.googledrive.clientId] +label = "Client ID" +description = "Client ID OAuth 2.0 Google depuis Google Cloud Console" + +[provider.googledrive.apiKey] +label = "API Key" +description = "Clé API Google pour Google Picker API depuis Google Cloud Console" + +[provider.googledrive.appId] +label = "App ID" +description = "App ID Google Drive depuis Google Cloud Console" diff --git a/frontend/public/locales/ga-IE/translation.toml b/frontend/public/locales/ga-IE/translation.toml index af5b294e3..9778ac961 100644 --- a/frontend/public/locales/ga-IE/translation.toml +++ b/frontend/public/locales/ga-IE/translation.toml @@ -96,6 +96,8 @@ pin = "Pionnáil Comhad (coinnigh gníomhach tar éis rith na huirlise)" poweredBy = "Cumhachtaithe ag" pro = "Pro" processTimeWarning = "Rabhadh: Féadfaidh an próiseas seo suas le nóiméad a ghlacadh ag brath ar mhéid an chomhaid" +processingComplete = "Tá do chomhad réidh." +processingCompleteMultiple = "Tá {{count}} comhaid réidh." property = "Maoin" quickPosition = "Suíomh Tapa" red = "Dearg" @@ -105,6 +107,7 @@ save = "Sábháil" saveToBrowser = "Sábháil go Brabhsálaí" saveUnavailable = "Níl sábháil ar fáil don mhír seo" seeDockerHub = "Féach Docker Hub" +editSecret = "Cuir an luach seo in eagar" selectFillter = "-- Roghnaigh --" size = "Méid" sponsor = "Urraitheoir" @@ -651,6 +654,7 @@ description = "Cumraigh soláthraithe fíordheimhnithe seachtracha cosúil le OA disconnect = "Dícheangail" disconnected = "Dícheanglaíodh an soláthraí go rathúil" disconnectError = "Theip ar an soláthraí a dhícheangal" +documentation = "Féach an doiciméadú" imageResolutionFull = "Iomlán (Bunmhéid)" imageResolutionReduced = "Laghdaithe (Uasmhéid 1200px)" linkedServices = "Seirbhísí Nasctha" @@ -964,6 +968,18 @@ label = "Teanga Réamhshocraithe" description = "Méid uasta uaslódála comhaid (m.sh., 100MB, 1GB)" label = "Teorainn Uaslódála Comhaid" +[admin.settings.general.hideDisabledTools] +description = "Folaigh uirlisí díchumasaithe ón gcomhéadan" +label = "Folaigh Uirlisí Díchumasaithe" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Folaigh cnaipe Google Drive nuair nach bhfuil sé cumasaithe" +label = "Folaigh Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Folaigh cnaipe scanóra QR soghluaiste nuair nach bhfuil sé cumasaithe" +label = "Folaigh Scanóir Soghluaiste" + [admin.settings.general.frontendUrl] description = "URL bunúsach don tosaigh (m.sh., https://pdf.example.com). Úsáidtear é le haghaidh naisc cuireadh ríomhphoist agus uaslódálacha cóid QR soghluaiste. Fág folamh chun URL cúil a úsáid." label = "URL tosaigh" @@ -1148,6 +1164,8 @@ title = "Slándáil" [admin.settings.security.audit] label = "Logáil Iniúchta" +showDetails = "Taispeáin sonraí leibhéil iniúchta" +hideDetails = "Folaigh sonraí leibhéil iniúchta" [admin.settings.security.audit.enabled] description = "Rianaigh gníomhartha úsáideoirí agus imeachtaí córais le haghaidh comhlíonta agus monatóireachta slándála" @@ -1157,10 +1175,32 @@ label = "Cumasaigh Logáil Iniúchta" description = "0=AS, 1=BUNÚSACH, 2=CAIGHDEÁNACH, 3=FOLLASACH" label = "Leibhéal Iniúchta" +[admin.settings.security.audit.levelDetails] +off = "Gan logáil iniúchta (seachas imeachtaí slándála criticiúla)" +basic = "Oibríochtaí comhaid PDF (comhbhrú, scoilt, cumasc, srl.) agus athruithe socruithe. Gabhann: stádas oibríochta (rath/teip), paraiméadair mhodha, amú. Íosmhéid logaí." +standard = "Imeachtaí BASIC móide: logáil isteach/amárach úsáideora, athruithe cuntais, iarratais GET ghinearálta. Fágann sé glaonna pailnithe leanúnacha (/auth/me, /app-config, /health, srl.) chun torann loga a laghdú. Oiriúnach don chuid is mó d’imlonnuithe." +verbose = "Imeachtaí STANDARD móide: glaonna pailnithe leanúnacha, gach iarratas GET, amú mionsonrach. Rabhadh: ardtoirte logaí agus tionchar feidhmíochta." + [admin.settings.security.audit.retentionDays] description = "Líon na laethanta chun logaí iniúchta a choinneáil" label = "Coinneáil Iniúchta (laethanta)" +[admin.settings.security.audit.advancedOptions] +title = "Ardroghanna" +description = "Méadaíonn na roghanna seo am próiseála agus úsáid cuimhne. Ná cumasaigh ach má tá gá fíor leo." + +[admin.settings.security.audit.captureFileHash] +description = "Bain hais SHA-256 as comhaid PDF uaslódáilte chun sláine a fhíorú. Neamhspleách ar leibhéal iniúchta." +label = "Gabh Hais an Chomhaid (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Bain an réimse údair as doiciméid PDF le linn próiseála. Éilíonn parsáil PDF, méadaíonn moill. Neamhspleách ar leibhéal iniúchta." +label = "Gabh Meiteashonraí Údair PDF" + +[admin.settings.security.audit.captureOperationResults] +description = "Gabh luachanna tuairisceáin modhanna. Ní mholtar: méadaíonn go mór toirt logaí agus úsáid diosca." +label = "Gabh Torthaí Oibríochta" + [admin.settings.security.csrfDisabled] description = "Díchumasaigh cosaint Cross-Site Request Forgery (ní mholtar)" label = "Díchumasaigh Cosaint CSRF" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Cuir Ceangaltáin leis" [audit] +configureAudit = "Cumraigh Logáil Iniúchta" +configureAuditMessage = "Coigeartaigh leibhéal logála iniúchta, tréimhse coinneála, agus socruithe eile sa rannán Slándáil & Fíordheimhniú." disabled = "Tá logáil iniúchta díchumasaithe" disabledMessage = "Cumasaigh logáil iniúchta i gcumraíocht d’fheidhmchláir chun imeachtaí an chórais a rianú." enterpriseRequired = "Ceadúnas Fiontraíochta Riachtanach" enterpriseRequiredMessage = "Is gné fiontraíochta é an córas logála iniúchóireachta. Uasghrádaigh go ceadúnas fiontraíochta le rochtain a fháil ar logaí iniúchóireachta agus anailísíocht." +goToSettings = "Téigh go Socruithe Iniúchta" notAvailable = "Níl an córas iniúchta ar fáil" notAvailableMessage = "Níl an córas iniúchta cumraithe nó níl sé ar fáil." -[audit.charts] -byType = "Imeachtaí de réir Cineáil" -byUser = "Imeachtaí de réir Úsáideora" -day = "Lá" -error = "Earráid agus cairteacha á lódáil" -month = "Mí" -overTime = "Imeachtaí le himeacht ama" -title = "Deais Iniúchta" -week = "Seachtain" - [audit.error] title = "Earráid agus an córas iniúchta á lódáil" -[audit.events] -actions = "Gníomhartha" -clearFilters = "Glan" -details = "Sonraí" -endDate = "Dáta deiridh" -error = "Earráid agus imeachtaí á luchtú" -eventDetails = "Sonraí an imeachta" -filterByType = "Scag de réir cineáil" -filterByUser = "Scag de réir úsáideora" -ipAddress = "Seoladh IP" -noEvents = "Níor aimsíodh aon imeachtaí" -startDate = "Dáta tosaigh" -timestamp = "Stampa ama" -title = "Imeachtaí Iniúchta" -type = "Cineál" -user = "Úsáideoir" -viewDetails = "Féach sonraí" - [audit.export] clearFilters = "Glan" description = "Onnmhairigh imeachtaí iniúchta i bhformáid CSV nó JSON. Úsáid scagairí chun na sonraí onnmhairithe a theorannú." endDate = "Dáta deiridh" error = "Theip ar onnmhairiú sonraí" exportButton = "Onnmhairigh sonraí" +fieldAuthor = "Údar (ón PDF)" +fieldDate = "Dáta" +fieldDocumentName = "Ainm an Doiciméid" +fieldFileHash = "Hais an Chomhaid (SHA-256)" +fieldIpAddress = "Seoladh IP" +fieldOperationResults = "Torthaí Oibríochta" +fieldOutcome = "Toradh (Rath/Teip)" +fieldTool = "Uirlis" +fieldUsername = "Ainm Úsáideora" filterByType = "Scag de réir cineáil" filterByUser = "Scag de réir úsáideora" filters = "Scagairí (Roghnach)" format = "Formáid onnmhairithe" +selectFields = "Roghnaigh Réimsí le Cuir san Áireamh" startDate = "Dáta tosaigh" title = "Onnmhairigh sonraí iniúchta" +verboseRequired = "Éilíonn leibhéal iniúchta VERBOSE" [audit.systemStatus] +autoRefresh = "Uathnuashonrú" +autoRefreshLabel = "Uathnuashonrú gach 30s" +captureBySettings = "Cumasaigh sna socruithe" +capturedFields = "Réimsí Gafa" +date = "Dáta" days = "laethanta" disabled = "Díchumasaithe" +documentName = "Ainm an Doiciméid" enabled = "Cumasaithe" +fileHash = "Hais an Chomhaid" level = "Leibhéal Iniúchta" +pdfAuthor = "Údar PDF" retention = "Tréimhse Coinneála" status = "Logáil Iniúchta" title = "Stádas an Chórais" +tool = "Uirlis" totalEvents = "Iomlán Imeachtaí" +username = "Ainm úsáideora" +verboseOnly = "VERBOSE amháin" + +[audit.stats] +activeUsers = "Úsáideoirí Gníomhacha" +attention = "Aird de dhíth" +avgLatency = "Meánmhoill" +error = "Earráid agus staitisticí á lódáil" +errorLoadingStats = "Theip ar luchtú staitisticí" +excellent = "Ar fheabhas" +good = "Maith" +noData = "N/B" +successRate = "Ráta Ratha" +title = "Achoimre" +totalEvents = "Iomlán Imeachtaí" +vsLastPeriod = "i gcomparáid leis an tréimhse roimhe" + +[audit.charts] +byTool = "Uirlisí is mó Úsáidte" +byType = "Imeachtaí de réir Cineáil" +byUser = "Imeachtaí de réir Úsáideora" +day = "Lá" +error = "Earráid agus cairteacha á lódáil" +hourlyActivity = "Gníomhaíocht Uaireanta" +month = "Mí" +noData = "Níl sonraí don tréimhse seo" +overTime = "Imeachtaí le himeacht ama" +title = "Deais Iniúchta" +week = "Seachtain" + +[audit.events] +actions = "Gníomhartha" +author = "Údar" +clearFilters = "Glan" +details = "Sonraí" +documentName = "Doiciméad" +endDate = "Dáta deiridh" +error = "Earráid agus imeachtaí á luchtú" +eventDetails = "Sonraí an imeachta" +failure = "Teip" +fileHash = "Hais Comhaid" +filterByType = "Scag de réir cineáil" +filterByUser = "Scag de réir úsáideora" +ipAddress = "Seoladh IP" +noEvents = "Níor aimsíodh aon imeachtaí" +outcome = "Stádas" +sortAsc = "Sórtáil in ord ardaitheach" +sortDesc = "Sórtáil in ord íslitheach" +startDate = "Dáta tosaigh" +success = "Rath" +timestamp = "Stampa ama" +title = "Imeachtaí Iniúchta" +type = "Cineál" +user = "Úsáideoir" +viewDetails = "Féach sonraí" + +[audit.filters] +allOutcomes = "Uile" +failureOnly = "Teipeanna amháin" +last7Days = "An 7 lá anuas" +last30Days = "Na 30 lá anuas" +outcomeFilter = "Toradh" +quickPresets = "Scagairí tapa" +successOnly = "Rath amháin" +thisMonth = "An mhí seo" +today = "Inniu" [audit.tabs] +clearData = "Glan Sonraí" dashboard = "Deais" events = "Imeachtaí Iniúchta" export = "Easpórtáil" +[audit.clearData] +cancel = "Cealaigh" +codeDoesNotMatch = "Ní mheaitseálann an cód" +codePlaceholder = "Clóscríobh an cód anseo" +confirmationCode = "Cód Deimhnithe" +confirmationRequired = "Scrios Gach Sonraí Iniúchta" +confirmMessage = "Bainfidh sé seo gach loga iniúchta go buan. Iontráil an cód deimhnithe thíos chun leanúint ar aghaidh." +confirmTitle = "Dearbhaigh go bhfuil tú ag iarraidh scriosadh" +deleteButton = "Scrios" +enterCode = "Cód Deimhnithe" +enterCodeBelow = "Iontráil an cód díreach mar a thaispeántar thuas (cásíogair)" +initiateDelete = "Scrios Gach Sonraí" +irreversible = "NEAMH-INAISIOMPTHA" +success = "Rath" +successMessage = "Glanadh gach sonraí iniúchta go rathúil" +warning1 = "Ní féidir an gníomh seo a chur ar ceal" +warning2 = "Trí shonraí iniúchta a scriosadh, bainfear gach loga iniúchta stairiúil go buan, lena n-áirítear imeachtaí slándála, gníomhaíochtaí úsáideora, agus oibríochtaí comhaid ón mbunachar sonraí." + [auth] accessDenied = "Rochtain diúltaithe" insufficientPermissions = "Níl cead agat an gníomh seo a dhéanamh." @@ -2254,9 +2374,11 @@ copy = "Cóipeáil" done = "Déanta" error = "Earráid" expand = "Leathnaigh" +learnMore = "Tuilleadh eolais" lines = "línte" loading = "Á lódáil..." next = "Ar Aghaidh" +operation = "an oibríocht seo" preview = "Réamhamharc" previous = "Roimhe Seo" refresh = "Athnuaigh" @@ -2920,6 +3042,7 @@ copyStack = "Cóipeáil Stack Trace" discordSubmit = "Discord - Cuir post Tacaíochta" dismissAllErrors = "Díbhe gach earráid" encryptedPdfMustRemovePassword = "Tá an PDF seo cripteáilte nó cosanta le focal faire. Díghlasáil é roimh é a thiontú go PDF/A." +generic = "Tharla earráid" github = "Cuir ticéad isteach ar GitHub" githubSubmit = "GitHub - Cuir ticéad isteach" incorrectPasswordProvided = "Tá focal faire an PDF mícheart nó níor soláthraíodh é." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Uasghrádaíodh do shíntiús go rathúil. Nuashonraí upgradeSuccess = "D’éirigh leis an íocaíocht! Uasghrádaíodh do shíntiús. Nuashonraíodh an ceadúnas ar do fhreastalaí. Gheobhaidh tú ríomhphost deimhnithe go luath." upgradeTitle = "Uasghrádaigh go {{planName}}" yearly = "Bliantúil" +checkoutOpened = "Seiceáil oscailte sa bhrabhsálaí" +checkoutInstructions = "Críochnaigh do cheannach sa fhuinneog bhrabhsálaí a d’oscail díreach anois. Tar éis don íocaíocht a bheith críochnaithe, fill anseo agus cliceáil an cnaipe thíos chun d’eolas billeála a nuashonrú." +refreshBilling = "Tá an íocaíocht déanta agam - Nuashonraigh Billeáil" +closeLater = "Déanfaidh mé é seo níos déanaí" [payment.emailStage] continue = "Lean ar aghaidh" @@ -4679,6 +4806,13 @@ prompt = "Roghnaigh leathanach chun tábla a bhaint as" submit = "Sliocht" title = "Ó CSV go PDF" +[PDFToXLSX] +header = "PDF go Excel" +prompt = "Roghnaigh leathanaigh le táblaí a bhaint" +submit = "Tiontaigh" +title = "PDF go Excel (XLSX)" +tags = "scarbhileog,excel,xlsx,tábla,bain,tiontaigh" + [PDFToHTML] credit = "Úsáideann an tseirbhís seo PDF go html chun comhaid a thiontú." header = "Ó HTML go PDF" @@ -4835,6 +4969,7 @@ customPricing = "Saincheaptha" featureComparison = "Comparáid Gnéithe" from = "Ó" hideComparison = "Folaigh Comparáid Gnéithe" +included = "San áireamh" includedInCurrent = "San Áireamh i do Phlean" licensedSeats = "Ceadúnaithe: {{count}} suíochán" manage = "Bainistigh" @@ -4852,9 +4987,11 @@ title = "Plean Gníomhach" [plan.availablePlans] subtitle = "Roghnaigh an plean a oireann do do riachtanais" +loadError = "Ní féidir praghsáil plean a lódáil. Ag úsáid luachanna réamhshocraithe." title = "Pleananna atá ar fáil" [plan.enterprise] +siteLicense = "Ceadúnas Suímh" highlight1 = "Praghsáil shaincheaptha" highlight2 = "Tacaíocht thiomnaithe" highlight3 = "Na gnéithe is déanaí" @@ -4928,6 +5065,81 @@ keyDescription = "Greamaigh an eochair cheadúnais ó do ríomhphost" success = "Ceadúnas Gníomhachtaithe!" successMessage = "Tá do cheadúnas gníomhachtaithe go rathúil. Is féidir leat an fhuinneog seo a dhúnadh anois." +[plan.team] +name = "Team" +siteLicense = "Ceadúnas Suímh" + +[credits] +enableOverageBilling = "Cumasaigh Billeáil Ró-Úsáide" +maybeLater = "B’fhéidir níos déanaí" +upgrade = "Uasghrádaigh" + +[credits.modal] +advancedMonitoring = "Monatóireacht ardleibhéil" +allInOneWorkspace = "Spás oibre uile-i-aon PDF (amharcán, uirlisí & gníomhaire)" +apiSandbox = "Bosca gainimh API" +contactSales = "Déan Teagmháil le Díolacháin" +creditsRemaining = "{{current}} de {{total}} fágtha" +creditsThisMonth = "Creidmheasanna míosúla" +current = "Plean Reatha" +customPricing = "Saincheaptha" +customSmartFolders = "Fillteáin Chliste Shaincheaptha" +dedicatedSupportSlas = "Tacaíocht thiomnaithe & SLAanna" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Gach rud i gCreidmheasa, móide:" +everythingInFree = "Gach rud sa leagan Saor, móide:" +fasterThroughput = "Ráta próiseála 10x níos tapúla" +forRegularWork = "Le haghaidh gnáthobair PDF:" +freeTier = "Sraith Shaor" +fullyPrivateFiles = "Comhaid go hiomlán príobháideacha" +largeFileProcessing = "Próiseáil comhad mór" +managedMemberMessage = "Tá rochtain neamhtheoranta agat ar chreidmheasanna trí d’fhoireann. Má theastaíonn cabhair uait, déan teagmháil le do cheannaire foirne le do thoil." +managedMemberTitle = "Creidmheasanna Neamhtheoranta" +meteringBillingNote = "Déantar billeáil ar chreidmheasanna ró-úsáide go míosúil taobh le do shíntiús Team. Is féidir leat d’úsáid a rianú am ar bith i do shocruithe cuntais." +meteringExplanation = "Cuimsíonn do phlean Team {{credits}} creidmheasanna sa mhí. Nuair a rithfidh tú as, soláthraíonn billeáil ró-úsáide go huathoibríoch creidmheasanna breise ionas nach gá duit stopadh ag obair choíche." +meteringIncluded = "{{credits}} creidmheas/mí san áireamh le Team" +meteringNoCommitment = "Gan aon cheangal, cealaigh am ar bith" +meteringNeverRunOut = "Ná rith as creidmheasanna choíche" +meteringPayAsYouGo = "Íoc as an méid a úsáideann tú amháin" +meteringPrice = "Creidmheasanna breise ag {{price}}/creidmheas" +meteringTitle = "Billeáil Ró-Úsáide de réir Úsáide" +monthlyCredits = "creidmheasanna míosúla" +orgWideAccess = "Rialuithe rochtana ar fud na heagraíochta" +overage = "ró-úsáid" +perMonth = "/mí" +popular = "Coitianta" +premiumAiModels = "Samhlacha AI préimhe" +prioritySupport = "Tacaíocht tosaíochta" +privateDocCloud = "Scamall Doiciméad Príobháideach" +ragFineTuning = "RAG + mionchoigeartú" +secureApiAccess = "Rochtain API shlán" +selfHostLink = "Athbhreithnigh na doiciméid agus na pleananna" +selfHostPrompt = "Ar mhaith leat féinóstáil?" +standardThroughput = "Ráta próiseála caighdeánach" +subtitle = "Uasghrádaigh go Team le haghaidh 10x na gcreidmheasanna agus próiseáil níos tapúla." +subtitlePro = "Cumasaigh billeáil uathoibríoch ró-úsáide chun gan riamh rith as creidmheasanna." +teamLeaderOnly = "Ní féidir ach le ceannairí foirne billeáil ró-úsáide a chumasú" +teamSubscription = "Team" +titleExhausted = "D’úsáid tú do chreidmheasanna saor in aisce" +titleExhaustedPro = "Tá do chreidmheasanna ídithe agat" +unlimitedApiAccess = "Rochtain API neamhtheoranta" +unlimitedMonthlyCredits = "Ceadúnas Suímh" +unlimitedSeats = "Suíocháin neamhtheoranta" + +[credits.modal.features] +everythingInCredits = "Gach rud i gCreidmheasa, móide:" +everythingInFree = "Gach rud sa leagan Saor, móide:" +forRegularWork = "Le haghaidh gnáthobair PDF:" + +[credits.insufficient] +brief = "Níl dóthain creidmheasanna ann. Teastaíonn {{required}} creidmheasanna uait ach níl ach {{current}} agat." +freeTier = "Uasghrádaigh go Team le haghaidh 10x níos mó creidmheasanna agus billeáil ró-úsáide neamhtheoranta." +managedMember = "Déan teagmháil le do cheannaire foirne le do thoil." +message = "Níl go leor creidmheasanna agat chun {{tool}} a rith. Faoi láthair tá {{current}} creidmheasanna agat." +messageWithAmount = "Teastaíonn {{required}} creidmheasanna chun {{tool}} a rith, ach níl ach {{current}} agat." +teamMember = "Cumasaigh billeáil ró-úsáide chun gan riamh rith as creidmheasanna." +title = "Creidmheasanna Neamhdhóthain" + [printFile] header = "Priontáil an Comhad go Printéir" submit = "Priontáil" @@ -5565,6 +5777,70 @@ user = "Logáilte isteach mar" saas = "Stirling Cloud" selfhosted = "Féin-óstáilte" +[settings.planBilling] +currentPlan = "Plean Reatha" +loading = "Eolas billeála á lódáil..." +notAvailable = "Tá Plean & Billeáil ar fáil ach amháin nuair a bhíonn ceangal le Stirling Cloud (mód SaaS)." +title = "Plean & Billeáil" + +[settings.planBilling.billing] +manageBilling = "Bainistigh Billeáil" +nextBillingDate = "Dáta billeála eile" +overageCost = "Costas reatha ró-úsáide: {{amount}} ({{credits}} creidmheasanna)" + +[settings.planBilling.credits] +estimatedCost = "Costas measta: {{amount}}" +freeTierInfo = "Cuimsíonn an plean saor {{freeCredits}} creidmheas sa mhí. Uasghrádaigh go Team le haghaidh {{teamCredits}} creidmheas/mí agus billeáil ró-úsáide íoc-de-réchur." +included = "{{count}} creidmheas/mí (san áireamh)" +noOverage = "Gan táillí ró-úsáide an mhí seo. Tá tú ag úsáid do {{count}} creidmheasanna san áireamh." +overage = "+ {{count}} ró-úsáid" +overageInfo = "Déantar billeáil ar chreidmheasanna ró-úsáide ag {{price}} in aghaidh an chreidmheasa. Ní íocfaidh tú ach as an méid a úsáideann tú thar do chead míosúil." +title = "Úsáid Creidmheasanna" + +[settings.planBilling.errors] +fetchFailed = "Níorbh fhéidir sonraí billeála a fháil" +retry = "Atriail" + +[settings.planBilling.status] +active = "Gníomhach" +canceled = "Cealaithe" +pastDue = "As Dáta" +trial = "Triail" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Gnéithe agus tacaíocht fiontair shaincheaptha" +free = "Saor" +freeDescription = "50 creidmheas sa mhí" +team = "Team" +teamBadge = "Team" +teamDescription = "500 creidmheas/mí san áireamh, billeáil uathoibríoch ró-úsáide le seirbhís gan bhriseadh" +teamTooltipCredits = "Cuimsíonn an plean Team {{credits}} creidmheas/mí." +teamTooltipFineprint = "Íoc ach as an méid a úsáideann tú thar na creidmheasanna san áireamh." +teamTooltipOverage = "Billeáil uathoibríoch ró-úsáide ag {{price}}/creidmheas chun seirbhís gan bhriseadh a chinntiú." + +[settings.planBilling.team] +managedByTeam = "Bainistithe ag foireann" +memberCount = "{{count}} ball foirne" + +[settings.planBilling.trial] +daysRemaining = "{{days}} lá fágtha" +daysRemainingFull = "Críochnaíonn do thriail i gceann {{days}} lá" +endDate = "Le síothlú: {{date}}" +endsOn = "Críochnaíonn an triail" +title = "Triail Shaor Gníomhach" + +[settings.planBilling.upgrade] +cta = "Uasghrádaigh go Team" +featureApi = "Rochtain API le huathoibriú" +featureCredits = "{{teamCredits}} creidmheas sa mhí (i gcomparáid le {{freeCredits}} ar Saor)" +featureMembers = "Baill foirne neamhtheoranta" +featureSupport = "Tacaíocht tosaíochta" +featureThroughput = "Ráta próiseála níos tapúla" +opensInBrowser = "Osclaítear sa bhrabhsálaí é chun an t-uasghrádú a chomhlánú" +subtitle = "Uasghrádaigh go Team le haghaidh:" +title = "Uasghrádaigh do Phlean" + [settings.developer] apiKeys = "Eochracha API" title = "Forbróir" @@ -5689,6 +5965,9 @@ people = "Daoine" teams = "Foirne" title = "Spás Oibre" +[settings.team] +title = "Foireann" + [setup] description = "Tosaigh trí roghnú conas is mian leat Stirling PDF a úsáid" welcome = "Fáilte go Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "Uath‑scoilt le bileoga deighilteora" name = "Rannán Leathanach" tooltip = "Úsáid bileoga deighilteora cód QR idir cáipéisí agus iad á scanadh" +[split.methods.byPoster] +name = "Giotaí Inphriontáilte" +desc = "Roinn leathanaigh mhóra ina méideanna inphriontáilte" +tooltip = "Roinn leathanaigh rómhóra ina ngiotaí níos lú oiriúnacha le priontáil ar pháipéar caighdeánach (A4, Letter, srl.)" + [split.methods.byPages] desc = "Bain leathanaigh shonracha (1,3,5-10)" name = "Uimhreacha Leathanach" @@ -6029,6 +6313,7 @@ tooltip = "Sonraigh uasmhéid comhaid (m.sh. 10MB, 500KB)" [split.methods.prefix] splitAt = "Scoilt ag" splitBy = "Scoilt de réir" +splitInto = "Roinn ina" [split.methodSelection.tooltip] bullet1 = "Cliceáil ar chárta modha chun é a roghnú" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Roghnaigh modh scoilte ar dtús, le do thoil" chooseMethod = "Roghnaigh Modh" settings = "Socruithe" +[split.poster] +rightToLeft = "Roinn ó dheis go clé" + +[split.poster.pageSize] +label = "Spriocmhéid Leathanaigh" +description = "Méid na leathanach aschuir le haghaidh priontála" + +[split.poster.xFactor] +label = "Roinnteanna Cothrománacha" +description = "Líon na gcolún chun gach leathanach a roinnt ina gcuid" + +[split.poster.yFactor] +label = "Roinnteanna Ingearacha" +description = "Líon na rónna chun gach leathanach a roinnt ina gcuid" + [split.tooltip.byChapters] bullet1 = "Leibhéal Leabharmhairc: Cén leibhéal le scoilt (1=barrleibhéal)" bullet2 = "Cuir Meiteashonraí San Áireamh: Caomhnaigh airíonna cáipéise" @@ -6085,6 +6385,14 @@ bullet5 = "Cumasaigh Mód Dé‑Aghaidh má tá tú ag scanadh an dá thaobh de text = "Scoilt go huathoibríoch cáipéisí scanta ag baint úsáid as bileoga deighilteora fisiciúla le cóid QR. Foirfe chun ilcháipéisí scanta le chéile a phróiseáil." title = "Scoilt de réir Rannáin Leathanach" +[split.tooltip.byPoster] +bullet1 = "Spriocmhéid Leathanaigh: Roghnaigh méid an pháipéir aschuir (A4, Letter, srl.)" +bullet2 = "Roinnteanna Cothrománacha/Ingearacha: Méid na greille le haghaidh roinnte" +bullet3 = "Ó Dheis go Clé: Aisiompaigh ord na gcolún do leagananna RTL" +bullet4 = "Priontáil agus cóimeáil na píosaí chun do phóstaer a chruthú" +text = "Roinn leathanaigh mhóra PDF ina ngiotaí beaga inphriontáilte, oiriúnach do mhéideanna caighdeánacha páipéir. Foirfe chun priontaí póstaeir a chruthú ó leathanaigh mhóra." +title = "Roinn le haghaidh Priontála Póstaeir" + [split.tooltip.byPages] bullet1 = "Pointí scoilte aonair: 3,7 (scoilteann sé tar éis leathanaigh 3 agus 7)" bullet2 = "Pointí scoilte raoin: 3-8 (scoilteann sé roimh leathanach 3 agus tar éis leathanach 8)" @@ -6364,9 +6672,13 @@ tags = "gréasán a ghabháil, a shábháil-leathanach, gréasán-go-doc, cartla title = "URL go PDF" [usage] +aboutUsageAnalytics = "Maidir le hAnailísíocht Úsáide" +configureSettings = "Cumraigh Socruithe Anailísíochta" error = "Earráid agus staitisticí úsáide á luchtú" noData = "Níl aon sonraí ar fáil" noDataMessage = "Níl aon staitisticí úsáide ar fáil faoi láthair." +usageAnalyticsExplanation = "Rianaíonn anailísíocht úsáide iarratais ar chríochphointí agus patrúin úsáide uirlisí. In éineacht leis an bpainéal Logála Iniúchta, faigheann tú infheictheacht iomlán ar ghníomhaíocht an chórais, ar fheidhmíocht, agus ar imeachtaí slándála." +viewAuditLogs = "Féach Logaí Iniúchta" [usage.chart] title = "Cairt úsáide críochphointí" @@ -6947,3 +7259,278 @@ cancel = "Cealaigh" confirm = "Bain Amach" message = "Tá {{count}} comhad sa ZIP seo. An mbaineann tú amach mar sin féin?" title = "Comhad ZIP Mór" + +[cloudBadge] +tooltip = "Úsáidfidh an oibríocht seo do chreidmheasanna scamall" + +[team] +cancelInviteError = "Theip ar an gcuireadh a chealú" +confirmCancelInvite = "An bhfuil tú cinnte gur mian leat an cuireadh seo a chealú?" +confirmLeave = "An bhfuil tú cinnte gur mian leat an fhoireann seo a fhágáil?" +confirmLeaveLeader = "Mar cheannaire foirne, bainfear díot ón bhfoireann má fhágann tú. An bhfuil tú cinnte?" +confirmRemove = "An bhfuil tú cinnte gur mian leat an ball seo a bhaint?" +editName = "Cuir ainm na foirne in eagar" +inviteCancelled = "Cuireadh cealaithe" +inviteError = "Theip ar an gcuireadh a sheoladh" +inviteSent = "Seoladh an cuireadh go rathúil" +leader = "Ceannaire" +leaveButton = "Fág an Fhoireann" +leaveError = "Theip ar an bhfoireann a fhágáil" +leaveSuccess = "D’éirigh leat an fhoireann a fhágáil" +loading = "Eolas foirne á lódáil..." +memberCount = "{{count}} ball" +memberRemoved = "Baineadh an ball go rathúil" +namePlaceholder = "Iontráil ainm na foirne" +personal = "Pearsanta" +removeError = "Theip ar an mball a bhaint" +renameError = "Theip ar an bhfoireann a athainmniú" +renameSuccess = "Athainmníodh an fhoireann go rathúil" + +[team.invitationBanner] +message = "thug cuireadh duit a bheith páirteach" +acceptButton = "Glac" +rejectButton = "Diúltaigh" + +[team.features] +badge = "Gnéithe Team" +subtitle = "Comhoibrigh le d’fhoireann" +title = "Comhoibriú Foirne" +viewPlans = "Féach ar Phleananna" + +[team.features.billing] +description = "Bainistigh billeáil agus síntiúis" +title = "Bainistíocht Billeála" + +[team.features.credits] +description = "Linn chreidmheasanna roinnte do gach ball" +title = "Creidmheasanna Comhroinnte" + +[team.features.dashboard] +description = "Féach gníomhaíocht agus úsáid na foirne" +title = "Deais Foirne" + +[team.features.invite] +description = "Cuir baill le do fhoireann" +title = "Tabhair Cuireadh do Bhaill" + +[team.invite] +cancelLabel = "Cealaigh" +invalidEmail = "Seoladh ríomhphoist neamhbhailí" +placeholder = "Iontráil seoladh ríomhphoist" +sendButton = "Seol Cuireadh" +title = "Tabhair Cuireadh do Bhall Foirne" + +[team.members] +emailColumn = "Ríomhphost" +empty = "Níl aon bhaill foirne fós" +nameColumn = "Ainm" +pending = "Ar feitheamh" +remove = "Bain" +roleColumn = "Ról" +title = "Baill Foirne" + +[team.upgrade] +button = "Uasghrádaigh go Team" +description = "Díghlasáil gnéithe comhoibrithe foirne" +title = "Uasghrádaigh go Plean Team" + +[provider.oauth2.google] +scope = "Fíordheimhniú sínithe isteach" + +[provider.oauth2.google.clientId] +label = "Client ID" +description = "An OAuth2 client ID ó Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Client Secret" +description = "An OAuth2 client secret ó Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Raon feidhme" +description = "Scopes OAuth2 scartha le camóga" + +[provider.oauth2.google.useAsUsername] +label = "Úsáid mar Ainm Úsáideora" +description = "Réimse le húsáid mar ainm úsáideora (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Fíordheimhniú sínithe isteach" + +[provider.oauth2.github.clientId] +label = "Client ID" +description = "An OAuth2 client ID ó GitHub Developer Settings" + +[provider.oauth2.github.clientSecret] +label = "Client Secret" +description = "An OAuth2 client secret ó GitHub Developer Settings" + +[provider.oauth2.github.scopes] +label = "Raon feidhme" +description = "Scopes OAuth2 scartha le camóga" + +[provider.oauth2.github.useAsUsername] +label = "Úsáid mar Ainm Úsáideora" +description = "Réimse le húsáid mar ainm úsáideora (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "URL an Eisiúnaí" +description = "URL de chríochphointe OpenID Connect Discovery an ríochta Keycloak" + +[provider.oauth2.keycloak.clientId] +label = "Client ID" +description = "An OAuth2 client ID ó Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Client Secret" +description = "An OAuth2 client secret ó Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "Raon feidhme" +description = "Scopes OAuth2 scartha le camóga" + +[provider.oauth2.keycloak.useAsUsername] +label = "Úsáid mar Ainm Úsáideora" +description = "Réimse le húsáid mar ainm úsáideora (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "OAuth2 Ginearálta" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Cumasaigh OAuth2 Ginearálta" +description = "Cumasaigh fíordheimhniú ag úsáid soláthraí OAuth2 saincheaptha" + +[provider.oauth2.generic.provider] +label = "Ainm an tSoláthraí" +description = "Ainm do sholáthraí OAuth2 (m.sh., Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "URL an Eisiúnaí" +description = "Soláthraí a thacaíonn le OpenID Connect Discovery (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "Client ID" +description = "An OAuth2 client ID ó do sholáthraí" + +[provider.oauth2.generic.clientSecret] +label = "Client Secret" +description = "An OAuth2 client secret ó do sholáthraí" + +[provider.oauth2.generic.scopes] +label = "Raon feidhme" +description = "Scopes OAuth2 scartha le camóga" + +[provider.oauth2.generic.useAsUsername] +label = "Úsáid mar Ainm Úsáideora" +description = "Réimse le húsáid mar ainm úsáideora" + +[provider.oauth2.generic.autoCreateUser] +label = "Cruthaigh Úsáideoirí go hUathoibríoch" +description = "Cruthaigh cuntais úsáideora go huathoibríoch ag an gcéad logáil isteach OAuth2" + +[provider.oauth2.generic.blockRegistration] +label = "Cuir Clárú Cosc" +description = "Cuir cosc ar chlárú úsáideoirí nua trí OAuth2" + +[provider.smtp] +name = "Ríomhphost SMTP" +scope = "Fógraí Ríomhphoist" + +[provider.smtp.enabled] +label = "Cumasaigh Ríomhphost" +description = "Cumasaigh fógraí ríomhphoist agus feidhmiúlacht SMTP" + +[provider.smtp.host] +label = "Óstríomhaire SMTP" +description = "Óstainm nó seoladh IP do fhreastalaí SMTP" + +[provider.smtp.port] +label = "Port SMTP" +description = "Uimhir an phoirt don cheangal SMTP (de ghnáth 25, 465, nó 587)" + +[provider.smtp.username] +label = "Ainm Úsáideora SMTP" +description = "Ainm úsáideora le haghaidh fíordheimhnithe SMTP" + +[provider.smtp.password] +label = "Focal Faire SMTP" +description = "Focal faire le haghaidh fíordheimhnithe SMTP" + +[provider.smtp.from] +label = "Seoladh 'Ó'" +description = "An seoladh ríomhphoist le húsáid mar an seoltóir" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "Cumasaigh SAML2" +description = "Cumasaigh fíordheimhniú SAML2 (do Fiontar amháin)" + +[provider.saml2.provider] +label = "Ainm an tSoláthraí" +description = "Ainm do sholáthraí SAML2" + +[provider.saml2.registrationId] +label = "Registration ID" +description = "Ainm d’aip an tSoláthraí Seirbhíse (SP)" + +[provider.saml2.idpMetadataUri] +label = "IDP Metadata URI" +description = "An URI do mheitashonraí do sholáthraí" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login URL" +description = "An URL chun SSO a thosú" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout URL" +description = "An URL chun SLO a thosú" + +[provider.saml2.idpIssuer] +label = "Eisiúnaí IDP" +description = "Aitheantas do sholáthraí" + +[provider.saml2.idpCert] +label = "Teastas IDP" +description = "Conair an teastais (m.sh., classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Eochair Phríobháideach" +description = "Do chosán eochrach príobháidigh" + +[provider.saml2.spCert] +label = "Teastas SP" +description = "Conair do theastais sínithe" + +[provider.saml2.autoCreateUser] +label = "Cruthaigh Úsáideoirí go hUathoibríoch" +description = "Cruthaigh cuntais úsáideora go huathoibríoch ag an gcéad logáil isteach SAML2" + +[provider.saml2.blockRegistration] +label = "Cuir Clárú Cosc" +description = "Cuir cosc ar chlárú úsáideoirí nua trí SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "Iompórtáil Comhad" + +[provider.googledrive.enabled] +label = "Cumasaigh Roghnóir Comhad Google Drive" +description = "Ceadaigh d’úsáideoirí comhaid a iompórtáil go díreach ó Google Drive" + +[provider.googledrive.clientId] +label = "Client ID" +description = "Google OAuth 2.0 Client ID ó Google Cloud Console" + +[provider.googledrive.apiKey] +label = "API Key" +description = "Google API Key don Google Picker API ó Google Cloud Console" + +[provider.googledrive.appId] +label = "App ID" +description = "App ID Google Drive ó Google Cloud Console" diff --git a/frontend/public/locales/hi-IN/translation.toml b/frontend/public/locales/hi-IN/translation.toml index 71cd5ea7b..e216fe97f 100644 --- a/frontend/public/locales/hi-IN/translation.toml +++ b/frontend/public/locales/hi-IN/translation.toml @@ -96,6 +96,8 @@ pin = "फ़ाइल पिन करें (टूल चलने के ब poweredBy = "द्वारा संचालित" pro = "प्रो" processTimeWarning = "चेतावनी: फ़ाइल के आकार के आधार पर यह प्रक्रिया एक मिनट तक ले सकती है" +processingComplete = "आपकी फ़ाइल तैयार है।" +processingCompleteMultiple = "{{count}} फ़ाइलें तैयार हैं।" property = "संपत्ति" quickPosition = "त्वरित स्थिति" red = "लाल" @@ -105,6 +107,7 @@ save = "सहेजें" saveToBrowser = "ब्राउज़र में सहेजें" saveUnavailable = "इस आइटम के लिए सेव उपलब्ध नहीं" seeDockerHub = "Docker Hub देखें" +editSecret = "इस मान को संपादित करें" selectFillter = "-- चुनें --" size = "आकार" sponsor = "प्रायोजक" @@ -651,6 +654,7 @@ description = "OAuth2 और SAML जैसी बाहरी प्रमा disconnect = "डिसकनेक्ट करें" disconnected = "प्रदाता सफलतापूर्वक डिसकनेक्ट किया गया" disconnectError = "प्रदाता को डिसकनेक्ट करने में विफल" +documentation = "दस्तावेज़ देखें" imageResolutionFull = "पूर्ण (मूल आकार)" imageResolutionReduced = "कम (अधिकतम 1200px)" linkedServices = "लिंक्ड सर्विसेज़" @@ -964,6 +968,18 @@ label = "डिफ़ॉल्ट लोकेल" description = "अधिकतम फ़ाइल अपलोड आकार (उदा., 100MB, 1GB)" label = "फ़ाइल अपलोड सीमा" +[admin.settings.general.hideDisabledTools] +description = "इंटरफ़ेस से निष्क्रिय टूल छुपाएँ" +label = "निष्क्रिय टूल छुपाएँ" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "सक्रिय न होने पर Google Drive बटन छुपाएँ" +label = "Google Drive छुपाएँ" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "सक्रिय न होने पर मोबाइल QR स्कैनर बटन छुपाएँ" +label = "मोबाइल स्कैनर छुपाएँ" + [admin.settings.general.frontendUrl] description = "फ्रंटएंड के लिए बेस URL (उदा., https://pdf.example.com)। ईमेल आमंत्रण लिंक और मोबाइल QR कोड अपलोड के लिए उपयोग होता है। बैकएंड URL उपयोग करने के लिए खाली छोड़ें।" label = "फ्रंटएंड URL" @@ -1148,6 +1164,8 @@ title = "सुरक्षा" [admin.settings.security.audit] label = "ऑडिट लॉगिंग" +showDetails = "ऑडिट स्तर विवरण दिखाएँ" +hideDetails = "ऑडिट स्तर विवरण छुपाएँ" [admin.settings.security.audit.enabled] description = "अनुपालन और सुरक्षा मॉनिटरिंग हेतु उपयोगकर्ता क्रियाएँ और सिस्टम ईवेंट ट्रैक करें" @@ -1157,10 +1175,32 @@ label = "ऑडिट लॉगिंग सक्रिय करें" description = "0=ऑफ, 1=बेसिक, 2=स्टैंडर्ड, 3=वर्बोज़" label = "ऑडिट स्तर" +[admin.settings.security.audit.levelDetails] +off = "कोई ऑडिट लॉगिंग नहीं (गंभीर सुरक्षा घटनाओं को छोड़कर)" +basic = "PDF फ़ाइल कार्य (compress, split, merge, आदि) और सेटिंग परिवर्तन। कैप्चर: ऑपरेशन स्थिति (सफल/असफल), मेथड पैरामीटर, समय। न्यूनतम लॉग मात्रा।" +standard = "BASIC इवेंट्स के साथ: user login/logout, account changes, सामान्य GET अनुरोध। लॉग शोर कम करने के लिए निरंतर पोलिंग कॉल्स (/auth/me, /app-config, /health, आदि) शामिल नहीं। अधिकांश डिप्लॉयमेंट के लिए उपयुक्त।" +verbose = "STANDARD इवेंट्स के साथ: निरंतर पोलिंग कॉल्स, सभी GET अनुरोध, विस्तृत टाइमिंग। चेतावनी: उच्च लॉग मात्रा और प्रदर्शन पर प्रभाव।" + [admin.settings.security.audit.retentionDays] description = "ऑडिट लॉग बनाए रखने के दिनों की संख्या" label = "ऑडिट रिटेंशन (दिन)" +[admin.settings.security.audit.advancedOptions] +title = "उन्नत विकल्प" +description = "निम्न विकल्प प्रोसेसिंग समय और मेमोरी उपयोग बढ़ाते हैं। केवल आवश्यकता होने पर सक्षम करें।" + +[admin.settings.security.audit.captureFileHash] +description = "अपलोड की गई PDF फ़ाइलों का SHA-256 हैश निकालें ताकि अखंडता सत्यापित हो सके। ऑडिट स्तर से स्वतंत्र।" +label = "फ़ाइल हैश कैप्चर करें (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "प्रोसेसिंग के दौरान PDF दस्तावेज़ों से लेखक फ़ील्ड निकालें। इसके लिए PDF पार्सिंग आवश्यक है, विलंबता बढ़ती है। ऑडिट स्तर से स्वतंत्र।" +label = "PDF लेखक मेटाडेटा कैप्चर करें" + +[admin.settings.security.audit.captureOperationResults] +description = "मेथड के रिटर्न मान कैप्चर करें। अनुशंसित नहीं: लॉग मात्रा और डिस्क उपयोग उल्लेखनीय रूप से बढ़ता है।" +label = "ऑपरेशन परिणाम कैप्चर करें" + [admin.settings.security.csrfDisabled] description = "Cross-Site Request Forgery सुरक्षा निष्क्रिय करें (अनुशंसित नहीं)" label = "CSRF सुरक्षा निष्क्रिय करें" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "ऑडिट लॉगिंग कॉन्फ़िगर करें" +configureAuditMessage = "Security & Authentication अनुभाग में ऑडिट लॉगिंग स्तर, रिटेंशन अवधि और अन्य सेटिंग्स समायोजित करें।" disabled = "ऑडिट लॉगिंग अक्षम है" disabledMessage = "सिस्टम ईवेंट ट्रैक करने के लिए अपनी एप्लिकेशन कॉन्फ़िगरेशन में ऑडिट लॉगिंग सक्षम करें।" enterpriseRequired = "एंटरप्राइज़ लाइसेंस आवश्यक" enterpriseRequiredMessage = "ऑडिट लॉगिंग सिस्टम एक एंटरप्राइज़ फीचर है। ऑडिट लॉग और एनालिटिक्स तक पहुँच के लिए कृपया एंटरप्राइज़ लाइसेंस में अपग्रेड करें।" +goToSettings = "ऑडिट सेटिंग्स पर जाएँ" notAvailable = "ऑडिट सिस्टम उपलब्ध नहीं" notAvailableMessage = "ऑडिट सिस्टम कॉन्फ़िगर नहीं है या उपलब्ध नहीं है।" -[audit.charts] -byType = "प्रकार के अनुसार ईवेंट्स" -byUser = "उपयोगकर्ता के अनुसार ईवेंट्स" -day = "दिन" -error = "चार्ट लोड करने में त्रुटि" -month = "माह" -overTime = "समय के साथ ईवेंट्स" -title = "ऑडिट डैशबोर्ड" -week = "सप्ताह" - [audit.error] title = "ऑडिट सिस्टम लोड करने में त्रुटि" -[audit.events] -actions = "क्रियाएँ" -clearFilters = "साफ़ करें" -details = "विवरण" -endDate = "समाप्ति तिथि" -error = "इवेंट्स लोड करने में त्रुटि" -eventDetails = "इवेंट विवरण" -filterByType = "प्रकार के अनुसार फ़िल्टर करें" -filterByUser = "उपयोगकर्ता के अनुसार फ़िल्टर करें" -ipAddress = "IP पता" -noEvents = "कोई इवेंट नहीं मिला" -startDate = "प्रारंभ तिथि" -timestamp = "टाइमस्टैम्प" -title = "ऑडिट ईवेंट्स" -type = "प्रकार" -user = "उपयोगकर्ता" -viewDetails = "विवरण देखें" - [audit.export] clearFilters = "साफ़ करें" description = "ऑडिट इवेंट्स को CSV या JSON फ़ॉर्मेट में निर्यात करें। निर्यात किए जाने वाले डेटा को सीमित करने के लिए फ़िल्टर का उपयोग करें।" endDate = "समाप्ति तिथि" error = "डेटा निर्यात करने में विफल" exportButton = "डेटा निर्यात करें" +fieldAuthor = "लेखक (PDF से)" +fieldDate = "तारीख" +fieldDocumentName = "दस्तावेज़ नाम" +fieldFileHash = "फ़ाइल हैश (SHA-256)" +fieldIpAddress = "IP पता" +fieldOperationResults = "ऑपरेशन परिणाम" +fieldOutcome = "परिणाम (सफलता/असफलता)" +fieldTool = "टूल" +fieldUsername = "उपयोगकर्ता नाम" filterByType = "प्रकार के अनुसार फ़िल्टर करें" filterByUser = "उपयोगकर्ता के अनुसार फ़िल्टर करें" filters = "फ़िल्टर (वैकल्पिक)" format = "निर्यात फ़ॉर्मेट" +selectFields = "शामिल करने के लिए फ़ील्ड चुनें" startDate = "प्रारंभ तिथि" title = "ऑडिट डेटा निर्यात करें" +verboseRequired = "VERBOSE ऑडिट स्तर आवश्यक" [audit.systemStatus] +autoRefresh = "स्वतः रिफ्रेश" +autoRefreshLabel = "हर 30 सेकंड में स्वतः रिफ्रेश" +captureBySettings = "सेटिंग्स में सक्षम करें" +capturedFields = "कैप्चर किए गए फ़ील्ड" +date = "तारीख" days = "दिन" disabled = "अक्षम" +documentName = "दस्तावेज़ नाम" enabled = "सक्रिय" +fileHash = "फ़ाइल हैश" level = "ऑडिट स्तर" +pdfAuthor = "PDF लेखक" retention = "रिटेंशन अवधि" status = "ऑडिट लॉगिंग" title = "सिस्टम स्थिति" +tool = "टूल" totalEvents = "कुल ईवेंट्स" +username = "उपयोगकर्ता नाम" +verboseOnly = "केवल VERBOSE" + +[audit.stats] +activeUsers = "सक्रिय उपयोगकर्ता" +attention = "ध्यान आवश्यक" +avgLatency = "औसत विलंबता" +error = "आँकड़े लोड करने में त्रुटि" +errorLoadingStats = "आँकड़े लोड करने में विफल" +excellent = "उत्तम" +good = "अच्छा" +noData = "N/A" +successRate = "सफलता दर" +title = "सारांश" +totalEvents = "कुल इवेंट्स" +vsLastPeriod = "पिछली अवधि की तुलना में" + +[audit.charts] +byTool = "सबसे अधिक उपयोग किए गए टूल" +byType = "प्रकार के अनुसार ईवेंट्स" +byUser = "उपयोगकर्ता के अनुसार ईवेंट्स" +day = "दिन" +error = "चार्ट लोड करने में त्रुटि" +hourlyActivity = "प्रति घंटा गतिविधि" +month = "माह" +noData = "इस अवधि के लिए कोई डेटा नहीं" +overTime = "समय के साथ ईवेंट्स" +title = "ऑडिट डैशबोर्ड" +week = "सप्ताह" + +[audit.events] +actions = "क्रियाएँ" +author = "लेखक" +clearFilters = "साफ़ करें" +details = "विवरण" +documentName = "दस्तावेज़" +endDate = "समाप्ति तिथि" +error = "इवेंट्स लोड करने में त्रुटि" +eventDetails = "इवेंट विवरण" +failure = "असफलता" +fileHash = "फ़ाइल हैश" +filterByType = "प्रकार के अनुसार फ़िल्टर करें" +filterByUser = "उपयोगकर्ता के अनुसार फ़िल्टर करें" +ipAddress = "IP पता" +noEvents = "कोई इवेंट नहीं मिला" +outcome = "स्थिति" +sortAsc = "आरोही क्रम में छाँटें" +sortDesc = "अवरोही क्रम में छाँटें" +startDate = "प्रारंभ तिथि" +success = "सफलता" +timestamp = "टाइमस्टैम्प" +title = "ऑडिट ईवेंट्स" +type = "प्रकार" +user = "उपयोगकर्ता" +viewDetails = "विवरण देखें" + +[audit.filters] +allOutcomes = "सभी" +failureOnly = "केवल असफलताएँ" +last7Days = "पिछले 7 दिन" +last30Days = "पिछले 30 दिन" +outcomeFilter = "परिणाम" +quickPresets = "त्वरित फ़िल्टर" +successOnly = "केवल सफलताएँ" +thisMonth = "इस महीने" +today = "आज" [audit.tabs] +clearData = "डेटा साफ़ करें" dashboard = "डैशबोर्ड" events = "ऑडिट ईवेंट्स" export = "एक्सपोर्ट" +[audit.clearData] +cancel = "रद्द करें" +codeDoesNotMatch = "कोड मेल नहीं खाता" +codePlaceholder = "यहाँ कोड दर्ज करें" +confirmationCode = "पुष्टिकरण कोड" +confirmationRequired = "सभी ऑडिट डेटा हटाएँ" +confirmMessage = "यह सभी ऑडिट लॉग स्थायी रूप से हटा देगा। आगे बढ़ने के लिए नीचे पुष्टिकरण कोड दर्ज करें।" +confirmTitle = "कृपया हटाने की पुष्टि करें" +deleteButton = "हटाएँ" +enterCode = "पुष्टिकरण कोड" +enterCodeBelow = "जैसा ऊपर दिखाया गया है, वैसा ही कोड दर्ज करें (केस-सेंसिटिव)" +initiateDelete = "सारा डेटा हटाएँ" +irreversible = "अपरिवर्तनीय" +success = "सफलता" +successMessage = "सभी ऑडिट डेटा सफलतापूर्वक साफ़ कर दिया गया है" +warning1 = "यह क्रिया वापस नहीं की जा सकती" +warning2 = "ऑडिट डेटा हटाने से डेटाबेस से सभी ऐतिहासिक ऑडिट लॉग, जिनमें सुरक्षा इवेंट, उपयोगकर्ता गतिविधियाँ और फ़ाइल कार्य शामिल हैं, स्थायी रूप से हट जाएँगे।" + [auth] accessDenied = "पहुँच अस्वीकृत" insufficientPermissions = "आपके पास यह क्रिया करने की अनुमति नहीं है." @@ -2254,9 +2374,11 @@ copy = "कॉपी करें" done = "पूर्ण" error = "त्रुटि" expand = "विस्तारित करें" +learnMore = "और जानें" lines = "पंक्तियाँ" loading = "लोड हो रहा है..." next = "अगला" +operation = "यह ऑपरेशन" preview = "पूर्वावलोकन" previous = "पिछला" refresh = "रीफ़्रेश करें" @@ -2920,6 +3042,7 @@ copyStack = "स्टैक ट्रेस कॉपी करें" discordSubmit = "Discord - सहायता अनुरोध जमा करें" dismissAllErrors = "सभी त्रुटियाँ खारिज करें" encryptedPdfMustRemovePassword = "यह PDF एन्क्रिप्टेड या पासवर्ड-संरक्षित है। PDF/A में बदलने से पहले कृपया इसे अनलॉक करें।" +generic = "एक त्रुटि हुई" github = "GitHub पर टिकट जमा करें" githubSubmit = "GitHub - समस्या टिकट जमा करें" incorrectPasswordProvided = "PDF पासवर्ड गलत है या प्रदान नहीं किया गया है।" @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "आपकी सदस्यता सफलताप upgradeSuccess = "भुगतान सफल! आपकी सदस्यता अपग्रेड हो गई है। लाइसेंस आपके सर्वर पर अपडेट कर दिया गया है। आपको शीघ्र ही एक पुष्टि ईमेल मिलेगा।" upgradeTitle = "{{planName}} में अपग्रेड करें" yearly = "वार्षिक" +checkoutOpened = "ब्राउज़र में Checkout खुला" +checkoutInstructions = "अभी खुले ब्राउज़र विंडो में अपनी खरीद पूरी करें। भुगतान पूर्ण होने के बाद यहाँ लौटें और नीचे दिए गए बटन पर क्लिक कर बिलिंग जानकारी रिफ्रेश करें।" +refreshBilling = "मैंने भुगतान पूरा कर लिया है - बिलिंग रिफ्रेश करें" +closeLater = "मैं यह बाद में करूँगा" [payment.emailStage] continue = "जारी रखें" @@ -4679,6 +4806,13 @@ prompt = "तालिका निकालने के लिए पृष् submit = "निकालें" title = "PDF से CSV" +[PDFToXLSX] +header = "PDF से Excel" +prompt = "टेबल निकालने के लिए पृष्ठ चुनें" +submit = "कन्वर्ट करें" +title = "PDF से Excel (XLSX)" +tags = "spreadsheet,excel,xlsx,table,extract,convert" + [PDFToHTML] credit = "यह सेवा फ़ाइल रूपांतरण के लिए pdftohtml का उपयोग करती है।" header = "PDF से HTML" @@ -4835,6 +4969,7 @@ customPricing = "कस्टम" featureComparison = "फ़ीचर तुलना" from = "से" hideComparison = "फ़ीचर तुलना छिपाएँ" +included = "शामिल" includedInCurrent = "आपके प्लान में शामिल" licensedSeats = "लाइसेंस प्राप्त: {{count}} सीटें" manage = "प्रबंधित करें" @@ -4852,9 +4987,11 @@ title = "सक्रिय प्लान" [plan.availablePlans] subtitle = "अपनी जरूरतों के अनुसार प्लान चुनें" +loadError = "प्लान की कीमत लोड नहीं हो सकी। डिफ़ॉल्ट मान का उपयोग किया जा रहा है।" title = "उपलब्ध प्लान" [plan.enterprise] +siteLicense = "साइट लाइसेंस" highlight1 = "कस्टम प्राइसिंग" highlight2 = "समर्पित समर्थन" highlight3 = "नवीनतम फीचर्स" @@ -4928,6 +5065,81 @@ keyDescription = "ईमेल से मिली लाइसेंस कु success = "लाइसेंस सक्रिय हुआ!" successMessage = "आपका लाइसेंस सफलतापूर्वक सक्रिय हो गया है। अब आप यह विंडो बंद कर सकते हैं।" +[plan.team] +name = "टीम" +siteLicense = "साइट लाइसेंस" + +[credits] +enableOverageBilling = "ओवरेज बिलिंग सक्षम करें" +maybeLater = "शायद बाद में" +upgrade = "अपग्रेड" + +[credits.modal] +advancedMonitoring = "एडवांस्ड मॉनिटरिंग" +allInOneWorkspace = "ऑल-इन-वन PDF वर्कस्पेस (व्यूअर, टूल्स और एजेंट)" +apiSandbox = "API सैंडबॉक्स" +contactSales = "सेल्स से संपर्क करें" +creditsRemaining = "{{current}} of {{total}} remaining" +creditsThisMonth = "मासिक क्रेडिट" +current = "वर्तमान प्लान" +customPricing = "कस्टम" +customSmartFolders = "कस्टम स्मार्ट फ़ोल्डर" +dedicatedSupportSlas = "समर्पित सपोर्ट और SLAs" +enterpriseSubscription = "एंटरप्राइज़" +everythingInCredits = "क्रेडिट्स में सब कुछ, साथ ही:" +everythingInFree = "फ्री में सब कुछ, साथ ही:" +fasterThroughput = "10x तेज थ्रूपुट" +forRegularWork = "नियमित PDF कार्य के लिए:" +freeTier = "फ्री टियर" +fullyPrivateFiles = "पूरी तरह निजी फ़ाइलें" +largeFileProcessing = "बड़ी फ़ाइल प्रोसेसिंग" +managedMemberMessage = "आपकी टीम के माध्यम से आपको क्रेडिट्स का असीमित एक्सेस है। सहायता चाहिए तो कृपया अपने टीम लीडर से संपर्क करें।" +managedMemberTitle = "अनलिमिटेड क्रेडिट्स" +meteringBillingNote = "ओवरेज क्रेडिट्स का बिल आपके टीम सब्सक्रिप्शन के साथ मासिक रूप से किया जाता है। अपने अकाउंट सेटिंग्स में कभी भी उपयोग ट्रैक करें।" +meteringExplanation = "आपके टीम प्लान में प्रति माह {{credits}} क्रेडिट्स शामिल हैं। खत्म होने पर, ओवरेज बिलिंग स्वचालित रूप से अतिरिक्त क्रेडिट्स देती है ताकि आपका काम न रुके।" +meteringIncluded = "टीम के साथ {{credits}} क्रेडिट्स/माह शामिल" +meteringNoCommitment = "कोई बंधन नहीं, कभी भी रद्द करें" +meteringNeverRunOut = "कभी क्रेडिट्स खत्म न हों" +meteringPayAsYouGo = "जितना उपयोग, उतना भुगतान" +meteringPrice = "अतिरिक्त क्रेडिट्स {{price}}/क्रेडिट पर" +meteringTitle = "पे-व्हाट-यू-यूज़ ओवरेज बिलिंग" +monthlyCredits = "मासिक क्रेडिट्स" +orgWideAccess = "संगठन-व्यापी एक्सेस नियंत्रण" +overage = "ओवरेज" +perMonth = "/माह" +popular = "लोकप्रिय" +premiumAiModels = "प्रीमियम AI मॉडल" +prioritySupport = "प्राथमिकता सपोर्ट" +privateDocCloud = "प्राइवेट डॉक्युमेंट क्लाउड" +ragFineTuning = "RAG + फाइन-ट्यूनिंग" +secureApiAccess = "सिक्योर API एक्सेस" +selfHostLink = "डॉक्स और प्लान देखें" +selfHostPrompt = "सेल्फ-होस्ट करना चाहते हैं?" +standardThroughput = "स्टैंडर्ड थ्रूपुट" +subtitle = "10x अधिक क्रेडिट्स और तेज प्रोसेसिंग के लिए टीम में अपग्रेड करें।" +subtitlePro = "क्रेडिट्स कभी समाप्त न हों—स्वचालित ओवरेज बिलिंग सक्षम करें।" +teamLeaderOnly = "केवल टीम लीडर ही ओवरेज बिलिंग सक्षम कर सकते हैं" +teamSubscription = "टीम" +titleExhausted = "आपने अपने फ्री क्रेडिट्स उपयोग कर लिए हैं" +titleExhaustedPro = "आपके क्रेडिट्स खत्म हो गए हैं" +unlimitedApiAccess = "अनलिमिटेड API एक्सेस" +unlimitedMonthlyCredits = "साइट लाइसेंस" +unlimitedSeats = "अनलिमिटेड सीटें" + +[credits.modal.features] +everythingInCredits = "क्रेडिट्स में सब कुछ, साथ ही:" +everythingInFree = "फ्री में सब कुछ, साथ ही:" +forRegularWork = "नियमित PDF कार्य के लिए:" + +[credits.insufficient] +brief = "पर्याप्त क्रेडिट्स नहीं। आपको {{required}} क्रेडिट्स चाहिए, पर आपके पास {{current}} हैं।" +freeTier = "10x अधिक क्रेडिट्स और अनलिमिटेड ओवरेज बिलिंग के लिए टीम में अपग्रेड करें।" +managedMember = "कृपया सहायता के लिए अपने टीम लीडर से संपर्क करें।" +message = "आपके पास {{tool}} चलाने के लिए पर्याप्त क्रेडिट्स नहीं हैं। वर्तमान में आपके पास {{current}} क्रेडिट्स हैं।" +messageWithAmount = "आपको {{tool}} चलाने के लिए {{required}} क्रेडिट्स चाहिए, लेकिन आपके पास केवल {{current}} हैं।" +teamMember = "क्रेडिट्स कभी खत्म न हों—ओवरेज बिलिंग सक्षम करें।" +title = "क्रेडिट्स अपर्याप्त" + [printFile] header = "प्रिंटर पर फ़ाइल प्रिंट करें" submit = "प्रिंट करें" @@ -5565,6 +5777,70 @@ user = "के रूप में लॉग इन" saas = "Stirling Cloud" selfhosted = "सेल्फ-होस्टेड" +[settings.planBilling] +currentPlan = "वर्तमान प्लान" +loading = "बिलिंग जानकारी लोड हो रही है..." +notAvailable = "प्लान और बिलिंग केवल Stirling Cloud (SaaS मोड) से कनेक्ट होने पर उपलब्ध है।" +title = "प्लान और बिलिंग" + +[settings.planBilling.billing] +manageBilling = "बिलिंग प्रबंधित करें" +nextBillingDate = "अगली बिलिंग तिथि" +overageCost = "वर्तमान ओवरेज लागत: {{amount}} ({{credits}} क्रेडिट्स)" + +[settings.planBilling.credits] +estimatedCost = "अनुमानित लागत: {{amount}}" +freeTierInfo = "फ्री प्लान में प्रति माह {{freeCredits}} क्रेडिट्स शामिल हैं। टीम में अपग्रेड करें: {{teamCredits}} क्रेडिट्स/माह और पे-एज़-यू-गो ओवरेज बिलिंग।" +included = "{{count}} क्रेडिट्स/माह (शामिल)" +noOverage = "इस माह कोई ओवरेज शुल्क नहीं। आप अपने शामिल {{count}} क्रेडिट्स का उपयोग कर रहे हैं।" +overage = "+ {{count}} ओवरेज" +overageInfo = "ओवरेज क्रेडिट्स का बिल {{price}} प्रति क्रेडिट पर किया जाता है। आप केवल अपने मासिक भत्ते से अधिक उपयोग के लिए भुगतान करेंगे।" +title = "क्रेडिट उपयोग" + +[settings.planBilling.errors] +fetchFailed = "बिलिंग डेटा प्राप्त नहीं हो सका" +retry = "फिर से प्रयास करें" + +[settings.planBilling.status] +active = "सक्रिय" +canceled = "रद्द" +pastDue = "अतिदेय" +trial = "ट्रायल" + +[settings.planBilling.tier] +enterprise = "एंटरप्राइज़" +enterpriseDescription = "कस्टम एंटरप्राइज़ फीचर और सपोर्ट" +free = "फ्री" +freeDescription = "50 क्रेडिट्स प्रति माह" +team = "टीम" +teamBadge = "टीम" +teamDescription = "500 क्रेडिट्स/माह शामिल, निर्बाध सेवा के लिए स्वचालित ओवरेज बिलिंग" +teamTooltipCredits = "टीम प्लान में {{credits}} क्रेडिट्स/माह शामिल हैं।" +teamTooltipFineprint = "शामिल क्रेडिट्स से अधिक उपयोग पर ही भुगतान करें।" +teamTooltipOverage = "{{price}}/क्रेडिट पर स्वचालित ओवरेज बिलिंग निर्बाध सेवा सुनिश्चित करती है।" + +[settings.planBilling.team] +managedByTeam = "टीम द्वारा प्रबंधित" +memberCount = "{{count}} टीम सदस्य" + +[settings.planBilling.trial] +daysRemaining = "{{days}} दिन शेष" +daysRemainingFull = "आपका ट्रायल {{days}} दिनों में समाप्त होगा" +endDate = "समाप्ति: {{date}}" +endsOn = "ट्रायल समाप्ति" +title = "फ्री ट्रायल सक्रिय" + +[settings.planBilling.upgrade] +cta = "टीम में अपग्रेड करें" +featureApi = "स्वचालन के लिए API एक्सेस" +featureCredits = "{{teamCredits}} क्रेडिट्स प्रति माह (Free पर {{freeCredits}} की तुलना में)" +featureMembers = "अनलिमिटेड टीम सदस्य" +featureSupport = "प्राथमिकता सपोर्ट" +featureThroughput = "तेज़ प्रोसेसिंग थ्रूपुट" +opensInBrowser = "अपग्रेड पूरा करने के लिए ब्राउज़र में खुलता है" +subtitle = "इसके लिए टीम में अपग्रेड करें:" +title = "अपना प्लान अपग्रेड करें" + [settings.developer] apiKeys = "API Keys" title = "डेवलपर" @@ -5689,6 +5965,9 @@ people = "सदस्य" teams = "टीमें" title = "वर्कस्पेस" +[settings.team] +title = "टीम" + [setup] description = "Stirling PDF का उपयोग कैसे करना है चुनकर शुरुआत करें" welcome = "Stirling PDF में आपका स्वागत है" @@ -6011,6 +6290,11 @@ desc = "डिवाइडर शीट्स के साथ स्वतः name = "पृष्ठ डिवाइडर" tooltip = "स्कैन करते समय दस्तावेज़ों के बीच QR कोड डिवाइडर शीट्स का उपयोग करें" +[split.methods.byPoster] +name = "प्रिंटेबल भाग" +desc = "बड़े पृष्ठों को प्रिंट करने योग्य आकारों में विभाजित करें" +tooltip = "अत्यधिक बड़े पृष्ठों को स्टैंडर्ड कागज़ (A4, Letter, आदि) पर प्रिंट के लिए उपयुक्त छोटे भागों में बाँटें" + [split.methods.byPages] desc = "विशिष्ट पृष्ठ निकालें (1,3,5-10)" name = "पृष्ठ संख्याएँ" @@ -6029,6 +6313,7 @@ tooltip = "अधिकतम फ़ाइल आकार निर्दिष [split.methods.prefix] splitAt = "यहाँ विभाजित करें" splitBy = "इसके आधार पर विभाजित करें" +splitInto = "में विभाजित करें" [split.methodSelection.tooltip] bullet1 = "किसी विधि कार्ड पर क्लिक कर उसे चुनें" @@ -6048,6 +6333,21 @@ selectMethodFirst = "कृपया पहले एक विभाजन व chooseMethod = "विधि चुनें" settings = "सेटिंग्स" +[split.poster] +rightToLeft = "दाएँ-से-बाएँ विभाजित करें" + +[split.poster.pageSize] +label = "लक्षित पृष्ठ आकार" +description = "प्रिंटिंग के लिए आउटपुट पृष्ठों का आकार" + +[split.poster.xFactor] +label = "क्षैतिज विभाजन" +description = "प्रत्येक पृष्ठ को जितने कॉलम में बाँटना है" + +[split.poster.yFactor] +label = "ऊर्ध्वाधर विभाजन" +description = "प्रत्येक पृष्ठ को जितनी पंक्तियों में बाँटना है" + [split.tooltip.byChapters] bullet1 = "बुकमार्क स्तर: किस स्तर पर विभाजित करना है (1=शीर्ष स्तर)" bullet2 = "मेटाडेटा शामिल करें: दस्तावेज़ गुण सुरक्षित रखें" @@ -6085,6 +6385,14 @@ bullet5 = "यदि डिवाइडर शीट के दोनों प text = "QR कोड वाली भौतिक डिवाइडर शीट्स का उपयोग करके स्कैन किए गए दस्तावेज़ों को स्वतः विभाजित करें। साथ में स्कैन किए गए कई दस्तावेज़ों को प्रोसेस करने के लिए उत्तम।" title = "पृष्ठ डिवाइडर के अनुसार विभाजित करें" +[split.tooltip.byPoster] +bullet1 = "लक्षित पृष्ठ आकार: आउटपुट कागज़ का आकार चुनें (A4, Letter, आदि)" +bullet2 = "क्षैतिज/ऊर्ध्वाधर विभाजन: विभाजन के लिए ग्रिड आकार" +bullet3 = "दाएँ-से-बाएँ: RTL लेआउट के लिए कॉलम क्रम उल्टा करें" +bullet4 = "प्रिंट करें और टुकड़ों को जोड़कर अपना पोस्टर बनाएँ" +text = "बड़े PDF पृष्ठों को स्टैंडर्ड पेपर आकारों के अनुसार छोटे, प्रिंट योग्य भागों में विभाजित करें। अत्यधिक बड़े पृष्ठों से पोस्टर प्रिंट बनाने के लिए उत्तम।" +title = "पोस्टर प्रिंट के लिए विभाजित करें" + [split.tooltip.byPages] bullet1 = "एकल विभाजन बिंदु: 3,7 (पृष्ठ 3 और 7 के बाद विभाजित करता है)" bullet2 = "रेंज विभाजन बिंदु: 3-8 (पृष्ठ 3 से पहले और पृष्ठ 8 के बाद विभाजित करता है)" @@ -6364,9 +6672,13 @@ tags = "वेब-कैप्चर,पेज-सहेजें,वेब-स title = "URL से PDF" [usage] +aboutUsageAnalytics = "यूसेज एनालिटिक्स के बारे में" +configureSettings = "एनालिटिक्स सेटिंग्स कॉन्फ़िगर करें" error = "उपयोग आँकड़े लोड करने में त्रुटि" noData = "कोई डेटा उपलब्ध नहीं" noDataMessage = "वर्तमान में कोई उपयोग आँकड़े उपलब्ध नहीं हैं।" +usageAnalyticsExplanation = "यूसेज एनालिटिक्स एंडपॉइंट अनुरोधों और टूल उपयोग पैटर्न को ट्रैक करता है। ऑडिट लॉगिंग डैशबोर्ड के साथ मिलकर, आपको सिस्टम गतिविधि, प्रदर्शन और सुरक्षा इवेंट्स पर पूर्ण दृश्यता मिलती है।" +viewAuditLogs = "ऑडिट लॉग देखें" [usage.chart] title = "एंडपॉइंट उपयोग चार्ट" @@ -6947,3 +7259,278 @@ cancel = "रद्द करें" confirm = "निकालें" message = "इस ZIP में {{count}} फ़ाइलें हैं। फिर भी निकालें?" title = "बड़ी ZIP फ़ाइल" + +[cloudBadge] +tooltip = "यह ऑपरेशन आपके क्लाउड क्रेडिट्स का उपयोग करेगा" + +[team] +cancelInviteError = "निमंत्रण रद्द करने में विफल" +confirmCancelInvite = "क्या आप वाकई यह निमंत्रण रद्द करना चाहते हैं?" +confirmLeave = "क्या आप वाकई इस टीम को छोड़ना चाहते हैं?" +confirmLeaveLeader = "टीम लीडर होने के नाते, छोड़ने पर आप टीम से हट जाएँगे। क्या आप सुनिश्चित हैं?" +confirmRemove = "क्या आप वाकई इस सदस्य को हटाना चाहते हैं?" +editName = "टीम नाम संपादित करें" +inviteCancelled = "निमंत्रण रद्द किया गया" +inviteError = "निमंत्रण भेजने में विफल" +inviteSent = "निमंत्रण सफलतापूर्वक भेजा गया" +leader = "लीडर" +leaveButton = "टीम छोड़ें" +leaveError = "टीम छोड़ने में विफल" +leaveSuccess = "सफलतापूर्वक टीम छोड़ दी" +loading = "टीम जानकारी लोड हो रही है..." +memberCount = "{{count}} सदस्य" +memberRemoved = "सदस्य सफलतापूर्वक हटाया गया" +namePlaceholder = "टीम का नाम दर्ज करें" +personal = "पर्सनल" +removeError = "सदस्य हटाने में विफल" +renameError = "टीम का नाम बदलने में विफल" +renameSuccess = "टीम का नाम सफलतापूर्वक बदला गया" + +[team.invitationBanner] +message = "ने आपको शामिल होने के लिए आमंत्रित किया है" +acceptButton = "स्वीकार करें" +rejectButton = "अस्वीकार करें" + +[team.features] +badge = "टीम फीचर्स" +subtitle = "अपनी टीम के साथ सहयोग करें" +title = "टीम सहयोग" +viewPlans = "प्लान देखें" + +[team.features.billing] +description = "बिलिंग और सब्सक्रिप्शन प्रबंधित करें" +title = "बिलिंग प्रबंधन" + +[team.features.credits] +description = "सभी सदस्यों के लिए साझा क्रेडिट पूल" +title = "साझा क्रेडिट्स" + +[team.features.dashboard] +description = "टीम गतिविधि और उपयोग देखें" +title = "टीम डैशबोर्ड" + +[team.features.invite] +description = "अपनी टीम में सदस्य जोड़ें" +title = "सदस्यों को आमंत्रित करें" + +[team.invite] +cancelLabel = "रद्द करें" +invalidEmail = "अमान्य ईमेल पता" +placeholder = "ईमेल पता दर्ज करें" +sendButton = "निमंत्रण भेजें" +title = "टीम सदस्य को आमंत्रित करें" + +[team.members] +emailColumn = "ईमेल" +empty = "अभी तक कोई टीम सदस्य नहीं" +nameColumn = "नाम" +pending = "लंबित" +remove = "हटाएँ" +roleColumn = "भूमिका" +title = "टीम सदस्य" + +[team.upgrade] +button = "टीम में अपग्रेड करें" +description = "टीम सहयोग फीचर्स अनलॉक करें" +title = "टीम प्लान में अपग्रेड करें" + +[provider.oauth2.google] +scope = "Sign-in authentication" + +[provider.oauth2.google.clientId] +label = "Client ID" +description = "Google Cloud Console से OAuth2 client ID" + +[provider.oauth2.google.clientSecret] +label = "Client Secret" +description = "Google Cloud Console से OAuth2 client secret" + +[provider.oauth2.google.scopes] +label = "Scopes" +description = "कोमा से अलग किए गए OAuth2 scopes" + +[provider.oauth2.google.useAsUsername] +label = "Use as Username" +description = "यूज़रनेम के रूप में उपयोग करने के लिए फ़ील्ड (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Sign-in authentication" + +[provider.oauth2.github.clientId] +label = "Client ID" +description = "GitHub Developer Settings से OAuth2 client ID" + +[provider.oauth2.github.clientSecret] +label = "Client Secret" +description = "GitHub Developer Settings से OAuth2 client secret" + +[provider.oauth2.github.scopes] +label = "Scopes" +description = "कोमा से अलग किए गए OAuth2 scopes" + +[provider.oauth2.github.useAsUsername] +label = "Use as Username" +description = "यूज़रनेम के रूप में उपयोग करने के लिए फ़ील्ड (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Issuer URL" +description = "Keycloak realm के OpenID Connect Discovery endpoint का URL" + +[provider.oauth2.keycloak.clientId] +label = "Client ID" +description = "Keycloak से OAuth2 client ID" + +[provider.oauth2.keycloak.clientSecret] +label = "Client Secret" +description = "Keycloak से OAuth2 client secret" + +[provider.oauth2.keycloak.scopes] +label = "Scopes" +description = "कोमा से अलग किए गए OAuth2 scopes" + +[provider.oauth2.keycloak.useAsUsername] +label = "Use as Username" +description = "यूज़रनेम के रूप में उपयोग करने के लिए फ़ील्ड (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "Generic OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Generic OAuth2 सक्षम करें" +description = "कस्टम OAuth2 प्रदाता का उपयोग करके ऑथेंटिकेशन सक्षम करें" + +[provider.oauth2.generic.provider] +label = "प्रदाता का नाम" +description = "आपके OAuth2 प्रदाता का नाम (जैसे, Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "Issuer URL" +description = "वह प्रदाता जो OpenID Connect Discovery (/.well-known/openid-configuration) को सपोर्ट करता है" + +[provider.oauth2.generic.clientId] +label = "Client ID" +description = "आपके प्रदाता से OAuth2 client ID" + +[provider.oauth2.generic.clientSecret] +label = "Client Secret" +description = "आपके प्रदाता से OAuth2 client secret" + +[provider.oauth2.generic.scopes] +label = "Scopes" +description = "कोमा से अलग किए गए OAuth2 scopes" + +[provider.oauth2.generic.useAsUsername] +label = "Use as Username" +description = "यूज़रनेम के रूप में उपयोग करने के लिए फ़ील्ड" + +[provider.oauth2.generic.autoCreateUser] +label = "उपयोगकर्ता स्वतः बनाएँ" +description = "पहले OAuth2 लॉगिन पर उपयोगकर्ता खाते स्वतः बनाएं" + +[provider.oauth2.generic.blockRegistration] +label = "रजिस्ट्रेशन ब्लॉक करें" +description = "OAuth2 के माध्यम से नए उपयोगकर्ता रजिस्ट्रेशन को रोकें" + +[provider.smtp] +name = "SMTP मेल" +scope = "ईमेल नोटिफिकेशन" + +[provider.smtp.enabled] +label = "मेल सक्षम करें" +description = "ईमेल नोटिफिकेशन और SMTP फ़ंक्शनलिटी सक्षम करें" + +[provider.smtp.host] +label = "SMTP होस्ट" +description = "आपके SMTP सर्वर का होस्टनेम या IP पता" + +[provider.smtp.port] +label = "SMTP पोर्ट" +description = "SMTP कनेक्शन के लिए पोर्ट नंबर (आमतौर पर 25, 465, या 587)" + +[provider.smtp.username] +label = "SMTP यूज़रनेम" +description = "SMTP ऑथेंटिकेशन के लिए यूज़रनेम" + +[provider.smtp.password] +label = "SMTP पासवर्ड" +description = "SMTP ऑथेंटिकेशन के लिए पासवर्ड" + +[provider.smtp.from] +label = "प्रेषक पता" +description = "प्रेषक के रूप में उपयोग करने के लिए ईमेल पता" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "SAML2 सक्षम करें" +description = "SAML2 ऑथेंटिकेशन सक्षम करें (केवल एंटरप्राइज़)" + +[provider.saml2.provider] +label = "प्रदाता का नाम" +description = "आपके Service Provider (SP) ऐप का नाम" + +[provider.saml2.registrationId] +label = "रजिस्ट्रेशन ID" +description = "आपके Service Provider (SP) ऐप का नाम" + +[provider.saml2.idpMetadataUri] +label = "IDP Metadata URI" +description = "आपके प्रदाता के मेटाडेटा के लिए URI" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login URL" +description = "SSO शुरू करने के लिए URL" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout URL" +description = "SLO शुरू करने के लिए URL" + +[provider.saml2.idpIssuer] +label = "IDP Issuer" +description = "आपके प्रदाता की ID" + +[provider.saml2.idpCert] +label = "IDP प्रमाणपत्र" +description = "प्रमाणपत्र का पथ (जैसे, classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "प्राइवेट की" +description = "आपकी प्राइवेट की का पथ" + +[provider.saml2.spCert] +label = "SP प्रमाणपत्र" +description = "आपके साइनिंग प्रमाणपत्र का पथ" + +[provider.saml2.autoCreateUser] +label = "उपयोगकर्ता स्वतः बनाएँ" +description = "पहले SAML2 लॉगिन पर उपयोगकर्ता खाते स्वतः बनाएं" + +[provider.saml2.blockRegistration] +label = "रजिस्ट्रेशन ब्लॉक करें" +description = "SAML2 के माध्यम से नए उपयोगकर्ता रजिस्ट्रेशन को रोकें" + +[provider.googledrive] +name = "Google Drive" +scope = "फ़ाइल आयात" + +[provider.googledrive.enabled] +label = "Google Drive फ़ाइल पिकर सक्षम करें" +description = "उपयोगकर्ताओं को सीधे Google Drive से फ़ाइलें आयात करने दें" + +[provider.googledrive.clientId] +label = "Client ID" +description = "Google Cloud Console से Google OAuth 2.0 Client ID" + +[provider.googledrive.apiKey] +label = "API Key" +description = "Google Picker API के लिए Google API Key Google Cloud Console से" + +[provider.googledrive.appId] +label = "App ID" +description = "Google Cloud Console से Google Drive App ID" diff --git a/frontend/public/locales/hr-HR/translation.toml b/frontend/public/locales/hr-HR/translation.toml index e9e4112fb..cb814a217 100644 --- a/frontend/public/locales/hr-HR/translation.toml +++ b/frontend/public/locales/hr-HR/translation.toml @@ -96,6 +96,8 @@ pin = "Prikvači datoteku (zadrži aktivnu nakon pokretanja alata)" poweredBy = "Pokreće" pro = "Pro" processTimeWarning = "Upozorenje: Ovaj proces može trajati i do minutu, u zavisnosti od veličine dokumenta" +processingComplete = "Vaša datoteka je spremna." +processingCompleteMultiple = "{{count}} datoteka je spremno." property = "Svojstvo" quickPosition = "Brzi položaj" red = "Crveno" @@ -105,6 +107,7 @@ save = "Spremi" saveToBrowser = "spremi u Preglednik" saveUnavailable = "Spremanje nije dostupno za ovu stavku" seeDockerHub = "Vidi Docker Hub" +editSecret = "Uredite ovu vrijednost" selectFillter = "-- Odaberi --" size = "Veličina" sponsor = "Sponzor" @@ -651,6 +654,7 @@ description = "Konfigurirajte vanjske pružatelje autentikacije poput OAuth2 i S disconnect = "Prekini vezu" disconnected = "Pružatelj je uspješno odspojen" disconnectError = "Nije uspjelo odspajanje pružatelja" +documentation = "Prikaži dokumentaciju" imageResolutionFull = "Puna (izvorna veličina)" imageResolutionReduced = "Smanjena (maks. 1200 px)" linkedServices = "Povezane usluge" @@ -964,6 +968,18 @@ label = "Zadani jezik" description = "Maksimalna veličina otpremanja datoteka (npr. 100MB, 1GB)" label = "Ograničenje otpremanja datoteka" +[admin.settings.general.hideDisabledTools] +description = "Sakrij onemogućene alate iz sučelja" +label = "Sakrij onemogućene alate" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Sakrij gumb Google Drive kada nije omogućen" +label = "Sakrij Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Sakrij gumb za mobilni QR skener kada nije omogućen" +label = "Sakrij mobilni skener" + [admin.settings.general.frontendUrl] description = "Osnovni URL za frontend (npr. https://pdf.example.com). Koristi se za poveznice pozivnica e-poštom i otpremanje putem mobilnog QR koda. Ostavite prazno za korištenje backend URL-a." label = "Frontend URL" @@ -1148,6 +1164,8 @@ title = "Sigurnost" [admin.settings.security.audit] label = "Revizijsko zapisivanje" +showDetails = "Prikaži detalje razine revizije" +hideDetails = "Sakrij detalje razine revizije" [admin.settings.security.audit.enabled] description = "Prati radnje korisnika i događaje sustava radi usklađenosti i sigurnosnog nadzora" @@ -1157,10 +1175,32 @@ label = "Omogući revizijsko zapisivanje" description = "0=ISKLJUČENO, 1=OSNOVNO, 2=STANDARDNO, 3=DETALJNO" label = "Razina revizije" +[admin.settings.security.audit.levelDetails] +off = "Bez zapisivanja revizije (osim kritičnih sigurnosnih događaja)" +basic = "Radnje nad PDF datotekama (kompresija, podjela, spajanje itd.) i promjene postavki. Bilježi: status operacije (uspjeh/neuspjeh), parametre metoda, vrijeme izvršavanja. Minimalan obujam zapisnika." +standard = "BASIC događaji plus: prijava/odjava korisnika, promjene računa, opći GET zahtjevi. Isključuje kontinuirane upite (/auth/me, /app-config, /health itd.) radi smanjenja buke u zapisniku. Idealno za većinu implementacija." +verbose = "STANDARD događaji plus: kontinuirani upiti, svi GET zahtjevi, detaljna vremena. Upozorenje: velik obujam zapisnika i utjecaj na performanse." + [admin.settings.security.audit.retentionDays] description = "Broj dana zadržavanja revizijskih zapisa" label = "Zadržavanje revizije (dani)" +[admin.settings.security.audit.advancedOptions] +title = "Napredne opcije" +description = "Sljedeće opcije povećavaju vrijeme obrade i potrošnju memorije. Omogućite samo ako je doista potrebno." + +[admin.settings.security.audit.captureFileHash] +description = "Izdvoji SHA-256 hash učitanih PDF datoteka radi provjere integriteta. Neovisno o razini revizije." +label = "Zabilježi hash datoteke (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Izdvoji polje autora iz PDF dokumenata tijekom obrade. Zahtijeva raščlambu PDF-a, povećava latenciju. Neovisno o razini revizije." +label = "Zabilježi metapodatke autora PDF-a" + +[admin.settings.security.audit.captureOperationResults] +description = "Zabilježi povratne vrijednosti metoda. Nije preporučljivo: značajno povećava obujam zapisnika i potrošnju diska." +label = "Zabilježi rezultate operacija" + [admin.settings.security.csrfDisabled] description = "Onemogući zaštitu od Cross-Site Request Forgery (ne preporučuje se)" label = "Onemogući zaštitu od CSRF-a" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "Konfiguriraj revizijsko zapisivanje" +configureAuditMessage = "Podesite razinu zapisivanja revizije, razdoblje zadržavanja i druge postavke u odjeljku Sigurnost i autentikacija." disabled = "Revizijsko zapisivanje je onemogućeno" disabledMessage = "Omogućite revizijsko zapisivanje u konfiguraciji aplikacije kako biste pratili sustavne događaje." enterpriseRequired = "Potrebna je Enterprise licenca" enterpriseRequiredMessage = "Sustav zapisivanja revizije je Enterprise značajka. Nadogradite na Enterprise licencu za pristup revizijskim zapisima i analitici." +goToSettings = "Idi na postavke revizije" notAvailable = "Sustav revizije nije dostupan" notAvailableMessage = "Sustav revizije nije konfiguriran ili nije dostupan." -[audit.charts] -byType = "Događaji prema vrsti" -byUser = "Događaji prema korisniku" -day = "Dan" -error = "Pogreška pri učitavanju grafikona" -month = "Mjesec" -overTime = "Događaji kroz vrijeme" -title = "Revizijska nadzorna ploča" -week = "Tjedan" - [audit.error] title = "Pogreška pri učitavanju sustava revizije" -[audit.events] -actions = "Radnje" -clearFilters = "Očisti" -details = "Detalji" -endDate = "Završni datum" -error = "Pogreška pri učitavanju događaja" -eventDetails = "Detalji događaja" -filterByType = "Filtriraj prema vrsti" -filterByUser = "Filtriraj prema korisniku" -ipAddress = "IP adresa" -noEvents = "Nema pronađenih događaja" -startDate = "Početni datum" -timestamp = "Vremenska oznaka" -title = "Revizijski događaji" -type = "Vrsta" -user = "Korisnik" -viewDetails = "Prikaži detalje" - [audit.export] clearFilters = "Očisti" description = "Izvezite revizijske događaje u CSV ili JSON format. Upotrijebite filtre kako biste ograničili izvezene podatke." endDate = "Završni datum" error = "Nije uspio izvoz podataka" exportButton = "Izvezi podatke" +fieldAuthor = "Autor (iz PDF-a)" +fieldDate = "Datum" +fieldDocumentName = "Naziv dokumenta" +fieldFileHash = "Hash datoteke (SHA-256)" +fieldIpAddress = "IP adresa" +fieldOperationResults = "Rezultati operacija" +fieldOutcome = "Ishod (uspjeh/neuspjeh)" +fieldTool = "Alat" +fieldUsername = "Korisničko ime" filterByType = "Filtriraj prema vrsti" filterByUser = "Filtriraj prema korisniku" filters = "Filteri (neobavezno)" format = "Format izvoza" +selectFields = "Odaberite polja za uključivanje" startDate = "Početni datum" title = "Izvoz podataka revizije" +verboseRequired = "Zahtijeva razinu VERBOSE revizije" [audit.systemStatus] +autoRefresh = "Automatsko osvježavanje" +autoRefreshLabel = "Automatski osvježi svakih 30 s" +captureBySettings = "Omogući u postavkama" +capturedFields = "Zabilježena polja" +date = "Datum" days = "dana" disabled = "Onemogućeno" +documentName = "Naziv dokumenta" enabled = "Omogućeno" +fileHash = "Hash datoteke" level = "Razina revizije" +pdfAuthor = "Autor PDF-a" retention = "Razdoblje zadržavanja" status = "Revizijsko zapisivanje" title = "Status sustava" +tool = "Alat" totalEvents = "Ukupno događaja" +username = "Korisničko ime" +verboseOnly = "Samo VERBOSE" + +[audit.stats] +activeUsers = "Aktivni korisnici" +attention = "Potrebna pozornost" +avgLatency = "Prosj. latencija" +error = "Pogreška pri učitavanju statistike" +errorLoadingStats = "Neuspjelo učitavanje statistike" +excellent = "Odlično" +good = "Dobro" +noData = "N/A" +successRate = "Stopa uspjeha" +title = "Sažetak" +totalEvents = "Ukupno događaja" +vsLastPeriod = "u odnosu na prethodno razdoblje" + +[audit.charts] +byTool = "Najčešće korišteni alati" +byType = "Događaji prema vrsti" +byUser = "Događaji prema korisniku" +day = "Dan" +error = "Pogreška pri učitavanju grafikona" +hourlyActivity = "Satna aktivnost" +month = "Mjesec" +noData = "Nema podataka za ovo razdoblje" +overTime = "Događaji kroz vrijeme" +title = "Revizijska nadzorna ploča" +week = "Tjedan" + +[audit.events] +actions = "Radnje" +author = "Autor" +clearFilters = "Očisti" +details = "Detalji" +documentName = "Dokument" +endDate = "Završni datum" +error = "Pogreška pri učitavanju događaja" +eventDetails = "Detalji događaja" +failure = "Neuspjeh" +fileHash = "Hash datoteke" +filterByType = "Filtriraj prema vrsti" +filterByUser = "Filtriraj prema korisniku" +ipAddress = "IP adresa" +noEvents = "Nema pronađenih događaja" +outcome = "Status" +sortAsc = "Sortiraj uzlazno" +sortDesc = "Sortiraj silazno" +startDate = "Početni datum" +success = "Uspjeh" +timestamp = "Vremenska oznaka" +title = "Revizijski događaji" +type = "Vrsta" +user = "Korisnik" +viewDetails = "Prikaži detalje" + +[audit.filters] +allOutcomes = "Sve" +failureOnly = "Samo neuspjesi" +last7Days = "Zadnjih 7 dana" +last30Days = "Zadnjih 30 dana" +outcomeFilter = "Ishod" +quickPresets = "Brzi filtri" +successOnly = "Samo uspjesi" +thisMonth = "Ovaj mjesec" +today = "Danas" [audit.tabs] +clearData = "Obriši podatke" dashboard = "Nadzorna ploča" events = "Revizijski događaji" export = "Izvoz" +[audit.clearData] +cancel = "Odustani" +codeDoesNotMatch = "Kod se ne podudara" +codePlaceholder = "Upišite kod ovdje" +confirmationCode = "Potvrdni kod" +confirmationRequired = "Obriši sve podatke revizije" +confirmMessage = "Ovo će trajno ukloniti sve revizijske zapise. U nastavku unesite potvrdni kod kako biste nastavili." +confirmTitle = "Potvrdite da želite obrisati" +deleteButton = "Obriši" +enterCode = "Potvrdni kod" +enterCodeBelow = "Unesite kod točno kao iznad (razlikuju se velika i mala slova)" +initiateDelete = "Obriši sve podatke" +irreversible = "NEPOVRATNO" +success = "Uspjeh" +successMessage = "Svi podaci revizije uspješno su obrisani" +warning1 = "Ova radnja se ne može poništiti" +warning2 = "Brisanjem podataka revizije trajno ćete ukloniti sve povijesne revizijske zapise, uključujući sigurnosne događaje, aktivnosti korisnika i radnje nad datotekama iz baze podataka." + [auth] accessDenied = "Pristup odbijen" insufficientPermissions = "Nemate dopuštenje za ovu radnju." @@ -2254,9 +2374,11 @@ copy = "Kopiraj" done = "Gotovo" error = "Pogreška" expand = "Proširi" +learnMore = "Saznaj više" lines = "redaka" loading = "Učitavanje..." next = "Sljedeće" +operation = "ovu radnju" preview = "Pregled" previous = "Prethodno" refresh = "Osvježi" @@ -2920,6 +3042,7 @@ copyStack = "Kopiraj Stack Trace" discordSubmit = "Discord - Pošalji objavu podrške" dismissAllErrors = "Zanemari sve pogreške" encryptedPdfMustRemovePassword = "Ovaj PDF je šifriran ili zaštićen lozinkom. Otključajte ga prije pretvorbe u PDF/A." +generic = "Došlo je do pogreške" github = "Pošaljite ticket na GitHub" githubSubmit = "GitHub - Pošaljite ticket" incorrectPasswordProvided = "Lozinka za PDF je netočna ili nije navedena." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Vaša je pretplata uspješno nadograđena. Postojeći upgradeSuccess = "Plaćanje uspješno! Vaša je pretplata nadograđena. Licenca je ažurirana na vašem poslužitelju. Uskoro ćete dobiti potvrdu e-poštom." upgradeTitle = "Nadogradi na {{planName}}" yearly = "Godišnje" +checkoutOpened = "Plaćanje otvoreno u pregledniku" +checkoutInstructions = "Dovršite kupnju u prozoru preglednika koji se upravo otvorio. Nakon dovršetka plaćanja vratite se ovamo i kliknite gumb ispod za osvježavanje podataka o naplati." +refreshBilling = "Dovršio/la sam plaćanje – Osvježi naplatu" +closeLater = "Učinit ću to kasnije" [payment.emailStage] continue = "Nastavi" @@ -4679,6 +4806,13 @@ prompt = "Odaberite stranicu za izdvajanje tablice" submit = "Izvuci" title = "PDF u CSV" +[PDFToXLSX] +header = "PDF u Excel" +prompt = "Odaberite stranice za izdvajanje tablica" +submit = "Pretvori" +title = "PDF u Excel (XLSX)" +tags = "proračunska tablica,excel,xlsx,tablica,izdvoji,pretvori" + [PDFToHTML] credit = "Ova usluga koristi pdftohtml za konverziju datoteka." header = "PDF u HTML" @@ -4835,6 +4969,7 @@ customPricing = "Prilagođeno" featureComparison = "Usporedba značajki" from = "Od" hideComparison = "Sakrij usporedbu značajki" +included = "Uključeno" includedInCurrent = "Uključeno u vaš plan" licensedSeats = "Licencirano: {{count}} mjesta" manage = "Upravljaj" @@ -4852,9 +4987,11 @@ title = "Aktivni plan" [plan.availablePlans] subtitle = "Odaberite plan koji odgovara vašim potrebama" +loadError = "Nije moguće učitati cijene planova. Koriste se zadane vrijednosti." title = "Dostupni planovi" [plan.enterprise] +siteLicense = "Site licenca" highlight1 = "Prilagođeno određivanje cijene" highlight2 = "Namjenska podrška" highlight3 = "Najnovije značajke" @@ -4928,6 +5065,81 @@ keyDescription = "Zalijepite licenčni ključ iz e-poruke" success = "Licenca aktivirana!" successMessage = "Vaša licenca je uspješno aktivirana. Sada možete zatvoriti ovaj prozor." +[plan.team] +name = "Tim" +siteLicense = "Site licenca" + +[credits] +enableOverageBilling = "Omogući naplatu prekoračenja" +maybeLater = "Možda kasnije" +upgrade = "Nadogradi" + +[credits.modal] +advancedMonitoring = "Napredno nadziranje" +allInOneWorkspace = "Sve-u-jednom PDF radni prostor (preglednik, alati i agent)" +apiSandbox = "API sandbox" +contactSales = "Kontaktirajte prodaju" +creditsRemaining = "Preostalo: {{current}} od {{total}}" +creditsThisMonth = "Mjesečni krediti" +current = "Trenutni plan" +customPricing = "Prilagođeno" +customSmartFolders = "Prilagođene pametne mape" +dedicatedSupportSlas = "Namjenska podrška i SLA-ovi" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Sve iz Kredita, plus:" +everythingInFree = "Sve iz Besplatnog, plus:" +fasterThroughput = "10x brži protok" +forRegularWork = "Za redovan rad s PDF-om:" +freeTier = "Besplatan paket" +fullyPrivateFiles = "Potpuno privatne datoteke" +largeFileProcessing = "Obrada velikih datoteka" +managedMemberMessage = "Imate neograničen pristup kreditima putem svojeg tima. Ako trebate pomoć, obratite se svom voditelju tima." +managedMemberTitle = "Neograničeni krediti" +meteringBillingNote = "Dodatni krediti naplaćuju se mjesečno uz vašu pretplatu na Tim. Svoju potrošnju možete pratiti u bilo kojem trenutku u postavkama računa." +meteringExplanation = "Vaš plan Tim uključuje {{credits}} kredita mjesečno. Kada ih potrošite, automatska naplata prekoračenja osigurava dodatne kredite kako ne biste morali prekidati rad." +meteringIncluded = "{{credits}} kredita/mj uključenih uz Tim" +meteringNoCommitment = "Bez obveze, otkaz u bilo kojem trenutku" +meteringNeverRunOut = "Nikad ne ostanite bez kredita" +meteringPayAsYouGo = "Plaćajte samo ono što koristite" +meteringPrice = "Dodatni krediti po {{price}}/kreditu" +meteringTitle = "Naplata prekoračenja prema potrošnji" +monthlyCredits = "mjesečni krediti" +orgWideAccess = "Organizacijska kontrola pristupa" +overage = "prekoračenje" +perMonth = "/mj" +popular = "Popularno" +premiumAiModels = "Premium AI modeli" +prioritySupport = "Prioritetna podrška" +privateDocCloud = "Privatni oblak dokumenata" +ragFineTuning = "RAG + fine-tuning" +secureApiAccess = "Siguran API pristup" +selfHostLink = "Pregledajte dokumentaciju i planove" +selfHostPrompt = "Želite samostalno hostati?" +standardThroughput = "Standardni protok" +subtitle = "Nadogradite na Tim za 10x više kredita i bržu obradu." +subtitlePro = "Omogućite automatsku naplatu prekoračenja kako nikad ne biste ostali bez kredita." +teamLeaderOnly = "Samo voditelji tima mogu omogućiti naplatu prekoračenja" +teamSubscription = "Tim" +titleExhausted = "Iskoristili ste svoje besplatne kredite" +titleExhaustedPro = "Ponestalo vam je kredita" +unlimitedApiAccess = "Neograničen API pristup" +unlimitedMonthlyCredits = "Site licenca" +unlimitedSeats = "Neograničen broj korisnika" + +[credits.modal.features] +everythingInCredits = "Sve iz Kredita, plus:" +everythingInFree = "Sve iz Besplatnog, plus:" +forRegularWork = "Za redovan rad s PDF-om:" + +[credits.insufficient] +brief = "Nedovoljno kredita. Potrebno je {{required}} kredita, a imate {{current}}." +freeTier = "Nadogradite na Tim za 10x više kredita i neograničenu naplatu prekoračenja." +managedMember = "Obratite se svom voditelju tima za pomoć." +message = "Nemate dovoljno kredita za pokretanje alata {{tool}}. Trenutno imate {{current}} kredita." +messageWithAmount = "Za pokretanje alata {{tool}} potrebno je {{required}} kredita, a imate samo {{current}}." +teamMember = "Omogućite naplatu prekoračenja kako nikad ne biste ostali bez kredita." +title = "Nedovoljno kredita" + [printFile] header = "Ispis datoteke na pisač" submit = "Ispis" @@ -5565,6 +5777,70 @@ user = "Prijavljeni kao" saas = "Stirling Cloud" selfhosted = "Self-hosted" +[settings.planBilling] +currentPlan = "Trenutni plan" +loading = "Učitavanje podataka o naplati..." +notAvailable = "Plan i naplata dostupni su samo kada ste povezani sa Stirling Cloudom (SaaS način rada)." +title = "Plan i naplata" + +[settings.planBilling.billing] +manageBilling = "Upravljaj naplatom" +nextBillingDate = "Sljedeći datum naplate" +overageCost = "Trenutni trošak prekoračenja: {{amount}} ({{credits}} kredita)" + +[settings.planBilling.credits] +estimatedCost = "Procijenjeni trošak: {{amount}}" +freeTierInfo = "Besplatni plan uključuje {{freeCredits}} kredita mjesečno. Nadogradite na Tim za {{teamCredits}} kredita/mj i naplatu prekoračenja po potrošnji." +included = "{{count}} kredita/mj (uključeno)" +noOverage = "Ovaj mjesec nema naplate prekoračenja. Koristite uključene {{count}} kredita." +overage = "+ {{count}} prekoračenja" +overageInfo = "Dodatni krediti naplaćuju se po {{price}} po kreditu. Plaćat ćete samo ono što potrošite izvan mjesečnog limita." +title = "Potrošnja kredita" + +[settings.planBilling.errors] +fetchFailed = "Nije moguće dohvatiti podatke o naplati" +retry = "Pokušaj ponovno" + +[settings.planBilling.status] +active = "Aktivno" +canceled = "Otkazano" +pastDue = "Dospjelo" +trial = "Probno razdoblje" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Prilagođene enterprise značajke i podrška" +free = "Besplatno" +freeDescription = "50 kredita mjesečno" +team = "Tim" +teamBadge = "Tim" +teamDescription = "Uključeno 500 kredita/mj, automatska naplata prekoračenja za neprekinutu uslugu" +teamTooltipCredits = "Plan Tim uključuje {{credits}} kredita/mj." +teamTooltipFineprint = "Plaćate samo ono što potrošite iznad uključenih kredita." +teamTooltipOverage = "Automatska naplata prekoračenja po {{price}}/kreditu osigurava neprekinutu uslugu." + +[settings.planBilling.team] +managedByTeam = "Upravlja tim" +memberCount = "{{count}} članova tima" + +[settings.planBilling.trial] +daysRemaining = "Preostalo {{days}} dana" +daysRemainingFull = "Vaše probno razdoblje završava za {{days}} dana" +endDate = "Istječe: {{date}}" +endsOn = "Kraj probnog razdoblja" +title = "Probno razdoblje aktivno" + +[settings.planBilling.upgrade] +cta = "Nadogradi na Tim" +featureApi = "API pristup za automatizaciju" +featureCredits = "{{teamCredits}} kredita mjesečno (naspram {{freeCredits}} u Besplatnom)" +featureMembers = "Neograničen broj članova tima" +featureSupport = "Prioritetna podrška" +featureThroughput = "Brži protok obrade" +opensInBrowser = "Otvara se u pregledniku za dovršetak nadogradnje" +subtitle = "Nadogradite na Tim za:" +title = "Nadogradite svoj plan" + [settings.developer] apiKeys = "API ključevi" title = "Razvoj" @@ -5689,6 +5965,9 @@ people = "Korisnici" teams = "Timovi" title = "Radni prostor" +[settings.team] +title = "Tim" + [setup] description = "Započnite tako da odaberete kako želite koristiti Stirling PDF" welcome = "Dobrodošli u Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "Automatsko razdvajanje s razdjelnim listovima" name = "Razdjelnik stranica" tooltip = "Koristite QR kod razdjelne listove između dokumenata pri skeniranju" +[split.methods.byPoster] +name = "Ispisivi dijelovi" +desc = "Podijelite velike stranice na formate pogodne za ispis" +tooltip = "Podijelite prevelike stranice na manje dijelove pogodne za ispis na standardni papir (A4, Letter itd.)" + [split.methods.byPages] desc = "Izdvojite određene stranice (1,3,5-10)" name = "Brojevi stranica" @@ -6029,6 +6313,7 @@ tooltip = "Navedite maksimalnu veličinu datoteke (npr. 10MB, 500KB)" [split.methods.prefix] splitAt = "Razdvoji na" splitBy = "Razdvoji po" +splitInto = "Podijeli na" [split.methodSelection.tooltip] bullet1 = "Kliknite na karticu metode da je odaberete" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Najprije odaberite metodu razdvajanja" chooseMethod = "Odaberi metodu" settings = "Postavke" +[split.poster] +rightToLeft = "Dijeli zdesna nalijevo" + +[split.poster.pageSize] +label = "Ciljana veličina stranice" +description = "Veličina izlaznih stranica za ispis" + +[split.poster.xFactor] +label = "Vodoravne podjele" +description = "Broj stupaca na koje se dijeli svaka stranica" + +[split.poster.yFactor] +label = "Okomite podjele" +description = "Broj redaka na koje se dijeli svaka stranica" + [split.tooltip.byChapters] bullet1 = "Razina knjižne oznake: Po kojoj razini razdvojiti (1=gornja razina)" bullet2 = "Uključi metapodatke: Sačuvaj svojstva dokumenta" @@ -6085,6 +6385,14 @@ bullet5 = "Omogućite dupleks način ako skenirate obje strane razdjelnih listov text = "Automatski razdvajajte skenirane dokumente koristeći fizičke razdjelne listove s QR kodovima. Savršeno za obradu više dokumenata skeniranih zajedno." title = "Razdvoji po razdjelniku stranica" +[split.tooltip.byPoster] +bullet1 = "Ciljana veličina stranice: Odaberite veličinu papira (A4, Letter itd.)" +bullet2 = "Vodoravne/okomite podjele: Veličina mreže za podjelu" +bullet3 = "Zdesna nalijevo: Obrni redoslijed stupaca za RTL raspored" +bullet4 = "Isprintajte i sastavite dijelove kako biste napravili plakat" +text = "Podijelite velike PDF stranice na manje, ispisive dijelove pogodne za standardne veličine papira. Savršeno za izradu plakata od prevelikih stranica." +title = "Podjela za ispis plakata" + [split.tooltip.byPages] bullet1 = "Pojedinačne točke razdvajanja: 3,7 (razdvaja nakon stranica 3 i 7)" bullet2 = "Raspon točaka razdvajanja: 3-8 (razdvaja prije stranice 3 i nakon stranice 8)" @@ -6364,9 +6672,13 @@ tags = "uhvati-web,sačuvaj-stranicu,web-u-doc,arhiva" title = "URL u PDF" [usage] +aboutUsageAnalytics = "O analitici upotrebe" +configureSettings = "Konfiguriraj postavke analitike" error = "Pogreška pri učitavanju statistike korištenja" noData = "Podaci nisu dostupni" noDataMessage = "Trenutačno nema dostupne statistike korištenja." +usageAnalyticsExplanation = "Analitika upotrebe prati zahtjeve prema krajnjim točkama i obrasce korištenja alata. U kombinaciji s nadzornom pločom revizijskog zapisivanja dobivate potpun uvid u aktivnost sustava, performanse i sigurnosne događaje." +viewAuditLogs = "Pogledaj revizijske zapise" [usage.chart] title = "Grafikon korištenja krajnjih točaka" @@ -6947,3 +7259,278 @@ cancel = "Odustani" confirm = "Izdvoji" message = "Ovaj ZIP sadrži {{count}} datoteka. Ipak izdvojiti?" title = "Velika ZIP datoteka" + +[cloudBadge] +tooltip = "Ova radnja će iskoristiti vaše kredite u oblaku" + +[team] +cancelInviteError = "Nije uspjelo otkazivanje pozivnice" +confirmCancelInvite = "Jeste li sigurni da želite otkazati ovu pozivnicu?" +confirmLeave = "Jeste li sigurni da želite napustiti ovaj tim?" +confirmLeaveLeader = "Kao voditelj tima, odlaskom ćete biti uklonjeni iz tima. Jeste li sigurni?" +confirmRemove = "Jeste li sigurni da želite ukloniti ovog člana?" +editName = "Uredi naziv tima" +inviteCancelled = "Pozivnica otkazana" +inviteError = "Slanje pozivnice nije uspjelo" +inviteSent = "Pozivnica je uspješno poslana" +leader = "Voditelj" +leaveButton = "Napusti tim" +leaveError = "Neuspješan izlazak iz tima" +leaveSuccess = "Uspješno ste napustili tim" +loading = "Učitavanje informacija o timu..." +memberCount = "{{count}} članova" +memberRemoved = "Član je uspješno uklonjen" +namePlaceholder = "Unesite naziv tima" +personal = "Osobno" +removeError = "Uklanjanje člana nije uspjelo" +renameError = "Preimenovanje tima nije uspjelo" +renameSuccess = "Tim je uspješno preimenovan" + +[team.invitationBanner] +message = "vas je pozvao da se pridružite" +acceptButton = "Prihvati" +rejectButton = "Odbij" + +[team.features] +badge = "Značajke tima" +subtitle = "Surađujte sa svojim timom" +title = "Timska suradnja" +viewPlans = "Pogledaj planove" + +[team.features.billing] +description = "Upravljaj naplatom i pretplatama" +title = "Upravljanje naplatom" + +[team.features.credits] +description = "Zajednički fond kredita za sve članove" +title = "Zajednički krediti" + +[team.features.dashboard] +description = "Pogledaj aktivnost i upotrebu tima" +title = "Nadzorna ploča tima" + +[team.features.invite] +description = "Dodajte članove svom timu" +title = "Pozovi članove" + +[team.invite] +cancelLabel = "Odustani" +invalidEmail = "Neispravna adresa e-pošte" +placeholder = "Unesite adresu e-pošte" +sendButton = "Pošalji pozivnicu" +title = "Pozovi člana tima" + +[team.members] +emailColumn = "E-pošta" +empty = "Još nema članova tima" +nameColumn = "Ime" +pending = "Na čekanju" +remove = "Ukloni" +roleColumn = "Uloga" +title = "Članovi tima" + +[team.upgrade] +button = "Nadogradi na Tim" +description = "Otključajte značajke timske suradnje" +title = "Nadogradite na plan Tim" + +[provider.oauth2.google] +scope = "Autentikacija prijave" + +[provider.oauth2.google.clientId] +label = "ID klijenta" +description = "OAuth2 ID klijenta iz Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Tajna klijenta" +description = "OAuth2 tajna klijenta iz Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Opsezi" +description = "Zarezom odvojeni OAuth2 opsezi" + +[provider.oauth2.google.useAsUsername] +label = "Koristi kao korisničko ime" +description = "Polje koje će se koristiti kao korisničko ime (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Autentikacija prijave" + +[provider.oauth2.github.clientId] +label = "ID klijenta" +description = "OAuth2 ID klijenta iz GitHub Developer Settings" + +[provider.oauth2.github.clientSecret] +label = "Tajna klijenta" +description = "OAuth2 tajna klijenta iz GitHub Developer Settings" + +[provider.oauth2.github.scopes] +label = "Opsezi" +description = "Zarezom odvojeni OAuth2 opsezi" + +[provider.oauth2.github.useAsUsername] +label = "Koristi kao korisničko ime" +description = "Polje koje će se koristiti kao korisničko ime (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "URL izdavatelja" +description = "URL Discovery krajnje točke OpenID Connecta za Keycloak realm" + +[provider.oauth2.keycloak.clientId] +label = "ID klijenta" +description = "OAuth2 ID klijenta iz Keycloaka" + +[provider.oauth2.keycloak.clientSecret] +label = "Tajna klijenta" +description = "OAuth2 tajna klijenta iz Keycloaka" + +[provider.oauth2.keycloak.scopes] +label = "Opsezi" +description = "Zarezom odvojeni OAuth2 opsezi" + +[provider.oauth2.keycloak.useAsUsername] +label = "Koristi kao korisničko ime" +description = "Polje koje će se koristiti kao korisničko ime (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "Opći OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Omogući opći OAuth2" +description = "Omogući autentikaciju pomoću prilagođenog OAuth2 pružatelja" + +[provider.oauth2.generic.provider] +label = "Naziv pružatelja" +description = "Naziv vašeg OAuth2 pružatelja (npr. Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "URL izdavatelja" +description = "Pružatelj koji podržava OpenID Connect Discovery (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "ID klijenta" +description = "OAuth2 ID klijenta od vašeg pružatelja" + +[provider.oauth2.generic.clientSecret] +label = "Tajna klijenta" +description = "OAuth2 tajna klijenta od vašeg pružatelja" + +[provider.oauth2.generic.scopes] +label = "Opsezi" +description = "Zarezom odvojeni OAuth2 opsezi" + +[provider.oauth2.generic.useAsUsername] +label = "Koristi kao korisničko ime" +description = "Polje koje će se koristiti kao korisničko ime" + +[provider.oauth2.generic.autoCreateUser] +label = "Automatski kreiraj korisnike" +description = "Automatski kreiraj korisničke račune pri prvoj OAuth2 prijavi" + +[provider.oauth2.generic.blockRegistration] +label = "Blokiraj registraciju" +description = "Spriječi novu registraciju korisnika putem OAuth2" + +[provider.smtp] +name = "SMTP pošta" +scope = "Obavijesti e-poštom" + +[provider.smtp.enabled] +label = "Omogući e-poštu" +description = "Omogući obavijesti e-poštom i SMTP funkcionalnost" + +[provider.smtp.host] +label = "SMTP poslužitelj" +description = "Naziv hosta ili IP adresa vašeg SMTP poslužitelja" + +[provider.smtp.port] +label = "SMTP port" +description = "Broj porta za SMTP vezu (obično 25, 465 ili 587)" + +[provider.smtp.username] +label = "SMTP korisničko ime" +description = "Korisničko ime za SMTP autentikaciju" + +[provider.smtp.password] +label = "SMTP lozinka" +description = "Lozinka za SMTP autentikaciju" + +[provider.smtp.from] +label = "Adresa pošiljatelja" +description = "Adresa e-pošte koja će se koristiti kao pošiljatelj" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "Omogući SAML2" +description = "Omogući SAML2 autentikaciju (samo Enterprise)" + +[provider.saml2.provider] +label = "Naziv pružatelja" +description = "Naziv vašeg SAML2 pružatelja" + +[provider.saml2.registrationId] +label = "ID registracije" +description = "Naziv vaše SP (Service Provider) aplikacije" + +[provider.saml2.idpMetadataUri] +label = "IDP Metadata URI" +description = "URI za metapodatke vašeg pružatelja" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login URL" +description = "URL za pokretanje SSO-a" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout URL" +description = "URL za pokretanje SLO-a" + +[provider.saml2.idpIssuer] +label = "Izdavatelj IDP-a" +description = "ID vašeg pružatelja" + +[provider.saml2.idpCert] +label = "Certifikat IDP-a" +description = "Putanja certifikata (npr. classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Privatni ključ" +description = "Putanja vašeg privatnog ključa" + +[provider.saml2.spCert] +label = "SP certifikat" +description = "Putanja vašeg potpisnog certifikata" + +[provider.saml2.autoCreateUser] +label = "Automatski kreiraj korisnike" +description = "Automatski kreiraj korisničke račune pri prvoj SAML2 prijavi" + +[provider.saml2.blockRegistration] +label = "Blokiraj registraciju" +description = "Spriječi novu registraciju korisnika putem SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "Uvoz datoteka" + +[provider.googledrive.enabled] +label = "Omogući birač datoteka za Google Drive" +description = "Dopusti korisnicima uvoz datoteka izravno s Google Drivea" + +[provider.googledrive.clientId] +label = "ID klijenta" +description = "Google OAuth 2.0 ID klijenta iz Google Cloud Console" + +[provider.googledrive.apiKey] +label = "API ključ" +description = "Google API ključ za Google Picker API iz Google Cloud Console" + +[provider.googledrive.appId] +label = "ID aplikacije" +description = "Google Drive ID aplikacije iz Google Cloud Console" diff --git a/frontend/public/locales/hu-HU/translation.toml b/frontend/public/locales/hu-HU/translation.toml index 13b17443c..d2ea5be2c 100644 --- a/frontend/public/locales/hu-HU/translation.toml +++ b/frontend/public/locales/hu-HU/translation.toml @@ -96,6 +96,8 @@ pin = "Fájl rögzítése (aktív marad az eszköz futtatása után)" poweredBy = "Üzemelteti:" pro = "Pro" processTimeWarning = "Figyelmeztetés: A folyamat akár egy percig is eltarthat a fájlmérettől függően" +processingComplete = "A fájl elkészült." +processingCompleteMultiple = "{{count}} fájl elkészült." property = "Tulajdonság" quickPosition = "Gyors pozíció" red = "Piros" @@ -105,6 +107,7 @@ save = "Mentés" saveToBrowser = "Mentés böngészőbe" saveUnavailable = "Mentés nem érhető el ehhez az elemhez" seeDockerHub = "Docker Hub megtekintése" +editSecret = "Érték szerkesztése" selectFillter = "-- Válasszon --" size = "Méret" sponsor = "Támogató" @@ -651,6 +654,7 @@ description = "Külső hitelesítési szolgáltatók (OAuth2 és SAML) konfigur disconnect = "Leválasztás" disconnected = "A szolgáltató sikeresen leválasztva" disconnectError = "A szolgáltató leválasztása nem sikerült" +documentation = "Dokumentáció megtekintése" imageResolutionFull = "Teljes (eredeti méret)" imageResolutionReduced = "Csökkentett (max. 1200 px)" linkedServices = "Összekapcsolt szolgáltatások" @@ -964,6 +968,18 @@ label = "Alapértelmezett területi beállítás" description = "Maximális fájlméret feltöltéskor (pl. 100MB, 1GB)" label = "Fájlfeltöltési korlát" +[admin.settings.general.hideDisabledTools] +description = "Letiltott eszközök elrejtése a felületen" +label = "Letiltott eszközök elrejtése" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "A Google Drive gomb elrejtése, ha nincs engedélyezve" +label = "Google Drive elrejtése" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "A mobil QR-olvasó gomb elrejtése, ha nincs engedélyezve" +label = "Mobil szkenner elrejtése" + [admin.settings.general.frontendUrl] description = "A frontend alap URL-je (pl. https://pdf.example.com). E-mail meghívó linkekhez és mobil QR-kódos feltöltésekhez használjuk. Hagyja üresen a backend URL használatához." label = "Frontend URL" @@ -1148,6 +1164,8 @@ title = "Biztonság" [admin.settings.security.audit] label = "Auditnaplózás" +showDetails = "Audit szint részleteinek megjelenítése" +hideDetails = "Audit szint részleteinek elrejtése" [admin.settings.security.audit.enabled] description = "Felhasználói műveletek és rendszeresemények nyomon követése megfelelőségi és biztonsági felügyelet céljából" @@ -1157,10 +1175,32 @@ label = "Auditnaplózás engedélyezése" description = "0=KI, 1=ALAP, 2=NORMÁL, 3=RÉSZLETES" label = "Audit szint" +[admin.settings.security.audit.levelDetails] +off = "Nincs auditnaplózás (kritikus biztonsági események kivételével)" +basic = "PDF fájlműveletek (tömörítés, felosztás, egyesítés stb.) és beállításváltozások. Rögzíti: művelet állapota (siker/sikertelen), metódusparaméterek, időzítés. Minimális naplómennyiség." +standard = "A BASIC eseményeken felül: felhasználói be-/kijelentkezés, fiókmódosítások, általános GET kérések. Kizárja a folyamatos lekérdezéseket (/auth/me, /app-config, /health stb.) a zaj csökkentése érdekében. A legtöbb telepítéshez ideális." +verbose = "A STANDARD eseményeken felül: folyamatos lekérdezések, minden GET kérés, részletes időzítés. Figyelmeztetés: nagy naplómennyiség és teljesítményhatás." + [admin.settings.security.audit.retentionDays] description = "Az audit naplók megőrzésének ideje napokban" label = "Audit megőrzés (nap)" +[admin.settings.security.audit.advancedOptions] +title = "Speciális beállítások" +description = "Az alábbi beállítások növelik a feldolgozási időt és a memóriahasználatot. Csak valóban indokolt esetben engedélyezze." + +[admin.settings.security.audit.captureFileHash] +description = "A feltöltött PDF fájlok SHA-256 hashének kinyerése az integritás ellenőrzéséhez. Független az audit szinttől." +label = "Fájl hash rögzítése (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Szerző mező kinyerése a PDF dokumentumokból feldolgozás közben. PDF feldolgozást igényel, növeli a késleltetést. Független az audit szinttől." +label = "PDF szerző metaadatainak rögzítése" + +[admin.settings.security.audit.captureOperationResults] +description = "Metódus-visszatérési értékek rögzítése. Nem ajánlott: jelentősen növeli a naplók mennyiségét és a lemezhasználatot." +label = "Műveleti eredmények rögzítése" + [admin.settings.security.csrfDisabled] description = "Cross-Site Request Forgery védelem letiltása (nem ajánlott)" label = "CSRF védelem letiltása" @@ -1536,72 +1576,152 @@ tags = "beágyazás,csatolás,fájl,csatolmány,csatolmányok" title = "Mellékletek hozzáadása" [audit] +configureAudit = "Auditnaplózás beállítása" +configureAuditMessage = "Auditnaplózási szint, megőrzési idő és egyéb beállítások módosítása a Biztonság és hitelesítés szakaszban." disabled = "Az audit naplózás le van tiltva" disabledMessage = "Engedélyezze az audit naplózást az alkalmazás konfigurációjában a rendszeresemények követéséhez." enterpriseRequired = "Vállalati licenc szükséges" enterpriseRequiredMessage = "A naplózási rendszer vállalati funkció. Kérjük, váltson vállalati licencre a naplók és analitikák eléréséhez." +goToSettings = "Ugrás az audit beállításaihoz" notAvailable = "Audit rendszer nem érhető el" notAvailableMessage = "Az audit rendszer nincs konfigurálva vagy nem elérhető." -[audit.charts] -byType = "Események típus szerint" -byUser = "Események felhasználó szerint" -day = "Nap" -error = "Hiba a grafikonok betöltésekor" -month = "Hónap" -overTime = "Események időben" -title = "Audit vezérlőpult" -week = "Hét" - [audit.error] title = "Hiba az audit rendszer betöltésekor" -[audit.events] -actions = "Műveletek" -clearFilters = "Törlés" -details = "Részletek" -endDate = "Záró dátum" -error = "Hiba az események betöltésekor" -eventDetails = "Esemény részletei" -filterByType = "Szűrés típus szerint" -filterByUser = "Szűrés felhasználó szerint" -ipAddress = "IP-cím" -noEvents = "Nem találhatók események" -startDate = "Kezdő dátum" -timestamp = "Időbélyeg" -title = "Audit események" -type = "Típus" -user = "Felhasználó" -viewDetails = "Részletek megtekintése" - [audit.export] clearFilters = "Törlés" description = "Audit események exportálása CSV vagy JSON formátumba. A szűrőkkel korlátozhatja az exportált adatokat." endDate = "Záró dátum" error = "Nem sikerült exportálni az adatokat" exportButton = "Adatok exportálása" +fieldAuthor = "Szerző (PDF-ből)" +fieldDate = "Dátum" +fieldDocumentName = "Dokumentumnév" +fieldFileHash = "Fájlhash (SHA-256)" +fieldIpAddress = "IP-cím" +fieldOperationResults = "Művelet eredményei" +fieldOutcome = "Eredmény (Siker/Sikertelen)" +fieldTool = "Eszköz" +fieldUsername = "Felhasználónév" filterByType = "Szűrés típus szerint" filterByUser = "Szűrés felhasználó szerint" filters = "Szűrők (opcionális)" format = "Exportformátum" +selectFields = "Válassza ki a felvenni kívánt mezőket" startDate = "Kezdő dátum" title = "Auditadatok exportálása" +verboseRequired = "VERBOSE audit szint szükséges" [audit.systemStatus] +autoRefresh = "Automatikus frissítés" +autoRefreshLabel = "Automatikus frissítés 30 mp-enként" +captureBySettings = "Engedélyezze a beállításokban" +capturedFields = "Rögzített mezők" +date = "Dátum" days = "nap" disabled = "Letiltva" +documentName = "Dokumentumnév" enabled = "Engedélyezve" +fileHash = "Fájlhash" level = "Audit szint" +pdfAuthor = "PDF szerző" retention = "Megőrzési idő" status = "Audit naplózás" title = "Rendszerállapot" +tool = "Eszköz" totalEvents = "Események összesen" +username = "Felhasználónév" +verboseOnly = "Csak VERBOSE" + +[audit.stats] +activeUsers = "Aktív felhasználók" +attention = "Beavatkozás szükséges" +avgLatency = "Átlagos késleltetés" +error = "Hiba a statisztikák betöltésekor" +errorLoadingStats = "Nem sikerült betölteni a statisztikákat" +excellent = "Kiváló" +good = "Jó" +noData = "N/A" +successRate = "Sikerarány" +title = "Összegzés" +totalEvents = "Események összesen" +vsLastPeriod = "az előző időszakhoz képest" + +[audit.charts] +byTool = "Legtöbbet használt eszközök" +byType = "Események típus szerint" +byUser = "Események felhasználó szerint" +day = "Nap" +error = "Hiba a grafikonok betöltésekor" +hourlyActivity = "Óránkénti aktivitás" +month = "Hónap" +noData = "Nincs adat erre az időszakra" +overTime = "Események időben" +title = "Audit vezérlőpult" +week = "Hét" + +[audit.events] +actions = "Műveletek" +author = "Szerző" +clearFilters = "Törlés" +details = "Részletek" +documentName = "Dokumentum" +endDate = "Záró dátum" +error = "Hiba az események betöltésekor" +eventDetails = "Esemény részletei" +failure = "Sikertelen" +fileHash = "Fájlhash" +filterByType = "Szűrés típus szerint" +filterByUser = "Szűrés felhasználó szerint" +ipAddress = "IP-cím" +noEvents = "Nem találhatók események" +outcome = "Állapot" +sortAsc = "Növekvő rendezés" +sortDesc = "Csökkenő rendezés" +startDate = "Kezdő dátum" +success = "Siker" +timestamp = "Időbélyeg" +title = "Audit események" +type = "Típus" +user = "Felhasználó" +viewDetails = "Részletek megtekintése" + +[audit.filters] +allOutcomes = "Összes" +failureOnly = "Csak sikertelenek" +last7Days = "Elmúlt 7 nap" +last30Days = "Elmúlt 30 nap" +outcomeFilter = "Eredmény" +quickPresets = "Gyors szűrők" +successOnly = "Csak sikeresek" +thisMonth = "Ebben a hónapban" +today = "Ma" [audit.tabs] +clearData = "Adatok törlése" dashboard = "Vezérlőpult" events = "Audit események" export = "Exportálás" +[audit.clearData] +cancel = "Mégse" +codeDoesNotMatch = "A kód nem egyezik" +codePlaceholder = "Írja be a kódot ide" +confirmationCode = "Megerősítő kód" +confirmationRequired = "Összes auditadat törlése" +confirmMessage = "Ez véglegesen eltávolít minden auditnaplót. A folytatáshoz adja meg alább a megerősítő kódot." +confirmTitle = "Erősítse meg a törlést" +deleteButton = "Törlés" +enterCode = "Megerősítő kód" +enterCodeBelow = "Adja meg a kódot pontosan a fentiek szerint (kis- és nagybetűk számítanak)" +initiateDelete = "Összes adat törlése" +irreversible = "VISSZAFORDÍTHATATLAN" +success = "Siker" +successMessage = "Az összes auditadat sikeresen törölve" +warning1 = "Ez a művelet nem vonható vissza" +warning2 = "Az auditadatok törlése véglegesen eltávolítja az összes korábbi auditnaplót, beleértve a biztonsági eseményeket, felhasználói aktivitásokat és fájlműveleteket az adatbázisból." + [auth] accessDenied = "Hozzáférés megtagadva" insufficientPermissions = "Nincs jogosultsága a művelet végrehajtásához." @@ -2254,9 +2374,11 @@ copy = "Másolás" done = "Kész" error = "Hiba" expand = "Kibontás" +learnMore = "További információ" lines = "sor" loading = "Betöltés..." next = "Következő" +operation = "ez a művelet" preview = "Előnézet" previous = "Előző" refresh = "Frissítés" @@ -2920,6 +3042,7 @@ copyStack = "Stacktrace másolása" discordSubmit = "Discord - Támogatási poszt létrehozása" dismissAllErrors = "Összes hiba elvetése" encryptedPdfMustRemovePassword = "Ez a PDF titkosított vagy jelszóval védett. Kérjük, oldja fel, mielőtt PDF/A formátumba konvertálja." +generic = "Hiba történt" github = "Hiba bejelentése GitHubon" githubSubmit = "GitHub - Hiba bejelentése" incorrectPasswordProvided = "A PDF jelszava helytelen vagy nincs megadva." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Az előfizetés sikeresen frissült. A meglévő licen upgradeSuccess = "Sikeres fizetés! Az előfizetése frissült. A licenc frissítve lett a szerverén. Hamarosan visszaigazoló e-mailt kap." upgradeTitle = "Frissítés erre: {{planName}}" yearly = "Éves" +checkoutOpened = "Fizetés megnyitva a böngészőben" +checkoutInstructions = "Fejezze be a vásárlást a most megnyílt böngészőablakban. A fizetés befejezése után térjen vissza ide, és kattintson az alábbi gombra a számlázási információk frissítéséhez." +refreshBilling = "Fizetés befejezve – számlázás frissítése" +closeLater = "Később intézem" [payment.emailStage] continue = "Folytatás" @@ -4679,6 +4806,13 @@ prompt = "Válassza ki az oldalt a táblázat kinyeréséhez" submit = "Kinyerés" title = "PDF konvertálása CSV-be" +[PDFToXLSX] +header = "PDF Excelbe" +prompt = "Válassza ki a táblázatok kinyeréséhez az oldalakat" +submit = "Konvertálás" +title = "PDF Excelbe (XLSX)" +tags = "táblázatkezelő,excel,xlsx,táblázat,kinyerés,konvertálás" + [PDFToHTML] credit = "Ez a szolgáltatás a pdftohtml használatával végzi a konverziót." header = "PDF konvertálása HTML-be" @@ -4835,6 +4969,7 @@ customPricing = "Egyedi" featureComparison = "Funkció-összehasonlítás" from = "Ettől" hideComparison = "Funkció-összehasonlítás elrejtése" +included = "Tartalmazza" includedInCurrent = "Szerepel a csomagjában" licensedSeats = "Licencelve: {{count}} hely" manage = "Kezelés" @@ -4852,9 +4987,11 @@ title = "Aktív csomag" [plan.availablePlans] subtitle = "Válassza ki az igényeinek megfelelő csomagot" +loadError = "Nem sikerült betölteni a csomagárakat. Alapértelmezett értékek használata." title = "Elérhető csomagok" [plan.enterprise] +siteLicense = "Telephelyi licenc" highlight1 = "Egyedi árazás" highlight2 = "Dedikált támogatás" highlight3 = "Legújabb funkciók" @@ -4928,6 +5065,81 @@ keyDescription = "Illessze be az e-mailben kapott licenckulcsot" success = "A licenc aktiválva!" successMessage = "A licenc sikeresen aktiválva. Most bezárhatja ezt az ablakot." +[plan.team] +name = "Csapat" +siteLicense = "Telephelyi licenc" + +[credits] +enableOverageBilling = "Túlhasználati számlázás engedélyezése" +maybeLater = "Talán később" +upgrade = "Frissítés" + +[credits.modal] +advancedMonitoring = "Fejlett monitorozás" +allInOneWorkspace = "Minden egyben PDF munkaterület (megjelenítő, eszközök és agent)" +apiSandbox = "API sandbox" +contactSales = "Kapcsolat értékesítéssel" +creditsRemaining = "{{current}} a {{total}}-ból maradt" +creditsThisMonth = "Havi kreditek" +current = "Jelenlegi csomag" +customPricing = "Egyéni" +customSmartFolders = "Egyéni Smart mappák" +dedicatedSupportSlas = "Dedikált támogatás és SLA-k" +enterpriseSubscription = "Vállalati" +everythingInCredits = "A Kreditek csomag minden eleme, plusz:" +everythingInFree = "Az Ingyenes csomag minden eleme, plusz:" +fasterThroughput = "10× gyorsabb áteresztőképesség" +forRegularWork = "Rendszeres PDF-munkához:" +freeTier = "Ingyenes csomag" +fullyPrivateFiles = "Teljesen privát fájlok" +largeFileProcessing = "Nagy fájlok feldolgozása" +managedMemberMessage = "Korlátlan hozzáférése van a kreditekhez a csapatán keresztül. Ha segítségre van szüksége, forduljon a csapatvezetőhöz." +managedMemberTitle = "Korlátlan kreditek" +meteringBillingNote = "A túlhasználati krediteket havonta számlázzuk a Csapat előfizetéssel együtt. Használatát bármikor nyomon követheti a fiókbeállításokban." +meteringExplanation = "A Csapat csomag havonta {{credits}} kreditet tartalmaz. Ha elfogynak, a túlhasználati számlázás automatikusan további krediteket biztosít, így sosem kell leállnia." +meteringIncluded = "{{credits}} kredit/hó a Csapat csomagban" +meteringNoCommitment = "Nincs elköteleződés, bármikor lemondható" +meteringNeverRunOut = "Soha ne fogyjon el a kredit" +meteringPayAsYouGo = "Csak azért fizet, amit felhasznál" +meteringPrice = "További kreditek {{price}}/kredit áron" +meteringTitle = "Használatarányos túlhasználati számlázás" +monthlyCredits = "havi kreditek" +orgWideAccess = "Szervezetszintű hozzáférés-vezérlés" +overage = "túlhasználat" +perMonth = "/hó" +popular = "Népszerű" +premiumAiModels = "Prémium AI modellek" +prioritySupport = "Elsőbbségi támogatás" +privateDocCloud = "Privát dokumentumfelhő" +ragFineTuning = "RAG + finomhangolás" +secureApiAccess = "Biztonságos API-hozzáférés" +selfHostLink = "Dokumentáció és csomagok megtekintése" +selfHostPrompt = "Szeretne saját üzemeltetést?" +standardThroughput = "Normál áteresztőképesség" +subtitle = "Frissítsen Csapat csomagra 10× több kreditért és gyorsabb feldolgozásért." +subtitlePro = "Engedélyezze az automatikus túlhasználati számlázást, hogy sose fogyjon el a kredit." +teamLeaderOnly = "Csak csapatvezetők engedélyezhetik a túlhasználati számlázást" +teamSubscription = "Csapat" +titleExhausted = "Felhasználta az ingyenes krediteket" +titleExhaustedPro = "Elfogytak a kreditek" +unlimitedApiAccess = "Korlátlan API-hozzáférés" +unlimitedMonthlyCredits = "Telephelyi licenc" +unlimitedSeats = "Korlátlan felhasználói helyek" + +[credits.modal.features] +everythingInCredits = "A Kreditek csomag minden eleme, plusz:" +everythingInFree = "Az Ingyenes csomag minden eleme, plusz:" +forRegularWork = "Rendszeres PDF-munkához:" + +[credits.insufficient] +brief = "Nincs elég kredit. {{required}} szükséges, de csak {{current}} van." +freeTier = "Frissítsen Csapat csomagra 10× több kreditért és korlátlan túlhasználati számlázásért." +managedMember = "Kérjen segítséget csapatvezetőjétől." +message = "Nincs elég kredit a(z) {{tool}} futtatásához. Jelenleg {{current}} kreditje van." +messageWithAmount = "A(z) {{tool}} futtatásához {{required}} kredit szükséges, de csak {{current}} áll rendelkezésre." +teamMember = "Engedélyezze a túlhasználati számlázást, hogy sose fogyjon el a kredit." +title = "Nincs elegendő kredit" + [printFile] header = "Fájl nyomtatása nyomtatóra" submit = "Nyomtatás" @@ -5565,6 +5777,70 @@ user = "Bejelentkezve mint" saas = "Stirling Cloud" selfhosted = "Önhostolt" +[settings.planBilling] +currentPlan = "Jelenlegi csomag" +loading = "Számlázási információk betöltése..." +notAvailable = "A Csomag és számlázás csak Stirling Cloud kapcsolattal érhető el (SaaS mód)." +title = "Csomag és számlázás" + +[settings.planBilling.billing] +manageBilling = "Számlázás kezelése" +nextBillingDate = "Következő számlázási dátum" +overageCost = "Jelenlegi túlhasználati költség: {{amount}} ({{credits}} kredit)" + +[settings.planBilling.credits] +estimatedCost = "Becsült költség: {{amount}}" +freeTierInfo = "Az ingyenes csomag havonta {{freeCredits}} kreditet tartalmaz. Frissítsen Csapat csomagra {{teamCredits}} kredit/hó kerettel és használatarányos túlhasználati számlázással." +included = "{{count}} kredit/hó (tartalmazza)" +noOverage = "Ebben a hónapban nincs túlhasználati díj. Az Ön {{count}} tartalmazott kreditjét használja." +overage = "+ {{count}} túlhasználat" +overageInfo = "A túlhasználati krediteket {{price}} per kredit áron számlázzuk. Csak azért fizet, amit a havi kereten felül használ." +title = "Kreditfelhasználás" + +[settings.planBilling.errors] +fetchFailed = "Nem sikerült lekérni a számlázási adatokat" +retry = "Újra" + +[settings.planBilling.status] +active = "Aktív" +canceled = "Lemondva" +pastDue = "Lejárt" +trial = "Próbaidő" + +[settings.planBilling.tier] +enterprise = "Vállalati" +enterpriseDescription = "Egyedi vállalati funkciók és támogatás" +free = "Ingyenes" +freeDescription = "50 kredit havonta" +team = "Csapat" +teamBadge = "Csapat" +teamDescription = "500 kredit/hó tartalmazva, automatikus túlhasználati számlázás a folyamatos szolgáltatásért" +teamTooltipCredits = "A Csapat csomag {{credits}} kreditet/hó tartalmaz." +teamTooltipFineprint = "Csak a tartalmazott krediten felül használtért fizet." +teamTooltipOverage = "Az automatikus túlhasználati számlázás {{price}}/kredit áron biztosítja a folyamatos szolgáltatást." + +[settings.planBilling.team] +managedByTeam = "Csapat által kezelt" +memberCount = "{{count}} csapattag" + +[settings.planBilling.trial] +daysRemaining = "{{days}} nap van hátra" +daysRemainingFull = "A próbaidő {{days}} nap múlva lejár" +endDate = "Lejár: {{date}}" +endsOn = "Próbaidő vége" +title = "Ingyenes próba aktív" + +[settings.planBilling.upgrade] +cta = "Frissítés Csapat csomagra" +featureApi = "API-hozzáférés automatizáláshoz" +featureCredits = "{{teamCredits}} kredit havonta (szemben az Ingyenes {{freeCredits}} kreditjével)" +featureMembers = "Korlátlan csapattagok" +featureSupport = "Elsőbbségi támogatás" +featureThroughput = "Gyorsabb feldolgozási áteresztőképesség" +opensInBrowser = "A böngészőben nyílik meg a frissítés befejezéséhez" +subtitle = "Frissítsen Csapat csomagra az alábbiakért:" +title = "Csomag frissítése" + [settings.developer] apiKeys = "API-kulcsok" title = "Fejlesztő" @@ -5689,6 +5965,9 @@ people = "Felhasználók" teams = "Csapatok" title = "Munkaterület" +[settings.team] +title = "Csapat" + [setup] description = "Kezdésként válassza ki, hogyan szeretné használni a Stirling PDF-et" welcome = "Üdvözöljük a Stirling PDF-ben" @@ -6011,6 +6290,11 @@ desc = "Automatikus felosztás elválasztó lapokkal" name = "Elválasztó oldal" tooltip = "Használjon QR kódos elválasztó lapokat a dokumentumok közé szkenneléskor" +[split.methods.byPoster] +name = "Nyomtatható darabok" +desc = "A nagy oldalak felosztása nyomtatható méretekre" +tooltip = "A túlméretezett oldalak felosztása kisebb darabokra, amelyek szabványos papíron (A4, Letter stb.) nyomtathatók" + [split.methods.byPages] desc = "Adott oldalak kinyerése (1,3,5-10)" name = "Oldalszámok" @@ -6029,6 +6313,7 @@ tooltip = "Adjon meg maximális fájlméretet (pl. 10MB, 500KB)" [split.methods.prefix] splitAt = "Vágás itt" splitBy = "Felosztás aszerint" +splitInto = "Felosztás ennyire:" [split.methodSelection.tooltip] bullet1 = "Kattintson egy módszerkártyára a kiválasztáshoz" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Kérjük, először válasszon felosztási módszert" chooseMethod = "Válasszon módszert" settings = "Beállítások" +[split.poster] +rightToLeft = "Felosztás jobbról balra" + +[split.poster.pageSize] +label = "Céloldal-méret" +description = "A kimeneti oldalak mérete nyomtatáshoz" + +[split.poster.xFactor] +label = "Vízszintes osztások" +description = "Az egyes oldalak felosztásához használt oszlopok száma" + +[split.poster.yFactor] +label = "Függőleges osztások" +description = "Az egyes oldalak felosztásához használt sorok száma" + [split.tooltip.byChapters] bullet1 = "Könyvjelző szint: Melyik szinten történjen a felosztás (1 = legfelső szint)" bullet2 = "Metaadatok megőrzése: Dokumentumtulajdonságok megtartása" @@ -6085,6 +6385,14 @@ bullet5 = "Kapcsolja be a kétoldalas módot, ha az elválasztó lapok mindkét text = "Automatikusan ossza fel a beszkennelt dokumentumokat fizikai, QR kódos elválasztó lapokkal. Tökéletes több, együtt beszkennelt dokumentum feldolgozásához." title = "Felosztás elválasztó oldal szerint" +[split.tooltip.byPoster] +bullet1 = "Céloldal-méret: válassza ki a kimeneti papírméretet (A4, Letter stb.)" +bullet2 = "Vízszintes/Függőleges osztások: rácsméret a felosztáshoz" +bullet3 = "Jobbról balra: az oszlopok sorrendjének megfordítása RTL elrendezéshez" +bullet4 = "Nyomtassa ki és illessze össze a darabokat a poszterhez" +text = "A nagy PDF-oldalak felosztása kisebb, szabványos papírméretekhez illeszkedő nyomtatható darabokra. Tökéletes poszternyomathoz a túlméretes oldalakról." +title = "Felosztás poszternyomathoz" + [split.tooltip.byPages] bullet1 = "Egyedi vágási pontok: 3,7 (vágás a 3. és 7. oldal után)" bullet2 = "Tartomány vágási pontok: 3-8 (vágás a 3. oldal előtt és a 8. oldal után)" @@ -6364,9 +6672,13 @@ tags = "webmentés,oldal mentése,web-dokumentum,archiválás" title = "URL konvertálása PDF-be" [usage] +aboutUsageAnalytics = "A használati analitikáról" +configureSettings = "Analitika beállításainak módosítása" error = "Hiba a használati statisztikák betöltésekor" noData = "Nem áll rendelkezésre adat" noDataMessage = "Jelenleg nem érhetők el használati statisztikák." +usageAnalyticsExplanation = "A használati analitika a végpontkéréseket és az eszközhasználati mintákat követi. Az Audit naplózási irányítópulttal együtt teljes rálátást ad a rendszer aktivitására, teljesítményére és biztonsági eseményeire." +viewAuditLogs = "Auditnaplók megtekintése" [usage.chart] title = "Végpont-használati diagram" @@ -6947,3 +7259,278 @@ cancel = "Mégse" confirm = "Kibontás" message = "Ez a ZIP {{count}} fájlt tartalmaz. Mégis kibontja?" title = "Nagy ZIP fájl" + +[cloudBadge] +tooltip = "Ez a művelet a felhőkrediteket használja" + +[team] +cancelInviteError = "Nem sikerült visszavonni a meghívást" +confirmCancelInvite = "Biztosan visszavonja ezt a meghívást?" +confirmLeave = "Biztosan elhagyja ezt a csapatot?" +confirmLeaveLeader = "Csapatvezetőként a távozás eltávolítja Önt a csapatból. Biztos benne?" +confirmRemove = "Biztosan eltávolítja ezt a tagot?" +editName = "Csapatnév szerkesztése" +inviteCancelled = "Meghívás visszavonva" +inviteError = "Nem sikerült elküldeni a meghívást" +inviteSent = "Meghívás sikeresen elküldve" +leader = "Vezető" +leaveButton = "Kilépés a csapatból" +leaveError = "Nem sikerült kilépni a csapatból" +leaveSuccess = "Sikeresen kilépett a csapatból" +loading = "Csapatinformációk betöltése..." +memberCount = "{{count}} tag" +memberRemoved = "Tag sikeresen eltávolítva" +namePlaceholder = "Adja meg a csapat nevét" +personal = "Személyes" +removeError = "Nem sikerült eltávolítani a tagot" +renameError = "Nem sikerült átnevezni a csapatot" +renameSuccess = "Csapat sikeresen átnevezve" + +[team.invitationBanner] +message = "meghívta, hogy csatlakozzon" +acceptButton = "Elfogadás" +rejectButton = "Elutasítás" + +[team.features] +badge = "Csapatfunkciók" +subtitle = "Együttműködés a csapattal" +title = "Csapat-együttműködés" +viewPlans = "Csomagok megtekintése" + +[team.features.billing] +description = "Számlázás és előfizetések kezelése" +title = "Számlázás kezelése" + +[team.features.credits] +description = "Megosztott kreditalap minden tagnak" +title = "Megosztott kreditek" + +[team.features.dashboard] +description = "Csapataktivitás és felhasználás megtekintése" +title = "Csapatirányítópult" + +[team.features.invite] +description = "Tagok hozzáadása a csapathoz" +title = "Tagok meghívása" + +[team.invite] +cancelLabel = "Mégse" +invalidEmail = "Érvénytelen e-mail-cím" +placeholder = "Adja meg az e-mail-címet" +sendButton = "Meghívó küldése" +title = "Csapattag meghívása" + +[team.members] +emailColumn = "E-mail" +empty = "Még nincsenek csapattagok" +nameColumn = "Név" +pending = "Függőben" +remove = "Eltávolítás" +roleColumn = "Szerep" +title = "Csapattagok" + +[team.upgrade] +button = "Frissítés Csapat csomagra" +description = "Csapat-együttműködési funkciók feloldása" +title = "Frissítés Csapat csomagra" + +[provider.oauth2.google] +scope = "Bejelentkezési hitelesítés" + +[provider.oauth2.google.clientId] +label = "Kliensazonosító" +description = "Az OAuth2 kliensazonosítója a Google Cloud Console-ban" + +[provider.oauth2.google.clientSecret] +label = "Kliens titok" +description = "Az OAuth2 kliens titka a Google Cloud Console-ban" + +[provider.oauth2.google.scopes] +label = "Scope-ok" +description = "Vesszővel elválasztott OAuth2 scope-ok" + +[provider.oauth2.google.useAsUsername] +label = "Használat felhasználónévként" +description = "Mező, amelyet felhasználónévként használunk (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Bejelentkezési hitelesítés" + +[provider.oauth2.github.clientId] +label = "Kliensazonosító" +description = "Az OAuth2 kliensazonosítója a GitHub Developer Settings-ből" + +[provider.oauth2.github.clientSecret] +label = "Kliens titok" +description = "Az OAuth2 kliens titka a GitHub Developer Settings-ből" + +[provider.oauth2.github.scopes] +label = "Scope-ok" +description = "Vesszővel elválasztott OAuth2 scope-ok" + +[provider.oauth2.github.useAsUsername] +label = "Használat felhasználónévként" +description = "Mező, amelyet felhasználónévként használunk (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Kibocsátó URL-je" +description = "A Keycloak tartomány OpenID Connect Discovery végpontjának URL-je" + +[provider.oauth2.keycloak.clientId] +label = "Kliensazonosító" +description = "Az OAuth2 kliensazonosítója a Keycloakban" + +[provider.oauth2.keycloak.clientSecret] +label = "Kliens titok" +description = "Az OAuth2 kliens titka a Keycloakban" + +[provider.oauth2.keycloak.scopes] +label = "Scope-ok" +description = "Vesszővel elválasztott OAuth2 scope-ok" + +[provider.oauth2.keycloak.useAsUsername] +label = "Használat felhasználónévként" +description = "Mező, amelyet felhasználónévként használunk (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "Általános OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Általános OAuth2 engedélyezése" +description = "Hitelesítés engedélyezése egyéni OAuth2 szolgáltatóval" + +[provider.oauth2.generic.provider] +label = "Szolgáltató neve" +description = "Az OAuth2 szolgáltatója neve (pl. Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "Kibocsátó URL-je" +description = "OpenID Connect Discovery-t támogató szolgáltató (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "Kliensazonosító" +description = "Az OAuth2 kliensazonosítója a szolgáltatótól" + +[provider.oauth2.generic.clientSecret] +label = "Kliens titok" +description = "Az OAuth2 kliens titka a szolgáltatótól" + +[provider.oauth2.generic.scopes] +label = "Scope-ok" +description = "Vesszővel elválasztott OAuth2 scope-ok" + +[provider.oauth2.generic.useAsUsername] +label = "Használat felhasználónévként" +description = "Mező, amelyet felhasználónévként használunk" + +[provider.oauth2.generic.autoCreateUser] +label = "Felhasználók automatikus létrehozása" +description = "Felhasználói fiókok automatikus létrehozása az első OAuth2 bejelentkezéskor" + +[provider.oauth2.generic.blockRegistration] +label = "Regisztráció tiltása" +description = "Új felhasználói regisztráció megakadályozása OAuth2-n keresztül" + +[provider.smtp] +name = "SMTP levelezés" +scope = "E-mail értesítések" + +[provider.smtp.enabled] +label = "Levelezés engedélyezése" +description = "E-mail értesítések és SMTP funkció engedélyezése" + +[provider.smtp.host] +label = "SMTP hoszt" +description = "Az SMTP szerver hosztneve vagy IP-címe" + +[provider.smtp.port] +label = "SMTP port" +description = "A SMTP kapcsolathoz használt portszám (jellemzően 25, 465 vagy 587)" + +[provider.smtp.username] +label = "SMTP felhasználónév" +description = "Felhasználónév az SMTP hitelesítéshez" + +[provider.smtp.password] +label = "SMTP jelszó" +description = "Jelszó az SMTP hitelesítéshez" + +[provider.smtp.from] +label = "Feladó címe" +description = "A küldőként használt e-mail-cím" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "SAML2 engedélyezése" +description = "SAML2 hitelesítés engedélyezése (csak Enterprise)" + +[provider.saml2.provider] +label = "Szolgáltató neve" +description = "A SAML2 szolgáltatója neve" + +[provider.saml2.registrationId] +label = "Regisztrációs azonosító" +description = "A Service Provider (SP) alkalmazásának neve" + +[provider.saml2.idpMetadataUri] +label = "IDP Metaadat URI" +description = "A szolgáltató metaadatainak URI-ja" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP egyszeri bejelentkezési URL" +description = "Az SSO indításához használt URL" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP egyszeri kijelentkezési URL" +description = "Az SLO indításához használt URL" + +[provider.saml2.idpIssuer] +label = "IDP kibocsátó" +description = "A szolgáltató azonosítója" + +[provider.saml2.idpCert] +label = "IDP tanúsítvány" +description = "A tanúsítvány útvonala (pl. classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Privát kulcs" +description = "A privát kulcsa elérési útja" + +[provider.saml2.spCert] +label = "SP tanúsítvány" +description = "Az aláíró tanúsítvány elérési útja" + +[provider.saml2.autoCreateUser] +label = "Felhasználók automatikus létrehozása" +description = "Felhasználói fiókok automatikus létrehozása az első SAML2 bejelentkezéskor" + +[provider.saml2.blockRegistration] +label = "Regisztráció tiltása" +description = "Új felhasználói regisztráció megakadályozása SAML2-n keresztül" + +[provider.googledrive] +name = "Google Drive" +scope = "Fájlimport" + +[provider.googledrive.enabled] +label = "Google Drive fájlválasztó engedélyezése" +description = "Lehetővé teszi a felhasználóknak, hogy közvetlenül a Google Drive-ból importáljanak fájlokat" + +[provider.googledrive.clientId] +label = "Kliensazonosító" +description = "Google OAuth 2.0 Client ID a Google Cloud Console-ból" + +[provider.googledrive.apiKey] +label = "API kulcs" +description = "Google API Key a Google Picker API-hoz a Google Cloud Console-ból" + +[provider.googledrive.appId] +label = "App ID" +description = "Google Drive App ID a Google Cloud Console-ból" diff --git a/frontend/public/locales/id-ID/translation.toml b/frontend/public/locales/id-ID/translation.toml index 840da5e9a..bae7030f1 100644 --- a/frontend/public/locales/id-ID/translation.toml +++ b/frontend/public/locales/id-ID/translation.toml @@ -96,6 +96,8 @@ pin = "Sematkan File (tetap aktif setelah alat dijalankan)" poweredBy = "Ditenagai oleh" pro = "Pro" processTimeWarning = "Peringatan: Proses ini dapat memakan waktu hingga satu menit, tergantung pada ukuran berkas" +processingComplete = "File Anda siap." +processingCompleteMultiple = "{{count}} file siap." property = "Properti" quickPosition = "Posisi Cepat" red = "Merah" @@ -105,6 +107,7 @@ save = "Simpan" saveToBrowser = "Simpan ke Peramban" saveUnavailable = "Simpan tidak tersedia untuk item ini" seeDockerHub = "Lihat Docker Hub" +editSecret = "Edit nilai ini" selectFillter = "-- Pilih --" size = "Ukuran" sponsor = "Pembantu" @@ -651,6 +654,7 @@ description = "Konfigurasikan penyedia autentikasi eksternal seperti OAuth2 dan disconnect = "Putuskan" disconnected = "Penyedia berhasil diputuskan" disconnectError = "Gagal memutuskan penyedia" +documentation = "Lihat dokumentasi" imageResolutionFull = "Penuh (Ukuran Asli)" imageResolutionReduced = "Dikurangi (Maks 1200px)" linkedServices = "Layanan Tertaut" @@ -964,6 +968,18 @@ label = "Lokal Bawaan" description = "Ukuran unggahan file maksimum (mis., 100MB, 1GB)" label = "Batas Unggah File" +[admin.settings.general.hideDisabledTools] +description = "Sembunyikan alat yang dinonaktifkan dari antarmuka" +label = "Sembunyikan Alat Nonaktif" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Sembunyikan tombol Google Drive saat tidak diaktifkan" +label = "Sembunyikan Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Sembunyikan tombol pemindai QR seluler saat tidak diaktifkan" +label = "Sembunyikan Pemindai Seluler" + [admin.settings.general.frontendUrl] description = "URL dasar untuk frontend (mis., https://pdf.example.com). Digunakan untuk tautan undangan email dan unggah Kode QR seluler. Biarkan kosong untuk menggunakan backend URL." label = "Frontend URL" @@ -1148,6 +1164,8 @@ title = "Keamanan" [admin.settings.security.audit] label = "Pencatatan Audit" +showDetails = "Tampilkan detail level audit" +hideDetails = "Sembunyikan detail level audit" [admin.settings.security.audit.enabled] description = "Lacak tindakan pengguna dan peristiwa sistem untuk kepatuhan dan pemantauan keamanan" @@ -1157,10 +1175,32 @@ label = "Aktifkan Pencatatan Audit" description = "0=OFF, 1=BASIC, 2=STANDARD, 3=VERBOSE" label = "Tingkat Audit" +[admin.settings.security.audit.levelDetails] +off = "Tanpa pencatatan audit (kecuali kejadian keamanan kritis)" +basic = "Operasi file PDF (kompres, pisah, gabung, dll.) dan perubahan pengaturan. Mencatat: status operasi (berhasil/gagal), parameter metode, waktu. Volume log minimal." +standard = "Kejadian BASIC plus: login/logout pengguna, perubahan akun, permintaan GET umum. Tidak termasuk panggilan polling berkelanjutan (/auth/me, /app-config, /health, dll.) untuk mengurangi kebisingan log. Ideal untuk sebagian besar penerapan." +verbose = "Kejadian STANDARD plus: panggilan polling berkelanjutan, semua permintaan GET, waktu terperinci. Peringatan: volume log tinggi dan berdampak pada performa." + [admin.settings.security.audit.retentionDays] description = "Jumlah hari untuk mempertahankan log audit" label = "Retensi Audit (hari)" +[admin.settings.security.audit.advancedOptions] +title = "Opsi Lanjutan" +description = "Opsi berikut meningkatkan waktu pemrosesan dan penggunaan memori. Aktifkan hanya jika benar-benar diperlukan." + +[admin.settings.security.audit.captureFileHash] +description = "Ekstrak hash SHA-256 dari file PDF yang diunggah untuk verifikasi integritas. Independen dari level audit." +label = "Tangkap Hash File (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Ekstrak field penulis dari dokumen PDF saat pemrosesan. Memerlukan parsing PDF, menambah latensi. Independen dari level audit." +label = "Tangkap Metadata Penulis PDF" + +[admin.settings.security.audit.captureOperationResults] +description = "Tangkap nilai balikan metode. Tidak direkomendasikan: secara signifikan meningkatkan volume log dan penggunaan disk." +label = "Tangkap Hasil Operasi" + [admin.settings.security.csrfDisabled] description = "Nonaktifkan perlindungan Cross-Site Request Forgery (tidak disarankan)" label = "Nonaktifkan Perlindungan CSRF" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "Konfigurasikan Pencatatan Audit" +configureAuditMessage = "Sesuaikan level pencatatan audit, periode retensi, dan pengaturan lainnya di bagian Keamanan & Autentikasi." disabled = "Pencatatan audit dinonaktifkan" disabledMessage = "Aktifkan pencatatan audit di konfigurasi aplikasi Anda untuk melacak peristiwa sistem." enterpriseRequired = "Diperlukan Lisensi Enterprise" enterpriseRequiredMessage = "Sistem pencatatan audit adalah fitur enterprise. Harap tingkatkan ke lisensi enterprise untuk mengakses log audit dan analitik." +goToSettings = "Buka Pengaturan Audit" notAvailable = "Sistem audit tidak tersedia" notAvailableMessage = "Sistem audit belum dikonfigurasi atau tidak tersedia." -[audit.charts] -byType = "Peristiwa berdasarkan Jenis" -byUser = "Peristiwa berdasarkan Pengguna" -day = "Hari" -error = "Kesalahan saat memuat grafik" -month = "Bulan" -overTime = "Peristiwa Seiring Waktu" -title = "Dasbor Audit" -week = "Minggu" - [audit.error] title = "Kesalahan saat memuat sistem audit" -[audit.events] -actions = "Tindakan" -clearFilters = "Bersihkan" -details = "Detail" -endDate = "Tanggal berakhir" -error = "Kesalahan saat memuat peristiwa" -eventDetails = "Detail Peristiwa" -filterByType = "Saring berdasarkan jenis" -filterByUser = "Saring berdasarkan pengguna" -ipAddress = "Alamat IP" -noEvents = "Tidak ada peristiwa" -startDate = "Tanggal mulai" -timestamp = "Stempel waktu" -title = "Peristiwa Audit" -type = "Jenis" -user = "Pengguna" -viewDetails = "Lihat Detail" - [audit.export] clearFilters = "Bersihkan" description = "Ekspor peristiwa audit ke format CSV atau JSON. Gunakan filter untuk membatasi data yang diekspor." endDate = "Tanggal berakhir" error = "Gagal mengekspor data" exportButton = "Ekspor Data" +fieldAuthor = "Penulis (dari PDF)" +fieldDate = "Tanggal" +fieldDocumentName = "Nama Dokumen" +fieldFileHash = "File Hash (SHA-256)" +fieldIpAddress = "Alamat IP" +fieldOperationResults = "Hasil Operasi" +fieldOutcome = "Hasil (Berhasil/Gagal)" +fieldTool = "Alat" +fieldUsername = "Nama Pengguna" filterByType = "Saring berdasarkan jenis" filterByUser = "Saring berdasarkan pengguna" filters = "Filter (Opsional)" format = "Format Ekspor" +selectFields = "Pilih Bidang untuk Disertakan" startDate = "Tanggal mulai" title = "Ekspor Data Audit" +verboseRequired = "Memerlukan level audit VERBOSE" [audit.systemStatus] +autoRefresh = "Penyegaran otomatis" +autoRefreshLabel = "Penyegaran otomatis setiap 30 dtk" +captureBySettings = "Aktifkan di pengaturan" +capturedFields = "Bidang yang Dicatat" +date = "Tanggal" days = "hari" disabled = "Dinonaktifkan" +documentName = "Nama Dokumen" enabled = "Diaktifkan" +fileHash = "Hash File" level = "Tingkat Audit" +pdfAuthor = "Penulis PDF" retention = "Periode Retensi" status = "Pencatatan Audit" title = "Status Sistem" +tool = "Alat" totalEvents = "Total Peristiwa" +username = "Nama Pengguna" +verboseOnly = "Hanya VERBOSE" + +[audit.stats] +activeUsers = "Pengguna Aktif" +attention = "Perlu perhatian" +avgLatency = "Latensi Rata-rata" +error = "Kesalahan memuat statistik" +errorLoadingStats = "Gagal memuat statistik" +excellent = "Sangat baik" +good = "Baik" +noData = "N/A" +successRate = "Tingkat Keberhasilan" +title = "Ringkasan" +totalEvents = "Total Kejadian" +vsLastPeriod = "vs periode sebelumnya" + +[audit.charts] +byTool = "Alat Teratas yang Digunakan" +byType = "Peristiwa berdasarkan Jenis" +byUser = "Peristiwa berdasarkan Pengguna" +day = "Hari" +error = "Kesalahan saat memuat grafik" +hourlyActivity = "Aktivitas per Jam" +month = "Bulan" +noData = "Tidak ada data untuk periode ini" +overTime = "Peristiwa Seiring Waktu" +title = "Dasbor Audit" +week = "Minggu" + +[audit.events] +actions = "Tindakan" +author = "Penulis" +clearFilters = "Bersihkan" +details = "Detail" +documentName = "Dokumen" +endDate = "Tanggal berakhir" +error = "Kesalahan saat memuat peristiwa" +eventDetails = "Detail Peristiwa" +failure = "Gagal" +fileHash = "Hash File" +filterByType = "Saring berdasarkan jenis" +filterByUser = "Saring berdasarkan pengguna" +ipAddress = "Alamat IP" +noEvents = "Tidak ada peristiwa" +outcome = "Status" +sortAsc = "Urutkan naik" +sortDesc = "Urutkan turun" +startDate = "Tanggal mulai" +success = "Berhasil" +timestamp = "Stempel waktu" +title = "Peristiwa Audit" +type = "Jenis" +user = "Pengguna" +viewDetails = "Lihat Detail" + +[audit.filters] +allOutcomes = "Semua" +failureOnly = "Hanya kegagalan" +last7Days = "7 hari terakhir" +last30Days = "30 hari terakhir" +outcomeFilter = "Hasil" +quickPresets = "Filter cepat" +successOnly = "Hanya keberhasilan" +thisMonth = "Bulan ini" +today = "Hari ini" [audit.tabs] +clearData = "Hapus Data" dashboard = "Dasbor" events = "Peristiwa Audit" export = "Ekspor" +[audit.clearData] +cancel = "Batal" +codeDoesNotMatch = "Kode tidak cocok" +codePlaceholder = "Ketik kodenya di sini" +confirmationCode = "Kode Konfirmasi" +confirmationRequired = "Hapus Semua Data Audit" +confirmMessage = "Ini akan menghapus semua log audit secara permanen. Masukkan kode konfirmasi di bawah untuk melanjutkan." +confirmTitle = "Harap konfirmasi bahwa Anda ingin menghapus" +deleteButton = "Hapus" +enterCode = "Kode Konfirmasi" +enterCodeBelow = "Masukkan kode persis seperti di atas (sensitif huruf besar/kecil)" +initiateDelete = "Hapus Semua Data" +irreversible = "TIDAK DAPAT DIBATALKAN" +success = "Berhasil" +successMessage = "Semua data audit berhasil dihapus" +warning1 = "Tindakan ini tidak dapat dibatalkan" +warning2 = "Menghapus data audit akan menghapus secara permanen semua log audit historis, termasuk kejadian keamanan, aktivitas pengguna, dan operasi file dari database." + [auth] accessDenied = "Akses Ditolak" insufficientPermissions = "Anda tidak memiliki izin untuk melakukan tindakan ini." @@ -2254,9 +2374,11 @@ copy = "Salin" done = "Selesai" error = "Error" expand = "Perluas" +learnMore = "Pelajari lebih lanjut" lines = "baris" loading = "Memuat..." next = "Berikutnya" +operation = "operasi ini" preview = "Pratinjau" previous = "Sebelumnya" refresh = "Muat Ulang" @@ -2920,6 +3042,7 @@ copyStack = "Salin Stack Trace" discordSubmit = "Discord - Kirim pos dukungan" dismissAllErrors = "Abaikan Semua Kesalahan" encryptedPdfMustRemovePassword = "PDF ini terenkripsi atau dilindungi kata sandi. Harap buka kunci sebelum mengonversi ke PDF/A." +generic = "Terjadi kesalahan" github = "Kirim tiket di GitHub" githubSubmit = "GitHub - Kirim tiket" incorrectPasswordProvided = "Kata sandi PDF salah atau tidak diberikan." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Langganan Anda telah diupgrade dengan sukses. Kunci li upgradeSuccess = "Pembayaran berhasil! Langganan Anda telah diupgrade. Lisensi telah diperbarui di server Anda. Anda akan menerima email konfirmasi segera." upgradeTitle = "Tingkatkan ke {{planName}}" yearly = "Tahunan" +checkoutOpened = "Checkout Dibuka di Peramban" +checkoutInstructions = "Selesaikan pembelian Anda di jendela peramban yang baru dibuka. Setelah pembayaran selesai, kembali ke sini dan klik tombol di bawah untuk menyegarkan informasi penagihan Anda." +refreshBilling = "Saya Sudah Membayar - Segarkan Penagihan" +closeLater = "Akan Saya Lakukan Nanti" [payment.emailStage] continue = "Lanjut" @@ -4679,6 +4806,13 @@ prompt = "Pilih halaman untuk mengambil tabel" submit = "Ektraksi" title = "PDF ke CSV" +[PDFToXLSX] +header = "PDF ke Excel" +prompt = "Pilih halaman untuk mengekstrak tabel" +submit = "Konversi" +title = "PDF ke Excel (XLSX)" +tags = "spreadsheet,excel,xlsx,tabel,ekstrak,konversi" + [PDFToHTML] credit = "Layanan ini menggunakan pdftohtml untuk konversi berkas." header = "PDF ke HTML" @@ -4835,6 +4969,7 @@ customPricing = "Khusus" featureComparison = "Perbandingan Fitur" from = "Mulai" hideComparison = "Sembunyikan Perbandingan Fitur" +included = "Termasuk" includedInCurrent = "Termasuk dalam Paket Anda" licensedSeats = "Berlisensi: {{count}} seat" manage = "Kelola" @@ -4852,9 +4987,11 @@ title = "Paket Aktif" [plan.availablePlans] subtitle = "Pilih paket yang sesuai kebutuhan Anda" +loadError = "Tidak dapat memuat harga paket. Menggunakan nilai default." title = "Paket yang Tersedia" [plan.enterprise] +siteLicense = "Lisensi Situs" highlight1 = "Harga kustom" highlight2 = "Dukungan khusus" highlight3 = "Fitur terbaru" @@ -4928,6 +5065,81 @@ keyDescription = "Tempel kunci lisensi dari email Anda" success = "Lisensi Diaktifkan!" successMessage = "Lisensi Anda berhasil diaktifkan. Anda sekarang dapat menutup jendela ini." +[plan.team] +name = "Team" +siteLicense = "Lisensi Situs" + +[credits] +enableOverageBilling = "Aktifkan Penagihan Kelebihan Pemakaian" +maybeLater = "Mungkin nanti" +upgrade = "Tingkatkan" + +[credits.modal] +advancedMonitoring = "Pemantauan lanjutan" +allInOneWorkspace = "Ruang kerja PDF serba ada (penampil, alat & agen)" +apiSandbox = "Sandbox API" +contactSales = "Hubungi Penjualan" +creditsRemaining = "{{current}} dari {{total}} tersisa" +creditsThisMonth = "Kredit bulanan" +current = "Paket Saat Ini" +customPricing = "Kustom" +customSmartFolders = "Smart Folder Kustom" +dedicatedSupportSlas = "Dukungan khusus & SLA" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Semua di Credits, plus:" +everythingInFree = "Semua di Free, plus:" +fasterThroughput = "Throughput 10x lebih cepat" +forRegularWork = "Untuk pekerjaan PDF rutin:" +freeTier = "Tingkat Gratis" +fullyPrivateFiles = "File sepenuhnya privat" +largeFileProcessing = "Pemrosesan file besar" +managedMemberMessage = "Anda memiliki akses tak terbatas ke kredit melalui tim Anda. Jika membutuhkan bantuan, hubungi pemimpin tim Anda." +managedMemberTitle = "Kredit Tak Terbatas" +meteringBillingNote = "Kredit kelebihan ditagihkan bulanan bersama langganan Team Anda. Lacak penggunaan kapan saja di pengaturan akun Anda." +meteringExplanation = "Paket Team Anda mencakup {{credits}} kredit per bulan. Saat habis, penagihan kelebihan pemakaian otomatis menyediakan kredit tambahan sehingga Anda tidak perlu berhenti bekerja." +meteringIncluded = "{{credits}} kredit/bulan termasuk dengan Team" +meteringNoCommitment = "Tanpa komitmen, batalkan kapan saja" +meteringNeverRunOut = "Tidak akan kehabisan kredit" +meteringPayAsYouGo = "Bayar sesuai pemakaian" +meteringPrice = "Kredit tambahan seharga {{price}}/kredit" +meteringTitle = "Penagihan Kelebihan Pemakaian Sesuai Penggunaan" +monthlyCredits = "kredit bulanan" +orgWideAccess = "Kontrol akses seluruh organisasi" +overage = "kelebihan" +perMonth = "/bulan" +popular = "Populer" +premiumAiModels = "Model AI premium" +prioritySupport = "Dukungan prioritas" +privateDocCloud = "Cloud Dokumen Privat" +ragFineTuning = "RAG + fine-tuning" +secureApiAccess = "Akses API aman" +selfHostLink = "Tinjau dokumentasi dan paket" +selfHostPrompt = "Ingin self-hosting?" +standardThroughput = "Throughput standar" +subtitle = "Tingkatkan ke Team untuk 10x kredit dan pemrosesan lebih cepat." +subtitlePro = "Aktifkan penagihan kelebihan pemakaian otomatis agar tidak pernah kehabisan kredit." +teamLeaderOnly = "Hanya pemimpin tim yang dapat mengaktifkan penagihan kelebihan pemakaian" +teamSubscription = "Team" +titleExhausted = "Anda telah menggunakan kredit gratis Anda" +titleExhaustedPro = "Kredit Anda telah habis" +unlimitedApiAccess = "Akses API tanpa batas" +unlimitedMonthlyCredits = "Lisensi Situs" +unlimitedSeats = "Kursi tanpa batas" + +[credits.modal.features] +everythingInCredits = "Semua di Credits, plus:" +everythingInFree = "Semua di Free, plus:" +forRegularWork = "Untuk pekerjaan PDF rutin:" + +[credits.insufficient] +brief = "Kredit tidak mencukupi. Anda memerlukan {{required}} kredit tetapi hanya memiliki {{current}}." +freeTier = "Tingkatkan ke Team untuk 10x lebih banyak kredit dan penagihan kelebihan pemakaian tanpa batas." +managedMember = "Silakan hubungi pemimpin tim Anda untuk bantuan." +message = "Anda tidak memiliki cukup kredit untuk menjalankan {{tool}}. Saat ini Anda memiliki {{current}} kredit." +messageWithAmount = "Anda memerlukan {{required}} kredit untuk menjalankan {{tool}}, tetapi Anda hanya memiliki {{current}}." +teamMember = "Aktifkan penagihan kelebihan pemakaian agar tidak pernah kehabisan kredit." +title = "Kredit Tidak Mencukupi" + [printFile] header = "Cetak File ke Printer" submit = "Cetak" @@ -5565,6 +5777,70 @@ user = "Masuk sebagai" saas = "Stirling Cloud" selfhosted = "Self-Hosted" +[settings.planBilling] +currentPlan = "Paket Saat Ini" +loading = "Memuat informasi penagihan..." +notAvailable = "Paket & Penagihan hanya tersedia saat terhubung ke Stirling Cloud (mode SaaS)." +title = "Paket & Penagihan" + +[settings.planBilling.billing] +manageBilling = "Kelola Penagihan" +nextBillingDate = "Tanggal penagihan berikutnya" +overageCost = "Biaya kelebihan saat ini: {{amount}} ({{credits}} kredit)" + +[settings.planBilling.credits] +estimatedCost = "Perkiraan biaya: {{amount}}" +freeTierInfo = "Paket gratis mencakup {{freeCredits}} kredit per bulan. Tingkatkan ke Team untuk {{teamCredits}} kredit/bulan dan penagihan kelebihan pemakaian bayar sesuai pemakaian." +included = "{{count}} kredit/bulan (termasuk)" +noOverage = "Tidak ada biaya kelebihan bulan ini. Anda menggunakan {{count}} kredit yang sudah termasuk." +overage = "+ {{count}} kelebihan" +overageInfo = "Kredit kelebihan ditagihkan sebesar {{price}} per kredit. Anda hanya membayar yang digunakan di luar jatah bulanan." +title = "Penggunaan Kredit" + +[settings.planBilling.errors] +fetchFailed = "Tidak dapat mengambil data penagihan" +retry = "Coba lagi" + +[settings.planBilling.status] +active = "Aktif" +canceled = "Dibatalkan" +pastDue = "Tertunggak" +trial = "Uji Coba" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Fitur dan dukungan enterprise kustom" +free = "Gratis" +freeDescription = "50 kredit per bulan" +team = "Team" +teamBadge = "Team" +teamDescription = "Termasuk 500 kredit/bulan, penagihan kelebihan pemakaian otomatis untuk layanan tanpa gangguan" +teamTooltipCredits = "Paket Team mencakup {{credits}} kredit/bulan." +teamTooltipFineprint = "Hanya membayar pemakaian di luar kredit yang termasuk." +teamTooltipOverage = "Penagihan kelebihan pemakaian otomatis sebesar {{price}}/kredit memastikan layanan tanpa gangguan." + +[settings.planBilling.team] +managedByTeam = "Dikelola oleh tim" +memberCount = "{{count}} anggota tim" + +[settings.planBilling.trial] +daysRemaining = "{{days}} hari tersisa" +daysRemainingFull = "Uji coba Anda berakhir dalam {{days}} hari" +endDate = "Berakhir: {{date}}" +endsOn = "Uji coba berakhir" +title = "Uji Coba Gratis Aktif" + +[settings.planBilling.upgrade] +cta = "Tingkatkan ke Team" +featureApi = "Akses API untuk otomasi" +featureCredits = "{{teamCredits}} kredit per bulan (dibanding {{freeCredits}} pada Gratis)" +featureMembers = "Anggota tim tanpa batas" +featureSupport = "Dukungan prioritas" +featureThroughput = "Throughput pemrosesan lebih cepat" +opensInBrowser = "Dibuka di peramban untuk menyelesaikan peningkatan" +subtitle = "Tingkatkan ke Team untuk:" +title = "Tingkatkan Paket Anda" + [settings.developer] apiKeys = "Kunci API" title = "Pengembang" @@ -5689,6 +5965,9 @@ people = "Anggota" teams = "Tim" title = "Ruang kerja" +[settings.team] +title = "Tim" + [setup] description = "Mulai dengan memilih cara Anda ingin menggunakan Stirling PDF" welcome = "Selamat datang di Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "Pecah otomatis dengan lembar pemisah" name = "Pemisah Halaman" tooltip = "Gunakan lembar pemisah kode QR di antara dokumen saat memindai" +[split.methods.byPoster] +name = "Potongan Siap Cetak" +desc = "Pisah halaman besar menjadi ukuran yang bisa dicetak" +tooltip = "Bagi halaman berukuran besar menjadi potongan lebih kecil yang cocok dicetak pada kertas standar (A4, Letter, dll.)" + [split.methods.byPages] desc = "Ekstrak halaman tertentu (1,3,5-10)" name = "Nomor Halaman" @@ -6029,6 +6313,7 @@ tooltip = "Tentukan ukuran file maksimum (mis. 10MB, 500KB)" [split.methods.prefix] splitAt = "Bagi pada" splitBy = "Bagi berdasarkan" +splitInto = "Pisahkan menjadi" [split.methodSelection.tooltip] bullet1 = "Klik pada kartu metode untuk memilihnya" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Silakan pilih metode pemisahan terlebih dahulu" chooseMethod = "Pilih Metode" settings = "Pengaturan" +[split.poster] +rightToLeft = "Pisah kanan-ke-kiri" + +[split.poster.pageSize] +label = "Ukuran Halaman Target" +description = "Ukuran halaman keluaran untuk pencetakan" + +[split.poster.xFactor] +label = "Pembagian Horizontal" +description = "Jumlah kolom untuk membagi setiap halaman" + +[split.poster.yFactor] +label = "Pembagian Vertikal" +description = "Jumlah baris untuk membagi setiap halaman" + [split.tooltip.byChapters] bullet1 = "Tingkat Bookmark: Tingkat mana yang akan dipecah (1=tingkat atas)" bullet2 = "Sertakan Metadata: Pertahankan properti dokumen" @@ -6085,6 +6385,14 @@ bullet5 = "Aktifkan Mode Dupleks jika memindai kedua sisi lembar pemisah" text = "Secara otomatis memecah dokumen hasil pindai menggunakan lembar pemisah fisik dengan kode QR. Sempurna untuk memproses banyak dokumen yang dipindai bersama." title = "Bagi berdasarkan Pemisah Halaman" +[split.tooltip.byPoster] +bullet1 = "Ukuran Halaman Target: Pilih ukuran kertas keluaran (A4, Letter, dll.)" +bullet2 = "Pembagian Horizontal/Vertikal: Ukuran grid untuk pemisahan" +bullet3 = "Kanan-ke-Kiri: Balik urutan kolom untuk tata letak RTL" +bullet4 = "Cetak dan susun potongannya untuk membuat poster Anda" +text = "Pisah halaman PDF besar menjadi potongan kecil yang dapat dicetak, cocok untuk ukuran kertas standar. Sempurna untuk membuat cetak poster dari halaman berukuran besar." +title = "Pisah untuk Cetak Poster" + [split.tooltip.byPages] bullet1 = "Titik pemisahan tunggal: 3,7 (pecah setelah halaman 3 dan 7)" bullet2 = "Rentang pemisahan: 3-8 (pecah sebelum halaman 3 dan setelah halaman 8)" @@ -6364,9 +6672,13 @@ tags = "tangkap web, simpan halaman, web-ke-dok, arsip" title = "URL ke PDF" [usage] +aboutUsageAnalytics = "Tentang Analitik Penggunaan" +configureSettings = "Konfigurasikan Pengaturan Analitik" error = "Kesalahan saat memuat statistik penggunaan" noData = "Tidak ada data" noDataMessage = "Tidak ada statistik penggunaan saat ini." +usageAnalyticsExplanation = "Analitik penggunaan melacak permintaan endpoint dan pola pemakaian alat. Dikombinasikan dengan dasbor Pencatatan Audit, Anda mendapatkan visibilitas penuh atas aktivitas sistem, performa, dan kejadian keamanan." +viewAuditLogs = "Lihat Log Audit" [usage.chart] title = "Grafik Penggunaan Endpoint" @@ -6947,3 +7259,278 @@ cancel = "Batal" confirm = "Ekstrak" message = "ZIP ini berisi {{count}} file. Tetap ekstrak?" title = "File ZIP Besar" + +[cloudBadge] +tooltip = "Operasi ini akan menggunakan kredit cloud Anda" + +[team] +cancelInviteError = "Gagal membatalkan undangan" +confirmCancelInvite = "Anda yakin ingin membatalkan undangan ini?" +confirmLeave = "Anda yakin ingin keluar dari tim ini?" +confirmLeaveLeader = "Sebagai pemimpin tim, keluar akan menghapus Anda dari tim. Anda yakin?" +confirmRemove = "Anda yakin ingin menghapus anggota ini?" +editName = "Edit nama tim" +inviteCancelled = "Undangan dibatalkan" +inviteError = "Gagal mengirim undangan" +inviteSent = "Undangan berhasil dikirim" +leader = "Pemimpin" +leaveButton = "Keluar dari Tim" +leaveError = "Gagal keluar dari tim" +leaveSuccess = "Berhasil keluar dari tim" +loading = "Memuat informasi tim..." +memberCount = "{{count}} anggota" +memberRemoved = "Anggota berhasil dihapus" +namePlaceholder = "Masukkan nama tim" +personal = "Pribadi" +removeError = "Gagal menghapus anggota" +renameError = "Gagal mengganti nama tim" +renameSuccess = "Nama tim berhasil diganti" + +[team.invitationBanner] +message = "mengundang Anda untuk bergabung" +acceptButton = "Terima" +rejectButton = "Tolak" + +[team.features] +badge = "Fitur Tim" +subtitle = "Berkolaborasi dengan tim Anda" +title = "Kolaborasi Tim" +viewPlans = "Lihat Paket" + +[team.features.billing] +description = "Kelola penagihan dan langganan" +title = "Manajemen Penagihan" + +[team.features.credits] +description = "Kumpulan kredit bersama untuk semua anggota" +title = "Kredit Bersama" + +[team.features.dashboard] +description = "Lihat aktivitas dan penggunaan tim" +title = "Dasbor Tim" + +[team.features.invite] +description = "Tambahkan anggota ke tim Anda" +title = "Undang Anggota" + +[team.invite] +cancelLabel = "Batal" +invalidEmail = "Alamat email tidak valid" +placeholder = "Masukkan alamat email" +sendButton = "Kirim Undangan" +title = "Undang Anggota Tim" + +[team.members] +emailColumn = "Email" +empty = "Belum ada anggota tim" +nameColumn = "Nama" +pending = "Tertunda" +remove = "Hapus" +roleColumn = "Peran" +title = "Anggota Tim" + +[team.upgrade] +button = "Tingkatkan ke Team" +description = "Buka fitur kolaborasi tim" +title = "Tingkatkan ke Paket Team" + +[provider.oauth2.google] +scope = "Autentikasi masuk" + +[provider.oauth2.google.clientId] +label = "Client ID" +description = "Client ID OAuth2 dari Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Client Secret" +description = "Client Secret OAuth2 dari Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Scopes" +description = "Scopes OAuth2 dipisahkan koma" + +[provider.oauth2.google.useAsUsername] +label = "Gunakan sebagai Nama Pengguna" +description = "Bidang yang digunakan sebagai nama pengguna (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Autentikasi masuk" + +[provider.oauth2.github.clientId] +label = "Client ID" +description = "Client ID OAuth2 dari GitHub Developer Settings" + +[provider.oauth2.github.clientSecret] +label = "Client Secret" +description = "Client Secret OAuth2 dari GitHub Developer Settings" + +[provider.oauth2.github.scopes] +label = "Scopes" +description = "Scopes OAuth2 dipisahkan koma" + +[provider.oauth2.github.useAsUsername] +label = "Gunakan sebagai Nama Pengguna" +description = "Bidang yang digunakan sebagai nama pengguna (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Issuer URL" +description = "URL dari endpoint OpenID Connect Discovery realm Keycloak" + +[provider.oauth2.keycloak.clientId] +label = "Client ID" +description = "Client ID OAuth2 dari Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Client Secret" +description = "Client Secret OAuth2 dari Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "Scopes" +description = "Scopes OAuth2 dipisahkan koma" + +[provider.oauth2.keycloak.useAsUsername] +label = "Gunakan sebagai Nama Pengguna" +description = "Bidang yang digunakan sebagai nama pengguna (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "OAuth2 Generik" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Aktifkan OAuth2 Generik" +description = "Aktifkan autentikasi menggunakan penyedia OAuth2 khusus" + +[provider.oauth2.generic.provider] +label = "Nama Penyedia" +description = "Nama penyedia OAuth2 Anda (mis., Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "Issuer URL" +description = "Penyedia yang mendukung OpenID Connect Discovery (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "Client ID" +description = "Client ID OAuth2 dari penyedia Anda" + +[provider.oauth2.generic.clientSecret] +label = "Client Secret" +description = "Client Secret OAuth2 dari penyedia Anda" + +[provider.oauth2.generic.scopes] +label = "Scopes" +description = "Scopes OAuth2 dipisahkan koma" + +[provider.oauth2.generic.useAsUsername] +label = "Gunakan sebagai Nama Pengguna" +description = "Bidang yang digunakan sebagai nama pengguna" + +[provider.oauth2.generic.autoCreateUser] +label = "Buat Pengguna Otomatis" +description = "Buat akun pengguna secara otomatis saat login pertama OAuth2" + +[provider.oauth2.generic.blockRegistration] +label = "Blokir Pendaftaran" +description = "Cegah pendaftaran pengguna baru melalui OAuth2" + +[provider.smtp] +name = "Email SMTP" +scope = "Notifikasi Email" + +[provider.smtp.enabled] +label = "Aktifkan Email" +description = "Aktifkan notifikasi email dan fungsi SMTP" + +[provider.smtp.host] +label = "Host SMTP" +description = "Nama host atau alamat IP server SMTP Anda" + +[provider.smtp.port] +label = "Port SMTP" +description = "Nomor port untuk koneksi SMTP (biasanya 25, 465, atau 587)" + +[provider.smtp.username] +label = "Username SMTP" +description = "Username untuk autentikasi SMTP" + +[provider.smtp.password] +label = "Password SMTP" +description = "Password untuk autentikasi SMTP" + +[provider.smtp.from] +label = "Alamat Pengirim" +description = "Alamat email yang digunakan sebagai pengirim" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "Aktifkan SAML2" +description = "Aktifkan autentikasi SAML2 (hanya Enterprise)" + +[provider.saml2.provider] +label = "Nama Penyedia" +description = "Nama penyedia SAML2 Anda" + +[provider.saml2.registrationId] +label = "Registration ID" +description = "Nama aplikasi Service Provider (SP) Anda" + +[provider.saml2.idpMetadataUri] +label = "IDP Metadata URI" +description = "URI untuk metadata penyedia Anda" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login URL" +description = "URL untuk memulai SSO" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout URL" +description = "URL untuk memulai SLO" + +[provider.saml2.idpIssuer] +label = "IDP Issuer" +description = "ID dari penyedia Anda" + +[provider.saml2.idpCert] +label = "Sertifikat IDP" +description = "Path sertifikat (mis., classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Kunci Privat" +description = "Path kunci privat Anda" + +[provider.saml2.spCert] +label = "Sertifikat SP" +description = "Path sertifikat penandatanganan Anda" + +[provider.saml2.autoCreateUser] +label = "Buat Pengguna Otomatis" +description = "Buat akun pengguna secara otomatis saat login pertama SAML2" + +[provider.saml2.blockRegistration] +label = "Blokir Pendaftaran" +description = "Cegah pendaftaran pengguna baru melalui SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "Impor File" + +[provider.googledrive.enabled] +label = "Aktifkan Google Drive File Picker" +description = "Izinkan pengguna mengimpor file langsung dari Google Drive" + +[provider.googledrive.clientId] +label = "Client ID" +description = "Client ID OAuth 2.0 Google dari Google Cloud Console" + +[provider.googledrive.apiKey] +label = "API Key" +description = "Google API Key untuk Google Picker API dari Google Cloud Console" + +[provider.googledrive.appId] +label = "App ID" +description = "Google Drive App ID dari Google Cloud Console" diff --git a/frontend/public/locales/it-IT/translation.toml b/frontend/public/locales/it-IT/translation.toml index 1ec9a81cb..5c1b1a801 100644 --- a/frontend/public/locales/it-IT/translation.toml +++ b/frontend/public/locales/it-IT/translation.toml @@ -96,6 +96,8 @@ pin = "Blocca file (mantieni attivo dopo l'esecuzione dello strumento)" poweredBy = "Alimentato da" pro = "Pro" processTimeWarning = "Nota: Questo processo potrebbe richiedere fino a un minuto in base alla dimensione dei file" +processingComplete = "Il tuo file è pronto." +processingCompleteMultiple = "{{count}} file sono pronti." property = "Proprietà" quickPosition = "Posizione rapida" red = "Rosso" @@ -105,6 +107,7 @@ save = "Salva" saveToBrowser = "Salva nel browser" saveUnavailable = "Salvataggio non disponibile per questo elemento" seeDockerHub = "Vedi DockerHub" +editSecret = "Modifica questo valore" selectFillter = "-- Seleziona --" size = "Dimensione" sponsor = "Sponsor" @@ -651,6 +654,7 @@ description = "Configura provider di autenticazione esterni come OAuth2 e SAML." disconnect = "Disconnetti" disconnected = "Provider disconnesso con successo" disconnectError = "Impossibile disconnettere il provider" +documentation = "Visualizza documentazione" imageResolutionFull = "Piena (dimensione originale)" imageResolutionReduced = "Ridotta (max 1200px)" linkedServices = "Servizi collegati" @@ -964,6 +968,18 @@ label = "Locale predefinito" description = "Dimensione massima di upload (es. 100MB, 1GB)" label = "Limite caricamento file" +[admin.settings.general.hideDisabledTools] +description = "Nascondi gli strumenti disabilitati dall'interfaccia" +label = "Nascondi strumenti disabilitati" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Nascondi il pulsante Google Drive quando non abilitato" +label = "Nascondi Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Nascondi il pulsante dello scanner QR mobile quando non abilitato" +label = "Nascondi scanner mobile" + [admin.settings.general.frontendUrl] description = "URL di base per il frontend (es., https://pdf.example.com). Usato per link di invito via email e caricamenti tramite QR code da mobile. Lascia vuoto per usare l'URL del backend." label = "URL frontend" @@ -1148,6 +1164,8 @@ title = "Sicurezza" [admin.settings.security.audit] label = "Registrazione di audit" +showDetails = "Mostra dettagli del livello di audit" +hideDetails = "Nascondi dettagli del livello di audit" [admin.settings.security.audit.enabled] description = "Traccia azioni degli utenti ed eventi di sistema per conformità e monitoraggio della sicurezza" @@ -1157,10 +1175,32 @@ label = "Abilita registrazione di audit" description = "0=SPENTO, 1=BASE, 2=STANDARD, 3=DETTAGLIATO" label = "Livello audit" +[admin.settings.security.audit.levelDetails] +off = "Nessun log di audit (tranne eventi di sicurezza critici)" +basic = "Operazioni sui file PDF (comprimere, dividere, unire, ecc.) e modifiche alle impostazioni. Acquisisce: stato dell'operazione (successo/fallimento), parametri del metodo, tempi. Volume di log minimo." +standard = "Eventi BASIC più: accesso/uscita utente, modifiche dell'account, richieste GET generali. Esclude chiamate di polling continuo (/auth/me, /app-config, /health, ecc.) per ridurre il rumore nei log. Ideale per la maggior parte delle installazioni." +verbose = "Eventi STANDARD più: chiamate di polling continuo, tutte le richieste GET, tempistiche dettagliate. Avviso: volume di log elevato e impatto sulle prestazioni." + [admin.settings.security.audit.retentionDays] description = "Numero di giorni per conservare i log di audit" label = "Conservazione audit (giorni)" +[admin.settings.security.audit.advancedOptions] +title = "Opzioni avanzate" +description = "Le seguenti opzioni aumentano il tempo di elaborazione e l'uso di memoria. Abilita solo se strettamente necessario." + +[admin.settings.security.audit.captureFileHash] +description = "Estrai l'hash SHA-256 dei file PDF caricati per la verifica dell'integrità. Indipendente dal livello di audit." +label = "Acquisisci hash del file (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Estrai il campo autore dai documenti PDF durante l'elaborazione. Richiede l'analisi del PDF, aumenta la latenza. Indipendente dal livello di audit." +label = "Acquisisci metadati autore PDF" + +[admin.settings.security.audit.captureOperationResults] +description = "Acquisisci i valori di ritorno dei metodi. Non consigliato: aumenta significativamente il volume dei log e l'uso del disco." +label = "Acquisisci risultati dell'operazione" + [admin.settings.security.csrfDisabled] description = "Disabilita la protezione Cross-Site Request Forgery (non raccomandato)" label = "Disabilita protezione CSRF" @@ -1536,72 +1576,152 @@ tags = "incorporare,allegare,file,allegato,allegati" title = "Aggiungere allegati" [audit] +configureAudit = "Configura il logging di audit" +configureAuditMessage = "Regola il livello di logging di audit, il periodo di conservazione e altre impostazioni nella sezione Sicurezza e Autenticazione." disabled = "La registrazione dell'audit è disattivata" disabledMessage = "Abilita la registrazione dell'audit nella configurazione dell'applicazione per tracciare gli eventi di sistema." enterpriseRequired = "Richiesta licenza Enterprise" enterpriseRequiredMessage = "Il sistema di audit logging è una funzionalità Enterprise. Esegui l'upgrade a una licenza Enterprise per accedere ai log di audit e alle analitiche." +goToSettings = "Vai alle impostazioni di audit" notAvailable = "Sistema di audit non disponibile" notAvailableMessage = "Il sistema di audit non è configurato o non è disponibile." -[audit.charts] -byType = "Eventi per tipo" -byUser = "Eventi per utente" -day = "Giorno" -error = "Errore nel caricamento dei grafici" -month = "Mese" -overTime = "Eventi nel tempo" -title = "Dashboard di audit" -week = "Settimana" - [audit.error] title = "Errore nel caricamento del sistema di audit" -[audit.events] -actions = "Azioni" -clearFilters = "Azzera" -details = "Dettagli" -endDate = "Data di fine" -error = "Errore nel caricamento degli eventi" -eventDetails = "Dettagli evento" -filterByType = "Filtra per tipo" -filterByUser = "Filtra per utente" -ipAddress = "Indirizzo IP" -noEvents = "Nessun evento trovato" -startDate = "Data di inizio" -timestamp = "Timestamp" -title = "Eventi di audit" -type = "Tipo" -user = "Utente" -viewDetails = "Visualizza dettagli" - [audit.export] clearFilters = "Azzera" description = "Esporta gli eventi di audit in formato CSV o JSON. Usa i filtri per limitare i dati esportati." endDate = "Data di fine" error = "Impossibile esportare i dati" exportButton = "Esporta dati" +fieldAuthor = "Autore (dal PDF)" +fieldDate = "Data" +fieldDocumentName = "Nome documento" +fieldFileHash = "Hash del file (SHA-256)" +fieldIpAddress = "Indirizzo IP" +fieldOperationResults = "Risultati dell'operazione" +fieldOutcome = "Esito (Successo/Fallimento)" +fieldTool = "Strumento" +fieldUsername = "Nome utente" filterByType = "Filtra per tipo" filterByUser = "Filtra per utente" filters = "Filtri (opzionale)" format = "Formato di esportazione" +selectFields = "Seleziona i campi da includere" startDate = "Data di inizio" title = "Esporta dati di audit" +verboseRequired = "Richiede livello di audit VERBOSE" [audit.systemStatus] +autoRefresh = "Aggiornamento automatico" +autoRefreshLabel = "Aggiorna automaticamente ogni 30 s" +captureBySettings = "Abilita nelle impostazioni" +capturedFields = "Campi acquisiti" +date = "Data" days = "giorni" disabled = "Disabilitato" +documentName = "Nome documento" enabled = "Abilitato" +fileHash = "Hash del file" level = "Livello di audit" +pdfAuthor = "Autore PDF" retention = "Periodo di conservazione" status = "Registrazione dell'audit" title = "Stato del sistema" +tool = "Strumento" totalEvents = "Eventi totali" +username = "Nome utente" +verboseOnly = "Solo VERBOSE" + +[audit.stats] +activeUsers = "Utenti attivi" +attention = "Richiede attenzione" +avgLatency = "Latenza media" +error = "Errore nel caricamento delle statistiche" +errorLoadingStats = "Impossibile caricare le statistiche" +excellent = "Eccellente" +good = "Buono" +noData = "N/D" +successRate = "Tasso di successo" +title = "Riepilogo" +totalEvents = "Eventi totali" +vsLastPeriod = "rispetto al periodo precedente" + +[audit.charts] +byTool = "Strumenti più usati" +byType = "Eventi per tipo" +byUser = "Eventi per utente" +day = "Giorno" +error = "Errore nel caricamento dei grafici" +hourlyActivity = "Attività oraria" +month = "Mese" +noData = "Nessun dato per questo periodo" +overTime = "Eventi nel tempo" +title = "Dashboard di audit" +week = "Settimana" + +[audit.events] +actions = "Azioni" +author = "Autore" +clearFilters = "Azzera" +details = "Dettagli" +documentName = "Documento" +endDate = "Data di fine" +error = "Errore nel caricamento degli eventi" +eventDetails = "Dettagli evento" +failure = "Fallimento" +fileHash = "Hash del file" +filterByType = "Filtra per tipo" +filterByUser = "Filtra per utente" +ipAddress = "Indirizzo IP" +noEvents = "Nessun evento trovato" +outcome = "Stato" +sortAsc = "Ordina crescente" +sortDesc = "Ordina decrescente" +startDate = "Data di inizio" +success = "Successo" +timestamp = "Timestamp" +title = "Eventi di audit" +type = "Tipo" +user = "Utente" +viewDetails = "Visualizza dettagli" + +[audit.filters] +allOutcomes = "Tutti" +failureOnly = "Solo fallimenti" +last7Days = "Ultimi 7 giorni" +last30Days = "Ultimi 30 giorni" +outcomeFilter = "Esito" +quickPresets = "Filtri rapidi" +successOnly = "Solo successi" +thisMonth = "Questo mese" +today = "Oggi" [audit.tabs] +clearData = "Cancella dati" dashboard = "Dashboard" events = "Eventi di audit" export = "Esporta" +[audit.clearData] +cancel = "Annulla" +codeDoesNotMatch = "Il codice non corrisponde" +codePlaceholder = "Digita qui il codice" +confirmationCode = "Codice di conferma" +confirmationRequired = "Elimina tutti i dati di audit" +confirmMessage = "Questo rimuoverà definitivamente tutti i log di audit. Inserisci il codice di conferma qui sotto per procedere." +confirmTitle = "Conferma di voler eliminare" +deleteButton = "Elimina" +enterCode = "Codice di conferma" +enterCodeBelow = "Inserisci il codice esattamente come mostrato sopra (maiuscole/minuscole rilevanti)" +initiateDelete = "Elimina tutti i dati" +irreversible = "IRREVERSIBILE" +success = "Successo" +successMessage = "Tutti i dati di audit sono stati cancellati con successo" +warning1 = "Questa azione non può essere annullata" +warning2 = "L'eliminazione dei dati di audit rimuoverà definitivamente tutti i log storici, inclusi eventi di sicurezza, attività degli utenti e operazioni sui file dal database." + [auth] accessDenied = "Accesso negato" insufficientPermissions = "Non hai l'autorizzazione per eseguire questa azione." @@ -2254,9 +2374,11 @@ copy = "Copia" done = "Fatto" error = "Errore" expand = "Espandi" +learnMore = "Scopri di più" lines = "righe" loading = "Caricamento..." next = "Successivo" +operation = "questa operazione" preview = "Anteprima" previous = "Precedente" refresh = "Aggiorna" @@ -2920,6 +3042,7 @@ copyStack = "Copia traccia dello stack" discordSubmit = "Discord: invia post di supporto" dismissAllErrors = "Chiudi tutti gli errori" encryptedPdfMustRemovePassword = "Questo PDF è crittografato o protetto da password. Si prega di sbloccarlo prima di convertire in PDF/A." +generic = "Si è verificato un errore" github = "Apri un ticket su GitHub" githubSubmit = "GitHub: apri un ticket" incorrectPasswordProvided = "La password del PDF è errata o non è stata fornita." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Il tuo abbonamento è stato aggiornato correttamente. upgradeSuccess = "Pagamento riuscito! Il tuo abbonamento è stato aggiornato. La licenza è stata aggiornata sul tuo server. Riceverai a breve un'email di conferma." upgradeTitle = "Aggiorna a {{planName}}" yearly = "Annuale" +checkoutOpened = "Checkout aperto nel browser" +checkoutInstructions = "Completa l'acquisto nella finestra del browser appena aperta. Dopo il pagamento, torna qui e fai clic sul pulsante qui sotto per aggiornare le informazioni di fatturazione." +refreshBilling = "Ho completato il pagamento - Aggiorna fatturazione" +closeLater = "Lo farò più tardi" [payment.emailStage] continue = "Continua" @@ -4679,6 +4806,13 @@ prompt = "Scegli la pagina per estrarre la tabella" submit = "Estrai" title = "Da PDF a CSV" +[PDFToXLSX] +header = "PDF in Excel" +prompt = "Scegli le pagine da cui estrarre le tabelle" +submit = "Converti" +title = "PDF in Excel (XLSX)" +tags = "foglio di calcolo,excel,xlsx,tabella,estrazione,conversione" + [PDFToHTML] credit = "Questo servizio utilizza pdftohtml per la conversione." header = "Da PDF a HTML" @@ -4835,6 +4969,7 @@ customPricing = "Personalizzato" featureComparison = "Confronto funzionalità" from = "Da" hideComparison = "Nascondi confronto funzionalità" +included = "Incluso" includedInCurrent = "Incluso nel tuo piano" licensedSeats = "Con licenza: {{count}} posti" manage = "Gestisci" @@ -4852,9 +4987,11 @@ title = "Piano attivo" [plan.availablePlans] subtitle = "Scegli il piano adatto alle tue esigenze" +loadError = "Impossibile caricare i prezzi dei piani. Verranno usati i valori predefiniti." title = "Piani disponibili" [plan.enterprise] +siteLicense = "Licenza sito" highlight1 = "Prezzi personalizzati" highlight2 = "Supporto dedicato" highlight3 = "Funzionalità più recenti" @@ -4928,6 +5065,81 @@ keyDescription = "Incolla la chiave di licenza dall'email" success = "Licenza attivata!" successMessage = "La licenza è stata attivata correttamente. Ora puoi chiudere questa finestra." +[plan.team] +name = "Team" +siteLicense = "Licenza sito" + +[credits] +enableOverageBilling = "Abilita fatturazione per eccedenze" +maybeLater = "Forse più tardi" +upgrade = "Aggiorna" + +[credits.modal] +advancedMonitoring = "Monitoraggio avanzato" +allInOneWorkspace = "Workspace PDF tutto-in-uno (visualizzatore, strumenti e agente)" +apiSandbox = "API sandbox" +contactSales = "Contatta il reparto vendite" +creditsRemaining = "{{current}} di {{total}} rimanenti" +creditsThisMonth = "Crediti mensili" +current = "Piano attuale" +customPricing = "Personalizzato" +customSmartFolders = "Cartelle Smart personalizzate" +dedicatedSupportSlas = "Supporto dedicato e SLA" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Tutto in Crediti, più:" +everythingInFree = "Tutto in Free, più:" +fasterThroughput = "Throughput 10x più veloce" +forRegularWork = "Per un uso PDF regolare:" +freeTier = "Piano Free" +fullyPrivateFiles = "File completamente privati" +largeFileProcessing = "Elaborazione file di grandi dimensioni" +managedMemberMessage = "Hai accesso illimitato ai crediti tramite il tuo team. Se hai bisogno di assistenza, contatta il tuo team leader." +managedMemberTitle = "Crediti illimitati" +meteringBillingNote = "I crediti in eccedenza vengono fatturati mensilmente insieme al tuo abbonamento Team. Monitora l'utilizzo in qualsiasi momento nelle impostazioni del tuo account." +meteringExplanation = "Il tuo piano Team include {{credits}} crediti al mese. Quando li esaurisci, la fatturazione per eccedenze fornisce automaticamente crediti aggiuntivi così non devi mai fermarti." +meteringIncluded = "{{credits}} crediti/mese inclusi con Team" +meteringNoCommitment = "Nessun vincolo, annulla in qualsiasi momento" +meteringNeverRunOut = "Non rimanere mai senza crediti" +meteringPayAsYouGo = "Paga solo ciò che usi" +meteringPrice = "Crediti aggiuntivi a {{price}}/credito" +meteringTitle = "Fatturazione a consumo per eccedenze" +monthlyCredits = "crediti mensili" +orgWideAccess = "Controlli di accesso a livello di organizzazione" +overage = "eccedenze" +perMonth = "/mese" +popular = "Popolare" +premiumAiModels = "Modelli AI premium" +prioritySupport = "Supporto prioritario" +privateDocCloud = "Document Cloud privato" +ragFineTuning = "RAG + fine-tuning" +secureApiAccess = "Accesso API sicuro" +selfHostLink = "Consulta la documentazione e i piani" +selfHostPrompt = "Vuoi fare self-hosting?" +standardThroughput = "Throughput standard" +subtitle = "Passa a Team per avere 10x i crediti e un'elaborazione più rapida." +subtitlePro = "Abilita la fatturazione automatica per eccedenze per non rimanere mai senza crediti." +teamLeaderOnly = "Solo i team leader possono abilitare la fatturazione per eccedenze" +teamSubscription = "Team" +titleExhausted = "Hai utilizzato i tuoi crediti gratuiti" +titleExhaustedPro = "Hai esaurito i crediti" +unlimitedApiAccess = "Accesso API illimitato" +unlimitedMonthlyCredits = "Licenza sito" +unlimitedSeats = "Utenti illimitati" + +[credits.modal.features] +everythingInCredits = "Tutto in Crediti, più:" +everythingInFree = "Tutto in Free, più:" +forRegularWork = "Per un uso PDF regolare:" + +[credits.insufficient] +brief = "Crediti insufficienti. Servono {{required}} crediti ma ne hai {{current}}." +freeTier = "Passa a Team per 10x più crediti e fatturazione per eccedenze illimitata." +managedMember = "Contatta il team leader per assistenza." +message = "Non hai abbastanza crediti per eseguire {{tool}}. Attualmente hai {{current}} crediti." +messageWithAmount = "Servono {{required}} crediti per eseguire {{tool}}, ma ne hai solo {{current}}." +teamMember = "Abilita la fatturazione per eccedenze per non rimanere mai senza crediti." +title = "Crediti insufficienti" + [printFile] header = "Stampa file su stampante" submit = "Stampare" @@ -5565,6 +5777,70 @@ user = "Connesso come" saas = "Stirling Cloud" selfhosted = "Self-hosted" +[settings.planBilling] +currentPlan = "Piano attuale" +loading = "Caricamento delle informazioni di fatturazione..." +notAvailable = "Piano e Fatturazione sono disponibili solo quando connessi a Stirling Cloud (modalità SaaS)." +title = "Piano e Fatturazione" + +[settings.planBilling.billing] +manageBilling = "Gestisci fatturazione" +nextBillingDate = "Prossima data di fatturazione" +overageCost = "Costo attuale eccedenze: {{amount}} ({{credits}} crediti)" + +[settings.planBilling.credits] +estimatedCost = "Costo stimato: {{amount}}" +freeTierInfo = "Il piano Free include {{freeCredits}} crediti al mese. Passa a Team per {{teamCredits}} crediti/mese e fatturazione a consumo per le eccedenze." +included = "{{count}} crediti/mese (inclusi)" +noOverage = "Nessun addebito per eccedenze questo mese. Stai usando i tuoi {{count}} crediti inclusi." +overage = "+ {{count}} eccedenze" +overageInfo = "I crediti in eccedenza sono fatturati a {{price}} per credito. Pagherai solo ciò che usi oltre la tua quota mensile." +title = "Utilizzo crediti" + +[settings.planBilling.errors] +fetchFailed = "Impossibile recuperare i dati di fatturazione" +retry = "Riprova" + +[settings.planBilling.status] +active = "Attivo" +canceled = "Annullato" +pastDue = "In ritardo" +trial = "Prova" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Funzionalità e supporto Enterprise personalizzati" +free = "Free" +freeDescription = "50 crediti al mese" +team = "Team" +teamBadge = "Team" +teamDescription = "500 crediti/mese inclusi, fatturazione automatica per eccedenze per un servizio senza interruzioni" +teamTooltipCredits = "Il piano Team include {{credits}} crediti/mese." +teamTooltipFineprint = "Paghi solo ciò che usi oltre i crediti inclusi." +teamTooltipOverage = "La fatturazione automatica per eccedenze a {{price}}/credito garantisce un servizio ininterrotto." + +[settings.planBilling.team] +managedByTeam = "Gestito dal team" +memberCount = "{{count}} membri del team" + +[settings.planBilling.trial] +daysRemaining = "Restano {{days}} giorni" +daysRemainingFull = "La prova termina tra {{days}} giorni" +endDate = "Scade: {{date}}" +endsOn = "Fine prova" +title = "Prova gratuita attiva" + +[settings.planBilling.upgrade] +cta = "Passa a Team" +featureApi = "Accesso API per automazione" +featureCredits = "{{teamCredits}} crediti al mese (vs {{freeCredits}} nel Free)" +featureMembers = "Membri del team illimitati" +featureSupport = "Supporto prioritario" +featureThroughput = "Throughput di elaborazione più rapido" +opensInBrowser = "Si apre nel browser per completare l'upgrade" +subtitle = "Passa a Team per:" +title = "Aggiorna il tuo piano" + [settings.developer] apiKeys = "Chiavi API" title = "Sviluppatore" @@ -5689,6 +5965,9 @@ people = "Persone" teams = "Team" title = "Area di lavoro" +[settings.team] +title = "Team" + [setup] description = "Inizia scegliendo come vuoi usare Stirling PDF" welcome = "Benvenuto in Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "Auto‑divisione con fogli divisori" name = "Foglio divisore" tooltip = "Usa fogli divisori con QR code tra documenti durante la scansione" +[split.methods.byPoster] +name = "Sezioni stampabili" +desc = "Dividi le pagine grandi in formati stampabili" +tooltip = "Divide le pagine sovradimensionate in sezioni più piccole adatte alla stampa su carta standard (A4, Letter, ecc.)" + [split.methods.byPages] desc = "Estrai pagine specifiche (1,3,5-10)" name = "Numeri di pagina" @@ -6029,6 +6313,7 @@ tooltip = "Specifica dimensione massima (es. 10MB, 500KB)" [split.methods.prefix] splitAt = "Dividi a" splitBy = "Dividi per" +splitInto = "Dividi in" [split.methodSelection.tooltip] bullet1 = "Clicca su una scheda metodo per selezionarla" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Seleziona prima un metodo di divisione" chooseMethod = "Scegli metodo" settings = "Impostazioni" +[split.poster] +rightToLeft = "Dividi da destra a sinistra" + +[split.poster.pageSize] +label = "Dimensione pagina di destinazione" +description = "Dimensione delle pagine di output per la stampa" + +[split.poster.xFactor] +label = "Divisioni orizzontali" +description = "Numero di colonne in cui dividere ogni pagina" + +[split.poster.yFactor] +label = "Divisioni verticali" +description = "Numero di righe in cui dividere ogni pagina" + [split.tooltip.byChapters] bullet1 = "Livello segnalibro: livello su cui dividere (1=primo livello)" bullet2 = "Includi metadati: preserva le proprietà del documento" @@ -6085,6 +6385,14 @@ bullet5 = "Abilita la modalità duplex se scansionando entrambi i lati dei fogli text = "Dividi automaticamente i documenti scansionati usando fogli separatori fisici con codici QR. Perfetto per elaborare più documenti scansionati insieme." title = "Dividi per separatore di pagina" +[split.tooltip.byPoster] +bullet1 = "Dimensione pagina di destinazione: scegli la dimensione della carta di output (A4, Letter, ecc.)" +bullet2 = "Divisioni orizzontali/verticali: dimensione della griglia per la suddivisione" +bullet3 = "Da destra a sinistra: inverte l'ordine delle colonne per layout RTL" +bullet4 = "Stampa e assembla i pezzi per creare il tuo poster" +text = "Dividi grandi pagine PDF in sezioni più piccole stampabili, adatte alle dimensioni della carta standard. Perfetto per creare poster da pagine sovradimensionate." +title = "Divisione per stampa poster" + [split.tooltip.byPages] bullet1 = "Punti singoli: 3,7 (divide dopo le pagine 3 e 7)" bullet2 = "Intervalli: 3-8 (divide prima della 3 e dopo la 8)" @@ -6364,9 +6672,13 @@ tags = "acquisizione web,salvataggio pagina,web-to-doc,archivio" title = "URL a PDF" [usage] +aboutUsageAnalytics = "Informazioni sulle analisi di utilizzo" +configureSettings = "Configura impostazioni delle analisi" error = "Errore nel caricamento delle statistiche di utilizzo" noData = "Nessun dato disponibile" noDataMessage = "Nessuna statistica di utilizzo attualmente disponibile." +usageAnalyticsExplanation = "Le analisi di utilizzo tracciano le richieste agli endpoint e i modelli di utilizzo degli strumenti. Insieme al dashboard del logging di audit, ottieni visibilità completa su attività del sistema, prestazioni ed eventi di sicurezza." +viewAuditLogs = "Visualizza log di audit" [usage.chart] title = "Grafico utilizzo endpoint" @@ -6947,3 +7259,278 @@ cancel = "Annulla" confirm = "Estrai" message = "Questo ZIP contiene {{count}} file. Estrarre comunque?" title = "File ZIP di grandi dimensioni" + +[cloudBadge] +tooltip = "Questa operazione utilizzerà i tuoi crediti cloud" + +[team] +cancelInviteError = "Impossibile annullare l'invito" +confirmCancelInvite = "Sei sicuro di voler annullare questo invito?" +confirmLeave = "Sei sicuro di voler lasciare questo team?" +confirmLeaveLeader = "Come team leader, uscire ti rimuoverà dal team. Confermi?" +confirmRemove = "Sei sicuro di voler rimuovere questo membro?" +editName = "Modifica nome del team" +inviteCancelled = "Invito annullato" +inviteError = "Invio dell'invito non riuscito" +inviteSent = "Invito inviato con successo" +leader = "Leader" +leaveButton = "Lascia il team" +leaveError = "Impossibile lasciare il team" +leaveSuccess = "Uscito dal team con successo" +loading = "Caricamento delle informazioni del team..." +memberCount = "{{count}} membri" +memberRemoved = "Membro rimosso con successo" +namePlaceholder = "Inserisci il nome del team" +personal = "Personale" +removeError = "Impossibile rimuovere il membro" +renameError = "Impossibile rinominare il team" +renameSuccess = "Team rinominato con successo" + +[team.invitationBanner] +message = "ti ha invitato a unirti" +acceptButton = "Accetta" +rejectButton = "Rifiuta" + +[team.features] +badge = "Funzionalità Team" +subtitle = "Collabora con il tuo team" +title = "Collaborazione del team" +viewPlans = "Vedi i piani" + +[team.features.billing] +description = "Gestisci fatturazione e abbonamenti" +title = "Gestione fatturazione" + +[team.features.credits] +description = "Pool di crediti condiviso tra tutti i membri" +title = "Crediti condivisi" + +[team.features.dashboard] +description = "Visualizza attività e utilizzo del team" +title = "Dashboard del team" + +[team.features.invite] +description = "Aggiungi membri al tuo team" +title = "Invita membri" + +[team.invite] +cancelLabel = "Annulla" +invalidEmail = "Indirizzo email non valido" +placeholder = "Inserisci l'indirizzo email" +sendButton = "Invia invito" +title = "Invita membro del team" + +[team.members] +emailColumn = "Email" +empty = "Nessun membro del team" +nameColumn = "Nome" +pending = "In sospeso" +remove = "Rimuovi" +roleColumn = "Ruolo" +title = "Membri del team" + +[team.upgrade] +button = "Passa a Team" +description = "Sblocca le funzionalità di collaborazione del team" +title = "Passa al piano Team" + +[provider.oauth2.google] +scope = "Autenticazione di accesso" + +[provider.oauth2.google.clientId] +label = "Client ID" +description = "L'OAuth2 Client ID dalla Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Client Secret" +description = "Il client secret OAuth2 dalla Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Scope" +description = "Scope OAuth2 separati da virgola" + +[provider.oauth2.google.useAsUsername] +label = "Usa come nome utente" +description = "Campo da usare come nome utente (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Autenticazione di accesso" + +[provider.oauth2.github.clientId] +label = "Client ID" +description = "L'OAuth2 Client ID dalle impostazioni sviluppatore di GitHub" + +[provider.oauth2.github.clientSecret] +label = "Client Secret" +description = "Il client secret OAuth2 dalle impostazioni sviluppatore di GitHub" + +[provider.oauth2.github.scopes] +label = "Scope" +description = "Scope OAuth2 separati da virgola" + +[provider.oauth2.github.useAsUsername] +label = "Usa come nome utente" +description = "Campo da usare come nome utente (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Issuer URL" +description = "URL dell'endpoint OpenID Connect Discovery del realm di Keycloak" + +[provider.oauth2.keycloak.clientId] +label = "Client ID" +description = "L'OAuth2 Client ID da Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Client Secret" +description = "Il client secret OAuth2 da Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "Scope" +description = "Scope OAuth2 separati da virgola" + +[provider.oauth2.keycloak.useAsUsername] +label = "Usa come nome utente" +description = "Campo da usare come nome utente (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "OAuth2 generico" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Abilita OAuth2 generico" +description = "Abilita l'autenticazione usando un provider OAuth2 personalizzato" + +[provider.oauth2.generic.provider] +label = "Nome provider" +description = "Il nome del tuo provider OAuth2 (es. Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "Issuer URL" +description = "Provider che supporta OpenID Connect Discovery (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "Client ID" +description = "L'OAuth2 Client ID dal tuo provider" + +[provider.oauth2.generic.clientSecret] +label = "Client Secret" +description = "Il client secret OAuth2 dal tuo provider" + +[provider.oauth2.generic.scopes] +label = "Scope" +description = "Scope OAuth2 separati da virgola" + +[provider.oauth2.generic.useAsUsername] +label = "Usa come nome utente" +description = "Campo da usare come nome utente" + +[provider.oauth2.generic.autoCreateUser] +label = "Creazione utenti automatica" +description = "Crea automaticamente gli account utente al primo login OAuth2" + +[provider.oauth2.generic.blockRegistration] +label = "Blocca registrazione" +description = "Impedisci la registrazione di nuovi utenti tramite OAuth2" + +[provider.smtp] +name = "Posta SMTP" +scope = "Notifiche email" + +[provider.smtp.enabled] +label = "Abilita posta" +description = "Abilita le notifiche email e la funzionalità SMTP" + +[provider.smtp.host] +label = "Host SMTP" +description = "Il nome host o l'indirizzo IP del server SMTP" + +[provider.smtp.port] +label = "Porta SMTP" +description = "Il numero di porta per la connessione SMTP (tipicamente 25, 465 o 587)" + +[provider.smtp.username] +label = "Nome utente SMTP" +description = "Nome utente per l'autenticazione SMTP" + +[provider.smtp.password] +label = "Password SMTP" +description = "Password per l'autenticazione SMTP" + +[provider.smtp.from] +label = "Indirizzo mittente" +description = "L'indirizzo email da usare come mittente" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "Abilita SAML2" +description = "Abilita autenticazione SAML2 (solo Enterprise)" + +[provider.saml2.provider] +label = "Nome provider" +description = "Il nome del tuo provider SAML2" + +[provider.saml2.registrationId] +label = "ID registrazione" +description = "Il nome della tua app Service Provider (SP)" + +[provider.saml2.idpMetadataUri] +label = "IDP Metadata URI" +description = "L'URI dei metadati del tuo provider" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login URL" +description = "L'URL per avviare l'SSO" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout URL" +description = "L'URL per avviare lo SLO" + +[provider.saml2.idpIssuer] +label = "IDP Issuer" +description = "L'ID del tuo provider" + +[provider.saml2.idpCert] +label = "IDP Certificate" +description = "Il percorso del certificato (es.: classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Chiave privata" +description = "Il percorso della tua chiave privata" + +[provider.saml2.spCert] +label = "SP Certificate" +description = "Il percorso del tuo certificato di firma" + +[provider.saml2.autoCreateUser] +label = "Creazione utenti automatica" +description = "Crea automaticamente gli account utente al primo login SAML2" + +[provider.saml2.blockRegistration] +label = "Blocca registrazione" +description = "Impedisci la registrazione di nuovi utenti tramite SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "Importazione file" + +[provider.googledrive.enabled] +label = "Abilita selettore file Google Drive" +description = "Consenti agli utenti di importare file direttamente da Google Drive" + +[provider.googledrive.clientId] +label = "Client ID" +description = "OAuth 2.0 Client ID di Google dalla Google Cloud Console" + +[provider.googledrive.apiKey] +label = "API Key" +description = "Google API Key per Google Picker API dalla Google Cloud Console" + +[provider.googledrive.appId] +label = "App ID" +description = "Google Drive App ID dalla Google Cloud Console" diff --git a/frontend/public/locales/ja-JP/translation.toml b/frontend/public/locales/ja-JP/translation.toml index b692dd92c..9bfa87e27 100644 --- a/frontend/public/locales/ja-JP/translation.toml +++ b/frontend/public/locales/ja-JP/translation.toml @@ -96,6 +96,8 @@ pin = "ファイルをピン留め(ツール実行後も保持)" poweredBy = "提供元" pro = "Pro" processTimeWarning = "警告:この処理はファイルサイズによって1分程度かかることがあります" +processingComplete = "ファイルの準備ができました。" +processingCompleteMultiple = "{{count}} 件のファイルの準備ができました。" property = "プロパティ" quickPosition = "クイック位置" red = "赤" @@ -105,6 +107,7 @@ save = "保存" saveToBrowser = "ブラウザへ保存" saveUnavailable = "この項目は保存できません" seeDockerHub = "Docker Hubを見る" +editSecret = "この値を編集" selectFillter = "-- 選択 --" size = "サイズ" sponsor = "スポンサー" @@ -651,6 +654,7 @@ description = "OAuth2 や SAML などの外部認証プロバイダを構成し disconnect = "切断" disconnected = "プロバイダの切断に成功しました" disconnectError = "プロバイダの切断に失敗しました" +documentation = "ドキュメントを表示" imageResolutionFull = "フル(元のサイズ)" imageResolutionReduced = "縮小(最大 1200px)" linkedServices = "連携済みサービス" @@ -964,6 +968,18 @@ label = "既定のロケール" description = "最大ファイルアップロードサイズ(例: 100MB, 1GB)" label = "ファイルアップロード制限" +[admin.settings.general.hideDisabledTools] +description = "無効なツールをインターフェースから非表示にする" +label = "無効なツールを非表示" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "有効でない場合は Google Drive ボタンを非表示にする" +label = "Google Drive を非表示" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "有効でない場合はモバイル QR スキャナーのボタンを非表示にする" +label = "モバイルスキャナーを非表示" + [admin.settings.general.frontendUrl] description = "フロントエンドのベース URL(例: https://pdf.example.com)。メール招待リンクとモバイルの QR コードアップロードで使用します。空欄の場合はバックエンドの URL を使用します。" label = "フロントエンド URL" @@ -1148,6 +1164,8 @@ title = "セキュリティ" [admin.settings.security.audit] label = "監査ログ" +showDetails = "監査レベルの詳細を表示" +hideDetails = "監査レベルの詳細を非表示" [admin.settings.security.audit.enabled] description = "コンプライアンスとセキュリティ監視のためにユーザー操作とシステムイベントを追跡" @@ -1157,10 +1175,32 @@ label = "監査ログを有効化" description = "0=OFF, 1=BASIC, 2=STANDARD, 3=VERBOSE" label = "監査レベル" +[admin.settings.security.audit.levelDetails] +off = "監査ログなし(重大なセキュリティイベントを除く)" +basic = "PDF ファイル操作(圧縮、分割、結合など)と設定変更。記録内容:操作ステータス(成功/失敗)、メソッドのパラメータ、処理時間。最小限のログ量。" +standard = "BASIC のイベントに加えて、ユーザーのログイン/ログアウト、アカウント変更、一般的な GET リクエスト。ログノイズを抑えるため、継続的なポーリング呼び出し(/auth/me、/app-config、/health など)は除外。多くの環境で最適。" +verbose = "STANDARD のイベントに加えて、継続的なポーリング呼び出し、すべての GET リクエスト、詳細なタイミング。注意:ログ量が多く、パフォーマンスに影響。" + [admin.settings.security.audit.retentionDays] description = "監査ログを保持する日数" label = "監査保管期間(日)" +[admin.settings.security.audit.advancedOptions] +title = "詳細オプション" +description = "以下のオプションは処理時間とメモリ使用量を増加させます。本当に必要な場合のみ有効にしてください。" + +[admin.settings.security.audit.captureFileHash] +description = "アップロードされた PDF ファイルの整合性確認のために SHA-256 ハッシュを抽出します。監査レベルに依存しません。" +label = "ファイルハッシュを取得(SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "処理中に PDF ドキュメントの作者フィールドを抽出します。PDF の解析が必要で、待ち時間が増加します。監査レベルに依存しません。" +label = "PDF の作者メタデータを取得" + +[admin.settings.security.audit.captureOperationResults] +description = "メソッドの戻り値を記録します。非推奨:ログ量とディスク使用量が大幅に増加します。" +label = "処理結果を取得" + [admin.settings.security.csrfDisabled] description = "クロスサイトリクエストフォージェリ保護を無効化(非推奨)" label = "CSRF 保護を無効化" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "添付ファイルの追加" [audit] +configureAudit = "監査ログを設定" +configureAuditMessage = "セキュリティと認証セクションで監査ログのレベル、保持期間、その他の設定を調整します。" disabled = "監査ログは無効です" disabledMessage = "アプリケーション設定で監査ログを有効にして、システムイベントを記録してください。" enterpriseRequired = "エンタープライズライセンスが必要" enterpriseRequiredMessage = "監査ログシステムはエンタープライズ機能です。監査ログと分析にアクセスするには、エンタープライズライセンスにアップグレードしてください。" +goToSettings = "監査設定へ移動" notAvailable = "監査システムは利用できません" notAvailableMessage = "監査システムが未設定または利用できません。" -[audit.charts] -byType = "タイプ別イベント" -byUser = "ユーザー別イベント" -day = "日" -error = "チャートの読み込みエラー" -month = "月" -overTime = "時系列イベント" -title = "監査ダッシュボード" -week = "週" - [audit.error] title = "監査システムの読み込みエラー" -[audit.events] -actions = "操作" -clearFilters = "クリア" -details = "詳細" -endDate = "終了日" -error = "イベントの読み込みエラー" -eventDetails = "イベントの詳細" -filterByType = "タイプでフィルタ" -filterByUser = "ユーザーでフィルタ" -ipAddress = "IP アドレス" -noEvents = "イベントが見つかりません" -startDate = "開始日" -timestamp = "タイムスタンプ" -title = "監査イベント" -type = "タイプ" -user = "ユーザー" -viewDetails = "詳細を表示" - [audit.export] clearFilters = "クリア" description = "監査イベントを CSV または JSON 形式でエクスポートします。フィルターを使用してエクスポート対象を絞り込めます。" endDate = "終了日" error = "データのエクスポートに失敗しました" exportButton = "データをエクスポート" +fieldAuthor = "作者(PDF から)" +fieldDate = "日付" +fieldDocumentName = "ドキュメント名" +fieldFileHash = "ファイルハッシュ(SHA-256)" +fieldIpAddress = "IP アドレス" +fieldOperationResults = "処理結果" +fieldOutcome = "結果(成功/失敗)" +fieldTool = "ツール" +fieldUsername = "ユーザー名" filterByType = "タイプでフィルタ" filterByUser = "ユーザーでフィルタ" filters = "フィルター(任意)" format = "エクスポート形式" +selectFields = "含める項目を選択" startDate = "開始日" title = "監査データのエクスポート" +verboseRequired = "VERBOSE 監査レベルが必要です" [audit.systemStatus] +autoRefresh = "自動更新" +autoRefreshLabel = "30 秒ごとに自動更新" +captureBySettings = "設定で有効化" +capturedFields = "取得項目" +date = "日付" days = "日" disabled = "無効" +documentName = "ドキュメント名" enabled = "有効" +fileHash = "ファイルハッシュ" level = "監査レベル" +pdfAuthor = "PDF の作者" retention = "保持期間" status = "監査ログ" title = "システムステータス" +tool = "ツール" totalEvents = "イベント総数" +username = "ユーザー名" +verboseOnly = "VERBOSE のみ" + +[audit.stats] +activeUsers = "アクティブユーザー" +attention = "要対応" +avgLatency = "平均レイテンシ" +error = "統計の読み込みエラー" +errorLoadingStats = "統計の読み込みに失敗しました" +excellent = "非常に良い" +good = "良好" +noData = "N/A" +successRate = "成功率" +title = "サマリー" +totalEvents = "イベント合計" +vsLastPeriod = "前期間比" + +[audit.charts] +byTool = "よく使われるツール" +byType = "タイプ別イベント" +byUser = "ユーザー別イベント" +day = "日" +error = "チャートの読み込みエラー" +hourlyActivity = "時間帯別アクティビティ" +month = "月" +noData = "この期間のデータはありません" +overTime = "時系列イベント" +title = "監査ダッシュボード" +week = "週" + +[audit.events] +actions = "操作" +author = "作者" +clearFilters = "クリア" +details = "詳細" +documentName = "ドキュメント" +endDate = "終了日" +error = "イベントの読み込みエラー" +eventDetails = "イベントの詳細" +failure = "失敗" +fileHash = "ファイルハッシュ" +filterByType = "タイプでフィルタ" +filterByUser = "ユーザーでフィルタ" +ipAddress = "IP アドレス" +noEvents = "イベントが見つかりません" +outcome = "ステータス" +sortAsc = "昇順で並べ替え" +sortDesc = "降順で並べ替え" +startDate = "開始日" +success = "成功" +timestamp = "タイムスタンプ" +title = "監査イベント" +type = "タイプ" +user = "ユーザー" +viewDetails = "詳細を表示" + +[audit.filters] +allOutcomes = "すべて" +failureOnly = "失敗のみ" +last7Days = "過去 7 日間" +last30Days = "過去 30 日間" +outcomeFilter = "結果" +quickPresets = "クイックフィルター" +successOnly = "成功のみ" +thisMonth = "今月" +today = "今日" [audit.tabs] +clearData = "データを削除" dashboard = "ダッシュボード" events = "監査イベント" export = "エクスポート" +[audit.clearData] +cancel = "キャンセル" +codeDoesNotMatch = "コードが一致しません" +codePlaceholder = "ここにコードを入力" +confirmationCode = "確認コード" +confirmationRequired = "すべての監査データを削除" +confirmMessage = "すべての監査ログが完全に削除されます。続行するには下の確認コードを入力してください。" +confirmTitle = "削除の実行を確認してください" +deleteButton = "削除" +enterCode = "確認コード" +enterCodeBelow = "上に表示されたとおりに正確にコードを入力してください(大文字・小文字を区別)" +initiateDelete = "すべてのデータを削除" +irreversible = "取り消し不可" +success = "成功" +successMessage = "すべての監査データを正常に削除しました" +warning1 = "この操作は元に戻せません" +warning2 = "監査データを削除すると、セキュリティイベント、ユーザーアクティビティ、ファイル操作を含むすべての過去の監査ログがデータベースから完全に削除されます。" + [auth] accessDenied = "アクセス拒否" insufficientPermissions = "この操作を実行する権限がありません。" @@ -2254,9 +2374,11 @@ copy = "コピー" done = "完了" error = "エラー" expand = "展開" +learnMore = "詳細はこちら" lines = "行" loading = "読み込み中..." next = "次へ" +operation = "この操作" preview = "プレビュー" previous = "前へ" refresh = "更新" @@ -2920,6 +3042,7 @@ copyStack = "スタックトレースをコピー" discordSubmit = "Discord - サポート投稿を提出" dismissAllErrors = "すべてのエラーを閉じる" encryptedPdfMustRemovePassword = "この PDF は暗号化またはパスワード保護されています。PDF/A へ変換する前にロックを解除してください。" +generic = "エラーが発生しました" github = "GitHubでチケットを提出" githubSubmit = "GitHub - チケットを提出" incorrectPasswordProvided = "PDF のパスワードが間違っているか指定されていません。" @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "サブスクリプションは正常にアップグレ upgradeSuccess = "支払いに成功しました! サブスクリプションがアップグレードされ、ライセンスがサーバーに更新されました。確認メールをまもなくお送りします。" upgradeTitle = "{{planName}} にアップグレード" yearly = "年額" +checkoutOpened = "ブラウザーでチェックアウトを開きました" +checkoutInstructions = "開いたブラウザーウィンドウで購入手続きを完了してください。支払い完了後、ここに戻り、下のボタンをクリックして請求情報を更新してください。" +refreshBilling = "支払いが完了しました - 請求情報を更新" +closeLater = "後で行う" [payment.emailStage] continue = "続行" @@ -4679,6 +4806,13 @@ prompt = "表を抽出するページを選択" submit = "変換" title = "PDFをCSVに変換" +[PDFToXLSX] +header = "PDF から Excel へ" +prompt = "表を抽出するページを選択" +submit = "変換" +title = "PDF から Excel(XLSX)へ" +tags = "spreadsheet,excel,xlsx,table,extract,convert" + [PDFToHTML] credit = "本サービスはファイル変換にpdftohtmlを使用しています。" header = "PDFをHTMLに変換" @@ -4835,6 +4969,7 @@ customPricing = "カスタム" featureComparison = "機能比較" from = "から" hideComparison = "機能比較を隠す" +included = "含まれる" includedInCurrent = "ご利用中のプランに含まれています" licensedSeats = "ライセンス: {{count}} 席" manage = "管理" @@ -4852,9 +4987,11 @@ title = "アクティブなプラン" [plan.availablePlans] subtitle = "ニーズに合ったプランを選択" +loadError = "プランの価格を読み込めません。既定値を使用します。" title = "利用可能なプラン" [plan.enterprise] +siteLicense = "サイトライセンス" highlight1 = "カスタム価格" highlight2 = "専用サポート" highlight3 = "最新機能" @@ -4928,6 +5065,81 @@ keyDescription = "メールに記載のライセンスキーを貼り付け" success = "ライセンスを有効化しました!" successMessage = "ライセンスは正常に有効化されました。このウィンドウを閉じても構いません。" +[plan.team] +name = "Team" +siteLicense = "サイトライセンス" + +[credits] +enableOverageBilling = "超過課金を有効にする" +maybeLater = "後で" +upgrade = "アップグレード" + +[credits.modal] +advancedMonitoring = "高度なモニタリング" +allInOneWorkspace = "オールインワンの PDF ワークスペース(ビューア、ツール、エージェント)" +apiSandbox = "API サンドボックス" +contactSales = "営業に問い合わせ" +creditsRemaining = "残り {{current}} / {{total}}" +creditsThisMonth = "今月のクレジット" +current = "現在のプラン" +customPricing = "カスタム" +customSmartFolders = "カスタムスマートフォルダー" +dedicatedSupportSlas = "専用サポートと SLA" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Credits の内容に加えて:" +everythingInFree = "Free の内容に加えて:" +fasterThroughput = "スループット 10 倍" +forRegularWork = "通常の PDF 作業向け:" +freeTier = "Free ティア" +fullyPrivateFiles = "完全にプライベートなファイル" +largeFileProcessing = "大容量ファイルの処理" +managedMemberMessage = "チームを通じてクレジットに無制限にアクセスできます。サポートが必要な場合はチームリーダーに連絡してください。" +managedMemberTitle = "無制限のクレジット" +meteringBillingNote = "超過クレジットは Team サブスクリプションと併せて毎月請求されます。アカウント設定でいつでも利用状況を確認できます。" +meteringExplanation = "ご利用の Team プランには毎月 {{credits}} クレジットが含まれます。使い切った場合は、超過課金により自動的にクレジットが追加され、作業が中断されることはありません。" +meteringIncluded = "Team には月 {{credits}} クレジットが含まれます" +meteringNoCommitment = "契約の縛りなし、いつでも解約可能" +meteringNeverRunOut = "クレジット切れの心配なし" +meteringPayAsYouGo = "使った分だけお支払い" +meteringPrice = "追加クレジットは {{price}}/クレジット" +meteringTitle = "使った分だけの超過課金" +monthlyCredits = "月次クレジット" +orgWideAccess = "組織全体のアクセス制御" +overage = "超過" +perMonth = "/月" +popular = "人気" +premiumAiModels = "プレミアム AI モデル" +prioritySupport = "優先サポート" +privateDocCloud = "プライベートドキュメントクラウド" +ragFineTuning = "RAG + ファインチューニング" +secureApiAccess = "セキュアな API アクセス" +selfHostLink = "ドキュメントとプランを確認" +selfHostPrompt = "セルフホストしますか?" +standardThroughput = "標準スループット" +subtitle = "Team にアップグレードして、クレジット 10 倍と高速処理を。" +subtitlePro = "自動超過課金を有効にして、クレジット切れを防ぎましょう。" +teamLeaderOnly = "超過課金を有効にできるのはチームリーダーのみです" +teamSubscription = "Team" +titleExhausted = "無料クレジットを使い切りました" +titleExhaustedPro = "クレジットが不足しています" +unlimitedApiAccess = "API アクセス無制限" +unlimitedMonthlyCredits = "サイトライセンス" +unlimitedSeats = "ユーザー数無制限" + +[credits.modal.features] +everythingInCredits = "Credits の内容に加えて:" +everythingInFree = "Free の内容に加えて:" +forRegularWork = "通常の PDF 作業向け:" + +[credits.insufficient] +brief = "クレジットが不足しています。必要数は {{required}} ですが、保有数は {{current}} です。" +freeTier = "Team にアップグレードして、クレジット 10 倍と無制限の超過課金を。" +managedMember = "サポートが必要な場合はチームリーダーに連絡してください。" +message = "{{tool}} を実行するのに十分なクレジットがありません。現在の保有数は {{current}} クレジットです。" +messageWithAmount = "{{tool}} を実行するには {{required}} クレジットが必要ですが、保有数は {{current}} のみです。" +teamMember = "超過課金を有効にして、クレジット切れを防ぎましょう。" +title = "クレジット不足" + [printFile] header = "ファイルをプリンタで印刷" submit = "プリント" @@ -5565,6 +5777,70 @@ user = "ログイン中:" saas = "Stirling Cloud" selfhosted = "セルフホスト" +[settings.planBilling] +currentPlan = "現在のプラン" +loading = "請求情報を読み込み中..." +notAvailable = "プランと請求は、Stirling Cloud(SaaS モード)に接続している場合にのみ利用できます。" +title = "プランと請求" + +[settings.planBilling.billing] +manageBilling = "請求を管理" +nextBillingDate = "次回の請求日" +overageCost = "現在の超過費用:{{amount}}({{credits}} クレジット)" + +[settings.planBilling.credits] +estimatedCost = "見積もり額:{{amount}}" +freeTierInfo = "Free プランには毎月 {{freeCredits}} クレジットが含まれます。Team にアップグレードすると、{{teamCredits}} クレジット/月と使った分だけの超過課金が利用できます。" +included = "{{count}} クレジット/月(含まれる)" +noOverage = "今月は超過料金はありません。含まれている {{count}} クレジットをご利用中です。" +overage = "+ 超過 {{count}}" +overageInfo = "超過クレジットは 1 クレジットあたり {{price}} で請求されます。月間枠を超えた分のみお支払いください。" +title = "クレジット使用状況" + +[settings.planBilling.errors] +fetchFailed = "請求データを取得できません" +retry = "再試行" + +[settings.planBilling.status] +active = "有効" +canceled = "キャンセル済み" +pastDue = "延滞" +trial = "トライアル" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "エンタープライズ向けのカスタム機能とサポート" +free = "Free" +freeDescription = "月 50 クレジット" +team = "Team" +teamBadge = "Team" +teamDescription = "月 500 クレジットを含み、サービスが途切れない自動超過課金に対応" +teamTooltipCredits = "Team プランには月 {{credits}} クレジットが含まれます。" +teamTooltipFineprint = "含まれるクレジットを超えた分だけお支払いください。" +teamTooltipOverage = "自動超過課金({{price}}/クレジット)でサービスの継続性を確保します。" + +[settings.planBilling.team] +managedByTeam = "チームによって管理" +memberCount = "チームメンバー {{count}} 名" + +[settings.planBilling.trial] +daysRemaining = "残り {{days}} 日" +daysRemainingFull = "トライアルはあと {{days}} 日で終了します" +endDate = "有効期限:{{date}}" +endsOn = "トライアル終了" +title = "無料トライアル中" + +[settings.planBilling.upgrade] +cta = "Team にアップグレード" +featureApi = "自動化のための API アクセス" +featureCredits = "月 {{teamCredits}} クレジット(Free は {{freeCredits}})" +featureMembers = "チームメンバー無制限" +featureSupport = "優先サポート" +featureThroughput = "より高速な処理スループット" +opensInBrowser = "ブラウザーで開いてアップグレードを完了します" +subtitle = "Team にアップグレードすると:" +title = "プランをアップグレード" + [settings.developer] apiKeys = "APIキー" title = "開発者" @@ -5689,6 +5965,9 @@ people = "メンバー" teams = "チーム" title = "ワークスペース" +[settings.team] +title = "Team" + [setup] description = "Stirling PDF の使い方を選んで開始しましょう" welcome = "Stirling PDF へようこそ" @@ -6011,6 +6290,11 @@ desc = "仕切りシートで自動分割" name = "仕切りページ" tooltip = "スキャン時に文書間に QR コードの仕切りシートを使用" +[split.methods.byPoster] +name = "印刷用の分割" +desc = "大きなページを印刷可能なサイズに分割" +tooltip = "大型ページを標準用紙(A4、Letter など)での印刷に適した小さなチャンクに分割します" + [split.methods.byPages] desc = "特定のページを抽出(1,3,5-10)" name = "ページ番号" @@ -6029,6 +6313,7 @@ tooltip = "最大ファイルサイズを指定(例: 10MB, 500KB)" [split.methods.prefix] splitAt = "分割位置:" splitBy = "分割基準:" +splitInto = "に分割" [split.methodSelection.tooltip] bullet1 = "方法カードをクリックして選択" @@ -6048,6 +6333,21 @@ selectMethodFirst = "先に分割方法を選択してください" chooseMethod = "方法を選択" settings = "設定" +[split.poster] +rightToLeft = "右から左へ分割" + +[split.poster.pageSize] +label = "対象の用紙サイズ" +description = "印刷用の出力ページサイズ" + +[split.poster.xFactor] +label = "水平方向の分割数" +description = "各ページを分割する列数" + +[split.poster.yFactor] +label = "垂直方向の分割数" +description = "各ページを分割する行数" + [split.tooltip.byChapters] bullet1 = "ブックマークレベル: どのレベルで分割するか(1=最上位)" bullet2 = "メタデータを含める: 文書プロパティを保持" @@ -6085,6 +6385,14 @@ bullet5 = "仕切りシートの両面をスキャンする場合は両面モー text = "QR コード付きの物理的な仕切りシートを使って、まとめてスキャンした文書を自動分割します。複数文書の同時処理に最適。" title = "仕切りページで分割" +[split.tooltip.byPoster] +bullet1 = "対象の用紙サイズ:出力する用紙サイズ(A4、Letter など)を選択" +bullet2 = "水平/垂直の分割数:分割用のグリッドサイズ" +bullet3 = "右から左:RTL レイアウト用に列順を反転" +bullet4 = "印刷して組み合わせればポスターが作成できます" +text = "大きな PDF ページを標準的な用紙サイズで印刷可能な小さなチャンクに分割します。大型ページからポスター印刷を作成するのに最適です。" +title = "ポスター印刷用に分割" + [split.tooltip.byPages] bullet1 = "単一の分割点: 3,7(3ページ目と7ページ目の後で分割)" bullet2 = "範囲の分割点: 3-8(3ページ目の前と8ページ目の後で分割)" @@ -6364,9 +6672,13 @@ tags = "ウェブキャプチャ,ページ保存,Web→ドキュメント,アー title = "URLをPDFに変換" [usage] +aboutUsageAnalytics = "利用状況分析について" +configureSettings = "分析設定を構成" error = "利用状況の読み込みエラー" noData = "利用可能なデータがありません" noDataMessage = "現在、利用統計はありません。" +usageAnalyticsExplanation = "利用状況分析はエンドポイントリクエストとツールの利用パターンを追跡します。監査ログのダッシュボードと組み合わせることで、システムのアクティビティ、パフォーマンス、セキュリティイベントを包括的に可視化できます。" +viewAuditLogs = "監査ログを表示" [usage.chart] title = "エンドポイント利用チャート" @@ -6947,3 +7259,278 @@ cancel = "キャンセル" confirm = "展開" message = "このZIPには{{count}}個のファイルが含まれています。展開しますか?" title = "大きな ZIP ファイル" + +[cloudBadge] +tooltip = "この操作はクラウドクレジットを消費します" + +[team] +cancelInviteError = "招待の取り消しに失敗しました" +confirmCancelInvite = "この招待を取り消してもよろしいですか?" +confirmLeave = "このチームから退出してもよろしいですか?" +confirmLeaveLeader = "あなたはチームリーダーです。退出するとチームから削除されます。よろしいですか?" +confirmRemove = "このメンバーを削除してもよろしいですか?" +editName = "チーム名を編集" +inviteCancelled = "招待を取り消しました" +inviteError = "招待の送信に失敗しました" +inviteSent = "招待を送信しました" +leader = "リーダー" +leaveButton = "チームを退出" +leaveError = "チームの退出に失敗しました" +leaveSuccess = "チームを退出しました" +loading = "チーム情報を読み込み中..." +memberCount = "{{count}} 名のメンバー" +memberRemoved = "メンバーを削除しました" +namePlaceholder = "チーム名を入力" +personal = "個人" +removeError = "メンバーの削除に失敗しました" +renameError = "チーム名の変更に失敗しました" +renameSuccess = "チーム名を変更しました" + +[team.invitationBanner] +message = "があなたを招待しました" +acceptButton = "承認" +rejectButton = "辞退" + +[team.features] +badge = "Team の機能" +subtitle = "チームでコラボレーション" +title = "チームコラボレーション" +viewPlans = "プランを見る" + +[team.features.billing] +description = "請求とサブスクリプションを管理" +title = "請求管理" + +[team.features.credits] +description = "メンバー全員で共有するクレジットプール" +title = "共有クレジット" + +[team.features.dashboard] +description = "チームのアクティビティと利用状況を表示" +title = "チームダッシュボード" + +[team.features.invite] +description = "チームにメンバーを追加" +title = "メンバーを招待" + +[team.invite] +cancelLabel = "キャンセル" +invalidEmail = "無効なメールアドレスです" +placeholder = "メールアドレスを入力" +sendButton = "招待を送信" +title = "チームメンバーを招待" + +[team.members] +emailColumn = "メールアドレス" +empty = "まだチームメンバーがいません" +nameColumn = "名前" +pending = "保留" +remove = "削除" +roleColumn = "役割" +title = "チームメンバー" + +[team.upgrade] +button = "Team にアップグレード" +description = "チームコラボレーション機能を利用可能に" +title = "Team プランにアップグレード" + +[provider.oauth2.google] +scope = "サインイン認証" + +[provider.oauth2.google.clientId] +label = "クライアント ID" +description = "Google Cloud Console の OAuth2 クライアント ID" + +[provider.oauth2.google.clientSecret] +label = "クライアントシークレット" +description = "Google Cloud Console の OAuth2 クライアントシークレット" + +[provider.oauth2.google.scopes] +label = "スコープ" +description = "カンマ区切りの OAuth2 スコープ" + +[provider.oauth2.google.useAsUsername] +label = "ユーザー名として使用" +description = "ユーザー名として使用するフィールド(email、name、given_name、family_name)" + +[provider.oauth2.github] +scope = "サインイン認証" + +[provider.oauth2.github.clientId] +label = "クライアント ID" +description = "GitHub Developer Settings の OAuth2 クライアント ID" + +[provider.oauth2.github.clientSecret] +label = "クライアントシークレット" +description = "GitHub Developer Settings の OAuth2 クライアントシークレット" + +[provider.oauth2.github.scopes] +label = "スコープ" +description = "カンマ区切りの OAuth2 スコープ" + +[provider.oauth2.github.useAsUsername] +label = "ユーザー名として使用" +description = "ユーザー名として使用するフィールド(email、login、name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Issuer URL" +description = "Keycloak レルムの OpenID Connect Discovery エンドポイントの URL" + +[provider.oauth2.keycloak.clientId] +label = "クライアント ID" +description = "Keycloak の OAuth2 クライアント ID" + +[provider.oauth2.keycloak.clientSecret] +label = "クライアントシークレット" +description = "Keycloak の OAuth2 クライアントシークレット" + +[provider.oauth2.keycloak.scopes] +label = "スコープ" +description = "カンマ区切りの OAuth2 スコープ" + +[provider.oauth2.keycloak.useAsUsername] +label = "ユーザー名として使用" +description = "ユーザー名として使用するフィールド(email、name、given_name、family_name、preferred_username)" + +[provider.oauth2.generic] +name = "汎用 OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "汎用 OAuth2 を有効化" +description = "カスタム OAuth2 プロバイダーを使用した認証を有効化" + +[provider.oauth2.generic.provider] +label = "プロバイダー名" +description = "OAuth2 プロバイダー名(例:Azure AD、Okta)" + +[provider.oauth2.generic.issuer] +label = "Issuer URL" +description = "OpenID Connect Discovery(/.well-known/openid-configuration)対応のプロバイダー" + +[provider.oauth2.generic.clientId] +label = "クライアント ID" +description = "プロバイダーの OAuth2 クライアント ID" + +[provider.oauth2.generic.clientSecret] +label = "クライアントシークレット" +description = "プロバイダーの OAuth2 クライアントシークレット" + +[provider.oauth2.generic.scopes] +label = "スコープ" +description = "カンマ区切りの OAuth2 スコープ" + +[provider.oauth2.generic.useAsUsername] +label = "ユーザー名として使用" +description = "ユーザー名として使用するフィールド" + +[provider.oauth2.generic.autoCreateUser] +label = "ユーザーを自動作成" +description = "初回の OAuth2 ログイン時にユーザーアカウントを自動作成" + +[provider.oauth2.generic.blockRegistration] +label = "登録をブロック" +description = "OAuth2 経由での新規ユーザー登録を禁止" + +[provider.smtp] +name = "SMTP メール" +scope = "メール通知" + +[provider.smtp.enabled] +label = "メールを有効化" +description = "メール通知と SMTP 機能を有効化" + +[provider.smtp.host] +label = "SMTP ホスト" +description = "SMTP サーバーのホスト名または IP アドレス" + +[provider.smtp.port] +label = "SMTP ポート" +description = "SMTP 接続のポート番号(通常 25、465、587)" + +[provider.smtp.username] +label = "SMTP ユーザー名" +description = "SMTP 認証のユーザー名" + +[provider.smtp.password] +label = "SMTP パスワード" +description = "SMTP 認証のパスワード" + +[provider.smtp.from] +label = "送信元アドレス" +description = "送信者として使用するメールアドレス" + +[provider.saml2] +name = "SAML2" +scope = "SSO(SAML)" + +[provider.saml2.enabled] +label = "SAML2 を有効化" +description = "SAML2 認証を有効化(Enterprise のみ)" + +[provider.saml2.provider] +label = "プロバイダー名" +description = "SAML2 プロバイダー名" + +[provider.saml2.registrationId] +label = "登録 ID" +description = "Service Provider(SP)アプリ名" + +[provider.saml2.idpMetadataUri] +label = "IDP メタデータ URI" +description = "プロバイダーのメタデータ用 URI" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP シングルログイン URL" +description = "SSO を開始するための URL" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP シングルログアウト URL" +description = "SLO を開始するための URL" + +[provider.saml2.idpIssuer] +label = "IDP Issuer" +description = "プロバイダーの ID" + +[provider.saml2.idpCert] +label = "IDP 証明書" +description = "証明書のパス(例:classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "秘密鍵" +description = "秘密鍵のパス" + +[provider.saml2.spCert] +label = "SP 証明書" +description = "署名証明書のパス" + +[provider.saml2.autoCreateUser] +label = "ユーザーを自動作成" +description = "初回の SAML2 ログイン時にユーザーアカウントを自動作成" + +[provider.saml2.blockRegistration] +label = "登録をブロック" +description = "SAML2 経由での新規ユーザー登録を禁止" + +[provider.googledrive] +name = "Google Drive" +scope = "ファイルのインポート" + +[provider.googledrive.enabled] +label = "Google Drive ファイルピッカーを有効化" +description = "ユーザーが Google Drive から直接ファイルをインポートできるようにする" + +[provider.googledrive.clientId] +label = "クライアント ID" +description = "Google Cloud Console の Google OAuth 2.0 クライアント ID" + +[provider.googledrive.apiKey] +label = "API キー" +description = "Google Cloud Console の Google Picker API 用 Google API キー" + +[provider.googledrive.appId] +label = "アプリ ID" +description = "Google Cloud Console の Google Drive アプリ ID" diff --git a/frontend/public/locales/ko-KR/translation.toml b/frontend/public/locales/ko-KR/translation.toml index 88348c1ed..de8d47545 100644 --- a/frontend/public/locales/ko-KR/translation.toml +++ b/frontend/public/locales/ko-KR/translation.toml @@ -96,6 +96,8 @@ pin = "파일 고정(도구 실행 후에도 유지)" poweredBy = "제공" pro = "프로" processTimeWarning = "경고: 이 과정은 파일 크기에 따라 최대 1분이 소요될 수 있습니다" +processingComplete = "파일이 준비되었습니다." +processingCompleteMultiple = "{{count}}개의 파일이 준비되었습니다." property = "속성" quickPosition = "빠른 위치" red = "빨강" @@ -105,6 +107,7 @@ save = "저장" saveToBrowser = "브라우저에 저장" saveUnavailable = "이 항목은 저장할 수 없습니다" seeDockerHub = "Docker Hub 보기" +editSecret = "이 값 편집" selectFillter = "-- 선택 --" size = "크기" sponsor = "후원" @@ -651,6 +654,7 @@ description = "OAuth2 및 SAML 같은 외부 인증 제공자를 구성합니다 disconnect = "연결 해제" disconnected = "제공자가 성공적으로 연결 해제되었습니다" disconnectError = "제공자 연결 해제에 실패했습니다" +documentation = "문서 보기" imageResolutionFull = "전체(원본 크기)" imageResolutionReduced = "축소(최대 1200px)" linkedServices = "연결된 서비스" @@ -964,6 +968,18 @@ label = "기본 로케일" description = "최대 파일 업로드 크기(예: 100MB, 1GB)" label = "파일 업로드 제한" +[admin.settings.general.hideDisabledTools] +description = "인터페이스에서 비활성화된 도구를 숨깁니다" +label = "비활성화된 도구 숨기기" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "활성화되지 않은 경우 Google Drive 버튼 숨기기" +label = "Google Drive 숨기기" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "활성화되지 않은 경우 모바일 QR 스캐너 버튼 숨기기" +label = "모바일 스캐너 숨기기" + [admin.settings.general.frontendUrl] description = "프런트엔드의 기본 URL(예: https://pdf.example.com). 이메일 초대 링크와 모바일 QR 코드 업로드에 사용됩니다. 비워 두면 백엔드 URL을 사용합니다." label = "프런트엔드 URL" @@ -1148,6 +1164,8 @@ title = "보안" [admin.settings.security.audit] label = "감사 로깅" +showDetails = "감사 수준 세부정보 표시" +hideDetails = "감사 수준 세부정보 숨기기" [admin.settings.security.audit.enabled] description = "컴플라이언스 및 보안 모니터링을 위해 사용자 동작과 시스템 이벤트를 추적" @@ -1157,10 +1175,32 @@ label = "감사 로깅 활성화" description = "0=OFF, 1=BASIC, 2=STANDARD, 3=VERBOSE" label = "감사 수준" +[admin.settings.security.audit.levelDetails] +off = "감사 로깅 없음(중요 보안 이벤트 제외)" +basic = "PDF 파일 작업(압축, 분할, 병합 등) 및 설정 변경. 캡처: 작업 상태(성공/실패), 메서드 매개변수, 시간. 최소 로그 용량." +standard = "BASIC 이벤트에 추가: 사용자 로그인/로그아웃, 계정 변경, 일반 GET 요청. 로그 소음을 줄이기 위해 지속 폴링 호출(/auth/me, /app-config, /health 등)은 제외. 대부분의 배포에 적합." +verbose = "STANDARD 이벤트에 추가: 지속 폴링 호출, 모든 GET 요청, 상세 타이밍. 경고: 로그 용량 증가 및 성능 영향." + [admin.settings.security.audit.retentionDays] description = "감사 로그를 보존할 기간(일)" label = "감사 로그 보존 기간(일)" +[admin.settings.security.audit.advancedOptions] +title = "고급 옵션" +description = "다음 옵션은 처리 시간과 메모리 사용량을 증가시킵니다. 꼭 필요한 경우에만 활성화하세요." + +[admin.settings.security.audit.captureFileHash] +description = "무결성 검증을 위해 업로드된 PDF 파일의 SHA-256 해시를 추출합니다. 감사 수준과 무관합니다." +label = "파일 해시 수집(SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "처리 중 PDF 문서의 작성자 필드를 추출합니다. PDF 파싱이 필요하며 지연이 증가합니다. 감사 수준과 무관합니다." +label = "PDF 작성자 메타데이터 수집" + +[admin.settings.security.audit.captureOperationResults] +description = "메서드 반환 값을 수집합니다. 비권장: 로그 용량과 디스크 사용량이 크게 증가합니다." +label = "작업 결과 수집" + [admin.settings.security.csrfDisabled] description = "교차 사이트 요청 위조 보호를 비활성화합니다(권장하지 않음)" label = "CSRF 보호 비활성화" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "감사 로깅 구성" +configureAuditMessage = "보안 및 인증 섹션에서 감사 로깅 수준, 보존 기간 및 기타 설정을 조정하세요." disabled = "감사 로깅이 비활성화되었습니다" disabledMessage = "시스템 이벤트를 추적하려면 애플리케이션 구성에서 감사 로깅을 활성화하세요." enterpriseRequired = "엔터프라이즈 라이선스 필요" enterpriseRequiredMessage = "감사 로깅 시스템은 엔터프라이즈 기능입니다. 감사 로그와 분석에 접근하려면 엔터프라이즈 라이선스로 업그레이드하세요." +goToSettings = "감사 설정으로 이동" notAvailable = "감사 시스템을 사용할 수 없습니다" notAvailableMessage = "감사 시스템이 구성되어 있지 않거나 사용할 수 없습니다." -[audit.charts] -byType = "유형별 이벤트" -byUser = "사용자별 이벤트" -day = "일간" -error = "차트를 불러오는 중 오류" -month = "월간" -overTime = "시간 경과에 따른 이벤트" -title = "감사 대시보드" -week = "주간" - [audit.error] title = "감사 시스템을 불러오는 중 오류" -[audit.events] -actions = "작업" -clearFilters = "초기화" -details = "세부정보" -endDate = "종료 날짜" -error = "이벤트를 불러오는 중 오류" -eventDetails = "이벤트 세부정보" -filterByType = "유형별 필터" -filterByUser = "사용자별 필터" -ipAddress = "IP 주소" -noEvents = "이벤트가 없습니다" -startDate = "시작 날짜" -timestamp = "타임스탬프" -title = "감사 이벤트" -type = "유형" -user = "사용자" -viewDetails = "자세히 보기" - [audit.export] clearFilters = "초기화" description = "감사 이벤트를 CSV 또는 JSON 형식으로 내보냅니다. 필터를 사용해 내보낼 데이터를 제한하세요." endDate = "종료 날짜" error = "데이터 내보내기에 실패했습니다" exportButton = "데이터 내보내기" +fieldAuthor = "작성자(PDF에서)" +fieldDate = "날짜" +fieldDocumentName = "문서명" +fieldFileHash = "파일 해시(SHA-256)" +fieldIpAddress = "IP 주소" +fieldOperationResults = "작업 결과" +fieldOutcome = "결과(성공/실패)" +fieldTool = "도구" +fieldUsername = "사용자 이름" filterByType = "유형으로 필터링" filterByUser = "사용자로 필터링" filters = "필터(선택 사항)" format = "내보내기 형식" +selectFields = "포함할 필드 선택" startDate = "시작 날짜" title = "감사 데이터 내보내기" +verboseRequired = "VERBOSE 감사 수준 필요" [audit.systemStatus] +autoRefresh = "자동 새로고침" +autoRefreshLabel = "30초마다 자동 새로고침" +captureBySettings = "설정에서 활성화" +capturedFields = "수집된 필드" +date = "날짜" days = "일" disabled = "비활성화됨" +documentName = "문서명" enabled = "활성화됨" +fileHash = "파일 해시" level = "감사 수준" +pdfAuthor = "PDF 작성자" retention = "보존 기간" status = "감사 로깅" title = "시스템 상태" +tool = "도구" totalEvents = "총 이벤트" +username = "사용자 이름" +verboseOnly = "VERBOSE 전용" + +[audit.stats] +activeUsers = "활성 사용자" +attention = "조치 필요" +avgLatency = "평균 지연 시간" +error = "통계 로드 오류" +errorLoadingStats = "통계를 불러오지 못했습니다" +excellent = "우수" +good = "양호" +noData = "해당 없음" +successRate = "성공률" +title = "요약" +totalEvents = "총 이벤트" +vsLastPeriod = "지난 기간 대비" + +[audit.charts] +byTool = "주요 사용 도구" +byType = "유형별 이벤트" +byUser = "사용자별 이벤트" +day = "일간" +error = "차트를 불러오는 중 오류" +hourlyActivity = "시간대별 활동" +month = "월간" +noData = "이 기간에 대한 데이터가 없습니다" +overTime = "시간 경과에 따른 이벤트" +title = "감사 대시보드" +week = "주간" + +[audit.events] +actions = "작업" +author = "작성자" +clearFilters = "초기화" +details = "세부정보" +documentName = "문서" +endDate = "종료 날짜" +error = "이벤트를 불러오는 중 오류" +eventDetails = "이벤트 세부정보" +failure = "실패" +fileHash = "파일 해시" +filterByType = "유형별 필터" +filterByUser = "사용자별 필터" +ipAddress = "IP 주소" +noEvents = "이벤트가 없습니다" +outcome = "상태" +sortAsc = "오름차순 정렬" +sortDesc = "내림차순 정렬" +startDate = "시작 날짜" +success = "성공" +timestamp = "타임스탬프" +title = "감사 이벤트" +type = "유형" +user = "사용자" +viewDetails = "자세히 보기" + +[audit.filters] +allOutcomes = "전체" +failureOnly = "실패만" +last7Days = "지난 7일" +last30Days = "지난 30일" +outcomeFilter = "결과" +quickPresets = "빠른 필터" +successOnly = "성공만" +thisMonth = "이번 달" +today = "오늘" [audit.tabs] +clearData = "데이터 지우기" dashboard = "대시보드" events = "감사 이벤트" export = "내보내기" +[audit.clearData] +cancel = "취소" +codeDoesNotMatch = "코드가 일치하지 않습니다" +codePlaceholder = "여기에 코드를 입력하세요" +confirmationCode = "확인 코드" +confirmationRequired = "모든 감사 데이터 삭제" +confirmMessage = "모든 감사 로그가 영구적으로 삭제됩니다. 계속하려면 아래에 확인 코드를 입력하세요." +confirmTitle = "삭제하시겠습니까?" +deleteButton = "삭제" +enterCode = "확인 코드" +enterCodeBelow = "위에 표시된 대로 정확히 입력하세요(대소문자 구분)" +initiateDelete = "모든 데이터 삭제" +irreversible = "되돌릴 수 없음" +success = "성공" +successMessage = "모든 감사 데이터가 성공적으로 삭제되었습니다" +warning1 = "이 작업은 취소할 수 없습니다" +warning2 = "감사 데이터를 삭제하면 데이터베이스에서 보안 이벤트, 사용자 활동, 파일 작업을 포함한 모든 과거 감사 로그가 영구적으로 제거됩니다." + [auth] accessDenied = "접근 거부" insufficientPermissions = "이 작업을 수행할 권한이 없습니다." @@ -2254,9 +2374,11 @@ copy = "복사" done = "완료" error = "오류" expand = "펼치기" +learnMore = "자세히 알아보기" lines = "줄" loading = "불러오는 중..." next = "다음" +operation = "이 작업" preview = "미리보기" previous = "이전" refresh = "새로고침" @@ -2920,6 +3042,7 @@ copyStack = "스택 추적 복사" discordSubmit = "Discord - 지원 게시물 작성" dismissAllErrors = "모든 오류 닫기" encryptedPdfMustRemovePassword = "이 PDF는 암호화되었거나 암호로 보호되어 있습니다. PDF/A로 변환하기 전에 잠금을 해제해 주세요." +generic = "오류가 발생했습니다" github = "GitHub에서 티켓 제출" githubSubmit = "GitHub - 티켓 제출" incorrectPasswordProvided = "PDF 암호가 없거나 올바르지 않습니다." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "구독이 성공적으로 업그레이드되었습니 upgradeSuccess = "결제가 완료되었습니다! 구독이 업그레이드되었습니다. 라이선스가 서버에 업데이트되었습니다. 곧 확인 이메일이 발송됩니다." upgradeTitle = "{{planName}}로 업그레이드" yearly = "연간" +checkoutOpened = "브라우저에서 결제 페이지가 열렸습니다" +checkoutInstructions = "방금 열린 브라우저 창에서 결제를 완료하세요. 결제가 완료되면 여기로 돌아와 아래 버튼을 클릭해 결제 정보를 새로고침하세요." +refreshBilling = "결제 완료 - 청구 정보 새로고침" +closeLater = "나중에 할게요" [payment.emailStage] continue = "계속" @@ -4679,6 +4806,13 @@ prompt = "표를 추출할 페이지 선택" submit = "추출" title = "PDF를 CSV로" +[PDFToXLSX] +header = "PDF를 Excel로" +prompt = "표를 추출할 페이지를 선택하세요" +submit = "변환" +title = "PDF를 Excel(XLSX)로" +tags = "스프레드시트,excel,xlsx,표,추출,변환" + [PDFToHTML] credit = "이 서비스는 파일 변환을 위해 pdftohtml을 사용합니다." header = "PDF를 HTML로" @@ -4835,6 +4969,7 @@ customPricing = "맞춤" featureComparison = "기능 비교" from = "시작가" hideComparison = "기능 비교 숨기기" +included = "포함됨" includedInCurrent = "현재 플랜에 포함됨" licensedSeats = "라이선스: {{count}} 좌석" manage = "관리" @@ -4852,9 +4987,11 @@ title = "활성 요금제" [plan.availablePlans] subtitle = "필요에 맞는 요금제를 선택하세요" +loadError = "요금제 가격을 불러올 수 없습니다. 기본값을 사용합니다." title = "이용 가능한 요금제" [plan.enterprise] +siteLicense = "사이트 라이선스" highlight1 = "맞춤 가격" highlight2 = "전담 지원" highlight3 = "최신 기능" @@ -4928,6 +5065,81 @@ keyDescription = "이메일의 라이선스 키를 붙여넣으세요" success = "라이선스 활성화됨!" successMessage = "라이선스가 성공적으로 활성화되었습니다. 이제 이 창을 닫아도 됩니다." +[plan.team] +name = "Team" +siteLicense = "사이트 라이선스" + +[credits] +enableOverageBilling = "초과 청구 사용" +maybeLater = "나중에 할래요" +upgrade = "업그레이드" + +[credits.modal] +advancedMonitoring = "고급 모니터링" +allInOneWorkspace = "올인원 PDF 작업 공간(뷰어, 도구 & 에이전트)" +apiSandbox = "API 샌드박스" +contactSales = "영업팀 문의" +creditsRemaining = "{{total}} 중 {{current}} 남음" +creditsThisMonth = "월간 크레딧" +current = "현재 요금제" +customPricing = "맞춤형" +customSmartFolders = "맞춤형 스마트 폴더" +dedicatedSupportSlas = "전담 지원 및 SLA" +enterpriseSubscription = "Enterprise" +everythingInCredits = "크레딧 요금제의 모든 기능에 추가:" +everythingInFree = "무료 요금제의 모든 기능에 추가:" +fasterThroughput = "처리량 10배 향상" +forRegularWork = "일상적인 PDF 작업용:" +freeTier = "무료 요금제" +fullyPrivateFiles = "파일 완전 비공개" +largeFileProcessing = "대용량 파일 처리" +managedMemberMessage = "팀을 통해 크레딧에 무제한으로 액세스할 수 있습니다. 도움이 필요하면 팀 리더에게 문의하세요." +managedMemberTitle = "무제한 크레딧" +meteringBillingNote = "초과 크레딧은 팀 구독과 함께 매월 청구됩니다. 계정 설정에서 언제든 사용량을 확인하세요." +meteringExplanation = "팀 요금제에는 월 {{credits}} 크레딧이 포함됩니다. 다 사용하면 초과 청구로 자동으로 크레딧이 추가되어 작업이 중단되지 않습니다." +meteringIncluded = "Team 요금제에 월 {{credits}} 크레딧 포함" +meteringNoCommitment = "약정 없음, 언제든 취소 가능" +meteringNeverRunOut = "크레딧이 부족해지지 않음" +meteringPayAsYouGo = "사용한 만큼만 결제" +meteringPrice = "추가 크레딧 {{price}}/크레딧" +meteringTitle = "사용량 기반 초과 청구" +monthlyCredits = "월간 크레딧" +orgWideAccess = "조직 전체 액세스 제어" +overage = "초과분" +perMonth = "/월" +popular = "인기" +premiumAiModels = "프리미엄 AI 모델" +prioritySupport = "우선 지원" +privateDocCloud = "프라이빗 문서 클라우드" +ragFineTuning = "RAG + 파인튜닝" +secureApiAccess = "보안 API 액세스" +selfHostLink = "문서와 요금제를 확인하세요" +selfHostPrompt = "자가 호스팅을 원하시나요?" +standardThroughput = "표준 처리량" +subtitle = "Team으로 업그레이드하면 크레딧이 10배, 처리 속도가 더 빨라집니다." +subtitlePro = "자동 초과 청구를 활성화하여 크레딧이 부족해지지 않도록 하세요." +teamLeaderOnly = "팀 리더만 초과 청구를 활성화할 수 있습니다" +teamSubscription = "Team" +titleExhausted = "무료 크레딧을 모두 사용했습니다" +titleExhaustedPro = "크레딧이 부족합니다" +unlimitedApiAccess = "무제한 API 액세스" +unlimitedMonthlyCredits = "사이트 라이선스" +unlimitedSeats = "무제한 좌석" + +[credits.modal.features] +everythingInCredits = "크레딧 요금제의 모든 기능에 추가:" +everythingInFree = "무료 요금제의 모든 기능에 추가:" +forRegularWork = "일상적인 PDF 작업용:" + +[credits.insufficient] +brief = "크레딧이 부족합니다. {{required}} 크레딧이 필요하지만 보유 크레딧은 {{current}}입니다." +freeTier = "Team으로 업그레이드하면 크레딧이 10배 증가하고 자동 초과 청구를 사용할 수 있습니다." +managedMember = "도움이 필요하면 팀 리더에게 문의하세요." +message = "{{tool}}을(를) 실행하기에 크레딧이 충분하지 않습니다. 현재 {{current}} 크레딧이 있습니다." +messageWithAmount = "{{tool}}을(를) 실행하려면 {{required}} 크레딧이 필요하지만, 현재 {{current}}만 보유하고 있습니다." +teamMember = "크레딧이 부족해지지 않도록 초과 청구를 활성화하세요." +title = "크레딧 부족" + [printFile] header = "프린터로 파일 인쇄" submit = "인쇄" @@ -5565,6 +5777,70 @@ user = "로그인 사용자" saas = "Stirling Cloud" selfhosted = "자가 호스팅" +[settings.planBilling] +currentPlan = "현재 요금제" +loading = "청구 정보를 불러오는 중..." +notAvailable = "Plan & Billing은 Stirling Cloud(SaaS 모드)에 연결된 경우에만 사용할 수 있습니다." +title = "요금제 및 청구" + +[settings.planBilling.billing] +manageBilling = "청구 관리" +nextBillingDate = "다음 청구일" +overageCost = "현재 초과 비용: {{amount}} ({{credits}} 크레딧)" + +[settings.planBilling.credits] +estimatedCost = "예상 비용: {{amount}}" +freeTierInfo = "무료 요금제에는 월 {{freeCredits}} 크레딧이 포함됩니다. Team으로 업그레이드하면 월 {{teamCredits}} 크레딧/월 및 사용량 기반 초과 청구를 이용할 수 있습니다." +included = "월 {{count}} 크레딧(포함)" +noOverage = "이번 달 초과 청구가 없습니다. 포함된 {{count}} 크레딧을 사용 중입니다." +overage = "+ {{count}} 초과분" +overageInfo = "초과 크레딧은 크레딧당 {{price}}로 청구됩니다. 월 할당량을 초과한 사용분만 비용이 청구됩니다." +title = "크레딧 사용량" + +[settings.planBilling.errors] +fetchFailed = "청구 데이터를 가져올 수 없습니다" +retry = "재시도" + +[settings.planBilling.status] +active = "활성" +canceled = "취소됨" +pastDue = "연체" +trial = "체험판" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "맞춤형 엔터프라이즈 기능 및 지원" +free = "Free" +freeDescription = "월 50 크레딧" +team = "Team" +teamBadge = "Team" +teamDescription = "월 500 크레딧 포함, 자동 초과 청구로 중단 없는 서비스" +teamTooltipCredits = "Team 요금제에는 월 {{credits}} 크레딧이 포함됩니다." +teamTooltipFineprint = "포함된 크레딧 초과분에 대해서만 비용을 지불합니다." +teamTooltipOverage = "{{price}}/크레딧의 자동 초과 청구로 서비스가 중단되지 않습니다." + +[settings.planBilling.team] +managedByTeam = "팀에서 관리함" +memberCount = "{{count}}명의 팀원" + +[settings.planBilling.trial] +daysRemaining = "{{days}}일 남음" +daysRemainingFull = "체험판이 {{days}}일 후 종료됩니다" +endDate = "만료: {{date}}" +endsOn = "체험 종료" +title = "무료 체험 사용 중" + +[settings.planBilling.upgrade] +cta = "Team으로 업그레이드" +featureApi = "자동화를 위한 API 액세스" +featureCredits = "월 {{teamCredits}} 크레딧(Free는 월 {{freeCredits}})" +featureMembers = "무제한 팀원" +featureSupport = "우선 지원" +featureThroughput = "더 빠른 처리량" +opensInBrowser = "브라우저에서 열려 업그레이드를 완료합니다" +subtitle = "다음을 위해 Team으로 업그레이드하세요:" +title = "요금제 업그레이드" + [settings.developer] apiKeys = "API 키" title = "개발자" @@ -5689,6 +5965,9 @@ people = "구성원" teams = "팀" title = "워크스페이스" +[settings.team] +title = "팀" + [setup] description = "Stirling PDF를 사용하는 방식을 선택하여 시작하세요" welcome = "Stirling PDF에 오신 것을 환영합니다" @@ -6011,6 +6290,11 @@ desc = "구분지로 자동 분할" name = "구분지" tooltip = "스캔 시 문서 사이에 QR 코드 구분지를 사용하세요" +[split.methods.byPoster] +name = "인쇄용 분할" +desc = "큰 페이지를 인쇄 가능한 크기로 분할합니다" +tooltip = "대형 페이지를 표준 용지(A4, Letter 등)에 인쇄하기 적합한 작은 조각으로 나눕니다" + [split.methods.byPages] desc = "특정 페이지 추출(1,3,5-10)" name = "페이지 번호" @@ -6029,6 +6313,7 @@ tooltip = "최대 파일 크기를 지정하세요(예: 10MB, 500KB)" [split.methods.prefix] splitAt = "다음에서 분할" splitBy = "다음으로 분할" +splitInto = "다음으로 분할" [split.methodSelection.tooltip] bullet1 = "방법 카드를 클릭하여 선택하세요" @@ -6048,6 +6333,21 @@ selectMethodFirst = "먼저 분할 방법을 선택하세요" chooseMethod = "방법 선택" settings = "설정" +[split.poster] +rightToLeft = "오른쪽에서 왼쪽으로 분할" + +[split.poster.pageSize] +label = "대상 페이지 크기" +description = "인쇄용 출력 페이지의 크기" + +[split.poster.xFactor] +label = "가로 분할 수" +description = "각 페이지를 분할할 열의 수" + +[split.poster.yFactor] +label = "세로 분할 수" +description = "각 페이지를 분할할 행의 수" + [split.tooltip.byChapters] bullet1 = "북마크 레벨: 분할할 레벨(1=최상위)" bullet2 = "메타데이터 포함: 문서 속성 유지" @@ -6085,6 +6385,14 @@ bullet5 = "구분지를 양면 스캔할 경우 양면 모드를 활성화하세 text = "QR 코드가 있는 실물 구분지를 사용해 함께 스캔된 문서를 자동으로 분할합니다. 여러 문서를 한 번에 처리하기에 완벽합니다." title = "구분지로 분할" +[split.tooltip.byPoster] +bullet1 = "대상 페이지 크기: 출력 용지 크기 선택(A4, Letter 등)" +bullet2 = "가로/세로 분할 수: 분할용 그리드 크기" +bullet3 = "오른쪽에서 왼쪽: RTL 레이아웃을 위해 열 순서를 반대로 함" +bullet4 = "인쇄한 조각을 조립해 포스터를 만드세요" +text = "대형 PDF 페이지를 표준 용지 크기에 맞는 작은 인쇄용 조각으로 분할합니다. 큰 페이지로 포스터 인쇄를 만들기에 적합합니다." +title = "포스터 인쇄용 분할" + [split.tooltip.byPages] bullet1 = "단일 분할 지점: 3,7 (3페이지와 7페이지 뒤에서 분할)" bullet2 = "범위 분할 지점: 3-8 (3페이지 앞과 8페이지 뒤에서 분할)" @@ -6364,9 +6672,13 @@ tags = "웹-캡처,페이지-저장,웹-문서,아카이브" title = "URL을 PDF로" [usage] +aboutUsageAnalytics = "사용 분석 정보" +configureSettings = "분석 설정 구성" error = "사용 통계를 불러오는 중 오류" noData = "데이터가 없습니다" noDataMessage = "현재 사용 통계가 제공되지 않습니다." +usageAnalyticsExplanation = "사용 분석은 엔드포인트 요청과 도구 사용 패턴을 추적합니다. 감사 로깅 대시보드와 결합하면 시스템 활동, 성능, 보안 이벤트를 완전히 가시화할 수 있습니다." +viewAuditLogs = "감사 로그 보기" [usage.chart] title = "엔드포인트 사용량 차트" @@ -6947,3 +7259,278 @@ cancel = "취소" confirm = "압축 해제" message = "이 ZIP에는 {{count}}개의 파일이 포함되어 있습니다. 그래도 압축을 해제하시겠습니까?" title = "큰 ZIP 파일" + +[cloudBadge] +tooltip = "이 작업은 클라우드 크레딧을 사용합니다" + +[team] +cancelInviteError = "초대를 취소하지 못했습니다" +confirmCancelInvite = "이 초대를 취소하시겠습니까?" +confirmLeave = "정말로 이 팀에서 나가시겠습니까?" +confirmLeaveLeader = "팀 리더로서 나가면 팀에서 제외됩니다. 계속하시겠습니까?" +confirmRemove = "이 구성원을 제거하시겠습니까?" +editName = "팀 이름 편집" +inviteCancelled = "초대가 취소되었습니다" +inviteError = "초대를 보내지 못했습니다" +inviteSent = "초대를 성공적으로 보냈습니다" +leader = "리더" +leaveButton = "팀 나가기" +leaveError = "팀에서 나가지 못했습니다" +leaveSuccess = "팀에서 성공적으로 나갔습니다" +loading = "팀 정보를 불러오는 중..." +memberCount = "{{count}}명" +memberRemoved = "구성원이 제거되었습니다" +namePlaceholder = "팀 이름을 입력하세요" +personal = "개인" +removeError = "구성원을 제거하지 못했습니다" +renameError = "팀 이름을 변경하지 못했습니다" +renameSuccess = "팀 이름이 변경되었습니다" + +[team.invitationBanner] +message = "님이 참여하도록 초대했습니다" +acceptButton = "수락" +rejectButton = "거절" + +[team.features] +badge = "팀 기능" +subtitle = "팀과 함께 협업하세요" +title = "팀 협업" +viewPlans = "요금제 보기" + +[team.features.billing] +description = "청구 및 구독 관리" +title = "청구 관리" + +[team.features.credits] +description = "모든 구성원이 공유하는 크레딧 풀" +title = "공유 크레딧" + +[team.features.dashboard] +description = "팀 활동과 사용량 보기" +title = "팀 대시보드" + +[team.features.invite] +description = "팀에 구성원을 추가하세요" +title = "구성원 초대" + +[team.invite] +cancelLabel = "취소" +invalidEmail = "유효하지 않은 이메일 주소입니다" +placeholder = "이메일 주소를 입력하세요" +sendButton = "초대 보내기" +title = "팀원 초대" + +[team.members] +emailColumn = "이메일" +empty = "아직 팀원이 없습니다" +nameColumn = "이름" +pending = "대기 중" +remove = "제거" +roleColumn = "역할" +title = "팀원" + +[team.upgrade] +button = "Team으로 업그레이드" +description = "팀 협업 기능을 잠금 해제하세요" +title = "Team 요금제로 업그레이드" + +[provider.oauth2.google] +scope = "로그인 인증" + +[provider.oauth2.google.clientId] +label = "클라이언트 ID" +description = "Google Cloud Console의 OAuth2 클라이언트 ID" + +[provider.oauth2.google.clientSecret] +label = "클라이언트 비밀키" +description = "Google Cloud Console의 OAuth2 클라이언트 비밀키" + +[provider.oauth2.google.scopes] +label = "스코프" +description = "쉼표로 구분된 OAuth2 스코프" + +[provider.oauth2.google.useAsUsername] +label = "사용자 이름으로 사용" +description = "사용자 이름으로 사용할 필드 (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "로그인 인증" + +[provider.oauth2.github.clientId] +label = "클라이언트 ID" +description = "GitHub Developer Settings의 OAuth2 클라이언트 ID" + +[provider.oauth2.github.clientSecret] +label = "클라이언트 비밀키" +description = "GitHub Developer Settings의 OAuth2 클라이언트 비밀키" + +[provider.oauth2.github.scopes] +label = "스코프" +description = "쉼표로 구분된 OAuth2 스코프" + +[provider.oauth2.github.useAsUsername] +label = "사용자 이름으로 사용" +description = "사용자 이름으로 사용할 필드 (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "발급자 URL" +description = "Keycloak realm의 OpenID Connect Discovery 엔드포인트 URL" + +[provider.oauth2.keycloak.clientId] +label = "클라이언트 ID" +description = "Keycloak의 OAuth2 클라이언트 ID" + +[provider.oauth2.keycloak.clientSecret] +label = "클라이언트 비밀키" +description = "Keycloak의 OAuth2 클라이언트 비밀키" + +[provider.oauth2.keycloak.scopes] +label = "스코프" +description = "쉼표로 구분된 OAuth2 스코프" + +[provider.oauth2.keycloak.useAsUsername] +label = "사용자 이름으로 사용" +description = "사용자 이름으로 사용할 필드 (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "일반 OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "일반 OAuth2 사용" +description = "사용자 지정 OAuth2 공급자를 사용한 인증을 활성화합니다" + +[provider.oauth2.generic.provider] +label = "공급자 이름" +description = "OAuth2 공급자 이름(예: Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "발급자 URL" +description = "OpenID Connect Discovery(/.well-known/openid-configuration)를 지원하는 공급자" + +[provider.oauth2.generic.clientId] +label = "클라이언트 ID" +description = "공급자의 OAuth2 클라이언트 ID" + +[provider.oauth2.generic.clientSecret] +label = "클라이언트 비밀키" +description = "공급자의 OAuth2 클라이언트 비밀키" + +[provider.oauth2.generic.scopes] +label = "스코프" +description = "쉼표로 구분된 OAuth2 스코프" + +[provider.oauth2.generic.useAsUsername] +label = "사용자 이름으로 사용" +description = "사용자 이름으로 사용할 필드" + +[provider.oauth2.generic.autoCreateUser] +label = "사용자 자동 생성" +description = "첫 OAuth2 로그인 시 사용자 계정을 자동으로 생성합니다" + +[provider.oauth2.generic.blockRegistration] +label = "등록 차단" +description = "OAuth2를 통한 신규 사용자 등록을 방지합니다" + +[provider.smtp] +name = "SMTP 메일" +scope = "이메일 알림" + +[provider.smtp.enabled] +label = "메일 사용" +description = "이메일 알림과 SMTP 기능을 활성화합니다" + +[provider.smtp.host] +label = "SMTP 호스트" +description = "SMTP 서버의 호스트명 또는 IP 주소" + +[provider.smtp.port] +label = "SMTP 포트" +description = "SMTP 연결 포트 번호(일반적으로 25, 465 또는 587)" + +[provider.smtp.username] +label = "SMTP 사용자 이름" +description = "SMTP 인증용 사용자 이름" + +[provider.smtp.password] +label = "SMTP 비밀번호" +description = "SMTP 인증용 비밀번호" + +[provider.smtp.from] +label = "보내는 주소" +description = "발신자 이메일 주소" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "SAML2 사용" +description = "SAML2 인증 활성화(Enterprise 전용)" + +[provider.saml2.provider] +label = "공급자 이름" +description = "SAML2 공급자 이름" + +[provider.saml2.registrationId] +label = "등록 ID" +description = "서비스 공급자(SP) 앱 이름" + +[provider.saml2.idpMetadataUri] +label = "IDP 메타데이터 URI" +description = "공급자 메타데이터의 URI" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP 단일 로그인 URL" +description = "SSO를 시작하는 URL" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP 단일 로그아웃 URL" +description = "SLO를 시작하는 URL" + +[provider.saml2.idpIssuer] +label = "IDP 발급자" +description = "공급자 ID" + +[provider.saml2.idpCert] +label = "IDP 인증서" +description = "인증서 경로(예: classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "개인 키" +description = "개인 키 경로" + +[provider.saml2.spCert] +label = "SP 인증서" +description = "서명 인증서 경로" + +[provider.saml2.autoCreateUser] +label = "사용자 자동 생성" +description = "첫 SAML2 로그인 시 사용자 계정을 자동으로 생성합니다" + +[provider.saml2.blockRegistration] +label = "등록 차단" +description = "SAML2를 통한 신규 사용자 등록을 방지합니다" + +[provider.googledrive] +name = "Google Drive" +scope = "파일 가져오기" + +[provider.googledrive.enabled] +label = "Google Drive 파일 선택기 사용" +description = "사용자가 Google Drive에서 직접 파일을 가져오도록 허용합니다" + +[provider.googledrive.clientId] +label = "클라이언트 ID" +description = "Google Cloud Console의 Google OAuth 2.0 클라이언트 ID" + +[provider.googledrive.apiKey] +label = "API 키" +description = "Google Cloud Console의 Google Picker API용 Google API 키" + +[provider.googledrive.appId] +label = "앱 ID" +description = "Google Cloud Console의 Google Drive 앱 ID" diff --git a/frontend/public/locales/ml-ML/translation.toml b/frontend/public/locales/ml-ML/translation.toml index 06f614da6..cb8bb8ef8 100644 --- a/frontend/public/locales/ml-ML/translation.toml +++ b/frontend/public/locales/ml-ML/translation.toml @@ -96,6 +96,8 @@ pin = "ഫയൽ പിൻ ചെയ്യുക (ടൂൾ പ്രവർത poweredBy = "സഹായത്തോടെ" pro = "പ്രോ" processTimeWarning = "മുന്നറിയിപ്പ്: ഫയൽ വലുപ്പത്തിനനുസരിച്ച് ഈ പ്രക്രിയ ഒരു മിനിറ്റ് വരെ എടുത്തേക്കാം" +processingComplete = "താങ്കളുടെ ഫയൽ തയ്യാറായി." +processingCompleteMultiple = "{{count}} ഫയലുകൾ തയ്യാറായി." property = "പ്രോപ്പർട്ടി" quickPosition = "ദ്രുത സ്ഥാനം" red = "ചുവപ്പ്" @@ -105,6 +107,7 @@ save = "സേവ് ചെയ്യുക" saveToBrowser = "ബ്രൗസറിൽ സേവ് ചെയ്യുക" saveUnavailable = "ഈ ഇനത്തിന് സേവ് ലഭ്യമല്ല" seeDockerHub = "ഡോക്കർ ഹബ് കാണുക" +editSecret = "ഈ മൂല്യം തിരുത്തുക" selectFillter = "-- തിരഞ്ഞെടുക്കുക --" size = "വലിപ്പം" sponsor = "സ്പോൺസർ ചെയ്യുക" @@ -651,6 +654,7 @@ description = "OAuth2, SAML പോലെയുള്ള ബാഹ്യ ഓത disconnect = "ഡിസ്കണക്റ്റ് ചെയ്യുക" disconnected = "പ്രൊവൈഡർ വിജയകരമായി ഡിസ്കണക്റ്റ് ചെയ്തു" disconnectError = "പ്രൊവൈഡറെ ഡിസ്കണക്റ്റ് ചെയ്യാൻ പരാജയപ്പെട്ടു" +documentation = "ഡോക്യുമെൻറേഷൻ കാണുക" imageResolutionFull = "ഫുൾ (യഥാർത്ഥ വലുപ്പം)" imageResolutionReduced = "റിഡ്യൂസ്ഡ് (പരമാവധി 1200px)" linkedServices = "ലിങ്ക് ചെയ്ത സേവനങ്ങൾ" @@ -964,6 +968,18 @@ label = "ഡീഫാൾട്ട് ലോക്കേൽ" description = "പരമാവധി ഫയൽ അപ്‌ലോഡ് വലിപ്പം (ഉദാ., 100MB, 1GB)" label = "ഫയൽ അപ്‌ലോഡ് പരിധി" +[admin.settings.general.hideDisabledTools] +description = "അപ്രാപ്തമാക്കിയ ടൂൾസ് ഇന്റർഫേസിൽ നിന്ന് മറയ്ക്കുക" +label = "അപ്രാപ്തമാക്കിയ ടൂൾസ് മറയ്ക്കുക" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Google Drive പ്രവർത്തനക്ഷമമല്ലെങ്കിൽ ബട്ടൺ മറയ്ക്കുക" +label = "Google Drive മറയ്ക്കുക" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "മൊബൈൽ QR സ്കാനർ പ്രവർത്തനക്ഷമമല്ലെങ്കിൽ ബട്ടൺ മറയ്ക്കുക" +label = "മൊബൈൽ സ്കാനർ മറയ്ക്കുക" + [admin.settings.general.frontendUrl] description = "ഫ്രണ്ട്‌എൻഡിന്‍റെ ബെയ്‌സ് URL (ഉദാ., https://pdf.example.com). ഇമെയിൽ ക്ഷണ ലിങ്കുകൾക്കും മൊബൈൽ QR കോഡ് അപ്‌ലോഡുകൾക്കും ഉപയോഗിക്കുന്നു. ബാക്ക്‌എൻഡ് URL ഉപയോഗിക്കാനായി ശൂന്യമാക്കുക." label = "ഫ്രണ്ട്‌എൻഡ് URL" @@ -1148,6 +1164,8 @@ title = "സുരക്ഷ" [admin.settings.security.audit] label = "ഓഡിറ്റ് ലോഗിംഗ്" +showDetails = "ഓഡിറ്റ് ലെവൽ വിശദാംശങ്ങൾ കാണിക്കുക" +hideDetails = "ഓഡിറ്റ് ലെവൽ വിശദാംശങ്ങൾ മറയ്ക്കുക" [admin.settings.security.audit.enabled] description = "ഉപയോക്തൃ പ്രവർത്തനങ്ങളും സിസ്റ്റം ഇവന്റുകളും പാലനത്തിനും സുരക്ഷാ നിരീക്ഷണത്തിനുമായി ട്രാക്ക് ചെയ്യുക" @@ -1157,10 +1175,32 @@ label = "ഓഡിറ്റ് ലോഗിംഗ് പ്രാപ്തമാ description = "0=OFF, 1=BASIC, 2=STANDARD, 3=VERBOSE" label = "ഓഡിറ്റ് ലെവൽ" +[admin.settings.security.audit.levelDetails] +off = "ഓഡിറ്റ് ലോഗിംഗ് ഇല്ല (ഗുരുതരമായ സുരക്ഷാ ഇവന്റുകൾ ഒഴികെ)" +basic = "PDF ഫയൽ പ്രവർത്തനങ്ങൾ (compress, split, merge, മുതലായവ)യും സജ്ജീകരണ മാറ്റങ്ങളും. പിടികൂടുന്നത്: പ്രവർത്തന നില (success/failure), method parameters, timing. കുറഞ്ഞ ലോഗ് വോള്യം." +standard = "BASIC ഇവന്റുകളോടൊപ്പം: user login/logout, account changes, general GET requests. ലോഗ് ശബ്ദം കുറയ്ക്കാൻ continuous polling calls (/auth/me, /app-config, /health, മുതലായവ) ഒഴിവാക്കുന്നു. ഭൂരിഭാഗം വിന്യാസങ്ങൾക്ക് അനുയോജ്യം." +verbose = "STANDARD ഇവന്റുകളോടൊപ്പം: continuous polling calls, എല്ലാ GET requests, വിശദമായ timing. മുന്നറിയിപ്പ്: ഉയർന്ന ലോഗ് വാള്യവും പ്രകടനത്തെ ബാധിക്കലും." + [admin.settings.security.audit.retentionDays] description = "ഓഡിറ്റ് ലോഗുകൾ സൂക്ഷിക്കുന്ന ദിവസങ്ങളുടെ എണ്ണം" label = "ഓഡിറ്റ് സംരക്ഷണം (ദിവസങ്ങൾ)" +[admin.settings.security.audit.advancedOptions] +title = "ഉന്നത ഓപ്ഷനുകൾ" +description = "താഴെയുള്ള ഓപ്ഷനുകൾ പ്രോസസ്സിംഗ് സമയംക്കും മെമ്മറി ഉപയോഗത്തിനും വർധന വരുത്തും. തീർച്ചയായും ആവശ്യമായാൽ മാത്രമേ പ്രവർത്തനക്ഷമമാക്കാവൂ." + +[admin.settings.security.audit.captureFileHash] +description = "അപ്‌ലോഡ് ചെയ്ത PDF ഫയലുകളുടെ സമഗ്രത പരിശോധനയ്ക്കായി SHA-256 hash എടുക്കുക. ഓഡിറ്റ് ലെവലിൽ നിന്ന് സ്വതന്ത്രം." +label = "ഫയൽ Hash (SHA-256) പിടികൂടുക" + +[admin.settings.security.audit.capturePdfAuthor] +description = "പ്രോസസ്സിംഗിനിടെ PDF ഡോക്യുമെൻറുകളിൽ നിന്ന് author field എടുക്കുക. PDF parsing ആവശ്യമാണ്, latency വർധിക്കും. ഓഡിറ്റ് ലെവലിൽ നിന്ന് സ്വതന്ത്രം." +label = "PDF Author Metadata പിടികൂടുക" + +[admin.settings.security.audit.captureOperationResults] +description = "മേതഡ് റിട്ടേൺ മൂല്യങ്ങൾ പിടികൂടുക. ശുപാർശ ചെയ്യില്ല: ലോഗ് വാള്യവും ഡിസ്ക് ഉപയോഗവും ഗണ്യമായി വർധിക്കും." +label = "ഓപ്പറേഷൻ ഫലങ്ങൾ പിടികൂടുക" + [admin.settings.security.csrfDisabled] description = "Cross-Site Request Forgery സംരക്ഷണം അപ്രാപ്തമാക്കുക (ശുപാർശ ചെയ്യുന്നതല്ല)" label = "CSRF സംരക്ഷണം അപ്രാപ്തമാക്കുക" @@ -1536,72 +1576,152 @@ tags = "അറ്റാച്ച്മെന്റുകൾ,ചേർക്ക title = "അറ്റാച്ച്മെന്റുകൾ ചേർക്കുക" [audit] +configureAudit = "ഓഡിറ്റ് ലോഗിംഗ് കോൺഫിഗർ ചെയ്യുക" +configureAuditMessage = "Security & Authentication വിഭാഗത്തിൽ ഓഡിറ്റ് ലോഗിംഗ് ലെവൽ, സംഭരണകാലാവധി, മറ്റ് സജ്ജീകരണങ്ങൾ ക്രമീകരിക്കുക." disabled = "ഓഡിറ്റ് ലോഗിംഗ് പ്രവർത്തനരഹിതമാണ്" disabledMessage = "സിസ്റ്റം ഇവന്റുകൾ ട്രാക്ക് ചെയ്യാൻ നിങ്ങളുടെ ആപ്ലിക്കേഷൻ ക്രമീകരണത്തിൽ ഓഡിറ്റ് ലോഗിംഗ് പ്രവർത്തനക്ഷമമാക്കുക." enterpriseRequired = "എന്റർപ്രൈസ് ലൈസൻസ് ആവശ്യമാണ്" enterpriseRequiredMessage = "ഓഡിറ്റ് ലോഗിംഗ് സിസ്റ്റം ഒരു എന്റർപ്രൈസ് സവിശേഷതയാണ്. ഓഡിറ്റ് ലോഗുകളും അനലിറ്റിക്സും ആക്സസ് ചെയ്യാൻ ദയവായി എന്റർപ്രൈസ് ലൈസൻസിലേക്ക് അപ്‌ഗ്രേഡ് ചെയ്യുക." +goToSettings = "ഓഡിറ്റ് സജ്ജീകരണങ്ങളിലേക്കു പോകുക" notAvailable = "ഓഡിറ്റ് സിസ്റ്റം ലഭ്യമല്ല" notAvailableMessage = "ഓഡിറ്റ് സിസ്റ്റം കോൺഫിഗർ ചെയ്തിട്ടില്ല അല്ലെങ്കിൽ ലഭ്യമല്ല." -[audit.charts] -byType = "തരം അനുസരിച്ചുള്ള ഇവന്റുകൾ" -byUser = "ഉപയോക്താവ് അനുസരിച്ചുള്ള ഇവന്റുകൾ" -day = "ദിവസം" -error = "ചാർട്ടുകൾ ലോഡ് ചെയ്യുന്നതിൽ പിശക്" -month = "മാസം" -overTime = "കാലക്രമത്തിൽ ഇവന്റുകൾ" -title = "ഓഡിറ്റ് ഡാഷ്ബോർഡ്" -week = "ആഴ്ച" - [audit.error] title = "ഓഡിറ്റ് സിസ്റ്റം ലോഡ് ചെയ്യുന്നതിൽ പിശക്" -[audit.events] -actions = "നടപടികൾ" -clearFilters = "ക്ലിയർ" -details = "വിശദാംശങ്ങൾ" -endDate = "അവസാന തീയതി" -error = "ഇവന്റുകൾ ലോഡ് ചെയ്യുന്നതിൽ പിശക്" -eventDetails = "ഇവന്റ് വിശദാംശങ്ങൾ" -filterByType = "തരം പ്രകാരം ഫിൽറ്റർ ചെയ്യുക" -filterByUser = "ഉപയോക്താവ് പ്രകാരം ഫിൽറ്റർ ചെയ്യുക" -ipAddress = "IP വിലാസം" -noEvents = "ഇവന്റുകളൊന്നും കണ്ടെത്താനായില്ല" -startDate = "ആരംഭ തീയതി" -timestamp = "ടൈംസ്റ്റാമ്പ്" -title = "ഓഡിറ്റ് ഇവന്റുകൾ" -type = "തരം" -user = "ഉപയോക്താവ്" -viewDetails = "വിശദാംശങ്ങൾ കാണുക" - [audit.export] clearFilters = "ക്ലിയർ" description = "ഓഡിറ്റ് ഇവന്റുകൾ CSV അല്ലെങ്കിൽ JSON ഫോർമാറ്റിലേക്ക് കയറ്റുമതി ചെയ്യുക. കയറ്റുമതി ചെയ്യുന്ന ഡാറ്റ പരിമിതപ്പെടുത്താൻ ഫിൽട്ടറുകൾ ഉപയോഗിക്കുക." endDate = "അവസാന തീയതി" error = "ഡാറ്റ കയറ്റുമതി ചെയ്യുന്നത് പരാജയപ്പെട്ടു" exportButton = "ഡാറ്റ കയറ്റുമതി ചെയ്യുക" +fieldAuthor = "രചയിതാവ് (PDF-ൽ നിന്ന്)" +fieldDate = "തീയതി" +fieldDocumentName = "ഡോക്യുമെന്റ് പേര്" +fieldFileHash = "ഫയൽ Hash (SHA-256)" +fieldIpAddress = "IP വിലാസം" +fieldOperationResults = "ഓപ്പറേഷൻ ഫലങ്ങൾ" +fieldOutcome = "ഫലം (Success/Failure)" +fieldTool = "ടൂൾ" +fieldUsername = "ഉപയോക്തൃനാമം" filterByType = "തരം അനുസരിച്ച് ഫിൽട്ടർ ചെയ്യുക" filterByUser = "ഉപയോക്താവിനെ അനുസരിച്ച് ഫിൽട്ടർ ചെയ്യുക" filters = "ഫിൽട്ടറുകൾ (ഐച്ഛികം)" format = "കയറ്റുമതി ഫോർമാറ്റ്" +selectFields = "ചേർക്കേണ്ട ഫീൽഡുകൾ തിരഞ്ഞെടുക്കുക" startDate = "ആരംഭ തീയതി" title = "ഓഡിറ്റ് ഡാറ്റ കയറ്റുമതി ചെയ്യുക" +verboseRequired = "VERBOSE ഓഡിറ്റ് ലെവൽ ആവശ്യമാണ്" [audit.systemStatus] +autoRefresh = "സ്വയം പുതുക്കൽ" +autoRefreshLabel = "ഓരോ 30 സെക്കൻഡിലും സ്വയം പുതുക്കുക" +captureBySettings = "സജ്ജീകരണങ്ങളിൽ പ്രവർത്തനക്ഷമമാക്കുക" +capturedFields = "പിടികൂടിയ ഫീൽഡുകൾ" +date = "തീയതി" days = "ദിവസങ്ങൾ" disabled = "പ്രവർത്തനരഹിതം" +documentName = "ഡോക്യുമെന്റ് പേര്" enabled = "പ്രവർത്തനക്ഷമം" +fileHash = "ഫയൽ Hash" level = "ഓഡിറ്റ് നില" +pdfAuthor = "PDF രചയിതാവ്" retention = "സംരക്ഷണ കാലാവധി" status = "ഓഡിറ്റ് ലോഗിംഗ്" title = "സിസ്റ്റം നില" +tool = "ടൂൾ" totalEvents = "മൊത്തം ഇവന്റുകൾ" +username = "ഉപയോക്തൃനാമം" +verboseOnly = "VERBOSE മാത്രം" + +[audit.stats] +activeUsers = "സജീവ ഉപയോക്താക്കൾ" +attention = "ശ്രദ്ധ ആവശ്യമാണ്" +avgLatency = "ശരാശരി latency" +error = "സ്ഥിതിവിവരക്കണക്കുകൾ ലോഡ് ചെയ്യുന്നതിൽ പിശക്" +errorLoadingStats = "സ്ഥിതിവിവരക്കണക്കുകൾ ലോഡ് ചെയ്യൽ പരാജയപ്പെട്ടു" +excellent = "അത്യുത്തമം" +good = "നല്ലത്" +noData = "N/A" +successRate = "വിജയ നിരക്ക്" +title = "സംഗ്രഹം" +totalEvents = "ആകെ ഇവന്റുകൾ" +vsLastPeriod = "കഴിഞ്ഞ കാലയളവുമായി താരതമ്യം" + +[audit.charts] +byTool = "ഏറ്റവും ഉപയോഗിച്ച ടൂൾസ്" +byType = "തരം അനുസരിച്ചുള്ള ഇവന്റുകൾ" +byUser = "ഉപയോക്താവ് അനുസരിച്ചുള്ള ഇവന്റുകൾ" +day = "ദിവസം" +error = "ചാർട്ടുകൾ ലോഡ് ചെയ്യുന്നതിൽ പിശക്" +hourlyActivity = "മണിക്കൂറിന്‍റെ പ്രവർത്തനം" +month = "മാസം" +noData = "ഈ കാലയളവിൽ ഡാറ്റയില്ല" +overTime = "കാലക്രമത്തിൽ ഇവന്റുകൾ" +title = "ഓഡിറ്റ് ഡാഷ്ബോർഡ്" +week = "ആഴ്ച" + +[audit.events] +actions = "നടപടികൾ" +author = "രചയിതാവ്" +clearFilters = "ക്ലിയർ" +details = "വിശദാംശങ്ങൾ" +documentName = "ഡോക്യുമെന്റ്" +endDate = "അവസാന തീയതി" +error = "ഇവന്റുകൾ ലോഡ് ചെയ്യുന്നതിൽ പിശക്" +eventDetails = "ഇവന്റ് വിശദാംശങ്ങൾ" +failure = "പരാജയം" +fileHash = "ഫയൽ Hash" +filterByType = "തരം പ്രകാരം ഫിൽറ്റർ ചെയ്യുക" +filterByUser = "ഉപയോക്താവ് പ്രകാരം ഫിൽറ്റർ ചെയ്യുക" +ipAddress = "IP വിലാസം" +noEvents = "ഇവന്റുകളൊന്നും കണ്ടെത്താനായില്ല" +outcome = "സ്ഥിതി" +sortAsc = "ഉയരുന്ന ക്രമത്തിൽ ക്രമീകരിക്കുക" +sortDesc = "ഇറങ്ങുന്ന ക്രമത്തിൽ ക്രമീകരിക്കുക" +startDate = "ആരംഭ തീയതി" +success = "വിജയം" +timestamp = "ടൈംസ്റ്റാമ്പ്" +title = "ഓഡിറ്റ് ഇവന്റുകൾ" +type = "തരം" +user = "ഉപയോക്താവ്" +viewDetails = "വിശദാംശങ്ങൾ കാണുക" + +[audit.filters] +allOutcomes = "എല്ലാം" +failureOnly = "പരാജയങ്ങൾ മാത്രം" +last7Days = "കഴിഞ്ഞ 7 ദിവസം" +last30Days = "കഴിഞ്ഞ 30 ദിവസം" +outcomeFilter = "ഫലം" +quickPresets = "വേഗത്തിലുള്ള ഫിൽട്ടറുകൾ" +successOnly = "വിജയം മാത്രം" +thisMonth = "ഈ മാസം" +today = "ഇന്ന്" [audit.tabs] +clearData = "ഡാറ്റ മായ്ക്കുക" dashboard = "ഡാഷ്ബോർഡ്" events = "ഓഡിറ്റ് ഇവന്റുകൾ" export = "എക്സ്പോർട്ട്" +[audit.clearData] +cancel = "റദ്ദാക്കുക" +codeDoesNotMatch = "കോഡ് പൊരുത്തപ്പെടുന്നില്ല" +codePlaceholder = "കോഡ് ഇവിടെ ടൈപ്പ് ചെയ്യുക" +confirmationCode = "സ്ഥിരീകരണ കോഡ്" +confirmationRequired = "എല്ലാ ഓഡിറ്റ് ഡാറ്റയും ഇല്ലാതാക്കുക" +confirmMessage = "ഇത് എല്ലാ ഓഡിറ്റ് ലോഗുകളും സ്ഥിരമായി നീക്കം ചെയ്യും. തുടര്‍ാന്‍ താഴെ സ്ഥിരീകരണ കോഡ് നല്‍കുക." +confirmTitle = "ഇല്ലാതാക്കണമെന്ന് ദയവായി സ്ഥിരീകരിക്കുക" +deleteButton = "ഇല്ലാതാക്കുക" +enterCode = "സ്ഥിരീകരണ കോഡ്" +enterCodeBelow = "മുകളിൽ കാണുന്നതുപോലെ തന്നെയായി കോഡ് നൽകുക (case-sensitive)" +initiateDelete = "എല്ലാ ഡാറ്റയും ഇല്ലാതാക്കുക" +irreversible = "മടക്കാനാവില്ല" +success = "വിജയം" +successMessage = "എല്ലാ ഓഡിറ്റ് ഡാറ്റയും വിജയകരമായി മായച്ചു" +warning1 = "ഈ പ്രവർത്തനം തിരിച്ച് കൊണ്ടുവരാൻ കഴിയില്ല" +warning2 = "ഓഡിറ്റ് ഡാറ്റ ഇല്ലാതാക്കുന്നത്, സുരക്ഷാ ഇവന്റുകൾ, ഉപയോക്തൃ പ്രവർത്തനങ്ങൾ, ഫയൽ പ്രവർത്തനങ്ങൾ എന്നിവ ഉൾപ്പെടെ ചരിത്ര ഓഡിറ്റ് ലോഗുകൾ എല്ലാം ഡേറ്റാബേസിൽ നിന്ന് സ്ഥിരമായി നീക്കം ചെയ്യും." + [auth] accessDenied = "ആക്‌സസ് നിരസിച്ചു" insufficientPermissions = "ഈ പ്രവർത്തനം നടത്താൻ നിങ്ങൾക്ക് അനുമതിയില്ല." @@ -2254,9 +2374,11 @@ copy = "പകർത്തുക" done = "പൂർത്തിയായി" error = "പിശക്" expand = "വിപുലീകരിക്കുക" +learnMore = "കൂടുതൽ അറിയുക" lines = "വരികൾ" loading = "ലോഡുചെയ്യുന്നു..." next = "അടുത്തത്" +operation = "ഈ പ്രവർത്തനം" preview = "മുന്‍കാഴ്ച" previous = "മുൻപ്" refresh = "പുതുക്കുക" @@ -2920,6 +3042,7 @@ copyStack = "സ്റ്റാക്ക് ട്രേസ് പകർത് discordSubmit = "Discord - പിന്തുണാ പോസ്റ്റ് സമർപ്പിക്കുക" dismissAllErrors = "എല്ലാ പിശകുകളും ഒഴിവാക്കുക" encryptedPdfMustRemovePassword = "ഈ PDF എൻക്രിപ്റ്റ് ചെയ്യപ്പെട്ടതോ പാസ്‌വേഡ് സംരക്ഷിതമോ ആണ്. PDF/Aയിലേക്കു മാറ്റുന്നതിന് മുമ്പ് ദയവായി അൺലോക്ക് ചെയ്യുക." +generic = "ഒരു പിശക് സംഭവിച്ചു" github = "GitHub-ൽ ഒരു ടിക്കറ്റ് സമർപ്പിക്കുക" githubSubmit = "GitHub - ഒരു ടിക്കറ്റ് സമർപ്പിക്കുക" incorrectPasswordProvided = "PDF പാസ്‌വേഡ് തെറ്റാണ് അല്ലെങ്കിൽ നൽകിയിട്ടില്ല." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "നിങ്ങളുടെ സബ്സ്ക്ര upgradeSuccess = "പേയ്മെന്റ് വിജയകരം! നിങ്ങളുടെ സബ്സ്ക്രിപ്ഷൻ അപ്‌ഗ്രേഡ് ചെയ്തു. ലൈസൻസ് നിങ്ങളുടെ സെർവറിൽ അപ്‌ഡേറ്റ് ചെയ്തു. ഉടൻ തന്നെ ഒരു സ്ഥിരീകരണ ഇമെയിൽ ലഭിക്കും." upgradeTitle = "{{planName}} ലേക്ക് അപ്‌ഗ്രേഡ് ചെയ്യുക" yearly = "വർഷം" +checkoutOpened = "ബ്രൗസറിൽ Checkout തുറന്നു" +checkoutInstructions = "ഇപ്പോൾ തുറന്ന ബ്രൗസർ വിൻഡോയിൽ നിങ്ങളുടെ വാങ്ങൽ പൂർത്തിയാക്കുക. പേയ്മെന്റ് പൂർത്തിയായ ശേഷം ഇവിടെ മടങ്ങി വന്ന് താഴെയുള്ള ബട്ടൺ അമർത്തി നിങ്ങളുടെ ബില്ലിംഗ് വിവരങ്ങൾ പുതുക്കുക." +refreshBilling = "പേയ്മെന്റ് പൂർത്തിയായി - ബില്ലിംഗ് പുതുക്കുക" +closeLater = "ഇത് പിന്നീടു ചെയ്യും" [payment.emailStage] continue = "തുടരുക" @@ -4679,6 +4806,13 @@ prompt = "പട്ടിക വേർതിരിച്ചെടുക്കാ submit = "വേർതിരിച്ചെടുക്കുക" title = "PDF CSV-ലേക്ക്" +[PDFToXLSX] +header = "PDF to Excel" +prompt = "ടേബിളുകൾ എടുക്കേണ്ട പേജുകൾ തിരഞ്ഞെടുക്കുക" +submit = "മാറ്റുക" +title = "PDF to Excel (XLSX)" +tags = "spreadsheet,excel,xlsx,table,extract,convert" + [PDFToHTML] credit = "ഈ സേവനം ഫയൽ പരിവർത്തനത്തിനായി pdftohtml ഉപയോഗിക്കുന്നു." header = "PDF HTML-ലേക്ക്" @@ -4835,6 +4969,7 @@ customPricing = "ഇഷ്ടാനുസൃതം" featureComparison = "ഫീച്ചർ താരതമ്യം" from = "മുതൽ" hideComparison = "ഫീച്ചർ താരതമ്യം മറയ്ക്കുക" +included = "ഉൾപ്പെടുത്തിയിരിക്കുന്നു" includedInCurrent = "നിങ്ങളുടെ പ്ലാനിൽ ഉൾപ്പെട്ടിരിക്കുന്നു" licensedSeats = "ലൈസൻസുചെയ്തത്: {{count}} സീറ്റുകൾ" manage = "മാനേജ്" @@ -4852,9 +4987,11 @@ title = "സജീവ പ്ലാൻ" [plan.availablePlans] subtitle = "നിങ്ങളുടെ ആവശ്യങ്ങൾക്ക് അനുയോജ്യമായ പ്ലാൻ തിരഞ്ഞെടുക്കുക" +loadError = "പ്ലാൻ വില ലോഡുചെയ്യാൻ കഴിഞ്ഞില്ല. ഡിഫാൾട്ട് മൂല്യങ്ങൾ ഉപയോഗിക്കുന്നു." title = "ലഭ്യമായ പ്ലാനുകൾ" [plan.enterprise] +siteLicense = "Site License" highlight1 = "ഇഷ്ടാനുസൃത വില" highlight2 = "ഡെഡിക്കേറ്റഡ് പിന്തുണ" highlight3 = "പുതിയ സവിശേഷതകൾ" @@ -4928,6 +5065,81 @@ keyDescription = "ഇമെയിലിൽ നിന്ന് ലൈസൻസ് success = "ലൈസൻസ് സജീവമായി!" successMessage = "നിങ്ങളുടെ ലൈസൻസ് വിജയകരമായി സജീവപ്പെടുത്തി. നിങ്ങൾക്ക് ഇപ്പോൾ ഈ ജാലകം അടയ്ക്കാം." +[plan.team] +name = "Team" +siteLicense = "Site License" + +[credits] +enableOverageBilling = "Overage Billing പ്രവർത്തനക്ഷമമാക്കുക" +maybeLater = "പിന്നീട് കാണാം" +upgrade = "അപ്‌ഗ്രേഡ്" + +[credits.modal] +advancedMonitoring = "ഉന്നത മോണിറ്ററിംഗ്" +allInOneWorkspace = "ഓൾ-ഇൻ-വൺ PDF വർക്ക്‌സ്‌പേസ് (viewer, tools & agent)" +apiSandbox = "API sandbox" +contactSales = "സെയിൽസുമായി ബന്ധപ്പെടുക" +creditsRemaining = "ബാക്കിയായത് {{total}}ൽ {{current}}" +creditsThisMonth = "മാസിക ക്രെഡിറ്റുകൾ" +current = "നിലവിലെ പ്ലാൻ" +customPricing = "കസ്റ്റം" +customSmartFolders = "കസ്റ്റം Smart Folders" +dedicatedSupportSlas = "Dedicated support & SLAs" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Credits ഉൾപ്പെടുന്നതെല്ലാം, കൂടാതെ:" +everythingInFree = "Freeയിൽ ഉള്ളതെല്ലാം, കൂടാതെ:" +fasterThroughput = "10x വേഗത്തിലുള്ള throughput" +forRegularWork = "സാധാരണ PDF ജോലികൾക്കായി:" +freeTier = "Free Tier" +fullyPrivateFiles = "പൂർണ്ണ സ്വകാര്യ ഫയലുകൾ" +largeFileProcessing = "വലിയ ഫയൽ പ്രോസസ്സിംഗ്" +managedMemberMessage = "ടീം വഴിയായി നിങ്ങള്‍ക്ക് ക്രെഡിറ്റുകളിലേക്ക് പരിധിയില്ലാത്ത ആക്‌സസ് ഉണ്ട്. സഹായം ആവശ്യമെങ്കിൽ, ദയവായി നിങ്ങളുടെ ടീം ലീഡറുമായി ബന്ധപ്പെടുക." +managedMemberTitle = "പരിധിയില്ലാത്ത ക്രെഡിറ്റുകൾ" +meteringBillingNote = "Overage ക്രെഡിറ്റുകൾ നിങ്ങളുടെ Team സബ്സ്ക്രിപ്ഷനോടൊപ്പം മാസത്തില്‍ ബില്ലുചെയ്യപ്പെടുന്നു. നിങ്ങളുടെ ഉപയോഗം ഏത് സമയത്തും അക്കൗണ്ട് സജ്ജീകരണങ്ങളിൽ ട്രാക്ക് ചെയ്യാം." +meteringExplanation = "നിങ്ങളുടെ Team പ്ലാനിൽ മാസത്തിൽ {{credits}} ക്രെഡിറ്റുകൾ ഉൾപ്പെടുന്നു. അവ തീരുമ്പോൾ, overage billing സ്വയമേവ അധിക ക്രെഡിറ്റുകൾ നൽകും, അതുകൊണ്ട് നിങ്ങൾക്ക് ജോലി നിർത്തേണ്ടതായി വരില്ല." +meteringIncluded = "Team-നൊപ്പം മാസത്തിൽ {{credits}} ക്രെഡിറ്റുകൾ ഉൾപ്പെടുന്നു" +meteringNoCommitment = "ബാധ്യതകളില്ല, ഏതു വേളയും റദ്ദാക്കാം" +meteringNeverRunOut = "ക്രെഡിറ്റുകൾ ഒരിക്കലും തീരില്ല" +meteringPayAsYouGo = "നിങ്ങൾ ഉപയോഗിക്കുന്നതിനായുള്ളതിനേ മാത്രം പണം നൽകുക" +meteringPrice = "അധിക ക്രെഡിറ്റുകൾ {{price}}/credit നിരക്കിൽ" +meteringTitle = "ഉപയോഗം അടിസ്ഥാനമാക്കിയ Overage Billing" +monthlyCredits = "മാസിക ക്രെഡിറ്റുകൾ" +orgWideAccess = "സംഘടനാതല ആക്‌സസ് നിയന്ത്രണങ്ങൾ" +overage = "overage" +perMonth = "/മാസം" +popular = "ജനപ്രിയം" +premiumAiModels = "പ്രീമിയം AI മോഡലുകൾ" +prioritySupport = "പ്രാഥമിക പിന്തുണ" +privateDocCloud = "സ്വകാര്യ ഡോക്യുമെന്റ് ക്ലൗഡ്" +ragFineTuning = "RAG + fine-tuning" +secureApiAccess = "സുരക്ഷിത API ആക്‌സസ്" +selfHostLink = "ഡോക്സും പ്ലാനുകളും കാണുക" +selfHostPrompt = "സ്വയം ഹോസ്റ്റ് ചെയ്യണമോ?" +standardThroughput = "സ്റ്റാൻഡേഡ് throughput" +subtitle = "10x ക്രെഡിറ്റുകളും വേഗത്തിലുള്ള പ്രോസസ്സിംഗും ലഭിക്കാൻ Team-ലേക്ക് അപ്‌ഗ്രേഡ് ചെയ്യുക." +subtitlePro = "ക്രെഡിറ്റുകൾ ഒരിക്കലും തീരാതിരിക്കാൻ automatic overage billing പ്രവർത്തനക്ഷമമാക്കുക." +teamLeaderOnly = "overage billing പ്രവർത്തനക്ഷമമാക്കാൻ ടീം ലീഡർമാർക്കുമാത്രമേ കഴിയൂ" +teamSubscription = "Team" +titleExhausted = "നിങ്ങളുടെ സൗജന്യ ക്രെഡിറ്റുകൾ ഉപയോഗിച്ചു തീർന്നു" +titleExhaustedPro = "നിങ്ങളുടെ ക്രെഡിറ്റുകൾ തീർന്നിരിക്കുന്നു" +unlimitedApiAccess = "പരിധിയില്ലാത്ത API ആക്‌സസ്" +unlimitedMonthlyCredits = "Site License" +unlimitedSeats = "പരിധിയില്ലാത്ത സീറ്റുകൾ" + +[credits.modal.features] +everythingInCredits = "Credits ഉൾപ്പെടുന്നതെല്ലാം, കൂടാതെ:" +everythingInFree = "Freeയിൽ ഉള്ളതെല്ലാം, കൂടാതെ:" +forRegularWork = "സാധാരണ PDF ജോലികൾക്കായി:" + +[credits.insufficient] +brief = "ക്രെഡിറ്റുകൾ അപര്യാപ്തം. നിങ്ങൾക്ക് {{required}} ക്രെഡിറ്റുകൾ വേണം, പക്ഷേ നിലവിൽ {{current}} മാത്രമേ ഉള്ളൂ." +freeTier = "10x കൂടുതൽ ക്രെഡിറ്റുകളും പരിധിയില്ലാത്ത overage billing-ഉം ലഭിക്കാൻ Team-ലേക്ക് അപ്‌ഗ്രേഡ് ചെയ്യുക." +managedMember = "സഹായത്തിനായി ദയവായി നിങ്ങളുടെ ടീം ലീഡറുമായി ബന്ധപ്പെടുക." +message = "{{tool}} പ്രവർത്തിപ്പിക്കാൻ നിങ്ങൾക്ക് മതിയായ ക്രെഡിറ്റുകളില്ല. ഇപ്പോൾ നിങ്ങൾക്ക് {{current}} ക്രെഡിറ്റുകൾ മാത്രമേ ഉള്ളൂ." +messageWithAmount = "{{tool}} പ്രവർത്തിപ്പിക്കാൻ നിങ്ങള്‍ക്ക് {{required}} ക്രെഡിറ്റുകള്‍ ആവശ്യമാണ്, പക്ഷേ നിങ്ങൾക്ക് {{current}} മാത്രമേ ഉള്ളൂ." +teamMember = "ക്രെഡിറ്റുകൾ ഒരിക്കലും തീരാതിരിക്കാൻ overage billing പ്രവർത്തനക്ഷമമാക്കുക." +title = "ക്രെഡിറ്റുകൾ അപര്യാപ്തം" + [printFile] header = "പ്രിന്ററിലേക്ക് ഫയൽ അച്ചടിക്കുക" submit = "അച്ചടിക്കുക" @@ -5565,6 +5777,70 @@ user = "ലോഗിൻ ചെയ്തത്" saas = "Stirling Cloud" selfhosted = "സെൽഫ്-ഹോസ്റ്റഡ്" +[settings.planBilling] +currentPlan = "നിലവിലെ പ്ലാൻ" +loading = "ബില്ലിംഗ് വിവരങ്ങൾ ലോഡ് ചെയ്യുന്നു..." +notAvailable = "Plan & Billing, Stirling Cloud-ലേക്ക് (SaaS mode) കണക്റ്റ് ചെയ്തിരിക്കുന്നപ്പോൾ മാത്രമാണ് ലഭ്യമാകുന്നത്." +title = "Plan & Billing" + +[settings.planBilling.billing] +manageBilling = "ബില്ലിംഗ് മാനേജ് ചെയ്യുക" +nextBillingDate = "അടുത്ത ബില്ലിംഗ് തീയതി" +overageCost = "ഇപ്പോഴത്തെ overage ചെലവ്: {{amount}} ({{credits}} ക്രെഡിറ്റുകൾ)" + +[settings.planBilling.credits] +estimatedCost = "അനുമാനിച്ച ചെലവ്: {{amount}}" +freeTierInfo = "Free പ്ലാനിൽ മാസത്തിൽ {{freeCredits}} ക്രെഡിറ്റുകൾ ഉൾപ്പെടുന്നു. മാസത്തിൽ {{teamCredits}} ക്രെഡിറ്റുകളും pay-as-you-go overage billing-ഉം ലഭിക്കാൻ Team-ലേക്ക് അപ്‌ഗ്രേഡ് ചെയ്യുക." +included = "{{count}} ക്രെഡിറ്റുകൾ/മാസം (ഉൾപ്പെടുത്തിയിരിക്കുന്നു)" +noOverage = "ഈ മാസം overage ചാർജുകളില്ല. നിങ്ങൾ ഉൾപ്പെടുത്തിയ {{count}} ക്രെഡിറ്റുകൾ ഉപയോഗിക്കുകയാണ്." +overage = "+ {{count}} overage" +overageInfo = "Overage ക്രെഡിറ്റുകൾ ഓരോ ക്രെഡിറ്റിനും {{price}} നിരക്കിൽ ബില്ലുചെയ്യപ്പെടുന്നു. മാസിക അലവൻസിന് മുകളിലുള്ള ഉപയോഗത്തിനുവേണ്ടി മാത്രമേ നിങ്ങൾ പണമടയ്‌ക്കൂ." +title = "ക്രെഡിറ്റ് ഉപയോഗം" + +[settings.planBilling.errors] +fetchFailed = "ബില്ലിംഗ് ഡാറ്റ കൊണ്ടുവരാൻ കഴിഞ്ഞില്ല" +retry = "വീണ്ടും ശ്രമിക്കുക" + +[settings.planBilling.status] +active = "സജീവം" +canceled = "റദ്ദാക്കി" +pastDue = "കാലാവധി കഴിഞ്ഞു" +trial = "ട്രയൽ" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "കസ്റ്റം എന്റർപ്രൈസ് സവിശേഷതകളും പിന്തുണയും" +free = "Free" +freeDescription = "മാസത്തിൽ 50 ക്രെഡിറ്റുകൾ" +team = "Team" +teamBadge = "Team" +teamDescription = "500 ക്രെഡിറ്റുകൾ/മാസം ഉൾപ്പെടുത്തിയിരിക്കുന്നു, ഇടവിടമില്ലാത്ത സേവനത്തിനായി automatic overage billing" +teamTooltipCredits = "Team പ്ലാനിൽ മാസത്തിൽ {{credits}} ക്രെഡിറ്റുകൾ ഉൾപ്പെടുന്നു." +teamTooltipFineprint = "ഉൾപ്പെടുത്തിയ ക്രെഡിറ്റുകളുടെ മുകളിലുള്ള ഉപയോഗത്തിന് മാത്രം പണം നൽകുക." +teamTooltipOverage = "{{price}}/credit നിരക്കിൽ automatic overage billing ഇടവിടമില്ലാത്ത സേവനം ഉറപ്പാക്കുന്നു." + +[settings.planBilling.team] +managedByTeam = "ടീം മാനേജ് ചെയ്യുന്നു" +memberCount = "{{count}} ടീം അംഗങ്ങൾ" + +[settings.planBilling.trial] +daysRemaining = "ഇനി {{days}} ദിവസം ബാക്കി" +daysRemainingFull = "നിങ്ങളുടെ ട്രയൽ {{days}} ദിവസത്തിൽ അവസാനിക്കും" +endDate = "കാലഹരണപ്പെടുന്നത്: {{date}}" +endsOn = "ട്രയൽ അവസാനിക്കുന്നു" +title = "Free ട്രയൽ സജീവമാണ്" + +[settings.planBilling.upgrade] +cta = "Team-ലേക്ക് അപ്‌ഗ്രേഡ് ചെയ്യുക" +featureApi = "ഓട്ടോമേഷൻക്കായി API ആക്‌സസ്" +featureCredits = "മാസത്തിൽ {{teamCredits}} ക്രെഡിറ്റുകൾ (Free-ൽ {{freeCredits}})" +featureMembers = "പരിധിയില്ലാത്ത ടീം അംഗങ്ങൾ" +featureSupport = "പ്രാഥമിക പിന്തുണ" +featureThroughput = "വേഗത്തിലുള്ള പ്രോസസ്സിംഗ് throughput" +opensInBrowser = "അപ്‌ഗ്രേഡ് പൂർത്തിയാക്കാൻ ബ്രൗസറിൽ തുറക്കും" +subtitle = "ഇതിനായി Team-ലേക്ക് അപ്‌ഗ്രേഡ് ചെയ്യുക:" +title = "നിങ്ങളുടെ പ്ലാൻ അപ്‌ഗ്രേഡ് ചെയ്യുക" + [settings.developer] apiKeys = "API Keys" title = "ഡെവലപ്പർ" @@ -5689,6 +5965,9 @@ people = "അംഗങ്ങൾ" teams = "ടീമുകൾ" title = "വർക്ക്‌സ്പേസ്" +[settings.team] +title = "Team" + [setup] description = "Stirling PDF നിങ്ങൾ എങ്ങനെ ഉപയോഗിക്കണമെന്നത് തിരഞ്ഞെടുക്കുക" welcome = "Stirling PDF-ലേക്ക് സ്വാഗതം" @@ -6011,6 +6290,11 @@ desc = "ഡിവൈഡർ ഷീറ്റുകളുമായി ഓട്ട name = "പേജ് ഡിവൈഡർ" tooltip = "സ്കാൻ ചെയ്യുമ്പോൾ ഡോക്യുമെന്റുകൾക്കിടയിൽ QR കോഡ് ഡിവൈഡർ ഷീറ്റുകൾ ഉപയോഗിക്കുക" +[split.methods.byPoster] +name = "പ്രിന്റ് ചെയ്യാവുന്ന ഭാഗങ്ങൾ" +desc = "വലിയ പേജുകൾ പ്രിന്റ് ചെയ്യാവുന്ന വലിപ്പങ്ങളായി വിഭജിക്കുക" +tooltip = "വലിയ പേജുകൾ സ്റ്റാൻഡേർഡ് പേപ്പറിൽ (A4, Letter, മുതലായവ) പ്രിന്റ് ചെയ്യാൻ അനുയോജ്യമായ ചെറിയ ഭാഗങ്ങളാക്കുക" + [split.methods.byPages] desc = "പ്രത്യേക പേജുകൾ എടുക്കുക (1,3,5-10)" name = "പേജ് നമ്പറുകൾ" @@ -6029,6 +6313,7 @@ tooltip = "പരമാവധി ഫയൽ വലുപ്പം വ്യക് [split.methods.prefix] splitAt = "വിഭജിക്കുക" splitBy = "പ്രകാരമായി വിഭജിക്കുക" +splitInto = "ഇതിലേക്ക് വിഭജിക്കുക" [split.methodSelection.tooltip] bullet1 = "തിരഞ്ഞെടുക്കാൻ ഒരു രീതിയുടെ കാർഡിൽ ക്ലിക്ക് ചെയ്യുക" @@ -6048,6 +6333,21 @@ selectMethodFirst = "ദയവായി ആദ്യം ഒരു സ്പ് chooseMethod = "രീതി തിരഞ്ഞെടുക്കുക" settings = "ക്രമീകരണങ്ങൾ" +[split.poster] +rightToLeft = "വലത്തുനിന്ന് ഇടത്തേയ്ക്ക് വിഭജിക്കുക" + +[split.poster.pageSize] +label = "ലക്ഷ്യമിടുന്ന പേജ് വലിപ്പം" +description = "പ്രിന്റിംഗിനുള്ള ഔട്ട്പുട്ട് പേജുകളുടെ വലിപ്പം" + +[split.poster.xFactor] +label = "തിരശ്ചീന വിഭജനങ്ങൾ" +description = "ഓരോ പേജും വിഭജിക്കേണ്ട കോളങ്ങളുടെ എണ്ണം" + +[split.poster.yFactor] +label = "ലംബ വിഭജനങ്ങൾ" +description = "ഓരോ പേജും വിഭജിക്കേണ്ട വരികളുടെ എണ്ണം" + [split.tooltip.byChapters] bullet1 = "ബുക്ക്മാർക്ക് ലെവൽ: ഏത് ലെവലിൽ വിഭജിക്കണം (1=മുകളിലത്തെ ലെവൽ)" bullet2 = "മെറ്റാഡാറ്റ ഉൾപ്പെടുത്തുക: ഡോക്യുമെന്റ് സ്വത്തുക്കൾ സംരക്ഷിക്കുക" @@ -6085,6 +6385,14 @@ bullet5 = "ഡിവൈഡർ ഷീറ്റുകളുടെ ഇരു വശ text = "QR കോഡുകളുള്ള ശാരീരിക ഡിവൈഡർ ഷീറ്റുകൾ ഉപയോഗിച്ച് സ്കാൻ ചെയ്ത ഡോക്യുമെന്റുകൾ ഓട്ടോമാറ്റിക്കായി വിഭജിക്കുക. ഒരുമിച്ച് സ്കാൻ ചെയ്ത ഒട്ടേറെ ഡോക്യുമെന്റുകൾ പ്രോസസ്സ് ചെയ്യാൻ മികച്ചതാണ്." title = "പേജ് ഡിവൈഡർ പ്രകാരം വിഭജിക്കുക" +[split.tooltip.byPoster] +bullet1 = "ലക്ഷ്യ പേജ് വലിപ്പം: ഔട്ട്പുട്ട് പേപ്പർ വലിപ്പം തിരഞ്ഞെടുക്കുക (A4, Letter, മുതലായവ)" +bullet2 = "തിരശ്ചീന/ലംബ വിഭജനങ്ങൾ: വിഭജിക്കുന്നതിനുള്ള ഗ്രിഡ് വലിപ്പം" +bullet3 = "Right-to-Left: RTL ലേഔട്ടുകൾക്കായി കോളം ക്രമം മറിക്കുക" +bullet4 = "പ്രിന്റ് ചെയ്ത് കഷണങ്ങൾ ഘടിപ്പിച്ച് നിങ്ങളുടെ പോസ്റ്റർ തയ്യാറാക്കുക" +text = "വലിയ PDF പേജുകൾ സ്റ്റാൻഡേർഡ് പേപ്പർ വലിപ്പങ്ങൾക്ക് അനുയോജ്യമായ ചെറിയ, പ്രിന്റ് ചെയ്യാവുന്ന ഭാഗങ്ങളാക്കുക. വലിയ പേജുകളിൽ നിന്ന് പോസ്റ്റർ പ്രിന്റുകൾ ഉണ്ടാക്കാൻ അത്യുത്തമം." +title = "പോസ്റ്റർ പ്രിന്റിനായി വിഭജിക്കുക" + [split.tooltip.byPages] bullet1 = "ഒറ്റ സ്പ്ലിറ്റ് പോയിന്റുകൾ: 3,7 (പേജ് 3നും 7നും ശേഷമൊരു വിഭജനം)" bullet2 = "റേഞ്ച് സ്പ്ലിറ്റ് പോയിന്റുകൾ: 3-8 (പേജ് 3-ന്റെ മുമ്പും 8-ന്റെ ശേഷവും വിഭജിക്കുന്നു)" @@ -6364,9 +6672,13 @@ tags = "വെബ്-ക്യാപ്ചർ,പേജ്-സംരക്ഷി title = "URL PDF-ലേക്ക്" [usage] +aboutUsageAnalytics = "Usage Analytics കുറിച്ച്" +configureSettings = "ആനലിറ്റിക്സ് സജ്ജീകരണങ്ങൾ കോൺഫിഗർ ചെയ്യുക" error = "ഉപയോഗ സ്ഥിതിവിവരങ്ങൾ ലോഡ് ചെയ്യുന്നതിൽ പിശക്" noData = "ഡാറ്റ ലഭ്യമല്ല" noDataMessage = "ഈ സമയം ഉപയോഗ സ്ഥിതിവിവരങ്ങൾ ലഭ്യമല്ല." +usageAnalyticsExplanation = "Usage analytics, endpoint അഭ്യർത്ഥനകളും ടൂൾ ഉപയോഗ പാറ്റേൺസും ട്രാക്ക് ചെയ്യുന്നു. ഓഡിറ്റ് ലോഗിംഗ് ഡാഷ്ബോർഡുമായി ചേർന്നാൽ, സിസ്റ്റം പ്രവർത്തനം, പ്രകടനം, സുരക്ഷാ ഇവന്റുകൾ എന്നിവയിൽ പൂർണ്ണ ദൃശ്യമാനത ലഭിക്കും." +viewAuditLogs = "ഓഡിറ്റ് ലോഗുകൾ കാണുക" [usage.chart] title = "എൻഡ്‌പോയിന്റ് ഉപയോഗ ചാർട്ട്" @@ -6947,3 +7259,278 @@ cancel = "റദ്ദാക്കുക" confirm = "എക്സ്ട്രാക്റ്റ്" message = "ഈ ZIP-ൽ {{count}} ഫയലുകൾ ഉണ്ട്. എങ്കിലും എക്സ്ട്രാക്റ്റ് ചെയ്യട്ടേ?" title = "വലിയ ZIP ഫയൽ" + +[cloudBadge] +tooltip = "ഈ പ്രവർത്തനം നിങ്ങളുടെ ക്ലൗഡ് ക്രെഡിറ്റുകൾ ഉപയോഗിക്കും" + +[team] +cancelInviteError = "ആഹ്വാനം റദ്ദാക്കൽ പരാജയപ്പെട്ടു" +confirmCancelInvite = "ഈ ആഹ്വാനം റദ്ദാക്കണമെന്ന് നിങ്ങള്‍ക്ക് തീർച്ചയാണോ?" +confirmLeave = "ഈ ടീമിൽ നിന്ന് പുറത്തുപോകണമെന്ന് നിങ്ങള്‍ക്ക് തീർച്ചയാണോ?" +confirmLeaveLeader = "ടീം ലീഡറായി, പോകുന്നത് നിങ്ങളെ ടീമിൽ നിന്ന് നീക്കം ചെയ്യുന്നതാണ്. തീർച്ചയാണോ?" +confirmRemove = "ഈ അംഗത്തെ നീക്കം ചെയ്യണമെന്ന് നിങ്ങള്‍ക്ക് തീർച്ചയാണോ?" +editName = "ടീം നാമം തിരുത്തുക" +inviteCancelled = "ആഹ്വാനം റദ്ദാക്കി" +inviteError = "ആഹ്വാനം അയക്കൽ പരാജയപ്പെട്ടു" +inviteSent = "ആഹ്വാനം വിജയകരമായി അയച്ചു" +leader = "ലീഡർ" +leaveButton = "ടീമിൽ നിന്ന് പുറത്തുകടക്കുക" +leaveError = "ടീമിൽ നിന്ന് പുറത്തുപോകൽ പരാജയപ്പെട്ടു" +leaveSuccess = "ടീമിൽ നിന്ന് വിജയകരമായി പുറത്തുപോയി" +loading = "ടീം വിവരങ്ങൾ ലോഡ് ചെയ്യുന്നു..." +memberCount = "{{count}} അംഗങ്ങൾ" +memberRemoved = "അംഗത്തെ വിജയകരമായി നീക്കി" +namePlaceholder = "ടീം നാമം നൽകുക" +personal = "വ്യക്തിഗതം" +removeError = "അംഗത്തെ നീക്കൽ പരാജയപ്പെട്ടു" +renameError = "ടീം പുനർനാമകരണം പരാജയപ്പെട്ടു" +renameSuccess = "ടീം വിജയകരമായി പുനർനാമകരണം ചെയ്തു" + +[team.invitationBanner] +message = "ചേരാൻ നിങ്ങളെ ക്ഷണിച്ചിട്ടുണ്ട്" +acceptButton = "സ്വീകരിക്കുക" +rejectButton = "നിരസിക്കുക" + +[team.features] +badge = "Team സവിശേഷതകൾ" +subtitle = "നിങ്ങളുടെ ടീമിനൊപ്പം സഹകരിക്കൂ" +title = "Team സഹകരണം" +viewPlans = "പ്ലാനുകൾ കാണുക" + +[team.features.billing] +description = "ബില്ലിംഗും സബ്സ്ക്രിപ്ഷനും മാനേജ് ചെയ്യുക" +title = "ബില്ലിംഗ് മാനേജ്മെന്റ്" + +[team.features.credits] +description = "എല്ലാ അംഗങ്ങൾക്കും സംയുക്തമായ ക്രെഡിതി പൂൾ" +title = "പങ്കിട്ട ക്രെഡിറ്റുകൾ" + +[team.features.dashboard] +description = "ടീം പ്രവർത്തനവും ഉപയോഗവും കാണുക" +title = "Team ഡാഷ്ബോർഡ്" + +[team.features.invite] +description = "നിങ്ങളുടെ ടീമിലേക്ക് അംഗങ്ങളെ ചേർക്കുക" +title = "അംഗങ്ങളെ ക്ഷണിക്കുക" + +[team.invite] +cancelLabel = "റദ്ദാക്കുക" +invalidEmail = "അസാധുവായ ഇമെയിൽ വിലാസം" +placeholder = "ഇമെയിൽ വിലാസം നൽകുക" +sendButton = "ആഹ്വാനം അയയ്ക്കുക" +title = "ടീം അംഗത്തെ ക്ഷണിക്കുക" + +[team.members] +emailColumn = "ഇമെയിൽ" +empty = "ഇനി വരെ ടീം അംഗങ്ങളില്ല" +nameColumn = "പേര്" +pending = "പെൻഡിംഗ്" +remove = "നീക്കം ചെയ്യുക" +roleColumn = "പദവി" +title = "ടീം അംഗങ്ങൾ" + +[team.upgrade] +button = "Team-ലേക്ക് അപ്‌ഗ്രേഡ് ചെയ്യുക" +description = "ടീം സഹകരണ സവിശേഷതകൾ അൺലോക്ക് ചെയ്യുക" +title = "Team പ്ലാനിലേക്ക് അപ്‌ഗ്രേഡ് ചെയ്യുക" + +[provider.oauth2.google] +scope = "സൈൻ-ഇൻ ഓത്തെന്റിക്കേഷൻ" + +[provider.oauth2.google.clientId] +label = "Client ID" +description = "Google Cloud Console-ൽ നിന്ന് OAuth2 client ID" + +[provider.oauth2.google.clientSecret] +label = "Client Secret" +description = "Google Cloud Console-ൽ നിന്ന് OAuth2 client secret" + +[provider.oauth2.google.scopes] +label = "Scopes" +description = "കോമ ഉപയോഗിച്ച് വേർതിരിച്ച OAuth2 scopes" + +[provider.oauth2.google.useAsUsername] +label = "Username ആയി ഉപയോഗിക്കുക" +description = "Username ആയി ഉപയോഗിക്കേണ്ട field (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "സൈൻ-ഇൻ ഓത്തെന്റിക്കേഷൻ" + +[provider.oauth2.github.clientId] +label = "Client ID" +description = "GitHub Developer Settings-ൽ നിന്ന് OAuth2 client ID" + +[provider.oauth2.github.clientSecret] +label = "Client Secret" +description = "GitHub Developer Settings-ൽ നിന്ന് OAuth2 client secret" + +[provider.oauth2.github.scopes] +label = "Scopes" +description = "കോമ ഉപയോഗിച്ച് വേർതിരിച്ച OAuth2 scopes" + +[provider.oauth2.github.useAsUsername] +label = "Username ആയി ഉപയോഗിക്കുക" +description = "Username ആയി ഉപയോഗിക്കേണ്ട field (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Issuer URL" +description = "Keycloak realm-ന്റെ OpenID Connect Discovery endpoint-ന്റെ URL" + +[provider.oauth2.keycloak.clientId] +label = "Client ID" +description = "Keycloak-ൽ നിന്ന് OAuth2 client ID" + +[provider.oauth2.keycloak.clientSecret] +label = "Client Secret" +description = "Keycloak-ൽ നിന്ന് OAuth2 client secret" + +[provider.oauth2.keycloak.scopes] +label = "Scopes" +description = "കോമ ഉപയോഗിച്ച് വേർതിരിച്ച OAuth2 scopes" + +[provider.oauth2.keycloak.useAsUsername] +label = "Username ആയി ഉപയോഗിക്കുക" +description = "Username ആയി ഉപയോഗിക്കേണ്ട field (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "Generic OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Generic OAuth2 പ്രവർത്തനക്ഷമമാക്കുക" +description = "കസ്റ്റം OAuth2 provider ഉപയോഗിച്ച് authentication പ്രവർത്തനക്ഷമമാക്കുക" + +[provider.oauth2.generic.provider] +label = "Provider Name" +description = "നിങ്ങളുടെ OAuth2 provider-ന്റെ പേര് (ഉദാ., Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "Issuer URL" +description = "OpenID Connect Discovery (/.well-known/openid-configuration) പിന്തുണക്കുന്ന provider" + +[provider.oauth2.generic.clientId] +label = "Client ID" +description = "നിങ്ങളുടെ provider-ൽ നിന്ന് OAuth2 client ID" + +[provider.oauth2.generic.clientSecret] +label = "Client Secret" +description = "നിങ്ങളുടെ provider-ൽ നിന്ന് OAuth2 client secret" + +[provider.oauth2.generic.scopes] +label = "Scopes" +description = "കോമ ഉപയോഗിച്ച് വേർതിരിച്ച OAuth2 scopes" + +[provider.oauth2.generic.useAsUsername] +label = "Username ആയി ഉപയോഗിക്കുക" +description = "Username ആയി ഉപയോഗിക്കേണ്ട field" + +[provider.oauth2.generic.autoCreateUser] +label = "ഉപയോക്താക്കളെ സ്വയമേവ സൃഷ്ടിക്കുക" +description = "ആദ്യ OAuth2 ലോഗിനിൽ ഉപയോക്തൃ അക്കൗണ്ടുകൾ സ്വയമേവ സൃഷ്ടിക്കുക" + +[provider.oauth2.generic.blockRegistration] +label = "രജിസ്ട്രേഷൻ തടയുക" +description = "OAuth2 വഴി പുതിയ ഉപയോക്തൃ രജിസ്ട്രേഷൻ തടയുക" + +[provider.smtp] +name = "SMTP Mail" +scope = "ഇമെയിൽ അറിയിപ്പുകൾ" + +[provider.smtp.enabled] +label = "മെയിൽ പ്രവർത്തനക്ഷമമാക്കുക" +description = "ഇമെയിൽ അറിയിപ്പുകളും SMTP സവിശേഷതകളും പ്രവർത്തനക്ഷമമാക്കുക" + +[provider.smtp.host] +label = "SMTP Host" +description = "നിങ്ങളുടെ SMTP സെർവറിന്റെ hostname അല്ലെങ്കിൽ IP വിലാസം" + +[provider.smtp.port] +label = "SMTP Port" +description = "SMTP കണക്ഷനായി ഉപയോഗിക്കുന്ന പോർട്ട് നമ്പർ (സാധാരണ 25, 465, അല്ലെങ്കിൽ 587)" + +[provider.smtp.username] +label = "SMTP Username" +description = "SMTP authentication-യ്ക്കുള്ള Username" + +[provider.smtp.password] +label = "SMTP Password" +description = "SMTP authentication-ത്തിനുള്ള Password" + +[provider.smtp.from] +label = "From Address" +description = "അയച്ചവനായി ഉപയോഗിക്കേണ്ട ഇമെയിൽ വിലാസം" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "SAML2 പ്രവർത്തനക്ഷമമാക്കുക" +description = "SAML2 authentication പ്രവർത്തനക്ഷമമാക്കുക (Enterprise മാത്രമുളളത്)" + +[provider.saml2.provider] +label = "Provider Name" +description = "നിങ്ങളുടെ SAML2 provider-ന്റെ പേര്" + +[provider.saml2.registrationId] +label = "Registration ID" +description = "നിങ്ങളുടെ Service Provider (SP) ആപ്പിന്റെ പേര്" + +[provider.saml2.idpMetadataUri] +label = "IDP Metadata URI" +description = "നിങ്ങളുടെ provider-ന്റെ metadata-യുടെ URI" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login URL" +description = "SSO ആരംഭിക്കുന്നതിനുള്ള URL" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout URL" +description = "SLO ആരംഭിക്കുന്നതിനുള്ള URL" + +[provider.saml2.idpIssuer] +label = "IDP Issuer" +description = "നിങ്ങളുടെ provider-ന്റെ ID" + +[provider.saml2.idpCert] +label = "IDP Certificate" +description = "സർട്ടിഫിക്കറ്റ് പാത്ത് (ഉദാ., classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Private Key" +description = "നിങ്ങളുടെ private key-ന്റെ പാത്ത്" + +[provider.saml2.spCert] +label = "SP Certificate" +description = "നിങ്ങളുടെ സൈൻ ചെയ്യുന്ന സർട്ടിഫിക്കേറ്റിന്റെ പാത്ത്" + +[provider.saml2.autoCreateUser] +label = "ഉപയോക്താക്കളെ സ്വയമേവ സൃഷ്ടിക്കുക" +description = "ആദ്യ SAML2 ലോഗിനിൽ ഉപയോക്തൃ അക്കൗണ്ടുകൾ സ്വയമേവ സൃഷ്ടിക്കുക" + +[provider.saml2.blockRegistration] +label = "രജിസ്ട്രേഷൻ തടയുക" +description = "SAML2 വഴി പുതിയ ഉപയോക്തൃ രജിസ്ട്രേഷൻ തടയുക" + +[provider.googledrive] +name = "Google Drive" +scope = "ഫയൽ ഇംപോർട്ട്" + +[provider.googledrive.enabled] +label = "Google Drive File Picker പ്രവർത്തനക്ഷമമാക്കുക" +description = "ഉപയോക്താക്കൾക്ക് Google Drive-ൽ നിന്ന് നേരിട്ട് ഫയലുകൾ ഇംപോർട്ട് ചെയ്യാൻ അനുവദിക്കുക" + +[provider.googledrive.clientId] +label = "Client ID" +description = "Google Cloud Console-ൽ നിന്ന് Google OAuth 2.0 Client ID" + +[provider.googledrive.apiKey] +label = "API Key" +description = "Google Cloud Console-ൽ നിന്ന് Google Picker API-യ്ക്ക് Google API Key" + +[provider.googledrive.appId] +label = "App ID" +description = "Google Cloud Console-ൽ നിന്ന് Google Drive App ID" diff --git a/frontend/public/locales/nl-NL/translation.toml b/frontend/public/locales/nl-NL/translation.toml index c5d784469..2460903f3 100644 --- a/frontend/public/locales/nl-NL/translation.toml +++ b/frontend/public/locales/nl-NL/translation.toml @@ -96,6 +96,8 @@ pin = "Bestand vastzetten (actief houden na tooluitvoering)" poweredBy = "Mogelijk gemaakt door" pro = "Pro" processTimeWarning = "Waarschuwing: Dit proces kan tot een minuut duren afhankelijk van de bestandsgrootte" +processingComplete = "Je bestand is klaar." +processingCompleteMultiple = "{{count}} bestanden zijn klaar." property = "Eigenschap" quickPosition = "Snelle positie" red = "Rood" @@ -105,6 +107,7 @@ save = "Opslaan" saveToBrowser = "Opslaan in browser" saveUnavailable = "Opslaan niet beschikbaar voor dit item" seeDockerHub = "Zie Docker Hub" +editSecret = "Bewerk deze waarde" selectFillter = "-- Selecteren --" size = "Grootte" sponsor = "Sponsor" @@ -651,6 +654,7 @@ description = "Configureer externe authenticatieproviders zoals OAuth2 en SAML." disconnect = "Verbinding verbreken" disconnected = "Provider succesvol ontkoppeld" disconnectError = "Ontkoppelen van provider mislukt" +documentation = "Documentatie bekijken" imageResolutionFull = "Full (Original Size)" imageResolutionReduced = "Reduced (Max 1200px)" linkedServices = "Gekoppelde diensten" @@ -964,6 +968,18 @@ label = "Standaardlocale" description = "Maximale bestandsgrootte voor uploaden (bijv. 100MB, 1GB)" label = "Uploadlimiet" +[admin.settings.general.hideDisabledTools] +description = "Uitgeschakelde tools in de interface verbergen" +label = "Uitgeschakelde tools verbergen" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Google Drive-knop verbergen als niet ingeschakeld" +label = "Google Drive verbergen" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Mobiele QR-scannerknop verbergen als niet ingeschakeld" +label = "Mobiele scanner verbergen" + [admin.settings.general.frontendUrl] description = "Base URL for frontend (e.g., https://pdf.example.com). Used for email invite links and mobile QR code uploads. Leave empty to use backend URL." label = "Frontend URL" @@ -1148,6 +1164,8 @@ title = "Beveiliging" [admin.settings.security.audit] label = "Auditlogboek" +showDetails = "Auditniveau-details weergeven" +hideDetails = "Auditniveau-details verbergen" [admin.settings.security.audit.enabled] description = "Gebruikersacties en systeemgebeurtenissen bijhouden voor compliance en beveiligingsmonitoring" @@ -1157,10 +1175,32 @@ label = "Auditlogboek inschakelen" description = "0=UIT, 1=BASIS, 2=STANDAARD, 3=UITGEBREID" label = "Auditniveau" +[admin.settings.security.audit.levelDetails] +off = "Geen auditlogging (behalve kritieke beveiligingsgebeurtenissen)" +basic = "PDF-bestandsbewerkingen (comprimeren, splitsen, samenvoegen, enz.) en instellingenwijzigingen. Legt vast: status van bewerking (succes/mislukt), methodeparameters, timing. Minimaal logvolume." +standard = "BASIC-gebeurtenissen plus: inloggen/uitloggen, accountwijzigingen, algemene GET-verzoeken. Sluit continue polling-aanroepen (/auth/me, /app-config, /health, enz.) uit om logruis te verminderen. Ideaal voor de meeste implementaties." +verbose = "STANDARD-gebeurtenissen plus: continue polling-aanroepen, alle GET-verzoeken, gedetailleerde timing. Waarschuwing: hoog logvolume en prestatie-impact." + [admin.settings.security.audit.retentionDays] description = "Aantal dagen dat auditlogs bewaard blijven" label = "Bewaartermijn audit (dagen)" +[admin.settings.security.audit.advancedOptions] +title = "Geavanceerde opties" +description = "De volgende opties vergroten verwerkingstijd en geheugengebruik. Schakel alleen in als het echt nodig is." + +[admin.settings.security.audit.captureFileHash] +description = "Extraheer SHA-256-hash van geüploade PDF-bestanden voor integriteitscontrole. Onafhankelijk van auditniveau." +label = "Bestandshash vastleggen (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Extraheer auteursveld uit PDF-documenten tijdens verwerking. Vereist PDF-parsing, verhoogt latentie. Onafhankelijk van auditniveau." +label = "PDF-auteursmetadata vastleggen" + +[admin.settings.security.audit.captureOperationResults] +description = "Retourwaarden van methoden vastleggen. Niet aanbevolen: verhoogt logvolume en schijfgebruik aanzienlijk." +label = "Resultaten van bewerkingen vastleggen" + [admin.settings.security.csrfDisabled] description = "Cross-Site Request Forgery-bescherming uitschakelen (niet aanbevolen)" label = "CSRF-bescherming uitschakelen" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "Auditlogging configureren" +configureAuditMessage = "Pas auditlogniveau, bewaartermijn en andere instellingen aan in het gedeelte Beveiliging & Authenticatie." disabled = "Auditlogging is uitgeschakeld" disabledMessage = "Schakel auditlogging in uw applicatieconfiguratie in om systeemevenementen te volgen." enterpriseRequired = "Enterprise-licentie vereist" enterpriseRequiredMessage = "Het audit-loggingsysteem is een functie voor ondernemingen. Upgrade naar een ondernemingslicentie om toegang te krijgen tot auditlogboeken en analyses." +goToSettings = "Ga naar auditinstellingen" notAvailable = "Auditsysteem niet beschikbaar" notAvailableMessage = "Het auditsysteem is niet geconfigureerd of niet beschikbaar." -[audit.charts] -byType = "Gebeurtenissen per type" -byUser = "Gebeurtenissen per gebruiker" -day = "Dag" -error = "Fout bij laden van grafieken" -month = "Maand" -overTime = "Gebeurtenissen in de tijd" -title = "Auditdashboard" -week = "Week" - [audit.error] title = "Fout bij laden van auditsysteem" -[audit.events] -actions = "Acties" -clearFilters = "Wissen" -details = "Details" -endDate = "Einddatum" -error = "Fout bij laden van gebeurtenissen" -eventDetails = "Gebeurtenisdetails" -filterByType = "Filteren op type" -filterByUser = "Filteren op gebruiker" -ipAddress = "IP-adres" -noEvents = "Geen gebeurtenissen gevonden" -startDate = "Startdatum" -timestamp = "Tijdstempel" -title = "Auditgebeurtenissen" -type = "Type" -user = "Gebruiker" -viewDetails = "Details bekijken" - [audit.export] clearFilters = "Wissen" description = "Exporteer auditgebeurtenissen naar CSV- of JSON-formaat. Gebruik filters om de geëxporteerde gegevens te beperken." endDate = "Einddatum" error = "Gegevens exporteren mislukt" exportButton = "Gegevens exporteren" +fieldAuthor = "Auteur (uit PDF)" +fieldDate = "Datum" +fieldDocumentName = "Documentnaam" +fieldFileHash = "Bestandshash (SHA-256)" +fieldIpAddress = "IP-adres" +fieldOperationResults = "Bewerkingsresultaten" +fieldOutcome = "Uitkomst (Succes/Mislukt)" +fieldTool = "Tool" +fieldUsername = "Gebruikersnaam" filterByType = "Filteren op type" filterByUser = "Filteren op gebruiker" filters = "Filters (optioneel)" format = "Exportformaat" +selectFields = "Velden selecteren om op te nemen" startDate = "Startdatum" title = "Auditgegevens exporteren" +verboseRequired = "Vereist VERBOSE auditniveau" [audit.systemStatus] +autoRefresh = "Automatisch vernieuwen" +autoRefreshLabel = "Automatisch elke 30s vernieuwen" +captureBySettings = "Inschakelen in instellingen" +capturedFields = "Vastgelegde velden" +date = "Datum" days = "dagen" disabled = "Uitgeschakeld" +documentName = "Documentnaam" enabled = "Ingeschakeld" +fileHash = "Bestandshash" level = "Auditniveau" +pdfAuthor = "PDF-auteur" retention = "Bewaartermijn" status = "Auditlogging" title = "Systeemstatus" +tool = "Tool" totalEvents = "Totaal aantal gebeurtenissen" +username = "Gebruikersnaam" +verboseOnly = "Alleen VERBOSE" + +[audit.stats] +activeUsers = "Actieve gebruikers" +attention = "Aandacht vereist" +avgLatency = "Gem. latentie" +error = "Fout bij laden van statistieken" +errorLoadingStats = "Statistieken laden mislukt" +excellent = "Uitstekend" +good = "Goed" +noData = "N.v.t." +successRate = "Succesratio" +title = "Samenvatting" +totalEvents = "Totaal aantal gebeurtenissen" +vsLastPeriod = "t.o.v. vorige periode" + +[audit.charts] +byTool = "Meest gebruikte tools" +byType = "Gebeurtenissen per type" +byUser = "Gebeurtenissen per gebruiker" +day = "Dag" +error = "Fout bij laden van grafieken" +hourlyActivity = "Activiteit per uur" +month = "Maand" +noData = "Geen gegevens voor deze periode" +overTime = "Gebeurtenissen in de tijd" +title = "Auditdashboard" +week = "Week" + +[audit.events] +actions = "Acties" +author = "Auteur" +clearFilters = "Wissen" +details = "Details" +documentName = "Document" +endDate = "Einddatum" +error = "Fout bij laden van gebeurtenissen" +eventDetails = "Gebeurtenisdetails" +failure = "Mislukt" +fileHash = "Bestandshash" +filterByType = "Filteren op type" +filterByUser = "Filteren op gebruiker" +ipAddress = "IP-adres" +noEvents = "Geen gebeurtenissen gevonden" +outcome = "Status" +sortAsc = "Oplopend sorteren" +sortDesc = "Aflopend sorteren" +startDate = "Startdatum" +success = "Succes" +timestamp = "Tijdstempel" +title = "Auditgebeurtenissen" +type = "Type" +user = "Gebruiker" +viewDetails = "Details bekijken" + +[audit.filters] +allOutcomes = "Alles" +failureOnly = "Alleen mislukkingen" +last7Days = "Afgelopen 7 dagen" +last30Days = "Afgelopen 30 dagen" +outcomeFilter = "Uitkomst" +quickPresets = "Snelle filters" +successOnly = "Alleen successen" +thisMonth = "Deze maand" +today = "Vandaag" [audit.tabs] +clearData = "Gegevens wissen" dashboard = "Dashboard" events = "Auditgebeurtenissen" export = "Exporteren" +[audit.clearData] +cancel = "Annuleren" +codeDoesNotMatch = "Code komt niet overeen" +codePlaceholder = "Typ de code hier" +confirmationCode = "Bevestigingscode" +confirmationRequired = "Alle auditgegevens verwijderen" +confirmMessage = "Dit verwijdert permanent alle auditlogs. Voer hieronder de bevestigingscode in om door te gaan." +confirmTitle = "Bevestig dat je wilt verwijderen" +deleteButton = "Verwijderen" +enterCode = "Bevestigingscode" +enterCodeBelow = "Voer de code exact in zoals hierboven weergegeven (hoofdlettergevoelig)" +initiateDelete = "Alle gegevens verwijderen" +irreversible = "ONOMKEERBAAR" +success = "Succes" +successMessage = "Alle auditgegevens zijn succesvol gewist" +warning1 = "Deze actie kan niet ongedaan worden gemaakt" +warning2 = "Het verwijderen van auditgegevens verwijdert permanent alle historische auditlogs, inclusief beveiligingsgebeurtenissen, gebruikersactiviteiten en bestandsbewerkingen uit de database." + [auth] accessDenied = "Toegang geweigerd" insufficientPermissions = "U hebt geen toestemming om deze actie uit te voeren." @@ -2254,9 +2374,11 @@ copy = "Kopiëren" done = "Gereed" error = "Fout" expand = "Uitvouwen" +learnMore = "Meer informatie" lines = "regels" loading = "Laden..." next = "Volgende" +operation = "deze bewerking" preview = "Voorbeeld" previous = "Vorige" refresh = "Vernieuwen" @@ -2920,6 +3042,7 @@ copyStack = "Tracering kopiëren" discordSubmit = "Discord - Support-post indienen" dismissAllErrors = "Alle fouten sluiten" encryptedPdfMustRemovePassword = "Deze PDF is versleuteld of met een wachtwoord beveiligd. Ontgrendel hem voordat u naar PDF/A converteert." +generic = "Er is een fout opgetreden" github = "Dien een ticket op Github in." githubSubmit = "GitHub - Ticket indienen" incorrectPasswordProvided = "Het PDF-wachtwoord is onjuist of niet opgegeven." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Uw abonnement is succesvol geüpgraded. Uw bestaande l upgradeSuccess = "Betaling geslaagd! Uw abonnement is geüpgraded. De licentie is op uw server bijgewerkt. U ontvangt binnenkort een bevestigingsmail." upgradeTitle = "Upgraden naar {{planName}}" yearly = "Jaarlijks" +checkoutOpened = "Afrekenen geopend in browser" +checkoutInstructions = "Rond je aankoop af in het browservenster dat zojuist is geopend. Ga na de betaling hier terug en klik op de knop hieronder om je factureringsinformatie te vernieuwen." +refreshBilling = "Ik heb betaald - Facturering vernieuwen" +closeLater = "Ik doe dit later" [payment.emailStage] continue = "Doorgaan" @@ -4679,6 +4806,13 @@ prompt = "Kies pagina om tabel te extraheren" submit = "Extraheren" title = "PDF naar CSV" +[PDFToXLSX] +header = "PDF naar Excel" +prompt = "Kies pagina's om tabellen te extraheren" +submit = "Converteren" +title = "PDF naar Excel (XLSX)" +tags = "spreadsheet,excel,xlsx,tabel,extraheren,converteren" + [PDFToHTML] credit = "Deze service gebruikt pdftohtml voor bestandsconversie." header = "PDF naar HTML" @@ -4835,6 +4969,7 @@ customPricing = "Aangepast" featureComparison = "Functievergelijking" from = "Vanaf" hideComparison = "Functievergelijking verbergen" +included = "Inbegrepen" includedInCurrent = "Inbegrepen in uw abonnement" licensedSeats = "Gelicenseerd: {{count}} plaatsen" manage = "Beheren" @@ -4852,9 +4987,11 @@ title = "Actief abonnement" [plan.availablePlans] subtitle = "Kies het abonnement dat bij uw behoeften past" +loadError = "Kan planprijzen niet laden. Standaardwaarden worden gebruikt." title = "Beschikbare abonnementen" [plan.enterprise] +siteLicense = "Site-licentie" highlight1 = "Aangepaste prijzen" highlight2 = "Toegewijde ondersteuning" highlight3 = "Nieuwste functies" @@ -4928,6 +5065,81 @@ keyDescription = "Plak de licentiesleutel uit uw e-mail" success = "Licentie geactiveerd!" successMessage = "Uw licentie is met succes geactiveerd. U kunt dit venster nu sluiten." +[plan.team] +name = "Team" +siteLicense = "Site-licentie" + +[credits] +enableOverageBilling = "Overschrijdingsfacturering inschakelen" +maybeLater = "Misschien later" +upgrade = "Upgraden" + +[credits.modal] +advancedMonitoring = "Geavanceerde monitoring" +allInOneWorkspace = "Alles-in-één PDF-werkruimte (viewer, tools & agent)" +apiSandbox = "API-sandbox" +contactSales = "Neem contact op met Sales" +creditsRemaining = "{{current}} van {{total}} resterend" +creditsThisMonth = "Maandelijkse credits" +current = "Huidig abonnement" +customPricing = "Aangepast" +customSmartFolders = "Aangepaste Smart Folders" +dedicatedSupportSlas = "Toegewijde support & SLA's" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Alles in Credits, plus:" +everythingInFree = "Alles in Free, plus:" +fasterThroughput = "10x snellere doorvoer" +forRegularWork = "Voor regulier PDF-werk:" +freeTier = "Gratis niveau" +fullyPrivateFiles = "Volledige bestandsprivacy" +largeFileProcessing = "Verwerking van grote bestanden" +managedMemberMessage = "Je hebt onbeperkte toegang tot credits via je team. Neem contact op met je teamleider als je hulp nodig hebt." +managedMemberTitle = "Onbeperkte credits" +meteringBillingNote = "Overschrijdingscredits worden maandelijks gefactureerd samen met je Team-abonnement. Volg je gebruik op elk moment in je accountinstellingen." +meteringExplanation = "Je Team-abonnement bevat {{credits}} credits per maand. Wanneer ze op zijn, levert overschrijdingsfacturering automatisch extra credits zodat je nooit hoeft te stoppen met werken." +meteringIncluded = "{{credits}} credits/maand inbegrepen bij Team" +meteringNoCommitment = "Geen verplichting, op elk moment opzegbaar" +meteringNeverRunOut = "Nooit zonder credits" +meteringPayAsYouGo = "Alleen betalen voor wat je gebruikt" +meteringPrice = "Extra credits voor {{price}}/credit" +meteringTitle = "Betaal-naar-gebruik overschrijdingsfacturering" +monthlyCredits = "maandelijkse credits" +orgWideAccess = "Organisatiebrede toegangscontrole" +overage = "overschrijding" +perMonth = "/maand" +popular = "Populair" +premiumAiModels = "Premium AI-modellen" +prioritySupport = "Prioritaire support" +privateDocCloud = "Privé Document Cloud" +ragFineTuning = "RAG + fine-tuning" +secureApiAccess = "Beveiligde API-toegang" +selfHostLink = "Bekijk de documentatie en plannen" +selfHostPrompt = "Wil je zelf hosten?" +standardThroughput = "Standaard doorvoer" +subtitle = "Upgrade naar Team voor 10x de credits en snellere verwerking." +subtitlePro = "Schakel automatische overschrijdingsfacturering in zodat je nooit zonder credits zit." +teamLeaderOnly = "Alleen teamleiders kunnen overschrijdingsfacturering inschakelen" +teamSubscription = "Team" +titleExhausted = "Je hebt je gratis credits gebruikt" +titleExhaustedPro = "Je hebt geen credits meer" +unlimitedApiAccess = "Onbeperkte API-toegang" +unlimitedMonthlyCredits = "Site-licentie" +unlimitedSeats = "Onbeperkte seats" + +[credits.modal.features] +everythingInCredits = "Alles in Credits, plus:" +everythingInFree = "Alles in Free, plus:" +forRegularWork = "Voor regulier PDF-werk:" + +[credits.insufficient] +brief = "Onvoldoende credits. Je hebt {{required}} credits nodig maar hebt er {{current}}." +freeTier = "Upgrade naar Team voor 10x meer credits en onbeperkte overschrijdingsfacturering." +managedMember = "Neem contact op met je teamleider voor hulp." +message = "Je hebt niet genoeg credits om {{tool}} uit te voeren. Je hebt momenteel {{current}} credits." +messageWithAmount = "Je hebt {{required}} credits nodig om {{tool}} uit te voeren, maar je hebt er slechts {{current}}." +teamMember = "Schakel overschrijdingsfacturering in zodat je nooit zonder credits komt te zitten." +title = "Onvoldoende credits" + [printFile] header = "Print bestand naar printer" submit = "Afdrukken" @@ -5565,6 +5777,70 @@ user = "Ingelogd als" saas = "Stirling Cloud" selfhosted = "Self-hosted" +[settings.planBilling] +currentPlan = "Huidig abonnement" +loading = "Factureringsinformatie laden..." +notAvailable = "Abonnement & facturering is alleen beschikbaar wanneer verbonden met Stirling Cloud (SaaS-modus)." +title = "Abonnement & facturering" + +[settings.planBilling.billing] +manageBilling = "Facturering beheren" +nextBillingDate = "Volgende facturatiedatum" +overageCost = "Huidige overschrijdingskosten: {{amount}} ({{credits}} credits)" + +[settings.planBilling.credits] +estimatedCost = "Geschatte kosten: {{amount}}" +freeTierInfo = "Gratis abonnement bevat {{freeCredits}} credits per maand. Upgrade naar Team voor {{teamCredits}} credits/maand en betaal-naar-gebruik overschrijdingsfacturering." +included = "{{count}} credits/maand (inbegrepen)" +noOverage = "Geen overschrijdingskosten deze maand. Je gebruikt je inbegrepen {{count}} credits." +overage = "+ {{count}} overschrijding" +overageInfo = "Overschrijdingscredits worden gefactureerd tegen {{price}} per credit. Je betaalt alleen voor wat je gebruikt boven je maandelijkse tegoed." +title = "Creditgebruik" + +[settings.planBilling.errors] +fetchFailed = "Kan factureringsgegevens niet ophalen" +retry = "Opnieuw proberen" + +[settings.planBilling.status] +active = "Actief" +canceled = "Geannuleerd" +pastDue = "Achterstallig" +trial = "Proef" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Aangepaste enterprise-functies en support" +free = "Gratis" +freeDescription = "50 credits per maand" +team = "Team" +teamBadge = "Team" +teamDescription = "500 credits/maand inbegrepen, automatische overschrijdingsfacturering voor ononderbroken service" +teamTooltipCredits = "Team-abonnement bevat {{credits}} credits/maand." +teamTooltipFineprint = "Je betaalt alleen voor wat je gebruikt boven de inbegrepen credits." +teamTooltipOverage = "Automatische overschrijdingsfacturering tegen {{price}}/credit zorgt voor ononderbroken service." + +[settings.planBilling.team] +managedByTeam = "Beheerd door team" +memberCount = "{{count}} teamleden" + +[settings.planBilling.trial] +daysRemaining = "{{days}} dagen resterend" +daysRemainingFull = "Je proefperiode eindigt over {{days}} dagen" +endDate = "Verloopt: {{date}}" +endsOn = "Proef eindigt" +title = "Gratis proef actief" + +[settings.planBilling.upgrade] +cta = "Upgrade naar Team" +featureApi = "API-toegang voor automatisering" +featureCredits = "{{teamCredits}} credits per maand (vs {{freeCredits}} op Free)" +featureMembers = "Onbeperkt aantal teamleden" +featureSupport = "Prioritaire support" +featureThroughput = "Snellere verwerkingsdoorvoer" +opensInBrowser = "Opent in browser om upgrade te voltooien" +subtitle = "Upgrade naar Team voor:" +title = "Upgrade je abonnement" + [settings.developer] apiKeys = "API-sleutels" title = "Ontwikkelaar" @@ -5689,6 +5965,9 @@ people = "Personen" teams = "Teams" title = "Werkruimte" +[settings.team] +title = "Team" + [setup] description = "Begin door te kiezen hoe u Stirling PDF wilt gebruiken" welcome = "Welkom bij Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "Automatisch splitsen met scheidingsvellen" name = "Paginascheider" tooltip = "Gebruik QR-code scheidingsvellen tussen documenten tijdens het scannen" +[split.methods.byPoster] +name = "Afdrukbare delen" +desc = "Grote pagina's splitsen in afdrukbare formaten" +tooltip = "Groot formaat pagina's opdelen in kleinere delen geschikt voor afdrukken op standaardpapier (A4, Letter, enz.)" + [split.methods.byPages] desc = "Specifieke pagina's extraheren (1,3,5-10)" name = "Paginanummers" @@ -6029,6 +6313,7 @@ tooltip = "Specificeer maximale bestandsgrootte (bijv. 10MB, 500KB)" [split.methods.prefix] splitAt = "Splitsen op" splitBy = "Splitsen volgens" +splitInto = "Splitsen in" [split.methodSelection.tooltip] bullet1 = "Klik op een methodekaart om te selecteren" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Selecteer eerst een splitsmethode" chooseMethod = "Methode kiezen" settings = "Instellingen" +[split.poster] +rightToLeft = "Rechts-naar-links splitsen" + +[split.poster.pageSize] +label = "Doelpaginaformaat" +description = "Formaat van uitvoerpagina's voor afdrukken" + +[split.poster.xFactor] +label = "Horizontale verdelingen" +description = "Aantal kolommen waarin elke pagina wordt gesplitst" + +[split.poster.yFactor] +label = "Verticale verdelingen" +description = "Aantal rijen waarin elke pagina wordt gesplitst" + [split.tooltip.byChapters] bullet1 = "Bladwijzerniveau: welk niveau om op te splitsen (1=bovenste niveau)" bullet2 = "Metadata opnemen: documenteigenschappen behouden" @@ -6085,6 +6385,14 @@ bullet5 = "Schakel Duplex-modus in als u beide zijden van scheidingsvellen scant text = "Scans automatisch splitsen met fysieke scheidingsvellen met QR-codes. Perfect voor meerdere documenten die samen zijn gescand." title = "Splitsen met paginascheider" +[split.tooltip.byPoster] +bullet1 = "Doelpaginaformaat: Kies uitvoerpapierformaat (A4, Letter, enz.)" +bullet2 = "Horizontale/Verticale verdelingen: Rastergrootte voor splitsen" +bullet3 = "Rechts-naar-links: Keer kolomvolgorde om voor RTL-indelingen" +bullet4 = "Print en zet de stukken in elkaar om je poster te maken" +text = "Splits grote PDF-pagina's in kleinere, afdrukbare delen die geschikt zijn voor standaardpapierformaten. Perfect voor posterprints van oversized pagina's." +title = "Splitsen voor posterafdruk" + [split.tooltip.byPages] bullet1 = "Enkele splitspunten: 3,7 (splitst na pagina's 3 en 7)" bullet2 = "Reeks-splitspunten: 3-8 (splitst vóór pagina 3 en na pagina 8)" @@ -6364,9 +6672,13 @@ tags = "web-capture,pagina opslaan,web-naar-doc,archief" title = "URL naar PDF" [usage] +aboutUsageAnalytics = "Over gebruiksanalyses" +configureSettings = "Analytics-instellingen configureren" error = "Fout bij laden van gebruiksstatistieken" noData = "Geen gegevens beschikbaar" noDataMessage = "Er zijn momenteel geen gebruiksstatistieken beschikbaar." +usageAnalyticsExplanation = "Gebruiksanalyses volgen endpointverzoeken en toolgebruikspatronen. In combinatie met het Audit Logging-dashboard krijg je volledig inzicht in systeemactiviteit, prestaties en beveiligingsgebeurtenissen." +viewAuditLogs = "Auditlogs bekijken" [usage.chart] title = "Grafiek van endpointgebruik" @@ -6947,3 +7259,278 @@ cancel = "Annuleren" confirm = "Uitpakken" message = "Dit ZIP-bestand bevat {{count}} bestanden. Toch uitpakken?" title = "Groot ZIP-bestand" + +[cloudBadge] +tooltip = "Deze bewerking gebruikt je cloud-credits" + +[team] +cancelInviteError = "Uitnodiging annuleren mislukt" +confirmCancelInvite = "Weet je zeker dat je deze uitnodiging wilt annuleren?" +confirmLeave = "Weet je zeker dat je dit team wilt verlaten?" +confirmLeaveLeader = "Als teamleider word je door te vertrekken uit het team verwijderd. Weet je het zeker?" +confirmRemove = "Weet je zeker dat je dit lid wilt verwijderen?" +editName = "Teamnaam bewerken" +inviteCancelled = "Uitnodiging geannuleerd" +inviteError = "Uitnodiging verzenden mislukt" +inviteSent = "Uitnodiging succesvol verzonden" +leader = "Teamleider" +leaveButton = "Team verlaten" +leaveError = "Team verlaten mislukt" +leaveSuccess = "Team succesvol verlaten" +loading = "Teamgegevens laden..." +memberCount = "{{count}} leden" +memberRemoved = "Lid succesvol verwijderd" +namePlaceholder = "Voer teamnaam in" +personal = "Persoonlijk" +removeError = "Lid verwijderen mislukt" +renameError = "Team hernoemen mislukt" +renameSuccess = "Team succesvol hernoemd" + +[team.invitationBanner] +message = "heeft je uitgenodigd om lid te worden van" +acceptButton = "Accepteren" +rejectButton = "Weigeren" + +[team.features] +badge = "Teamfuncties" +subtitle = "Werk samen met je team" +title = "Teamsamenwerking" +viewPlans = "Plannen bekijken" + +[team.features.billing] +description = "Facturering en abonnementen beheren" +title = "Beheer van facturering" + +[team.features.credits] +description = "Gedeelde creditpool voor alle leden" +title = "Gedeelde credits" + +[team.features.dashboard] +description = "Teamactiviteit en gebruik bekijken" +title = "Teamdashboard" + +[team.features.invite] +description = "Voeg leden toe aan je team" +title = "Leden uitnodigen" + +[team.invite] +cancelLabel = "Annuleren" +invalidEmail = "Ongeldig e-mailadres" +placeholder = "Voer e-mailadres in" +sendButton = "Uitnodiging verzenden" +title = "Teamlid uitnodigen" + +[team.members] +emailColumn = "E-mail" +empty = "Nog geen teamleden" +nameColumn = "Naam" +pending = "In afwachting" +remove = "Verwijderen" +roleColumn = "Rol" +title = "Teamleden" + +[team.upgrade] +button = "Upgrade naar Team" +description = "Ontgrendel teamsamenwerkingsfuncties" +title = "Upgrade naar Team-abonnement" + +[provider.oauth2.google] +scope = "Aanmeldingsauthenticatie" + +[provider.oauth2.google.clientId] +label = "Client-ID" +description = "De OAuth2 client-ID van Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Clientgeheim" +description = "Het OAuth2 clientgeheim van Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Scopes" +description = "Komma-gescheiden OAuth2-scopes" + +[provider.oauth2.google.useAsUsername] +label = "Gebruiken als gebruikersnaam" +description = "Veld om als gebruikersnaam te gebruiken (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Aanmeldingsauthenticatie" + +[provider.oauth2.github.clientId] +label = "Client-ID" +description = "De OAuth2 client-ID van GitHub Developer Settings" + +[provider.oauth2.github.clientSecret] +label = "Clientgeheim" +description = "Het OAuth2 clientgeheim van GitHub Developer Settings" + +[provider.oauth2.github.scopes] +label = "Scopes" +description = "Komma-gescheiden OAuth2-scopes" + +[provider.oauth2.github.useAsUsername] +label = "Gebruiken als gebruikersnaam" +description = "Veld om als gebruikersnaam te gebruiken (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Issuer-URL" +description = "URL van het OpenID Connect Discovery-eindpunt van de Keycloak-realm" + +[provider.oauth2.keycloak.clientId] +label = "Client-ID" +description = "De OAuth2 client-ID van Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Clientgeheim" +description = "Het OAuth2 clientgeheim van Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "Scopes" +description = "Komma-gescheiden OAuth2-scopes" + +[provider.oauth2.keycloak.useAsUsername] +label = "Gebruiken als gebruikersnaam" +description = "Veld om als gebruikersnaam te gebruiken (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "Generieke OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Generieke OAuth2 inschakelen" +description = "Authenticatie inschakelen via een aangepaste OAuth2-provider" + +[provider.oauth2.generic.provider] +label = "Naam provider" +description = "De naam van je OAuth2-provider (bijv. Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "Issuer-URL" +description = "Provider die OpenID Connect Discovery ondersteunt (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "Client-ID" +description = "De OAuth2 client-ID van je provider" + +[provider.oauth2.generic.clientSecret] +label = "Clientgeheim" +description = "Het OAuth2 clientgeheim van je provider" + +[provider.oauth2.generic.scopes] +label = "Scopes" +description = "Komma-gescheiden OAuth2-scopes" + +[provider.oauth2.generic.useAsUsername] +label = "Gebruiken als gebruikersnaam" +description = "Veld om als gebruikersnaam te gebruiken" + +[provider.oauth2.generic.autoCreateUser] +label = "Gebruikers automatisch aanmaken" +description = "Automatisch gebruikersaccounts aanmaken bij de eerste OAuth2-aanmelding" + +[provider.oauth2.generic.blockRegistration] +label = "Registratie blokkeren" +description = "Nieuwe gebruikersregistratie via OAuth2 voorkomen" + +[provider.smtp] +name = "SMTP-mail" +scope = "E-mailmeldingen" + +[provider.smtp.enabled] +label = "Mail inschakelen" +description = "E-mailmeldingen en SMTP-functionaliteit inschakelen" + +[provider.smtp.host] +label = "SMTP-host" +description = "De hostnaam of het IP-adres van je SMTP-server" + +[provider.smtp.port] +label = "SMTP-poort" +description = "Het poortnummer voor de SMTP-verbinding (meestal 25, 465 of 587)" + +[provider.smtp.username] +label = "SMTP-gebruikersnaam" +description = "Gebruikersnaam voor SMTP-authenticatie" + +[provider.smtp.password] +label = "SMTP-wachtwoord" +description = "Wachtwoord voor SMTP-authenticatie" + +[provider.smtp.from] +label = "Van-adres" +description = "Het e-mailadres dat als afzender wordt gebruikt" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "SAML2 inschakelen" +description = "SAML2-authenticatie inschakelen (alleen Enterprise)" + +[provider.saml2.provider] +label = "Naam provider" +description = "De naam van je SAML2-provider" + +[provider.saml2.registrationId] +label = "Registratie-ID" +description = "De naam van je Service Provider (SP)-appnaam" + +[provider.saml2.idpMetadataUri] +label = "IDP-metadata-URI" +description = "De URI voor de metadata van je provider" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login-URL" +description = "De URL voor het initiëren van SSO" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout-URL" +description = "De URL voor het initiëren van SLO" + +[provider.saml2.idpIssuer] +label = "IDP-issuer" +description = "De ID van je provider" + +[provider.saml2.idpCert] +label = "IDP-certificaat" +description = "Het certificaatpad (bijv. classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Privésleutel" +description = "Het pad naar je privésleutel" + +[provider.saml2.spCert] +label = "SP-certificaat" +description = "Het pad naar je ondertekeningscertificaat" + +[provider.saml2.autoCreateUser] +label = "Gebruikers automatisch aanmaken" +description = "Automatisch gebruikersaccounts aanmaken bij de eerste SAML2-aanmelding" + +[provider.saml2.blockRegistration] +label = "Registratie blokkeren" +description = "Nieuwe gebruikersregistratie via SAML2 voorkomen" + +[provider.googledrive] +name = "Google Drive" +scope = "Bestandsimport" + +[provider.googledrive.enabled] +label = "Google Drive-bestandskiezer inschakelen" +description = "Sta gebruikers toe om bestanden rechtstreeks vanaf Google Drive te importeren" + +[provider.googledrive.clientId] +label = "Client-ID" +description = "Google OAuth 2.0 Client-ID van Google Cloud Console" + +[provider.googledrive.apiKey] +label = "API-sleutel" +description = "Google API-sleutel voor Google Picker API van Google Cloud Console" + +[provider.googledrive.appId] +label = "App-ID" +description = "Google Drive App-ID van Google Cloud Console" diff --git a/frontend/public/locales/no-NB/translation.toml b/frontend/public/locales/no-NB/translation.toml index 96fc541c6..69a3736d3 100644 --- a/frontend/public/locales/no-NB/translation.toml +++ b/frontend/public/locales/no-NB/translation.toml @@ -96,6 +96,8 @@ pin = "Fest fil (hold aktiv etter verktøykjøring)" poweredBy = "Drevet av" pro = "Pro" processTimeWarning = "Denne prosessen kan ta opptil ett minutt avhengig av filstørrelse" +processingComplete = "Filen din er klar." +processingCompleteMultiple = "{{count}} filer er klare." property = "Egenskap" quickPosition = "Hurtigposisjon" red = "Rød" @@ -105,6 +107,7 @@ save = "Lagre" saveToBrowser = "Lagre til Nettleser" saveUnavailable = "Lagring er ikke tilgjengelig for dette elementet" seeDockerHub = "Se Docker Hub" +editSecret = "Rediger denne verdien" selectFillter = "-- Velg --" size = "Størrelse" sponsor = "Sponsor" @@ -651,6 +654,7 @@ description = "Konfigurer eksterne autentiseringsleverandører som OAuth2 og SAM disconnect = "Koble fra" disconnected = "Leverandør koblet fra" disconnectError = "Kunne ikke koble fra leverandør" +documentation = "Vis dokumentasjon" imageResolutionFull = "Full (original størrelse)" imageResolutionReduced = "Redusert (maks 1200 px)" linkedServices = "Tilknyttede tjenester" @@ -964,6 +968,18 @@ label = "Standard lokalitet" description = "Maksimal filopplastingsstørrelse (f.eks. 100MB, 1GB)" label = "Grense for filopplasting" +[admin.settings.general.hideDisabledTools] +description = "Skjul deaktiverte verktøy fra grensesnittet" +label = "Skjul deaktiverte verktøy" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Skjul Google Drive-knappen når den ikke er aktivert" +label = "Skjul Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Skjul mobil QR-skanner-knappen når den ikke er aktivert" +label = "Skjul mobilskanner" + [admin.settings.general.frontendUrl] description = "Basis-URL for frontend (f.eks. https://pdf.example.com). Brukes for e-postinvitasjonslenker og mobile QR-kodeopplastinger. La stå tomt for å bruke backend-URL." label = "Frontend URL" @@ -1148,6 +1164,8 @@ title = "Sikkerhet" [admin.settings.security.audit] label = "Revisjonslogging" +showDetails = "Vis detaljer for revisjonsnivå" +hideDetails = "Skjul detaljer for revisjonsnivå" [admin.settings.security.audit.enabled] description = "Spor brukerhandlinger og systemhendelser for etterlevelse og sikkerhetsovervåking" @@ -1157,10 +1175,32 @@ label = "Aktiver revisjonslogging" description = "0=OFF, 1=BASIC, 2=STANDARD, 3=VERBOSE" label = "Revisjonsnivå" +[admin.settings.security.audit.levelDetails] +off = "Ingen revisjonslogging (unntatt kritiske sikkerhetshendelser)" +basic = "PDF-filoperasjoner (komprimer, del, slå sammen osv.) og endringer i innstillinger. Registrerer: operasjonsstatus (suksess/feil), metodeparametere, tidsbruk. Minimalt loggvolum." +standard = "BASIC-hendelser pluss: brukerinnlogging/-utlogging, kontoendringer, generelle GET-forespørsler. Ekskluderer kontinuerlige polling-kall (/auth/me, /app-config, /health osv.) for å redusere loggstøy. Ideelt for de fleste installasjoner." +verbose = "STANDARD-hendelser pluss: kontinuerlige polling-kall, alle GET-forespørsler, detaljert tidsbruk. Advarsel: høyt loggvolum og ytelsespåvirkning." + [admin.settings.security.audit.retentionDays] description = "Antall dager revisjonslogger beholdes" label = "Bevaring av revisjon (dager)" +[admin.settings.security.audit.advancedOptions] +title = "Avanserte alternativer" +description = "Følgende alternativer øker prosesseringstid og minnebruk. Aktiver bare hvis det virkelig trengs." + +[admin.settings.security.audit.captureFileHash] +description = "Hent ut SHA-256-hash av opplastede PDF-filer for integritetsverifisering. Uavhengig av revisjonsnivå." +label = "Registrer filhash (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Hent ut forfatterfelt fra PDF-dokumenter under prosessering. Krever PDF-parsing, øker ventetiden. Uavhengig av revisjonsnivå." +label = "Registrer PDF-forfattermetadata" + +[admin.settings.security.audit.captureOperationResults] +description = "Registrer metoders returverdier. Anbefales ikke: øker loggvolum og diskbruk betydelig." +label = "Registrer operasjonsresultater" + [admin.settings.security.csrfDisabled] description = "Deaktiver Cross-Site Request Forgery-beskyttelse (anbefales ikke)" label = "Deaktiver CSRF-beskyttelse" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "Konfigurer revisjonslogging" +configureAuditMessage = "Juster revisjonsloggnivå, oppbevaringsperiode og andre innstillinger i delen Sikkerhet og autentisering." disabled = "Revisjonslogging er deaktivert" disabledMessage = "Aktiver revisjonslogging i programkonfigurasjonen for å spore systemhendelser." enterpriseRequired = "Enterprise-lisens kreves" enterpriseRequiredMessage = "Revisjonsloggsystemet er en Enterprise-funksjon. Oppgrader til en Enterprise-lisens for å få tilgang til revisjonslogger og analyse." +goToSettings = "Gå til revisjonsinnstillinger" notAvailable = "Revisjonssystemet er ikke tilgjengelig" notAvailableMessage = "Revisjonssystemet er ikke konfigurert eller ikke tilgjengelig." -[audit.charts] -byType = "Hendelser etter type" -byUser = "Hendelser etter bruker" -day = "Dag" -error = "Feil ved innlasting av diagrammer" -month = "Måned" -overTime = "Hendelser over tid" -title = "Revisjonsdashbord" -week = "Uke" - [audit.error] title = "Feil ved innlasting av revisjonssystemet" -[audit.events] -actions = "Handlinger" -clearFilters = "Tøm" -details = "Detaljer" -endDate = "Sluttdato" -error = "Feil ved innlasting av hendelser" -eventDetails = "Hendelsesdetaljer" -filterByType = "Filtrer etter type" -filterByUser = "Filtrer etter bruker" -ipAddress = "IP-adresse" -noEvents = "Ingen hendelser funnet" -startDate = "Startdato" -timestamp = "Tidsstempel" -title = "Revisjonshendelser" -type = "Type" -user = "Bruker" -viewDetails = "Vis detaljer" - [audit.export] clearFilters = "Tøm" description = "Eksporter revisjonshendelser til CSV- eller JSON-format. Bruk filtre for å begrense de eksporterte dataene." endDate = "Sluttdato" error = "Kunne ikke eksportere data" exportButton = "Eksporter data" +fieldAuthor = "Forfatter (fra PDF)" +fieldDate = "Dato" +fieldDocumentName = "Dokumentnavn" +fieldFileHash = "Filhash (SHA-256)" +fieldIpAddress = "IP-adresse" +fieldOperationResults = "Operasjonsresultater" +fieldOutcome = "Resultat (suksess/feil)" +fieldTool = "Verktøy" +fieldUsername = "Brukernavn" filterByType = "Filtrer etter type" filterByUser = "Filtrer etter bruker" filters = "Filtre (valgfritt)" format = "Eksportformat" +selectFields = "Velg felt som skal tas med" startDate = "Startdato" title = "Eksporter revisjonsdata" +verboseRequired = "Krever VERBOSE revisjonsnivå" [audit.systemStatus] +autoRefresh = "Automatisk oppdatering" +autoRefreshLabel = "Oppdater automatisk hvert 30. sekund" +captureBySettings = "Aktiver i innstillinger" +capturedFields = "Registrerte felt" +date = "Dato" days = "dager" disabled = "Deaktivert" +documentName = "Dokumentnavn" enabled = "Aktivert" +fileHash = "Filhash" level = "Revisjonsnivå" +pdfAuthor = "PDF-forfatter" retention = "Oppbevaringsperiode" status = "Revisjonslogging" title = "Systemstatus" +tool = "Verktøy" totalEvents = "Totalt antall hendelser" +username = "Brukernavn" +verboseOnly = "Kun VERBOSE" + +[audit.stats] +activeUsers = "Aktive brukere" +attention = "Krever oppmerksomhet" +avgLatency = "Gjennomsnittlig ventetid" +error = "Feil ved lasting av statistikk" +errorLoadingStats = "Kunne ikke laste statistikk" +excellent = "Utmerket" +good = "Bra" +noData = "N/A" +successRate = "Suksessrate" +title = "Sammendrag" +totalEvents = "Totale hendelser" +vsLastPeriod = "vs forrige periode" + +[audit.charts] +byTool = "Mest brukte verktøy" +byType = "Hendelser etter type" +byUser = "Hendelser etter bruker" +day = "Dag" +error = "Feil ved innlasting av diagrammer" +hourlyActivity = "Aktivitet per time" +month = "Måned" +noData = "Ingen data for denne perioden" +overTime = "Hendelser over tid" +title = "Revisjonsdashbord" +week = "Uke" + +[audit.events] +actions = "Handlinger" +author = "Forfatter" +clearFilters = "Tøm" +details = "Detaljer" +documentName = "Dokument" +endDate = "Sluttdato" +error = "Feil ved innlasting av hendelser" +eventDetails = "Hendelsesdetaljer" +failure = "Feil" +fileHash = "Filhash" +filterByType = "Filtrer etter type" +filterByUser = "Filtrer etter bruker" +ipAddress = "IP-adresse" +noEvents = "Ingen hendelser funnet" +outcome = "Status" +sortAsc = "Sorter stigende" +sortDesc = "Sorter synkende" +startDate = "Startdato" +success = "Vellykket" +timestamp = "Tidsstempel" +title = "Revisjonshendelser" +type = "Type" +user = "Bruker" +viewDetails = "Vis detaljer" + +[audit.filters] +allOutcomes = "Alle" +failureOnly = "Kun feil" +last7Days = "Siste 7 dager" +last30Days = "Siste 30 dager" +outcomeFilter = "Resultat" +quickPresets = "Hurtigfiltre" +successOnly = "Kun vellykket" +thisMonth = "Denne måneden" +today = "I dag" [audit.tabs] +clearData = "Tøm data" dashboard = "Dashbord" events = "Revisjonshendelser" export = "Eksporter" +[audit.clearData] +cancel = "Avbryt" +codeDoesNotMatch = "Koden stemmer ikke" +codePlaceholder = "Skriv inn koden her" +confirmationCode = "Bekreftelseskode" +confirmationRequired = "Slett alle revisjonsdata" +confirmMessage = "Dette vil permanent fjerne alle revisjonslogger. Skriv inn bekreftelseskoden nedenfor for å fortsette." +confirmTitle = "Bekreft at du vil slette" +deleteButton = "Slett" +enterCode = "Bekreftelseskode" +enterCodeBelow = "Skriv inn koden nøyaktig som vist ovenfor (skiller mellom store og små bokstaver)" +initiateDelete = "Slett alle data" +irreversible = "IRREVERSIBELT" +success = "Vellykket" +successMessage = "Alle revisjonsdata er blitt slettet" +warning1 = "Denne handlingen kan ikke angres" +warning2 = "Sletting av revisjonsdata vil permanent fjerne alle historiske revisjonslogger, inkludert sikkerhetshendelser, brukeraktiviteter og filoperasjoner fra databasen." + [auth] accessDenied = "Tilgang nektet" insufficientPermissions = "Du har ikke tillatelse til å utføre denne handlingen." @@ -2254,9 +2374,11 @@ copy = "Kopier" done = "Ferdig" error = "Feil" expand = "Utvid" +learnMore = "Lær mer" lines = "linjer" loading = "Laster..." next = "Neste" +operation = "denne operasjonen" preview = "Forhåndsvis" previous = "Forrige" refresh = "Oppdater" @@ -2920,6 +3042,7 @@ copyStack = "Kopier stakksporing" discordSubmit = "Discord - Send inn støtteinnlegg" dismissAllErrors = "Avvis alle feil" encryptedPdfMustRemovePassword = "Denne PDF-en er kryptert eller passordbeskyttet. Lås den opp før du konverterer til PDF/A." +generic = "Det oppstod en feil" github = "Send inn en billett på GitHub" githubSubmit = "GitHub - Send inn en billett" incorrectPasswordProvided = "PDF-passordet er feil eller ikke oppgitt." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Abonnementet ditt er oppgradert. Den eksisterende lise upgradeSuccess = "Betaling vellykket! Abonnementet ditt er oppgradert. Lisensen er oppdatert på serveren din. Du mottar snart en bekreftelses-e-post." upgradeTitle = "Oppgrader til {{planName}}" yearly = "Årlig" +checkoutOpened = "Kasse åpnet i nettleser" +checkoutInstructions = "Fullfør kjøpet i nettleservinduet som nettopp åpnet. Etter at betalingen er fullført, kom tilbake hit og klikk knappen nedenfor for å oppdatere faktureringsinformasjonen." +refreshBilling = "Jeg har fullført betalingen – oppdater fakturering" +closeLater = "Jeg gjør dette senere" [payment.emailStage] continue = "Fortsett" @@ -4679,6 +4806,13 @@ prompt = "Velg side for å trekke ut tabell" submit = "Trekke ut" title = "PDF til CSV" +[PDFToXLSX] +header = "PDF til Excel" +prompt = "Velg sider for å hente ut tabeller" +submit = "Konverter" +title = "PDF til Excel (XLSX)" +tags = "regneark,excel,xlsx,tabell,ekstraher,konverter" + [PDFToHTML] credit = "Denne tjenesten bruker pdftohtml for filkonvertering." header = "PDF til HTML" @@ -4835,6 +4969,7 @@ customPricing = "Tilpasset" featureComparison = "Funksjonssammenligning" from = "Fra" hideComparison = "Skjul funksjonssammenligning" +included = "Inkludert" includedInCurrent = "Inkludert i planen din" licensedSeats = "Lisensiert: {{count}} plasser" manage = "Administrer" @@ -4852,9 +4987,11 @@ title = "Aktiv plan" [plan.availablePlans] subtitle = "Velg planen som passer dine behov" +loadError = "Kan ikke laste planpriser. Bruker standardverdier." title = "Tilgjengelige planer" [plan.enterprise] +siteLicense = "Site-lisens" highlight1 = "Tilpasset prising" highlight2 = "Dedikert støtte" highlight3 = "Nyeste funksjoner" @@ -4928,6 +5065,81 @@ keyDescription = "Lim inn lisensnøkkelen fra e-posten din" success = "Lisens aktivert!" successMessage = "Lisensen din er aktivert. Du kan nå lukke dette vinduet." +[plan.team] +name = "Team" +siteLicense = "Site-lisens" + +[credits] +enableOverageBilling = "Aktiver overforbruksfakturering" +maybeLater = "Kanskje senere" +upgrade = "Oppgrader" + +[credits.modal] +advancedMonitoring = "Avansert overvåking" +allInOneWorkspace = "Alt-i-ett PDF-arbeidsområde (viser, verktøy og agent)" +apiSandbox = "API-sandkasse" +contactSales = "Kontakt salg" +creditsRemaining = "{{current}} av {{total}} gjenstår" +creditsThisMonth = "Månedlige kreditter" +current = "Gjeldende plan" +customPricing = "Egendefinert" +customSmartFolders = "Egendefinerte smarte mapper" +dedicatedSupportSlas = "Dedikert støtte og SLA-er" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Alt i Credits, pluss:" +everythingInFree = "Alt i Free, pluss:" +fasterThroughput = "10x raskere gjennomstrømming" +forRegularWork = "For vanlig PDF-arbeid:" +freeTier = "Gratisnivå" +fullyPrivateFiles = "Fullt private filer" +largeFileProcessing = "Behandling av store filer" +managedMemberMessage = "Du har ubegrenset tilgang til kreditter gjennom teamet ditt. Hvis du trenger hjelp, kontakt teamlederen din." +managedMemberTitle = "Ubegrensede kreditter" +meteringBillingNote = "Overforbrukskreditter faktureres månedlig sammen med Team-abonnementet ditt. Følg med på bruken din når som helst i kontoinnstillingene." +meteringExplanation = "Team-planen din inkluderer {{credits}} kreditter per måned. Når de tar slutt, gir overforbruksfakturering automatisk ekstra kreditter slik at du aldri må stoppe arbeidet." +meteringIncluded = "{{credits}} kreditter/måned inkludert i Team" +meteringNoCommitment = "Ingen binding, kan sies opp når som helst" +meteringNeverRunOut = "Gå aldri tom for kreditter" +meteringPayAsYouGo = "Betal kun for det du bruker" +meteringPrice = "Ekstra kreditter til {{price}}/kreditt" +meteringTitle = "Overforbruksfakturering – betal for det du bruker" +monthlyCredits = "månedlige kreditter" +orgWideAccess = "Organisasjonsomfattende tilgangskontroller" +overage = "overforbruk" +perMonth = "/måned" +popular = "Populær" +premiumAiModels = "Premium AI-modeller" +prioritySupport = "Prioritert støtte" +privateDocCloud = "Privat dokumentsky" +ragFineTuning = "RAG + finjustering" +secureApiAccess = "Sikker API-tilgang" +selfHostLink = "Se gjennom dokumentasjon og planer" +selfHostPrompt = "Vil du egenhoste?" +standardThroughput = "Standard gjennomstrømming" +subtitle = "Oppgrader til Team for 10x flere kreditter og raskere prosessering." +subtitlePro = "Aktiver automatisk overforbruksfakturering for aldri å gå tom for kreditter." +teamLeaderOnly = "Bare teamledere kan aktivere overforbruksfakturering" +teamSubscription = "Team" +titleExhausted = "Du har brukt opp gratiskredittene dine" +titleExhaustedPro = "Du har gått tom for kreditter" +unlimitedApiAccess = "Ubegrenset API-tilgang" +unlimitedMonthlyCredits = "Site-lisens" +unlimitedSeats = "Ubegrensede plasser" + +[credits.modal.features] +everythingInCredits = "Alt i Credits, pluss:" +everythingInFree = "Alt i Free, pluss:" +forRegularWork = "For vanlig PDF-arbeid:" + +[credits.insufficient] +brief = "Utilstrekkelige kreditter. Du trenger {{required}} kreditter, men har {{current}}." +freeTier = "Oppgrader til Team for 10x flere kreditter og ubegrenset overforbruksfakturering." +managedMember = "Ta kontakt med teamlederen din for hjelp." +message = "Du har ikke nok kreditter til å kjøre {{tool}}. Du har for øyeblikket {{current}} kreditter." +messageWithAmount = "Du trenger {{required}} kreditter for å kjøre {{tool}}, men du har bare {{current}}." +teamMember = "Aktiver overforbruksfakturering for aldri å gå tom for kreditter." +title = "Utilstrekkelige kreditter" + [printFile] header = "Skriv ut fil til skriver" submit = "Skriv ut" @@ -5565,6 +5777,70 @@ user = "Logget inn som" saas = "Stirling Cloud" selfhosted = "Selvhostet" +[settings.planBilling] +currentPlan = "Gjeldende plan" +loading = "Laster faktureringsinformasjon..." +notAvailable = "Plan og fakturering er bare tilgjengelig når du er koblet til Stirling Cloud (SaaS-modus)." +title = "Plan og fakturering" + +[settings.planBilling.billing] +manageBilling = "Administrer fakturering" +nextBillingDate = "Neste faktureringsdato" +overageCost = "Nåværende overforbrukskostnad: {{amount}} ({{credits}} kreditter)" + +[settings.planBilling.credits] +estimatedCost = "Estimert kostnad: {{amount}}" +freeTierInfo = "Gratisplanen inkluderer {{freeCredits}} kreditter per måned. Oppgrader til Team for {{teamCredits}} kreditter/måned og forbruksbasert overforbruksfakturering." +included = "{{count}} kreditter/måned (inkludert)" +noOverage = "Ingen overforbrukskostnader denne måneden. Du bruker dine inkluderte {{count}} kreditter." +overage = "+ {{count}} overforbruk" +overageInfo = "Overforbrukskreditter faktureres med {{price}} per kreditt. Du betaler bare for det du bruker utover din månedlige kvote." +title = "Kredittbruk" + +[settings.planBilling.errors] +fetchFailed = "Kan ikke hente faktureringsdata" +retry = "Prøv igjen" + +[settings.planBilling.status] +active = "Aktiv" +canceled = "Kansellert" +pastDue = "Forfalt" +trial = "Prøve" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Egendefinerte enterprise-funksjoner og støtte" +free = "Gratis" +freeDescription = "50 kreditter per måned" +team = "Team" +teamBadge = "Team" +teamDescription = "500 kreditter/måned inkludert, automatisk overforbruksfakturering for uavbrutt tjeneste" +teamTooltipCredits = "Team-planen inkluderer {{credits}} kreditter/måned." +teamTooltipFineprint = "Betal kun for det du bruker utover inkluderte kreditter." +teamTooltipOverage = "Automatisk overforbruksfakturering på {{price}}/kreditt sikrer uavbrutt tjeneste." + +[settings.planBilling.team] +managedByTeam = "Administrert av team" +memberCount = "{{count}} teammedlemmer" + +[settings.planBilling.trial] +daysRemaining = "{{days}} dager igjen" +daysRemainingFull = "Prøveperioden din avsluttes om {{days}} dager" +endDate = "Utløper: {{date}}" +endsOn = "Prøveperioden slutter" +title = "Aktiv gratis prøveperiode" + +[settings.planBilling.upgrade] +cta = "Oppgrader til Team" +featureApi = "API-tilgang for automatisering" +featureCredits = "{{teamCredits}} kreditter per måned (mot {{freeCredits}} på Gratis)" +featureMembers = "Ubegrensede teammedlemmer" +featureSupport = "Prioritert støtte" +featureThroughput = "Raskere prosesseringshastighet" +opensInBrowser = "Åpnes i nettleser for å fullføre oppgraderingen" +subtitle = "Oppgrader til Team for:" +title = "Oppgrader planen din" + [settings.developer] apiKeys = "API-nøkler" title = "Utvikler" @@ -5689,6 +5965,9 @@ people = "Personer" teams = "Team" title = "Arbeidsområde" +[settings.team] +title = "Team" + [setup] description = "Kom i gang ved å velge hvordan du vil bruke Stirling PDF" welcome = "Velkommen til Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "Automatisk deling med skilleark" name = "Skilleark" tooltip = "Bruk QR-kode-skilleark mellom dokumenter ved skanning" +[split.methods.byPoster] +name = "Utskrivbare deler" +desc = "Del opp store sider i utskriftsvennlige størrelser" +tooltip = "Del opp overdimensjonerte sider i mindre deler egnet for utskrift på standardpapir (A4, Letter osv.)" + [split.methods.byPages] desc = "Trekk ut bestemte sider (1,3,5-10)" name = "Sidetall" @@ -6029,6 +6313,7 @@ tooltip = "Angi maksimal filstørrelse (f.eks. 10MB, 500KB)" [split.methods.prefix] splitAt = "Del ved" splitBy = "Del etter" +splitInto = "Del opp i" [split.methodSelection.tooltip] bullet1 = "Klikk på et metodekort for å velge det" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Velg en delingsmetode først" chooseMethod = "Velg metode" settings = "Innstillinger" +[split.poster] +rightToLeft = "Del høyre-til-venstre" + +[split.poster.pageSize] +label = "Mål-sidestørrelse" +description = "Størrelse på sidene som skal skrives ut" + +[split.poster.xFactor] +label = "Horisontale inndelinger" +description = "Antall kolonner hver side skal deles i" + +[split.poster.yFactor] +label = "Vertikale inndelinger" +description = "Antall rader hver side skal deles i" + [split.tooltip.byChapters] bullet1 = "Bokmerkenivå: Hvilket nivå det skal deles på (1=toppnivå)" bullet2 = "Inkluder metadata: Bevar dokumentegenskaper" @@ -6085,6 +6385,14 @@ bullet5 = "Aktiver dupleksmodus hvis du skanner begge sider av skillearkene" text = "Del automatisk skannede dokumenter ved hjelp av fysiske skilleark med QR-koder. Perfekt for å behandle flere dokumenter skannet sammen." title = "Del etter skilleark" +[split.tooltip.byPoster] +bullet1 = "Mål-sidestørrelse: Velg utgående papirstørrelse (A4, Letter osv.)" +bullet2 = "Horisontale/vertikale inndelinger: Rutenettstørrelse for deling" +bullet3 = "Høyre-til-venstre: Reverser kolonnerekkefølgen for RTL-oppsett" +bullet4 = "Skriv ut og sett sammen delene for å lage plakaten din" +text = "Del opp store PDF-sider i mindre, utskriftsvennlige deler som passer til standard papirstørrelser. Perfekt for å lage plakatutskrifter fra overdimensjonerte sider." +title = "Del for plakatutskrift" + [split.tooltip.byPages] bullet1 = "Enkle delingspunkter: 3,7 (deler etter sidene 3 og 7)" bullet2 = "Områdepunkter: 3-8 (deler før side 3 og etter side 8)" @@ -6364,9 +6672,13 @@ tags = "web-fangst,lagre side,web-til-dokument,arkiv" title = "URL Til PDF" [usage] +aboutUsageAnalytics = "Om bruksanalyse" +configureSettings = "Konfigurer analyseinnstillinger" error = "Feil ved innlasting av bruksstatistikk" noData = "Ingen data tilgjengelig" noDataMessage = "Ingen bruksstatistikk er tilgjengelig for øyeblikket." +usageAnalyticsExplanation = "Bruksanalyse sporer endepunktforespørsler og mønstre i verktøybruk. Sammen med panelet for revisjonslogging får du full innsikt i systemaktivitet, ytelse og sikkerhetshendelser." +viewAuditLogs = "Vis revisjonslogger" [usage.chart] title = "Diagram for endepunktbruk" @@ -6947,3 +7259,278 @@ cancel = "Avbryt" confirm = "Pakk ut" message = "Denne ZIP-en inneholder {{count}} filer. Pakk ut likevel?" title = "Stor ZIP-fil" + +[cloudBadge] +tooltip = "Denne operasjonen vil bruke skykreditter" + +[team] +cancelInviteError = "Kunne ikke avbryte invitasjonen" +confirmCancelInvite = "Er du sikker på at du vil avbryte denne invitasjonen?" +confirmLeave = "Er du sikker på at du vil forlate dette teamet?" +confirmLeaveLeader = "Som teamleder vil du bli fjernet fra teamet hvis du forlater. Er du sikker?" +confirmRemove = "Er du sikker på at du vil fjerne dette medlemmet?" +editName = "Rediger teamnavn" +inviteCancelled = "Invitasjon avbrutt" +inviteError = "Kunne ikke sende invitasjon" +inviteSent = "Invitasjon sendt" +leader = "Leder" +leaveButton = "Forlat team" +leaveError = "Kunne ikke forlate teamet" +leaveSuccess = "Forlot teamet" +loading = "Laster teaminformasjon..." +memberCount = "{{count}} medlemmer" +memberRemoved = "Medlem fjernet" +namePlaceholder = "Skriv inn teamnavn" +personal = "Personlig" +removeError = "Kunne ikke fjerne medlem" +renameError = "Kunne ikke gi nytt navn til teamet" +renameSuccess = "Teamet har fått nytt navn" + +[team.invitationBanner] +message = "har invitert deg til å bli med" +acceptButton = "Godta" +rejectButton = "Avslå" + +[team.features] +badge = "Teamfunksjoner" +subtitle = "Samarbeid med teamet ditt" +title = "Teamsamarbeid" +viewPlans = "Se planer" + +[team.features.billing] +description = "Administrer fakturering og abonnementer" +title = "Faktureringsadministrasjon" + +[team.features.credits] +description = "Delt kredittpott for alle medlemmer" +title = "Delte kreditter" + +[team.features.dashboard] +description = "Se teamaktivitet og bruk" +title = "Team-dashbord" + +[team.features.invite] +description = "Legg til medlemmer i teamet ditt" +title = "Inviter medlemmer" + +[team.invite] +cancelLabel = "Avbryt" +invalidEmail = "Ugyldig e-postadresse" +placeholder = "Skriv inn e-postadresse" +sendButton = "Send invitasjon" +title = "Inviter teammedlem" + +[team.members] +emailColumn = "E-post" +empty = "Ingen teammedlemmer ennå" +nameColumn = "Navn" +pending = "Avventer" +remove = "Fjern" +roleColumn = "Rolle" +title = "Teammedlemmer" + +[team.upgrade] +button = "Oppgrader til Team" +description = "Lås opp team-samarbeidsfunksjoner" +title = "Oppgrader til Team-plan" + +[provider.oauth2.google] +scope = "Innloggingsautentisering" + +[provider.oauth2.google.clientId] +label = "Klient-ID" +description = "OAuth2-klient-ID fra Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Klienthemmelighet" +description = "OAuth2-klienthemmeligheten fra Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Scopes" +description = "Kommaseparerte OAuth2-scopes" + +[provider.oauth2.google.useAsUsername] +label = "Bruk som brukernavn" +description = "Felt som skal brukes som brukernavn (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Innloggingsautentisering" + +[provider.oauth2.github.clientId] +label = "Klient-ID" +description = "OAuth2-klient-ID fra GitHub Developer Settings" + +[provider.oauth2.github.clientSecret] +label = "Klienthemmelighet" +description = "OAuth2-klienthemmeligheten fra GitHub Developer Settings" + +[provider.oauth2.github.scopes] +label = "Scopes" +description = "Kommaseparerte OAuth2-scopes" + +[provider.oauth2.github.useAsUsername] +label = "Bruk som brukernavn" +description = "Felt som skal brukes som brukernavn (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Utsteder-URL" +description = "URL-en til Keycloak-realmens OpenID Connect Discovery-endepunkt" + +[provider.oauth2.keycloak.clientId] +label = "Klient-ID" +description = "OAuth2-klient-ID fra Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Klienthemmelighet" +description = "OAuth2-klienthemmeligheten fra Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "Scopes" +description = "Kommaseparerte OAuth2-scopes" + +[provider.oauth2.keycloak.useAsUsername] +label = "Bruk som brukernavn" +description = "Felt som skal brukes som brukernavn (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "Generisk OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Aktiver generisk OAuth2" +description = "Aktiver autentisering med en egendefinert OAuth2-leverandør" + +[provider.oauth2.generic.provider] +label = "Leverandørnavn" +description = "Navnet på OAuth2-leverandøren din (f.eks. Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "Utsteder-URL" +description = "Leverandør som støtter OpenID Connect Discovery (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "Klient-ID" +description = "OAuth2-klient-ID fra leverandøren din" + +[provider.oauth2.generic.clientSecret] +label = "Klienthemmelighet" +description = "OAuth2-klienthemmeligheten fra leverandøren din" + +[provider.oauth2.generic.scopes] +label = "Scopes" +description = "Kommaseparerte OAuth2-scopes" + +[provider.oauth2.generic.useAsUsername] +label = "Bruk som brukernavn" +description = "Felt som skal brukes som brukernavn" + +[provider.oauth2.generic.autoCreateUser] +label = "Opprett brukere automatisk" +description = "Opprett automatisk brukerkontoer ved første OAuth2-pålogging" + +[provider.oauth2.generic.blockRegistration] +label = "Blokker registrering" +description = "Hindre ny brukerregistrering via OAuth2" + +[provider.smtp] +name = "SMTP-e-post" +scope = "E-postvarsler" + +[provider.smtp.enabled] +label = "Aktiver e-post" +description = "Aktiver e-postvarsler og SMTP-funksjonalitet" + +[provider.smtp.host] +label = "SMTP-vert" +description = "Vertsnavn eller IP-adresse til SMTP-serveren din" + +[provider.smtp.port] +label = "SMTP-port" +description = "Portnummer for SMTP-tilkobling (vanligvis 25, 465 eller 587)" + +[provider.smtp.username] +label = "SMTP-brukernavn" +description = "Brukernavn for SMTP-autentisering" + +[provider.smtp.password] +label = "SMTP-passord" +description = "Passord for SMTP-autentisering" + +[provider.smtp.from] +label = "Fra-adresse" +description = "E-postadressen som skal brukes som avsender" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "Aktiver SAML2" +description = "Aktiver SAML2-autentisering (kun Enterprise)" + +[provider.saml2.provider] +label = "Leverandørnavn" +description = "Navnet på SAML2-leverandøren din" + +[provider.saml2.registrationId] +label = "Registrerings-ID" +description = "Navnet på Service Provider (SP)-appen din" + +[provider.saml2.idpMetadataUri] +label = "IDP Metadata URI" +description = "URI for leverandørens metadata" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login URL" +description = "URL for å initiere SSO" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout URL" +description = "URL for å initiere SLO" + +[provider.saml2.idpIssuer] +label = "IDP-utsteder" +description = "ID-en til leverandøren din" + +[provider.saml2.idpCert] +label = "IDP-sertifikat" +description = "Sertifikatsti (f.eks. classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Privat nøkkel" +description = "Stien til din private nøkkel" + +[provider.saml2.spCert] +label = "SP-sertifikat" +description = "Stien til ditt signeringssertifikat" + +[provider.saml2.autoCreateUser] +label = "Opprett brukere automatisk" +description = "Opprett automatisk brukerkontoer ved første SAML2-pålogging" + +[provider.saml2.blockRegistration] +label = "Blokker registrering" +description = "Hindre ny brukerregistrering via SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "Filimport" + +[provider.googledrive.enabled] +label = "Aktiver Google Drive-filvelger" +description = "Tillat brukere å importere filer direkte fra Google Drive" + +[provider.googledrive.clientId] +label = "Klient-ID" +description = "Google OAuth 2.0-klient-ID fra Google Cloud Console" + +[provider.googledrive.apiKey] +label = "API-nøkkel" +description = "Google API-nøkkel for Google Picker API fra Google Cloud Console" + +[provider.googledrive.appId] +label = "App-ID" +description = "Google Drive App-ID fra Google Cloud Console" diff --git a/frontend/public/locales/pl-PL/translation.toml b/frontend/public/locales/pl-PL/translation.toml index 80a8c8313..c6ddd1ed8 100644 --- a/frontend/public/locales/pl-PL/translation.toml +++ b/frontend/public/locales/pl-PL/translation.toml @@ -96,6 +96,8 @@ pin = "Przypnij plik (pozostaw aktywny po uruchomieniu narzędzia)" poweredBy = "Zasilany" pro = "Pro" processTimeWarning = "Ostrzeżenie: Ten proces może potrwać do minuty, w zależności od rozmiaru pliku" +processingComplete = "Twój plik jest gotowy." +processingCompleteMultiple = "{{count}} plików jest gotowych." property = "własność" quickPosition = "Szybka pozycja" red = "czerwony" @@ -105,6 +107,7 @@ save = "Zapisz" saveToBrowser = "Zapisz w przeglądarce" saveUnavailable = "Zapisywanie niedostępne dla tego elementu" seeDockerHub = "Docker Hub" +editSecret = "Edytuj tę wartość" selectFillter = "-- Wybierz --" size = "Rozmiar" sponsor = "sponsor" @@ -651,6 +654,7 @@ description = "Skonfiguruj zewnętrznych dostawców uwierzytelniania, takich jak disconnect = "Odłącz" disconnected = "Pomyślnie odłączono dostawcę" disconnectError = "Nie udało się odłączyć dostawcy" +documentation = "Zobacz dokumentację" imageResolutionFull = "Pełna (oryginalny rozmiar)" imageResolutionReduced = "Zredukowana (maks. 1200 px)" linkedServices = "Połączone usługi" @@ -964,6 +968,18 @@ label = "Domyślne ustawienia regionalne" description = "Maksymalny rozmiar przesyłanego pliku (np. 100MB, 1GB)" label = "Limit przesyłania plików" +[admin.settings.general.hideDisabledTools] +description = "Ukryj wyłączone narzędzia w interfejsie" +label = "Ukryj wyłączone narzędzia" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Ukryj przycisk Google Drive, gdy nie jest włączony" +label = "Ukryj Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Ukryj przycisk mobilnego skanera QR, gdy nie jest włączony" +label = "Ukryj mobilny skaner" + [admin.settings.general.frontendUrl] description = "Bazowy adres URL frontendu (np. https://pdf.example.com). Używany dla linków w zaproszeniach e-mail i mobilnych przesłań przez kod QR. Pozostaw puste, aby użyć adresu URL backendu." label = "Adres URL frontendu" @@ -1148,6 +1164,8 @@ title = "Bezpieczeństwo" [admin.settings.security.audit] label = "Rejestrowanie audytu" +showDetails = "Pokaż szczegóły poziomu audytu" +hideDetails = "Ukryj szczegóły poziomu audytu" [admin.settings.security.audit.enabled] description = "Śledź działania użytkowników i zdarzenia systemowe na potrzeby zgodności i monitorowania bezpieczeństwa" @@ -1157,10 +1175,32 @@ label = "Włącz rejestrowanie audytu" description = "0=OFF, 1=BASIC, 2=STANDARD, 3=VERBOSE" label = "Poziom audytu" +[admin.settings.security.audit.levelDetails] +off = "Brak rejestrowania audytu (z wyjątkiem krytycznych zdarzeń bezpieczeństwa)" +basic = "Operacje na plikach PDF (kompresja, podział, łączenie itp.) oraz zmiany ustawień. Rejestrowane: status operacji (sukces/niepowodzenie), parametry metod, czasy. Minimalna objętość dzienników." +standard = "Zdarzenia BASIC, a ponadto: logowanie/wylogowanie użytkownika, zmiany konta, ogólne żądania GET. Wyklucza ciągłe odpytywanie (/auth/me, /app-config, /health itp.), aby ograniczyć szum w dziennikach. Idealne dla większości wdrożeń." +verbose = "Zdarzenia STANDARD, a ponadto: ciągłe wywołania odpytywania, wszystkie żądania GET, szczegółowe pomiary czasu. Uwaga: duża objętość dzienników i wpływ na wydajność." + [admin.settings.security.audit.retentionDays] description = "Liczba dni przechowywania dzienników audytu" label = "Przechowywanie audytu (dni)" +[admin.settings.security.audit.advancedOptions] +title = "Opcje zaawansowane" +description = "Poniższe opcje zwiększają czas przetwarzania i zużycie pamięci. Włączaj tylko, jeśli jest to naprawdę potrzebne." + +[admin.settings.security.audit.captureFileHash] +description = "Wyodrębnij skrót SHA-256 przesłanych plików PDF w celu weryfikacji integralności. Niezależne od poziomu audytu." +label = "Rejestrowanie skrótu pliku (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Wyodrębnij pole autora z dokumentów PDF podczas przetwarzania. Wymaga parsowania PDF, zwiększa opóźnienie. Niezależne od poziomu audytu." +label = "Rejestrowanie metadanych autora PDF" + +[admin.settings.security.audit.captureOperationResults] +description = "Rejestruj wartości zwracane przez metody. Niezalecane: znacząco zwiększa objętość dzienników i użycie dysku." +label = "Rejestrowanie wyników operacji" + [admin.settings.security.csrfDisabled] description = "Wyłącz ochronę przed Cross-Site Request Forgery (niezalecane)" label = "Wyłącz ochronę CSRF" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "Skonfiguruj rejestrowanie audytu" +configureAuditMessage = "Dostosuj poziom rejestrowania audytu, okres retencji i inne ustawienia w sekcji Bezpieczeństwo i uwierzytelnianie." disabled = "Rejestrowanie audytu jest wyłączone" disabledMessage = "Włącz rejestrowanie audytu w konfiguracji aplikacji, aby śledzić zdarzenia systemowe." enterpriseRequired = "Wymagana licencja Enterprise" enterpriseRequiredMessage = "System rejestrowania zdarzeń to funkcja Enterprise. Uaktualnij do licencji Enterprise, aby uzyskać dostęp do dzienników i analityki." +goToSettings = "Przejdź do ustawień audytu" notAvailable = "System audytu niedostępny" notAvailableMessage = "System audytu nie jest skonfigurowany lub jest niedostępny." -[audit.charts] -byType = "Zdarzenia wg typu" -byUser = "Zdarzenia wg użytkownika" -day = "Dzień" -error = "Błąd ładowania wykresów" -month = "Miesiąc" -overTime = "Zdarzenia w czasie" -title = "Pulpit audytu" -week = "Tydzień" - [audit.error] title = "Błąd podczas ładowania systemu audytu" -[audit.events] -actions = "Akcje" -clearFilters = "Wyczyść" -details = "Szczegóły" -endDate = "Data końcowa" -error = "Błąd ładowania zdarzeń" -eventDetails = "Szczegóły zdarzenia" -filterByType = "Filtruj wg typu" -filterByUser = "Filtruj wg użytkownika" -ipAddress = "Adres IP" -noEvents = "Nie znaleziono zdarzeń" -startDate = "Data początkowa" -timestamp = "Znacznik czasu" -title = "Zdarzenia audytu" -type = "Typ" -user = "Użytkownik" -viewDetails = "Pokaż szczegóły" - [audit.export] clearFilters = "Wyczyść" description = "Eksportuj zdarzenia audytu do formatu CSV lub JSON. Użyj filtrów, aby ograniczyć eksportowane dane." endDate = "Data końcowa" error = "Nie udało się wyeksportować danych" exportButton = "Eksportuj dane" +fieldAuthor = "Autor (z PDF)" +fieldDate = "Data" +fieldDocumentName = "Nazwa dokumentu" +fieldFileHash = "Skrót pliku (SHA-256)" +fieldIpAddress = "Adres IP" +fieldOperationResults = "Wyniki operacji" +fieldOutcome = "Wynik (Sukces/Niepowodzenie)" +fieldTool = "Narzędzie" +fieldUsername = "Nazwa użytkownika" filterByType = "Filtruj wg typu" filterByUser = "Filtruj wg użytkownika" filters = "Filtry (opcjonalnie)" format = "Format eksportu" +selectFields = "Wybierz pola do uwzględnienia" startDate = "Data początkowa" title = "Eksportuj dane audytu" +verboseRequired = "Wymaga poziomu audytu VERBOSE" [audit.systemStatus] +autoRefresh = "Automatyczne odświeżanie" +autoRefreshLabel = "Automatyczne odświeżanie co 30 s" +captureBySettings = "Włącz w ustawieniach" +capturedFields = "Rejestrowane pola" +date = "Data" days = "dni" disabled = "Wyłączone" +documentName = "Nazwa dokumentu" enabled = "Włączone" +fileHash = "Skrót pliku" level = "Poziom audytu" +pdfAuthor = "Autor PDF" retention = "Okres retencji" status = "Rejestrowanie audytu" title = "Status systemu" +tool = "Narzędzie" totalEvents = "Łączna liczba zdarzeń" +username = "Nazwa użytkownika" +verboseOnly = "Tylko VERBOSE" + +[audit.stats] +activeUsers = "Aktywni użytkownicy" +attention = "Wymaga uwagi" +avgLatency = "Śr. opóźnienie" +error = "Błąd ładowania statystyk" +errorLoadingStats = "Nie udało się wczytać statystyk" +excellent = "Znakomite" +good = "Dobre" +noData = "N/D" +successRate = "Wskaźnik powodzenia" +title = "Podsumowanie" +totalEvents = "Łącznie zdarzeń" +vsLastPeriod = "względem poprzedniego okresu" + +[audit.charts] +byTool = "Najczęściej używane narzędzia" +byType = "Zdarzenia wg typu" +byUser = "Zdarzenia wg użytkownika" +day = "Dzień" +error = "Błąd ładowania wykresów" +hourlyActivity = "Aktywność godzinowa" +month = "Miesiąc" +noData = "Brak danych dla tego okresu" +overTime = "Zdarzenia w czasie" +title = "Pulpit audytu" +week = "Tydzień" + +[audit.events] +actions = "Akcje" +author = "Autor" +clearFilters = "Wyczyść" +details = "Szczegóły" +documentName = "Dokument" +endDate = "Data końcowa" +error = "Błąd ładowania zdarzeń" +eventDetails = "Szczegóły zdarzenia" +failure = "Niepowodzenie" +fileHash = "Skrót pliku" +filterByType = "Filtruj wg typu" +filterByUser = "Filtruj wg użytkownika" +ipAddress = "Adres IP" +noEvents = "Nie znaleziono zdarzeń" +outcome = "Status" +sortAsc = "Sortuj rosnąco" +sortDesc = "Sortuj malejąco" +startDate = "Data początkowa" +success = "Sukces" +timestamp = "Znacznik czasu" +title = "Zdarzenia audytu" +type = "Typ" +user = "Użytkownik" +viewDetails = "Pokaż szczegóły" + +[audit.filters] +allOutcomes = "Wszystkie" +failureOnly = "Tylko niepowodzenia" +last7Days = "Ostatnie 7 dni" +last30Days = "Ostatnie 30 dni" +outcomeFilter = "Wynik" +quickPresets = "Szybkie filtry" +successOnly = "Tylko sukcesy" +thisMonth = "Ten miesiąc" +today = "Dzisiaj" [audit.tabs] +clearData = "Wyczyść dane" dashboard = "Pulpit" events = "Zdarzenia audytu" export = "Eksport" +[audit.clearData] +cancel = "Anuluj" +codeDoesNotMatch = "Kod nie pasuje" +codePlaceholder = "Wpisz tutaj kod" +confirmationCode = "Kod potwierdzenia" +confirmationRequired = "Usuń wszystkie dane audytu" +confirmMessage = "Spowoduje to trwałe usunięcie wszystkich dzienników audytu. Wprowadź poniżej kod potwierdzający, aby kontynuować." +confirmTitle = "Potwierdź, że chcesz usunąć" +deleteButton = "Usuń" +enterCode = "Kod potwierdzenia" +enterCodeBelow = "Wprowadź kod dokładnie tak, jak pokazano powyżej (rozróżniana wielkość liter)" +initiateDelete = "Usuń wszystkie dane" +irreversible = "NIEODWRACALNE" +success = "Sukces" +successMessage = "Wszystkie dane audytu zostały pomyślnie wyczyszczone" +warning1 = "Tej operacji nie można cofnąć" +warning2 = "Usunięcie danych audytu trwale usunie wszystkie historyczne dzienniki audytu, w tym zdarzenia bezpieczeństwa, aktywności użytkowników i operacje na plikach z bazy danych." + [auth] accessDenied = "Odmowa dostępu" insufficientPermissions = "Nie masz uprawnień do wykonania tej czynności." @@ -2254,9 +2374,11 @@ copy = "Kopiuj" done = "Gotowe" error = "Błąd" expand = "Rozwiń" +learnMore = "Dowiedz się więcej" lines = "wiersze" loading = "Wczytywanie..." next = "Dalej" +operation = "ta operacja" preview = "Podgląd" previous = "Wstecz" refresh = "Odśwież" @@ -2920,6 +3042,7 @@ copyStack = "Kopiuj Stack Trace" discordSubmit = "Discord - wyślij posta z prośbą o pomoc" dismissAllErrors = "Zamknij wszystkie błędy" encryptedPdfMustRemovePassword = "Ten PDF jest zaszyfrowany lub chroniony hasłem. Odblokuj go przed konwersją do PDF/A." +generic = "Wystąpił błąd" github = "Zgłoś problem na GitHub" githubSubmit = "GitHub - wyślij zgłoszenie" incorrectPasswordProvided = "Hasło do PDF jest nieprawidłowe lub nie zostało podane." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Subskrypcja została pomyślnie ulepszona. Zaktualizow upgradeSuccess = "Płatność zakończona! Twoja subskrypcja została ulepszona. Licencję zaktualizowano na Twoim serwerze. Wkrótce otrzymasz e‑mail z potwierdzeniem." upgradeTitle = "Uaktualnij do {{planName}}" yearly = "Rocznie" +checkoutOpened = "Otworzono płatność w przeglądarce" +checkoutInstructions = "Dokończ zakup w oknie przeglądarki, które właśnie się otworzyło. Po zakończeniu płatności wróć tutaj i kliknij poniższy przycisk, aby odświeżyć informacje rozliczeniowe." +refreshBilling = "Płatność zakończona – odśwież rozliczenia" +closeLater = "Zrobię to później" [payment.emailStage] continue = "Kontynuuj" @@ -4679,6 +4806,13 @@ prompt = "Wybierz stronę do wyodrębnienia tabeli" submit = "Zatwierdź" title = "PDF na CSV" +[PDFToXLSX] +header = "PDF do Excel" +prompt = "Wybierz strony do wyodrębnienia tabel" +submit = "Konwertuj" +title = "PDF do Excel (XLSX)" +tags = "arkusz kalkulacyjny,excel,xlsx,tabela,wyodrębnij,konwertuj" + [PDFToHTML] credit = "Ta usługa używa pdftohtml do konwersji plików." header = "PDF na HTML" @@ -4835,6 +4969,7 @@ customPricing = "Niestandardowy" featureComparison = "Porównanie funkcji" from = "Od" hideComparison = "Ukryj porównanie funkcji" +included = "Wliczone" includedInCurrent = "Wliczone w Twój plan" licensedSeats = "Licencjonowane: {{count}} miejsc" manage = "Zarządzaj" @@ -4852,9 +4987,11 @@ title = "Aktywny plan" [plan.availablePlans] subtitle = "Wybierz plan dopasowany do Twoich potrzeb" +loadError = "Nie można wczytać cen planów. Użyto wartości domyślnych." title = "Dostępne plany" [plan.enterprise] +siteLicense = "Licencja dla całej organizacji" highlight1 = "Ceny niestandardowe" highlight2 = "Dedykowane wsparcie" highlight3 = "Najnowsze funkcje" @@ -4928,6 +5065,81 @@ keyDescription = "Wklej klucz licencyjny z e-maila" success = "Licencja aktywowana!" successMessage = "Twoja licencja została pomyślnie aktywowana. Możesz zamknąć to okno." +[plan.team] +name = "Team" +siteLicense = "Licencja dla całej organizacji" + +[credits] +enableOverageBilling = "Włącz rozliczanie nadwyżek" +maybeLater = "Może później" +upgrade = "Ulepsz" + +[credits.modal] +advancedMonitoring = "Zaawansowany monitoring" +allInOneWorkspace = "Wszechstronne środowisko pracy PDF (przeglądarka, narzędzia i agent)" +apiSandbox = "Piaskownica API" +contactSales = "Skontaktuj się z działem sprzedaży" +creditsRemaining = "Pozostało {{current}} z {{total}}" +creditsThisMonth = "Miesięczne kredyty" +current = "Bieżący plan" +customPricing = "Niestandardowy" +customSmartFolders = "Niestandardowe inteligentne foldery" +dedicatedSupportSlas = "Dedykowane wsparcie i SLA" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Wszystko w planie Credits, a także:" +everythingInFree = "Wszystko w planie Free, a także:" +fasterThroughput = "10× większa przepustowość" +forRegularWork = "Do regularnej pracy z PDF:" +freeTier = "Bezpłatny plan" +fullyPrivateFiles = "W pełni prywatne pliki" +largeFileProcessing = "Przetwarzanie dużych plików" +managedMemberMessage = "Masz nieograniczony dostęp do kredytów dzięki swojemu zespołowi. Jeśli potrzebujesz pomocy, skontaktuj się z liderem zespołu." +managedMemberTitle = "Nielimitowane kredyty" +meteringBillingNote = "Kredyty nadwyżkowe są rozliczane miesięcznie wraz z subskrypcją Team. Śledź wykorzystanie w ustawieniach konta w dowolnym momencie." +meteringExplanation = "Twój plan Team obejmuje {{credits}} kredytów miesięcznie. Gdy się skończą, rozliczanie nadwyżek automatycznie zapewni dodatkowe kredyty, abyś nie musiał przerywać pracy." +meteringIncluded = "{{credits}} kredytów/mies. wliczone w Team" +meteringNoCommitment = "Bez zobowiązań, anuluj w dowolnym momencie" +meteringNeverRunOut = "Nigdy nie zabraknie kredytów" +meteringPayAsYouGo = "Płać tylko za to, czego używasz" +meteringPrice = "Dodatkowe kredyty po {{price}}/kredyt" +meteringTitle = "Rozliczanie nadwyżek wg zużycia" +monthlyCredits = "miesięczne kredyty" +orgWideAccess = "Kontrola dostępu w całej organizacji" +overage = "nadwyżka" +perMonth = "/mies." +popular = "Popularne" +premiumAiModels = "Modele AI klasy premium" +prioritySupport = "Priorytetowe wsparcie" +privateDocCloud = "Prywatna chmura dokumentów" +ragFineTuning = "RAG + fine-tuning" +secureApiAccess = "Bezpieczny dostęp do API" +selfHostLink = "Zobacz dokumentację i plany" +selfHostPrompt = "Chcesz hostować samodzielnie?" +standardThroughput = "Standardowa przepustowość" +subtitle = "Ulepsz do Team, aby zyskać 10× więcej kredytów i szybsze przetwarzanie." +subtitlePro = "Włącz automatyczne rozliczanie nadwyżek, aby nigdy nie zabrakło kredytów." +teamLeaderOnly = "Tylko liderzy zespołu mogą włączyć rozliczanie nadwyżek" +teamSubscription = "Team" +titleExhausted = "Wykorzystałeś bezpłatne kredyty" +titleExhaustedPro = "Skończyły Ci się kredyty" +unlimitedApiAccess = "Nielimitowany dostęp do API" +unlimitedMonthlyCredits = "Licencja dla całej organizacji" +unlimitedSeats = "Nielimitowana liczba użytkowników" + +[credits.modal.features] +everythingInCredits = "Wszystko w planie Credits, a także:" +everythingInFree = "Wszystko w planie Free, a także:" +forRegularWork = "Do regularnej pracy z PDF:" + +[credits.insufficient] +brief = "Niewystarczająca liczba kredytów. Potrzebujesz {{required}} kredytów, ale masz {{current}}." +freeTier = "Ulepsz do Team, aby mieć 10× więcej kredytów i nielimitowane rozliczanie nadwyżek." +managedMember = "Skontaktuj się z liderem zespołu, aby uzyskać pomoc." +message = "Nie masz wystarczającej liczby kredytów, aby uruchomić {{tool}}. Obecnie masz {{current}} kredytów." +messageWithAmount = "Potrzebujesz {{required}} kredytów, aby uruchomić {{tool}}, ale masz tylko {{current}}." +teamMember = "Włącz rozliczanie nadwyżek, aby nigdy nie zabrakło kredytów." +title = "Niewystarczające kredyty" + [printFile] header = "Drukuj plik za pomocą drukarki" submit = "Drukuj" @@ -5565,6 +5777,70 @@ user = "Zalogowano jako" saas = "Stirling Cloud" selfhosted = "Własny serwer" +[settings.planBilling] +currentPlan = "Bieżący plan" +loading = "Wczytywanie informacji rozliczeniowych..." +notAvailable = "Plan i rozliczenia są dostępne tylko po połączeniu ze Stirling Cloud (tryb SaaS)." +title = "Plan i rozliczenia" + +[settings.planBilling.billing] +manageBilling = "Zarządzaj rozliczeniami" +nextBillingDate = "Następna data rozliczenia" +overageCost = "Bieżący koszt nadwyżek: {{amount}} ({{credits}} kredytów)" + +[settings.planBilling.credits] +estimatedCost = "Szacowany koszt: {{amount}}" +freeTierInfo = "Plan Free obejmuje {{freeCredits}} kredytów miesięcznie. Ulepsz do Team, aby mieć {{teamCredits}} kredytów/mies. i rozliczanie nadwyżek wg zużycia." +included = "{{count}} kredytów/mies. (wliczone)" +noOverage = "Brak opłat za nadwyżki w tym miesiącu. Korzystasz z wliczonych {{count}} kredytów." +overage = "+ {{count}} nadwyżki" +overageInfo = "Kredyty nadwyżkowe są rozliczane po {{price}} za kredyt. Zapłacisz tylko za to, co wykorzystasz ponad miesięczny przydział." +title = "Wykorzystanie kredytów" + +[settings.planBilling.errors] +fetchFailed = "Nie można pobrać danych rozliczeniowych" +retry = "Ponów próbę" + +[settings.planBilling.status] +active = "Aktywny" +canceled = "Anulowany" +pastDue = "Zaległy" +trial = "Wersja próbna" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Niestandardowe funkcje i wsparcie dla przedsiębiorstw" +free = "Free" +freeDescription = "50 kredytów miesięcznie" +team = "Team" +teamBadge = "Team" +teamDescription = "500 kredytów/mies. wliczone, automatyczne rozliczanie nadwyżek dla nieprzerwanej obsługi" +teamTooltipCredits = "Plan Team obejmuje {{credits}} kredytów/mies." +teamTooltipFineprint = "Płacisz tylko za to, co wykorzystasz ponad wliczone kredyty." +teamTooltipOverage = "Automatyczne rozliczanie nadwyżek po {{price}}/kredyt zapewnia nieprzerwaną obsługę." + +[settings.planBilling.team] +managedByTeam = "Zarządzane przez zespół" +memberCount = "{{count}} członków zespołu" + +[settings.planBilling.trial] +daysRemaining = "Pozostało {{days}} dni" +daysRemainingFull = "Twoja wersja próbna kończy się za {{days}} dni" +endDate = "Wygasa: {{date}}" +endsOn = "Koniec wersji próbnej" +title = "Aktywna wersja próbna" + +[settings.planBilling.upgrade] +cta = "Ulepsz do Team" +featureApi = "Dostęp do API do automatyzacji" +featureCredits = "{{teamCredits}} kredytów miesięcznie (vs {{freeCredits}} w Free)" +featureMembers = "Nielimitowani członkowie zespołu" +featureSupport = "Priorytetowe wsparcie" +featureThroughput = "Szybsza przepustowość przetwarzania" +opensInBrowser = "Otwiera się w przeglądarce, aby dokończyć ulepszenie" +subtitle = "Ulepsz do Team, aby zyskać:" +title = "Ulepsz swój plan" + [settings.developer] apiKeys = "Klucze API" title = "Deweloper" @@ -5689,6 +5965,9 @@ people = "Osoby" teams = "Zespoły" title = "Przestrzeń robocza" +[settings.team] +title = "Zespół" + [setup] description = "Zacznij od wyboru sposobu korzystania ze Stirling PDF" welcome = "Witamy w Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "Auto-dzielenie z arkuszami separatorów" name = "Separator stron" tooltip = "Użyj arkuszy rozdzielających z kodami QR między dokumentami podczas skanowania" +[split.methods.byPoster] +name = "Drukowalne fragmenty" +desc = "Podziel duże strony na rozmiary do druku" +tooltip = "Podziel za duże strony na mniejsze fragmenty nadające się do druku na standardowym papierze (A4, Letter itp.)" + [split.methods.byPages] desc = "Wyodrębnij konkretne strony (1,3,5-10)" name = "Numery stron" @@ -6029,6 +6313,7 @@ tooltip = "Określ maksymalny rozmiar pliku (np. 10MB, 500KB)" [split.methods.prefix] splitAt = "Podziel przy" splitBy = "Podziel według" +splitInto = "Podziel na" [split.methodSelection.tooltip] bullet1 = "Kliknij kartę metody, aby ją wybrać" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Najpierw wybierz metodę dzielenia" chooseMethod = "Wybierz metodę" settings = "Ustawienia" +[split.poster] +rightToLeft = "Dziel od prawej do lewej" + +[split.poster.pageSize] +label = "Docelowy rozmiar strony" +description = "Rozmiar stron wyjściowych do druku" + +[split.poster.xFactor] +label = "Podziały poziome" +description = "Liczba kolumn, na które podzielić każdą stronę" + +[split.poster.yFactor] +label = "Podziały pionowe" +description = "Liczba wierszy, na które podzielić każdą stronę" + [split.tooltip.byChapters] bullet1 = "Poziom zakładek: na którym poziomie dzielić (1 = najwyższy)" bullet2 = "Dołącz metadane: zachowaj właściwości dokumentu" @@ -6085,6 +6385,14 @@ bullet5 = "Włącz tryb dupleks, jeśli skanujesz obie strony arkuszy separator text = "Automatycznie dziel zeskanowane dokumenty przy użyciu fizycznych arkuszy separatorów z kodami QR. Idealne do przetwarzania wielu dokumentów zeskanowanych razem." title = "Podział według separatora stron" +[split.tooltip.byPoster] +bullet1 = "Docelowy rozmiar strony: wybierz rozmiar papieru wyjściowego (A4, Letter itp.)" +bullet2 = "Podziały poziome/pionowe: rozmiar siatki do podziału" +bullet3 = "Od prawej do lewej: odwróć kolejność kolumn dla układów RTL" +bullet4 = "Wydrukuj i złóż fragmenty, aby utworzyć plakat" +text = "Podziel duże strony PDF na mniejsze, nadające się do wydruku na standardowych rozmiarach papieru. Idealne do tworzenia plakatów z ponadwymiarowych stron." +title = "Podział do wydruku plakatu" + [split.tooltip.byPages] bullet1 = "Pojedyncze punkty podziału: 3,7 (dzieli po stronach 3 i 7)" bullet2 = "Zakresy: 3-8 (dzieli przed stroną 3 i po stronie 8)" @@ -6364,9 +6672,13 @@ tags = "przechwytywanie stron internetowych, zapisywanie strony, strona internet title = "URL do PDF" [usage] +aboutUsageAnalytics = "O analityce użycia" +configureSettings = "Skonfiguruj ustawienia analityki" error = "Błąd ładowania statystyk użycia" noData = "Brak dostępnych danych" noDataMessage = "Obecnie brak dostępnych statystyk użycia." +usageAnalyticsExplanation = "Analityka użycia śledzi żądania do endpointów i wzorce korzystania z narzędzi. W połączeniu z pulpitem dzienników audytu zyskujesz pełną widoczność aktywności systemu, wydajności i zdarzeń bezpieczeństwa." +viewAuditLogs = "Zobacz dzienniki audytu" [usage.chart] title = "Wykres użycia endpointów" @@ -6947,3 +7259,278 @@ cancel = "Anuluj" confirm = "Rozpakuj" message = "Ten ZIP zawiera {{count}} plików. Mimo to rozpakować?" title = "Duży plik ZIP" + +[cloudBadge] +tooltip = "Ta operacja wykorzysta Twoje kredyty w chmurze" + +[team] +cancelInviteError = "Nie udało się anulować zaproszenia" +confirmCancelInvite = "Czy na pewno chcesz anulować to zaproszenie?" +confirmLeave = "Czy na pewno chcesz opuścić ten zespół?" +confirmLeaveLeader = "Jako lider zespołu, opuszczenie spowoduje usunięcie Cię z zespołu. Czy na pewno?" +confirmRemove = "Czy na pewno chcesz usunąć tego członka?" +editName = "Edytuj nazwę zespołu" +inviteCancelled = "Zaproszenie anulowane" +inviteError = "Nie udało się wysłać zaproszenia" +inviteSent = "Zaproszenie wysłane pomyślnie" +leader = "Lider" +leaveButton = "Opuść zespół" +leaveError = "Nie udało się opuścić zespołu" +leaveSuccess = "Pomyślnie opuszczono zespół" +loading = "Wczytywanie informacji o zespole..." +memberCount = "{{count}} członków" +memberRemoved = "Pomyślnie usunięto członka" +namePlaceholder = "Wpisz nazwę zespołu" +personal = "Osobisty" +removeError = "Nie udało się usunąć członka" +renameError = "Nie udało się zmienić nazwy zespołu" +renameSuccess = "Pomyślnie zmieniono nazwę zespołu" + +[team.invitationBanner] +message = "zaprosił(a) Cię do dołączenia" +acceptButton = "Akceptuj" +rejectButton = "Odrzuć" + +[team.features] +badge = "Funkcje zespołowe" +subtitle = "Współpracuj ze swoim zespołem" +title = "Współpraca zespołowa" +viewPlans = "Zobacz plany" + +[team.features.billing] +description = "Zarządzaj rozliczeniami i subskrypcjami" +title = "Zarządzanie rozliczeniami" + +[team.features.credits] +description = "Wspólna pula kredytów dla wszystkich członków" +title = "Wspólne kredyty" + +[team.features.dashboard] +description = "Wyświetl aktywność i wykorzystanie zespołu" +title = "Pulpit zespołu" + +[team.features.invite] +description = "Dodaj członków do zespołu" +title = "Zaproś członków" + +[team.invite] +cancelLabel = "Anuluj" +invalidEmail = "Nieprawidłowy adres e-mail" +placeholder = "Wpisz adres e-mail" +sendButton = "Wyślij zaproszenie" +title = "Zaproś członka zespołu" + +[team.members] +emailColumn = "E-mail" +empty = "Brak członków zespołu" +nameColumn = "Imię i nazwisko" +pending = "Oczekujące" +remove = "Usuń" +roleColumn = "Rola" +title = "Członkowie zespołu" + +[team.upgrade] +button = "Ulepsz do Team" +description = "Odblokuj funkcje współpracy zespołowej" +title = "Ulepsz do planu Team" + +[provider.oauth2.google] +scope = "Uwierzytelnianie logowania" + +[provider.oauth2.google.clientId] +label = "Client ID" +description = "Identyfikator klienta OAuth2 z Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Client Secret" +description = "Tajny klucz klienta OAuth2 z Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Zakresy" +description = "Zakresy OAuth2 oddzielone przecinkami" + +[provider.oauth2.google.useAsUsername] +label = "Użyj jako nazwy użytkownika" +description = "Pole używane jako nazwa użytkownika (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Uwierzytelnianie logowania" + +[provider.oauth2.github.clientId] +label = "Client ID" +description = "Identyfikator klienta OAuth2 z GitHub Developer Settings" + +[provider.oauth2.github.clientSecret] +label = "Client Secret" +description = "Tajny klucz klienta OAuth2 z GitHub Developer Settings" + +[provider.oauth2.github.scopes] +label = "Zakresy" +description = "Zakresy OAuth2 oddzielone przecinkami" + +[provider.oauth2.github.useAsUsername] +label = "Użyj jako nazwy użytkownika" +description = "Pole używane jako nazwa użytkownika (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Issuer URL" +description = "Adres URL punktu OpenID Connect Discovery dla obszaru (realm) w Keycloak" + +[provider.oauth2.keycloak.clientId] +label = "Client ID" +description = "Identyfikator klienta OAuth2 z Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Client Secret" +description = "Tajny klucz klienta OAuth2 z Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "Zakresy" +description = "Zakresy OAuth2 oddzielone przecinkami" + +[provider.oauth2.keycloak.useAsUsername] +label = "Użyj jako nazwy użytkownika" +description = "Pole używane jako nazwa użytkownika (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "Ogólny OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Włącz ogólny OAuth2" +description = "Włącz uwierzytelnianie przy użyciu niestandardowego dostawcy OAuth2" + +[provider.oauth2.generic.provider] +label = "Nazwa dostawcy" +description = "Nazwa Twojego dostawcy OAuth2 (np. Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "Issuer URL" +description = "Dostawca obsługujący OpenID Connect Discovery (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "Client ID" +description = "Identyfikator klienta OAuth2 od Twojego dostawcy" + +[provider.oauth2.generic.clientSecret] +label = "Client Secret" +description = "Tajny klucz klienta OAuth2 od Twojego dostawcy" + +[provider.oauth2.generic.scopes] +label = "Zakresy" +description = "Zakresy OAuth2 oddzielone przecinkami" + +[provider.oauth2.generic.useAsUsername] +label = "Użyj jako nazwy użytkownika" +description = "Pole używane jako nazwa użytkownika" + +[provider.oauth2.generic.autoCreateUser] +label = "Automatyczne tworzenie użytkowników" +description = "Automatycznie twórz konta użytkowników przy pierwszym logowaniu OAuth2" + +[provider.oauth2.generic.blockRegistration] +label = "Zablokuj rejestrację" +description = "Zabroń rejestracji nowych użytkowników przez OAuth2" + +[provider.smtp] +name = "Poczta SMTP" +scope = "Powiadomienia e-mail" + +[provider.smtp.enabled] +label = "Włącz pocztę" +description = "Włącz powiadomienia e-mail i funkcjonalność SMTP" + +[provider.smtp.host] +label = "Host SMTP" +description = "Nazwa hosta lub adres IP Twojego serwera SMTP" + +[provider.smtp.port] +label = "Port SMTP" +description = "Numer portu do połączenia SMTP (zwykle 25, 465 lub 587)" + +[provider.smtp.username] +label = "Nazwa użytkownika SMTP" +description = "Nazwa użytkownika do uwierzytelniania SMTP" + +[provider.smtp.password] +label = "Hasło SMTP" +description = "Hasło do uwierzytelniania SMTP" + +[provider.smtp.from] +label = "Adres nadawcy" +description = "Adres e-mail używany jako nadawca" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "Włącz SAML2" +description = "Włącz uwierzytelnianie SAML2 (tylko Enterprise)" + +[provider.saml2.provider] +label = "Nazwa dostawcy" +description = "Nazwa Twojego dostawcy SAML2" + +[provider.saml2.registrationId] +label = "Identyfikator rejestracji" +description = "Nazwa Twojej aplikacji Service Provider (SP)" + +[provider.saml2.idpMetadataUri] +label = "IDP Metadata URI" +description = "URI metadanych Twojego dostawcy" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login URL" +description = "URL inicjujący SSO" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout URL" +description = "URL inicjujący SLO" + +[provider.saml2.idpIssuer] +label = "IDP Issuer" +description = "Identyfikator Twojego dostawcy" + +[provider.saml2.idpCert] +label = "Certyfikat IDP" +description = "Ścieżka do certyfikatu (np. classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Klucz prywatny" +description = "Ścieżka do Twojego klucza prywatnego" + +[provider.saml2.spCert] +label = "Certyfikat SP" +description = "Ścieżka do Twojego certyfikatu podpisującego" + +[provider.saml2.autoCreateUser] +label = "Automatyczne tworzenie użytkowników" +description = "Automatycznie twórz konta użytkowników przy pierwszym logowaniu SAML2" + +[provider.saml2.blockRegistration] +label = "Zablokuj rejestrację" +description = "Zabroń rejestracji nowych użytkowników przez SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "Import plików" + +[provider.googledrive.enabled] +label = "Włącz selektor plików Google Drive" +description = "Pozwól użytkownikom importować pliki bezpośrednio z Google Drive" + +[provider.googledrive.clientId] +label = "Client ID" +description = "Identyfikator klienta Google OAuth 2.0 z Google Cloud Console" + +[provider.googledrive.apiKey] +label = "API Key" +description = "Klucz Google API dla Google Picker API z Google Cloud Console" + +[provider.googledrive.appId] +label = "App ID" +description = "App ID Google Drive z Google Cloud Console" diff --git a/frontend/public/locales/pt-BR/translation.toml b/frontend/public/locales/pt-BR/translation.toml index 1a64b8e6f..66d5474d8 100644 --- a/frontend/public/locales/pt-BR/translation.toml +++ b/frontend/public/locales/pt-BR/translation.toml @@ -96,6 +96,8 @@ pin = "Fixar arquivo (manter ativo após execução da ferramenta)" poweredBy = "Distribuído por" pro = "Profissional" processTimeWarning = "Aviso: Este processo pode levar até um minuto, dependendo do tamanho do arquivo" +processingComplete = "Seu arquivo está pronto." +processingCompleteMultiple = "{{count}} arquivos estão prontos." property = "Propriedade" quickPosition = "Posição rápida" red = "Vermelho" @@ -105,6 +107,7 @@ save = "Salvar" saveToBrowser = "Salvar no Navegador" saveUnavailable = "Salvar indisponível para este item" seeDockerHub = "Visite nosso Docker Hub" +editSecret = "Editar este valor" selectFillter = "-- Selecione --" size = "Tamanho" sponsor = "Patrocinador" @@ -651,6 +654,7 @@ description = "Configurar provedores de autenticação externos como OAuth2 e SA disconnect = "Desconectar" disconnected = "Provedor desconectado com sucesso" disconnectError = "Falha ao desconectar provedor" +documentation = "Ver documentação" imageResolutionFull = "Completa (tamanho original)" imageResolutionReduced = "Reduzida (máx. 1200 px)" linkedServices = "Serviços vinculados" @@ -964,6 +968,18 @@ label = "Localidade padrão" description = "Tamanho máximo de upload de arquivo (ex.: 100MB, 1GB)" label = "Limite de upload de arquivo" +[admin.settings.general.hideDisabledTools] +description = "Ocultar ferramentas desativadas da interface" +label = "Ocultar ferramentas desativadas" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Ocultar botão do Google Drive quando não estiver ativado" +label = "Ocultar Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Ocultar botão de scanner QR no celular quando não estiver ativado" +label = "Ocultar scanner móvel" + [admin.settings.general.frontendUrl] description = "URL base do frontend (ex.: https://pdf.example.com). Usada para links de convite por e-mail e uploads por QR code no celular. Deixe vazio para usar a URL do backend." label = "URL do frontend" @@ -1148,6 +1164,8 @@ title = "Segurança" [admin.settings.security.audit] label = "Registro de auditoria" +showDetails = "Mostrar detalhes do nível de auditoria" +hideDetails = "Ocultar detalhes do nível de auditoria" [admin.settings.security.audit.enabled] description = "Rastrear ações do usuário e eventos do sistema para conformidade e monitoramento de segurança" @@ -1157,10 +1175,32 @@ label = "Habilitar registro de auditoria" description = "0=OFF, 1=BASIC, 2=STANDARD, 3=VERBOSE" label = "Nível de auditoria" +[admin.settings.security.audit.levelDetails] +off = "Sem logs de auditoria (exceto eventos críticos de segurança)" +basic = "Operações de arquivo PDF (compress, split, merge etc.) e alterações de configurações. Captura: status da operação (sucesso/falha), parâmetros do método, tempos. Volume mínimo de logs." +standard = "Eventos BASIC, além de: login/logout de usuário, alterações de conta, requisições GET gerais. Exclui chamadas de polling contínuo (/auth/me, /app-config, /health etc.) para reduzir ruído nos logs. Ideal para a maioria das implantações." +verbose = "Eventos STANDARD, além de: chamadas de polling contínuo, todas as requisições GET, tempos detalhados. Aviso: alto volume de logs e impacto no desempenho." + [admin.settings.security.audit.retentionDays] description = "Número de dias para reter os logs de auditoria" label = "Retenção de auditoria (dias)" +[admin.settings.security.audit.advancedOptions] +title = "Opções avançadas" +description = "As opções a seguir aumentam o tempo de processamento e o uso de memória. Ative somente se realmente necessário." + +[admin.settings.security.audit.captureFileHash] +description = "Extrair hash SHA-256 de arquivos PDF enviados para verificação de integridade. Independente do nível de auditoria." +label = "Capturar hash do arquivo (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Extrair o campo autor de documentos PDF durante o processamento. Requer análise do PDF, aumenta a latência. Independente do nível de auditoria." +label = "Capturar metadados de autor do PDF" + +[admin.settings.security.audit.captureOperationResults] +description = "Capturar valores de retorno dos métodos. Não recomendado: aumenta significativamente o volume de logs e o uso de disco." +label = "Capturar resultados das operações" + [admin.settings.security.csrfDisabled] description = "Desativar a proteção contra Cross-Site Request Forgery (não recomendado)" label = "Desativar proteção CSRF" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "Configurar logs de auditoria" +configureAuditMessage = "Ajuste o nível de logs de auditoria, o período de retenção e outras configurações na seção Segurança e Autenticação." disabled = "O registro de auditoria está desativado" disabledMessage = "Habilite o registro de auditoria na configuração do seu aplicativo para rastrear eventos do sistema." enterpriseRequired = "Licença Enterprise necessária" enterpriseRequiredMessage = "O sistema de registro de auditoria é um recurso Enterprise. Atualize para uma licença Enterprise para acessar logs e análises de auditoria." +goToSettings = "Ir para as configurações de auditoria" notAvailable = "Sistema de auditoria não disponível" notAvailableMessage = "O sistema de auditoria não está configurado ou não está disponível." -[audit.charts] -byType = "Eventos por tipo" -byUser = "Eventos por usuário" -day = "Dia" -error = "Erro ao carregar gráficos" -month = "Mês" -overTime = "Eventos ao longo do tempo" -title = "Painel de auditoria" -week = "Semana" - [audit.error] title = "Erro ao carregar o sistema de auditoria" -[audit.events] -actions = "Ações" -clearFilters = "Limpar" -details = "Detalhes" -endDate = "Data de término" -error = "Erro ao carregar eventos" -eventDetails = "Detalhes do evento" -filterByType = "Filtrar por tipo" -filterByUser = "Filtrar por usuário" -ipAddress = "Endereço IP" -noEvents = "Nenhum evento encontrado" -startDate = "Data de início" -timestamp = "Carimbo de data/hora" -title = "Eventos de auditoria" -type = "Tipo" -user = "Usuário" -viewDetails = "Ver detalhes" - [audit.export] clearFilters = "Limpar" description = "Exporte eventos de auditoria nos formatos CSV ou JSON. Use filtros para limitar os dados exportados." endDate = "Data de término" error = "Falha ao exportar dados" exportButton = "Exportar dados" +fieldAuthor = "Autor (do PDF)" +fieldDate = "Data" +fieldDocumentName = "Nome do documento" +fieldFileHash = "Hash do arquivo (SHA-256)" +fieldIpAddress = "Endereço IP" +fieldOperationResults = "Resultados da operação" +fieldOutcome = "Resultado (Sucesso/Falha)" +fieldTool = "Ferramenta" +fieldUsername = "Nome de usuário" filterByType = "Filtrar por tipo" filterByUser = "Filtrar por usuário" filters = "Filtros (opcional)" format = "Formato de exportação" +selectFields = "Selecionar campos a incluir" startDate = "Data de início" title = "Exportar dados de auditoria" +verboseRequired = "Requer nível de auditoria VERBOSE" [audit.systemStatus] +autoRefresh = "Atualização automática" +autoRefreshLabel = "Atualizar automaticamente a cada 30 s" +captureBySettings = "Ativar nas configurações" +capturedFields = "Campos capturados" +date = "Data" days = "dias" disabled = "Desativado" +documentName = "Nome do documento" enabled = "Habilitado" +fileHash = "Hash do arquivo" level = "Nível de auditoria" +pdfAuthor = "Autor do PDF" retention = "Período de retenção" status = "Registro de auditoria" title = "Status do sistema" +tool = "Ferramenta" totalEvents = "Total de eventos" +username = "Nome de usuário" +verboseOnly = "Somente VERBOSE" + +[audit.stats] +activeUsers = "Usuários ativos" +attention = "Atenção necessária" +avgLatency = "Latência média" +error = "Erro ao carregar estatísticas" +errorLoadingStats = "Falha ao carregar estatísticas" +excellent = "Excelente" +good = "Bom" +noData = "N/A" +successRate = "Taxa de sucesso" +title = "Resumo" +totalEvents = "Eventos totais" +vsLastPeriod = "vs último período" + +[audit.charts] +byTool = "Ferramentas mais usadas" +byType = "Eventos por tipo" +byUser = "Eventos por usuário" +day = "Dia" +error = "Erro ao carregar gráficos" +hourlyActivity = "Atividade por hora" +month = "Mês" +noData = "Sem dados para este período" +overTime = "Eventos ao longo do tempo" +title = "Painel de auditoria" +week = "Semana" + +[audit.events] +actions = "Ações" +author = "Autor" +clearFilters = "Limpar" +details = "Detalhes" +documentName = "Documento" +endDate = "Data de término" +error = "Erro ao carregar eventos" +eventDetails = "Detalhes do evento" +failure = "Falha" +fileHash = "Hash do arquivo" +filterByType = "Filtrar por tipo" +filterByUser = "Filtrar por usuário" +ipAddress = "Endereço IP" +noEvents = "Nenhum evento encontrado" +outcome = "Status" +sortAsc = "Ordenar crescente" +sortDesc = "Ordenar decrescente" +startDate = "Data de início" +success = "Sucesso" +timestamp = "Carimbo de data/hora" +title = "Eventos de auditoria" +type = "Tipo" +user = "Usuário" +viewDetails = "Ver detalhes" + +[audit.filters] +allOutcomes = "Todos" +failureOnly = "Apenas falhas" +last7Days = "Últimos 7 dias" +last30Days = "Últimos 30 dias" +outcomeFilter = "Resultado" +quickPresets = "Filtros rápidos" +successOnly = "Apenas sucesso" +thisMonth = "Este mês" +today = "Hoje" [audit.tabs] +clearData = "Limpar dados" dashboard = "Painel" events = "Eventos de auditoria" export = "Exportar" +[audit.clearData] +cancel = "Cancelar" +codeDoesNotMatch = "O código não corresponde" +codePlaceholder = "Digite o código aqui" +confirmationCode = "Código de confirmação" +confirmationRequired = "Excluir todos os dados de auditoria" +confirmMessage = "Isto removerá permanentemente todos os logs de auditoria. Insira o código de confirmação abaixo para prosseguir." +confirmTitle = "Confirme que deseja excluir" +deleteButton = "Excluir" +enterCode = "Código de confirmação" +enterCodeBelow = "Digite o código exatamente como mostrado acima (diferencia maiúsculas de minúsculas)" +initiateDelete = "Excluir todos os dados" +irreversible = "IRREVERSÍVEL" +success = "Sucesso" +successMessage = "Todos os dados de auditoria foram limpos com sucesso" +warning1 = "Esta ação não pode ser desfeita" +warning2 = "A exclusão dos dados de auditoria removerá permanentemente todos os logs históricos de auditoria, incluindo eventos de segurança, atividades de usuários e operações de arquivos do banco de dados." + [auth] accessDenied = "Acesso negado" insufficientPermissions = "Você não tem permissão para executar esta ação." @@ -2254,9 +2374,11 @@ copy = "Copiar" done = "Concluído" error = "Erro" expand = "Expandir" +learnMore = "Saiba mais" lines = "linhas" loading = "Carregando..." next = "Próximo" +operation = "esta operação" preview = "Pré-visualização" previous = "Anterior" refresh = "Atualizar" @@ -2920,6 +3042,7 @@ copyStack = "Copiar rastreamento de pilha" discordSubmit = "Discord - Submeter um post de suporte" dismissAllErrors = "Dispensar todos os erros" encryptedPdfMustRemovePassword = "Este PDF está criptografado ou protegido por senha. Desbloqueie-o antes de converter para PDF/A." +generic = "Ocorreu um erro" github = "Submeter um tíquete no GitHub" githubSubmit = "GitHub - Submeter um tíquete" incorrectPasswordProvided = "A senha do PDF está incorreta ou não foi fornecida." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Sua assinatura foi atualizada com sucesso. Sua chave d upgradeSuccess = "Pagamento bem-sucedido! Sua assinatura foi atualizada. A licença foi atualizada no seu servidor. Você receberá um e-mail de confirmação em breve." upgradeTitle = "Fazer upgrade para {{planName}}" yearly = "Anual" +checkoutOpened = "Checkout aberto no navegador" +checkoutInstructions = "Conclua sua compra na janela do navegador que acabou de abrir. Após concluir o pagamento, volte aqui e clique no botão abaixo para atualizar suas informações de cobrança." +refreshBilling = "Concluí o pagamento - Atualizar cobrança" +closeLater = "Farei isso depois" [payment.emailStage] continue = "Continuar" @@ -4679,6 +4806,13 @@ prompt = "Escolha a página para extração da tabela:" submit = "Extrair" title = "PDF para CSV" +[PDFToXLSX] +header = "PDF para Excel" +prompt = "Escolha as páginas para extrair tabelas" +submit = "Converter" +title = "PDF para Excel (XLSX)" +tags = "planilha,excel,xlsx,tabela,extrair,converter" + [PDFToHTML] credit = "Este serviço usa o pdftohtml para conversão de arquivos." header = "PDF para HTML" @@ -4835,6 +4969,7 @@ customPricing = "Personalizado" featureComparison = "Comparação de recursos" from = "A partir de" hideComparison = "Ocultar comparação de recursos" +included = "Incluído" includedInCurrent = "Incluído no seu plano" licensedSeats = "Licenciados: {{count}} assentos" manage = "Gerenciar" @@ -4852,9 +4987,11 @@ title = "Plano ativo" [plan.availablePlans] subtitle = "Escolha o plano que atende às suas necessidades" +loadError = "Não foi possível carregar os preços dos planos. Usando valores padrão." title = "Planos disponíveis" [plan.enterprise] +siteLicense = "Licença de site" highlight1 = "Preços personalizados" highlight2 = "Suporte dedicado" highlight3 = "Recursos mais recentes" @@ -4928,6 +5065,81 @@ keyDescription = "Cole a chave de licença do seu e-mail" success = "Licença ativada!" successMessage = "Sua licença foi ativada com sucesso. Agora você pode fechar esta janela." +[plan.team] +name = "Equipe" +siteLicense = "Licença de site" + +[credits] +enableOverageBilling = "Ativar cobrança por excedente" +maybeLater = "Talvez mais tarde" +upgrade = "Atualizar" + +[credits.modal] +advancedMonitoring = "Monitoramento avançado" +allInOneWorkspace = "Espaço de trabalho PDF tudo-em-um (visualizador, ferramentas e agente)" +apiSandbox = "API sandbox" +contactSales = "Falar com vendas" +creditsRemaining = "{{current}} de {{total}} restantes" +creditsThisMonth = "Créditos mensais" +current = "Plano atual" +customPricing = "Personalizado" +customSmartFolders = "Pastas inteligentes personalizadas" +dedicatedSupportSlas = "Suporte dedicado e SLAs" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Tudo no Créditos, além de:" +everythingInFree = "Tudo no Gratuito, além de:" +fasterThroughput = "Taxa 10x mais rápida" +forRegularWork = "Para trabalho rotineiro com PDF:" +freeTier = "Camada gratuita" +fullyPrivateFiles = "Arquivos totalmente privados" +largeFileProcessing = "Processamento de arquivos grandes" +managedMemberMessage = "Você tem acesso ilimitado a créditos por meio da sua equipe. Se precisar de ajuda, entre em contato com o líder da sua equipe." +managedMemberTitle = "Créditos ilimitados" +meteringBillingNote = "Créditos excedentes são faturados mensalmente junto com sua assinatura Equipe. Acompanhe seu uso a qualquer momento nas configurações da sua conta." +meteringExplanation = "Seu plano Equipe inclui {{credits}} créditos por mês. Quando acabarem, a cobrança por excedente fornece automaticamente créditos adicionais para você nunca precisar parar de trabalhar." +meteringIncluded = "{{credits}} créditos/mês incluídos com Equipe" +meteringNoCommitment = "Sem compromisso, cancele a qualquer momento" +meteringNeverRunOut = "Nunca fique sem créditos" +meteringPayAsYouGo = "Pague apenas pelo que usar" +meteringPrice = "Créditos adicionais a {{price}}/crédito" +meteringTitle = "Cobrança por excedente pague pelo que usar" +monthlyCredits = "créditos mensais" +orgWideAccess = "Controles de acesso para toda a organização" +overage = "excedente" +perMonth = "/mês" +popular = "Popular" +premiumAiModels = "Modelos de IA premium" +prioritySupport = "Suporte prioritário" +privateDocCloud = "Nuvem de documentos privada" +ragFineTuning = "RAG + fine-tuning" +secureApiAccess = "Acesso seguro à API" +selfHostLink = "Consulte a documentação e os planos" +selfHostPrompt = "Quer hospedar por conta própria?" +standardThroughput = "Taxa de processamento padrão" +subtitle = "Atualize para Equipe para ter 10x mais créditos e processamento mais rápido." +subtitlePro = "Ative a cobrança automática por excedente para nunca ficar sem créditos." +teamLeaderOnly = "Apenas líderes de equipe podem ativar a cobrança por excedente" +teamSubscription = "Equipe" +titleExhausted = "Você usou seus créditos gratuitos" +titleExhaustedPro = "Você ficou sem créditos" +unlimitedApiAccess = "Acesso ilimitado à API" +unlimitedMonthlyCredits = "Licença de site" +unlimitedSeats = "Usuários ilimitados" + +[credits.modal.features] +everythingInCredits = "Tudo no Créditos, além de:" +everythingInFree = "Tudo no Gratuito, além de:" +forRegularWork = "Para trabalho rotineiro com PDF:" + +[credits.insufficient] +brief = "Créditos insuficientes. Você precisa de {{required}} créditos, mas tem {{current}}." +freeTier = "Atualize para Equipe para ter 10x mais créditos e cobrança por excedente ilimitada." +managedMember = "Entre em contato com o líder de sua equipe para obter ajuda." +message = "Você não tem créditos suficientes para executar {{tool}}. Atualmente você tem {{current}} créditos." +messageWithAmount = "Você precisa de {{required}} créditos para executar {{tool}}, mas tem apenas {{current}}." +teamMember = "Ative a cobrança por excedente para nunca ficar sem créditos." +title = "Créditos insuficientes" + [printFile] header = "Imprimir arquivo na impressora" submit = "Imprimir" @@ -5565,6 +5777,70 @@ user = "Logado como" saas = "Stirling Cloud" selfhosted = "Auto-hospedado" +[settings.planBilling] +currentPlan = "Plano atual" +loading = "Carregando informações de cobrança..." +notAvailable = "Plano e Cobrança só estão disponíveis quando conectado ao Stirling Cloud (modo SaaS)." +title = "Plano e Cobrança" + +[settings.planBilling.billing] +manageBilling = "Gerenciar cobrança" +nextBillingDate = "Próxima data de cobrança" +overageCost = "Custo de excedente atual: {{amount}} ({{credits}} créditos)" + +[settings.planBilling.credits] +estimatedCost = "Custo estimado: {{amount}}" +freeTierInfo = "O plano gratuito inclui {{freeCredits}} créditos por mês. Atualize para Equipe para {{teamCredits}} créditos/mês e cobrança por excedente pague pelo que usar." +included = "{{count}} créditos/mês (incluídos)" +noOverage = "Sem cobranças por excedente neste mês. Você está usando seus {{count}} créditos incluídos." +overage = "+ {{count}} excedente" +overageInfo = "Créditos excedentes são cobrados a {{price}} por crédito. Você só pagará pelo que usar além da sua franquia mensal." +title = "Uso de créditos" + +[settings.planBilling.errors] +fetchFailed = "Não foi possível buscar dados de cobrança" +retry = "Tentar novamente" + +[settings.planBilling.status] +active = "Ativo" +canceled = "Cancelado" +pastDue = "Em atraso" +trial = "Avaliação" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Recursos e suporte empresariais personalizados" +free = "Gratuito" +freeDescription = "50 créditos por mês" +team = "Equipe" +teamBadge = "Equipe" +teamDescription = "500 créditos/mês incluídos, cobrança automática por excedente para serviço ininterrupto" +teamTooltipCredits = "O plano Equipe inclui {{credits}} créditos/mês." +teamTooltipFineprint = "Pague apenas pelo que usar além dos créditos incluídos." +teamTooltipOverage = "Cobrança automática por excedente a {{price}}/crédito garante serviço ininterrupto." + +[settings.planBilling.team] +managedByTeam = "Gerenciado pela equipe" +memberCount = "{{count}} membros" + +[settings.planBilling.trial] +daysRemaining = "{{days}} dias restantes" +daysRemainingFull = "Sua avaliação termina em {{days}} dias" +endDate = "Expira: {{date}}" +endsOn = "Término da avaliação" +title = "Avaliação gratuita ativa" + +[settings.planBilling.upgrade] +cta = "Atualizar para Equipe" +featureApi = "Acesso à API para automação" +featureCredits = "{{teamCredits}} créditos por mês (vs {{freeCredits}} no Gratuito)" +featureMembers = "Membros de equipe ilimitados" +featureSupport = "Suporte prioritário" +featureThroughput = "Maior taxa de processamento" +opensInBrowser = "Abre no navegador para concluir a atualização" +subtitle = "Atualize para Equipe para:" +title = "Atualize seu plano" + [settings.developer] apiKeys = "Chaves de API" title = "Desenvolvedor" @@ -5689,6 +5965,9 @@ people = "Pessoas" teams = "Equipes" title = "Espaço de trabalho" +[settings.team] +title = "Equipe" + [setup] description = "Comece escolhendo como deseja usar o Stirling PDF" welcome = "Bem-vindo ao Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "Divisão automática com folhas divisoras" name = "Folha divisora" tooltip = "Use folhas divisoras com código QR entre documentos ao digitalizar" +[split.methods.byPoster] +name = "Blocos imprimíveis" +desc = "Dividir páginas grandes em tamanhos imprimíveis" +tooltip = "Divida páginas superdimensionadas em blocos menores adequados para impressão em papel padrão (A4, Carta etc.)" + [split.methods.byPages] desc = "Extrair páginas específicas (1,3,5-10)" name = "Números de página" @@ -6029,6 +6313,7 @@ tooltip = "Especifique o tamanho máximo do arquivo (ex.: 10MB, 500KB)" [split.methods.prefix] splitAt = "Dividir em" splitBy = "Dividir por" +splitInto = "Dividir em" [split.methodSelection.tooltip] bullet1 = "Clique em um cartão de método para selecioná-lo" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Selecione um método de divisão primeiro" chooseMethod = "Escolher método" settings = "Configurações" +[split.poster] +rightToLeft = "Dividir da direita para a esquerda" + +[split.poster.pageSize] +label = "Tamanho da página de destino" +description = "Tamanho das páginas de saída para impressão" + +[split.poster.xFactor] +label = "Divisões horizontais" +description = "Número de colunas em que cada página será dividida" + +[split.poster.yFactor] +label = "Divisões verticais" +description = "Número de linhas em que cada página será dividida" + [split.tooltip.byChapters] bullet1 = "Nível de marcador: em qual nível dividir (1=nível superior)" bullet2 = "Incluir metadados: preservar propriedades do documento" @@ -6085,6 +6385,14 @@ bullet5 = "Ative o modo duplex se estiver digitalizando ambos os lados das folha text = "Divida automaticamente documentos digitalizados usando folhas divisoras físicas com códigos QR. Perfeito para processar vários documentos digitalizados juntos." title = "Dividir por divisor de páginas" +[split.tooltip.byPoster] +bullet1 = "Tamanho da página de destino: escolha o tamanho do papel de saída (A4, Carta etc.)" +bullet2 = "Divisões horizontais/verticais: tamanho da grade para divisão" +bullet3 = "Da direita para a esquerda: inverte a ordem das colunas para layouts RTL" +bullet4 = "Imprima e monte as partes para criar seu pôster" +text = "Divida páginas grandes de PDF em blocos menores, imprimíveis, adequados a tamanhos de papel padrão. Perfeito para criar pôsteres a partir de páginas superdimensionadas." +title = "Dividir para impressão de pôster" + [split.tooltip.byPages] bullet1 = "Pontos únicos: 3,7 (divide após as páginas 3 e 7)" bullet2 = "Intervalos: 3-8 (divide antes da página 3 e após a 8)" @@ -6364,9 +6672,13 @@ tags = "captura-de-web,salvar-página,web-para-doc,arquivar" title = "Converter URL/Site para PDF" [usage] +aboutUsageAnalytics = "Sobre a Análise de Uso" +configureSettings = "Configurar Análise" error = "Erro ao carregar estatísticas de uso" noData = "Nenhum dado disponível" noDataMessage = "Nenhuma estatística de uso está disponível no momento." +usageAnalyticsExplanation = "A análise de uso rastreia solicitações de endpoints e padrões de uso das ferramentas. Combinada ao painel de logs de auditoria, você obtém visibilidade completa da atividade do sistema, desempenho e eventos de segurança." +viewAuditLogs = "Ver logs de auditoria" [usage.chart] title = "Gráfico de uso por endpoint" @@ -6947,3 +7259,278 @@ cancel = "Cancelar" confirm = "Extrair" message = "Este ZIP contém {{count}} arquivos. Extrair mesmo assim?" title = "Arquivo ZIP grande" + +[cloudBadge] +tooltip = "Esta operação usará seus créditos de nuvem" + +[team] +cancelInviteError = "Falha ao cancelar o convite" +confirmCancelInvite = "Tem certeza de que deseja cancelar este convite?" +confirmLeave = "Tem certeza de que deseja sair desta equipe?" +confirmLeaveLeader = "Como líder da equipe, ao sair você será removido da equipe. Tem certeza?" +confirmRemove = "Tem certeza de que deseja remover este membro?" +editName = "Editar nome da equipe" +inviteCancelled = "Convite cancelado" +inviteError = "Falha ao enviar o convite" +inviteSent = "Convite enviado com sucesso" +leader = "Líder" +leaveButton = "Sair da equipe" +leaveError = "Falha ao sair da equipe" +leaveSuccess = "Saiu da equipe com sucesso" +loading = "Carregando informações da equipe..." +memberCount = "{{count}} membros" +memberRemoved = "Membro removido com sucesso" +namePlaceholder = "Digite o nome da equipe" +personal = "Pessoal" +removeError = "Falha ao remover membro" +renameError = "Falha ao renomear a equipe" +renameSuccess = "Equipe renomeada com sucesso" + +[team.invitationBanner] +message = "convidou você para participar" +acceptButton = "Aceitar" +rejectButton = "Recusar" + +[team.features] +badge = "Recursos da equipe" +subtitle = "Colabore com sua equipe" +title = "Colaboração em equipe" +viewPlans = "Ver planos" + +[team.features.billing] +description = "Gerencie cobrança e assinaturas" +title = "Gerenciamento de cobrança" + +[team.features.credits] +description = "Pool de créditos compartilhado para todos os membros" +title = "Créditos compartilhados" + +[team.features.dashboard] +description = "Veja a atividade e o uso da equipe" +title = "Painel da equipe" + +[team.features.invite] +description = "Adicione membros à sua equipe" +title = "Convidar membros" + +[team.invite] +cancelLabel = "Cancelar" +invalidEmail = "Endereço de e-mail inválido" +placeholder = "Digite o endereço de e-mail" +sendButton = "Enviar convite" +title = "Convidar membro da equipe" + +[team.members] +emailColumn = "E-mail" +empty = "Ainda não há membros na equipe" +nameColumn = "Nome" +pending = "Pendente" +remove = "Remover" +roleColumn = "Função" +title = "Membros da equipe" + +[team.upgrade] +button = "Atualizar para Equipe" +description = "Desbloqueie recursos de colaboração em equipe" +title = "Atualizar para o plano Equipe" + +[provider.oauth2.google] +scope = "Autenticação de login" + +[provider.oauth2.google.clientId] +label = "ID do cliente" +description = "O ID do cliente OAuth2 do Google no Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Segredo do cliente" +description = "O segredo do cliente OAuth2 do Google no Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Escopos" +description = "Escopos OAuth2 separados por vírgula" + +[provider.oauth2.google.useAsUsername] +label = "Usar como nome de usuário" +description = "Campo a ser usado como nome de usuário (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Autenticação de login" + +[provider.oauth2.github.clientId] +label = "ID do cliente" +description = "O ID do cliente OAuth2 nas Configurações de Desenvolvedor do GitHub" + +[provider.oauth2.github.clientSecret] +label = "Segredo do cliente" +description = "O segredo do cliente OAuth2 nas Configurações de Desenvolvedor do GitHub" + +[provider.oauth2.github.scopes] +label = "Escopos" +description = "Escopos OAuth2 separados por vírgula" + +[provider.oauth2.github.useAsUsername] +label = "Usar como nome de usuário" +description = "Campo a ser usado como nome de usuário (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "URL do emissor" +description = "URL do endpoint de Descoberta do OpenID Connect do realm do Keycloak" + +[provider.oauth2.keycloak.clientId] +label = "ID do cliente" +description = "O ID do cliente OAuth2 do Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Segredo do cliente" +description = "O segredo do cliente OAuth2 do Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "Escopos" +description = "Escopos OAuth2 separados por vírgula" + +[provider.oauth2.keycloak.useAsUsername] +label = "Usar como nome de usuário" +description = "Campo a ser usado como nome de usuário (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "OAuth2 genérico" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Ativar OAuth2 genérico" +description = "Ativar autenticação usando um provedor OAuth2 personalizado" + +[provider.oauth2.generic.provider] +label = "Nome do provedor" +description = "O nome do seu provedor OAuth2 (ex.: Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "URL do emissor" +description = "Provedor que suporta OpenID Connect Discovery (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "ID do cliente" +description = "O ID do cliente OAuth2 do seu provedor" + +[provider.oauth2.generic.clientSecret] +label = "Segredo do cliente" +description = "O segredo do cliente OAuth2 do seu provedor" + +[provider.oauth2.generic.scopes] +label = "Escopos" +description = "Escopos OAuth2 separados por vírgula" + +[provider.oauth2.generic.useAsUsername] +label = "Usar como nome de usuário" +description = "Campo a ser usado como nome de usuário" + +[provider.oauth2.generic.autoCreateUser] +label = "Criar usuários automaticamente" +description = "Criar automaticamente contas de usuário no primeiro login via OAuth2" + +[provider.oauth2.generic.blockRegistration] +label = "Bloquear registro" +description = "Impedir novo registro de usuário via OAuth2" + +[provider.smtp] +name = "SMTP Mail" +scope = "Notificações por e-mail" + +[provider.smtp.enabled] +label = "Ativar e-mail" +description = "Ativar notificações por e-mail e funcionalidade SMTP" + +[provider.smtp.host] +label = "Host SMTP" +description = "O nome do host ou endereço IP do seu servidor SMTP" + +[provider.smtp.port] +label = "Porta SMTP" +description = "O número da porta para conexão SMTP (normalmente 25, 465 ou 587)" + +[provider.smtp.username] +label = "Nome de usuário SMTP" +description = "Nome de usuário para autenticação SMTP" + +[provider.smtp.password] +label = "Senha SMTP" +description = "Senha para autenticação SMTP" + +[provider.smtp.from] +label = "Endereço do remetente" +description = "O endereço de e-mail a ser usado como remetente" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "Ativar SAML2" +description = "Ativar autenticação SAML2 (apenas Enterprise)" + +[provider.saml2.provider] +label = "Nome do provedor" +description = "O nome do seu provedor SAML2" + +[provider.saml2.registrationId] +label = "ID de registro" +description = "O nome do seu aplicativo Provedor de Serviço (SP)" + +[provider.saml2.idpMetadataUri] +label = "IDP Metadata URI" +description = "A URI dos metadados do seu provedor" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login URL" +description = "A URL para iniciar o SSO" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout URL" +description = "A URL para iniciar o SLO" + +[provider.saml2.idpIssuer] +label = "IDP Issuer" +description = "O ID do seu provedor" + +[provider.saml2.idpCert] +label = "Certificado do IDP" +description = "O caminho do certificado (ex.: classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Chave privada" +description = "O caminho da sua chave privada" + +[provider.saml2.spCert] +label = "Certificado do SP" +description = "O caminho do seu certificado de assinatura" + +[provider.saml2.autoCreateUser] +label = "Criar usuários automaticamente" +description = "Criar automaticamente contas de usuário no primeiro login via SAML2" + +[provider.saml2.blockRegistration] +label = "Bloquear registro" +description = "Impedir novo registro de usuário via SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "Importação de arquivos" + +[provider.googledrive.enabled] +label = "Ativar seletor de arquivos do Google Drive" +description = "Permitir que os usuários importem arquivos diretamente do Google Drive" + +[provider.googledrive.clientId] +label = "ID do cliente" +description = "ID do cliente Google OAuth 2.0 no Google Cloud Console" + +[provider.googledrive.apiKey] +label = "Chave da API" +description = "Chave da API do Google para a Google Picker API no Google Cloud Console" + +[provider.googledrive.appId] +label = "ID do app" +description = "ID do app do Google Drive no Google Cloud Console" diff --git a/frontend/public/locales/pt-PT/translation.toml b/frontend/public/locales/pt-PT/translation.toml index 6f42408d2..1cedefdcb 100644 --- a/frontend/public/locales/pt-PT/translation.toml +++ b/frontend/public/locales/pt-PT/translation.toml @@ -96,6 +96,8 @@ pin = "Fixar ficheiro (manter ativo após executar a ferramenta)" poweredBy = "Desenvolvido por" pro = "Pro" processTimeWarning = "Aviso: Este processo pode demorar até um minuto dependendo do tamanho do ficheiro" +processingComplete = "O seu ficheiro está pronto." +processingCompleteMultiple = "{{count}} ficheiros estão prontos." property = "Propriedade" quickPosition = "Posição rápida" red = "Vermelho" @@ -105,6 +107,7 @@ save = "Guardar" saveToBrowser = "Guardar no Navegador" saveUnavailable = "Guardar indisponível para este item" seeDockerHub = "Ver Docker Hub" +editSecret = "Editar este valor" selectFillter = "-- Selecionar --" size = "Tamanho" sponsor = "Patrocinar" @@ -651,6 +654,7 @@ description = "Configurar fornecedores de autenticação externos como OAuth2 e disconnect = "Desligar" disconnected = "Fornecedor desligado com sucesso" disconnectError = "Falha ao desligar fornecedor" +documentation = "Ver documentação" imageResolutionFull = "Completa (tamanho original)" imageResolutionReduced = "Reduzida (máx. 1200 px)" linkedServices = "Serviços ligados" @@ -964,6 +968,18 @@ label = "Idioma predefinido" description = "Tamanho máximo de carregamento de ficheiros (por exemplo, 100MB, 1GB)" label = "Limite de carregamento de ficheiros" +[admin.settings.general.hideDisabledTools] +description = "Ocultar ferramentas desativadas da interface" +label = "Ocultar Ferramentas Desativadas" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Ocultar botão do Google Drive quando não estiver ativado" +label = "Ocultar Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Ocultar botão do leitor de códigos QR móvel quando não estiver ativado" +label = "Ocultar Leitor Móvel" + [admin.settings.general.frontendUrl] description = "URL base para o frontend (por exemplo, https://pdf.example.com). Usado para links de convite por e-mail e carregamentos por código QR no telemóvel. Deixe vazio para usar o URL do backend." label = "URL do frontend" @@ -1148,6 +1164,8 @@ title = "Segurança" [admin.settings.security.audit] label = "Registo de auditoria" +showDetails = "Mostrar detalhes do nível de auditoria" +hideDetails = "Ocultar detalhes do nível de auditoria" [admin.settings.security.audit.enabled] description = "Acompanhar ações dos utilizadores e eventos do sistema para conformidade e monitorização de segurança" @@ -1157,10 +1175,32 @@ label = "Ativar registo de auditoria" description = "0=DESLIGADO, 1=BÁSICO, 2=PADRÃO, 3=DETALHADO" label = "Nível de auditoria" +[admin.settings.security.audit.levelDetails] +off = "Sem registo de auditoria (exceto eventos de segurança críticos)" +basic = "Operações de ficheiro PDF (comprimir, dividir, unir, etc.) e alterações de definições. Regista: estado da operação (sucesso/falha), parâmetros do método, tempos. Volume mínimo de registos." +standard = "Eventos BASIC mais: início/encerramento de sessão do utilizador, alterações de conta, pedidos GET gerais. Exclui chamadas de sondagem contínua (/auth/me, /app-config, /health, etc.) para reduzir o ruído dos registos. Ideal para a maioria das implementações." +verbose = "Eventos STANDARD mais: chamadas de sondagem contínua, todos os pedidos GET, temporização detalhada. Aviso: elevado volume de registos e impacto no desempenho." + [admin.settings.security.audit.retentionDays] description = "Número de dias para reter registos de auditoria" label = "Retenção de auditoria (dias)" +[admin.settings.security.audit.advancedOptions] +title = "Opções Avançadas" +description = "As opções seguintes aumentam o tempo de processamento e a utilização de memória. Ative apenas se for realmente necessário." + +[admin.settings.security.audit.captureFileHash] +description = "Extrair o hash SHA-256 dos ficheiros PDF enviados para verificação de integridade. Independente do nível de auditoria." +label = "Capturar Hash de Ficheiro (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Extrair o campo de autor dos documentos PDF durante o processamento. Requer análise do PDF, aumenta a latência. Independente do nível de auditoria." +label = "Capturar Metadados de Autor do PDF" + +[admin.settings.security.audit.captureOperationResults] +description = "Capturar valores de retorno dos métodos. Não recomendado: aumenta significativamente o volume de registos e a utilização de disco." +label = "Capturar Resultados da Operação" + [admin.settings.security.csrfDisabled] description = "Desativar proteção Cross-Site Request Forgery (não recomendado)" label = "Desativar proteção CSRF" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "Configurar Registo de Auditoria" +configureAuditMessage = "Ajuste o nível de registo de auditoria, o período de retenção e outras definições na secção Segurança e Autenticação." disabled = "Registo de auditoria desativado" disabledMessage = "Ative o registo de auditoria na configuração da sua aplicação para rastrear eventos do sistema." enterpriseRequired = "Licença Enterprise necessária" enterpriseRequiredMessage = "O sistema de registo de auditoria é uma funcionalidade Enterprise. Atualize para uma licença Enterprise para aceder a registos de auditoria e análises." +goToSettings = "Ir para Definições de Auditoria" notAvailable = "Sistema de auditoria não disponível" notAvailableMessage = "O sistema de auditoria não está configurado ou não está disponível." -[audit.charts] -byType = "Eventos por tipo" -byUser = "Eventos por utilizador" -day = "Dia" -error = "Erro ao carregar gráficos" -month = "Mês" -overTime = "Eventos ao longo do tempo" -title = "Painel de auditoria" -week = "Semana" - [audit.error] title = "Erro ao carregar o sistema de auditoria" -[audit.events] -actions = "Ações" -clearFilters = "Limpar" -details = "Detalhes" -endDate = "Data de fim" -error = "Erro ao carregar eventos" -eventDetails = "Detalhes do evento" -filterByType = "Filtrar por tipo" -filterByUser = "Filtrar por utilizador" -ipAddress = "Endereço IP" -noEvents = "Nenhum evento encontrado" -startDate = "Data de início" -timestamp = "Carimbo de data/hora" -title = "Eventos de auditoria" -type = "Tipo" -user = "Utilizador" -viewDetails = "Ver detalhes" - [audit.export] clearFilters = "Limpar" description = "Exportar eventos de auditoria para formato CSV ou JSON. Utilize filtros para limitar os dados exportados." endDate = "Data de fim" error = "Falha ao exportar dados" exportButton = "Exportar dados" +fieldAuthor = "Autor (do PDF)" +fieldDate = "Data" +fieldDocumentName = "Nome do Documento" +fieldFileHash = "Hash do Ficheiro (SHA-256)" +fieldIpAddress = "Endereço IP" +fieldOperationResults = "Resultados da Operação" +fieldOutcome = "Resultado (Sucesso/Falha)" +fieldTool = "Ferramenta" +fieldUsername = "Nome de utilizador" filterByType = "Filtrar por tipo" filterByUser = "Filtrar por utilizador" filters = "Filtros (opcional)" format = "Formato de exportação" +selectFields = "Selecionar Campos a Incluir" startDate = "Data de início" title = "Exportar dados de auditoria" +verboseRequired = "Requer nível de auditoria VERBOSE" [audit.systemStatus] +autoRefresh = "Atualização automática" +autoRefreshLabel = "Atualização automática a cada 30 s" +captureBySettings = "Ativar nas definições" +capturedFields = "Campos Capturados" +date = "Data" days = "dias" disabled = "Desativado" +documentName = "Nome do Documento" enabled = "Ativado" +fileHash = "Hash do Ficheiro" level = "Nível de auditoria" +pdfAuthor = "Autor do PDF" retention = "Período de retenção" status = "Registo de auditoria" title = "Estado do sistema" +tool = "Ferramenta" totalEvents = "Total de eventos" +username = "Nome de utilizador" +verboseOnly = "Apenas VERBOSE" + +[audit.stats] +activeUsers = "Utilizadores Ativos" +attention = "Atenção necessária" +avgLatency = "Latência média" +error = "Erro ao carregar estatísticas" +errorLoadingStats = "Falha ao carregar estatísticas" +excellent = "Excelente" +good = "Bom" +noData = "N/A" +successRate = "Taxa de Sucesso" +title = "Resumo" +totalEvents = "Total de Eventos" +vsLastPeriod = "vs período anterior" + +[audit.charts] +byTool = "Ferramentas Mais Utilizadas" +byType = "Eventos por tipo" +byUser = "Eventos por utilizador" +day = "Dia" +error = "Erro ao carregar gráficos" +hourlyActivity = "Atividade por Hora" +month = "Mês" +noData = "Sem dados para este período" +overTime = "Eventos ao longo do tempo" +title = "Painel de auditoria" +week = "Semana" + +[audit.events] +actions = "Ações" +author = "Autor" +clearFilters = "Limpar" +details = "Detalhes" +documentName = "Documento" +endDate = "Data de fim" +error = "Erro ao carregar eventos" +eventDetails = "Detalhes do evento" +failure = "Falha" +fileHash = "Hash do Ficheiro" +filterByType = "Filtrar por tipo" +filterByUser = "Filtrar por utilizador" +ipAddress = "Endereço IP" +noEvents = "Nenhum evento encontrado" +outcome = "Estado" +sortAsc = "Ordenar ascendente" +sortDesc = "Ordenar descendente" +startDate = "Data de início" +success = "Sucesso" +timestamp = "Carimbo de data/hora" +title = "Eventos de auditoria" +type = "Tipo" +user = "Utilizador" +viewDetails = "Ver detalhes" + +[audit.filters] +allOutcomes = "Todos" +failureOnly = "Apenas falhas" +last7Days = "Últimos 7 dias" +last30Days = "Últimos 30 dias" +outcomeFilter = "Resultado" +quickPresets = "Filtros rápidos" +successOnly = "Apenas sucessos" +thisMonth = "Este mês" +today = "Hoje" [audit.tabs] +clearData = "Limpar Dados" dashboard = "Painel" events = "Eventos de auditoria" export = "Exportar" +[audit.clearData] +cancel = "Cancelar" +codeDoesNotMatch = "O código não corresponde" +codePlaceholder = "Escreva o código aqui" +confirmationCode = "Código de Confirmação" +confirmationRequired = "Eliminar Todos os Dados de Auditoria" +confirmMessage = "Isto removerá permanentemente todos os registos de auditoria. Introduza o código de confirmação abaixo para continuar." +confirmTitle = "Confirme que pretende eliminar" +deleteButton = "Eliminar" +enterCode = "Código de Confirmação" +enterCodeBelow = "Introduza o código exatamente como mostrado acima (sensível a maiúsculas/minúsculas)" +initiateDelete = "Eliminar Todos os Dados" +irreversible = "IRREVERSÍVEL" +success = "Sucesso" +successMessage = "Todos os dados de auditoria foram limpos com sucesso" +warning1 = "Esta ação não pode ser anulada" +warning2 = "Eliminar dados de auditoria removerá permanentemente todos os registos históricos de auditoria, incluindo eventos de segurança, atividades de utilizadores e operações de ficheiros da base de dados." + [auth] accessDenied = "Acesso negado" insufficientPermissions = "Não tem permissão para executar esta ação." @@ -2254,9 +2374,11 @@ copy = "Copiar" done = "Concluído" error = "Erro" expand = "Expandir" +learnMore = "Saber mais" lines = "linhas" loading = "A carregar..." next = "Seguinte" +operation = "esta operação" preview = "Pré-visualizar" previous = "Anterior" refresh = "Atualizar" @@ -2920,6 +3042,7 @@ copyStack = "Copiar Rastreamento da Pilha" discordSubmit = "Discord - Submeter Publicação de Suporte" dismissAllErrors = "Ignorar todos os erros" encryptedPdfMustRemovePassword = "Este PDF está encriptado ou protegido por palavra-passe. Desbloqueie-o antes de converter para PDF/A." +generic = "Ocorreu um erro" github = "Submeter um ticket no GitHub" githubSubmit = "GitHub - Submeter um ticket" incorrectPasswordProvided = "A palavra-passe do PDF está incorreta ou não foi fornecida." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "A sua subscrição foi atualizada com sucesso. A sua c upgradeSuccess = "Pagamento bem-sucedido! A sua subscrição foi atualizada. A licença foi atualizada no seu servidor. Receberá um email de confirmação em breve." upgradeTitle = "Atualizar para {{planName}}" yearly = "Anual" +checkoutOpened = "Checkout aberto no navegador" +checkoutInstructions = "Conclua a sua compra na janela do navegador que acabou de abrir. Após concluir o pagamento, volte aqui e clique no botão abaixo para atualizar as suas informações de faturação." +refreshBilling = "Pagamento concluído - Atualizar faturação" +closeLater = "Farei isto mais tarde" [payment.emailStage] continue = "Continuar" @@ -4679,6 +4806,13 @@ prompt = "Escolha a página para extrair tabela" submit = "Extrair" title = "PDF para CSV" +[PDFToXLSX] +header = "PDF para Excel" +prompt = "Escolha as páginas para extrair tabelas" +submit = "Converter" +title = "PDF para Excel (XLSX)" +tags = "folha de cálculo,excel,xlsx,tabela,extrair,converter" + [PDFToHTML] credit = "Este serviço usa pdftohtml para conversão de ficheiros." header = "PDF para HTML" @@ -4835,6 +4969,7 @@ customPricing = "Personalizado" featureComparison = "Comparação de funcionalidades" from = "Desde" hideComparison = "Ocultar comparação de funcionalidades" +included = "Incluído" includedInCurrent = "Incluído no seu plano" licensedSeats = "Licenciados: {{count}} lugares" manage = "Gerir" @@ -4852,9 +4987,11 @@ title = "Plano ativo" [plan.availablePlans] subtitle = "Escolha o plano que se adapta às suas necessidades" +loadError = "Não foi possível carregar os preços dos planos. A usar valores predefinidos." title = "Planos disponíveis" [plan.enterprise] +siteLicense = "Licença de Site" highlight1 = "Preços personalizados" highlight2 = "Suporte dedicado" highlight3 = "Funcionalidades mais recentes" @@ -4928,6 +5065,81 @@ keyDescription = "Cole a chave de licença do seu e-mail" success = "Licença ativada!" successMessage = "A sua licença foi ativada com sucesso. Pode fechar esta janela." +[plan.team] +name = "Equipa" +siteLicense = "Licença de Site" + +[credits] +enableOverageBilling = "Ativar faturação por excedente" +maybeLater = "Talvez mais tarde" +upgrade = "Atualizar" + +[credits.modal] +advancedMonitoring = "Monitorização avançada" +allInOneWorkspace = "Workspace PDF tudo-em-um (visualizador, ferramentas e agente)" +apiSandbox = "Sandbox de API" +contactSales = "Contactar Vendas" +creditsRemaining = "{{current}} de {{total}} restantes" +creditsThisMonth = "Créditos mensais" +current = "Plano Atual" +customPricing = "Personalizado" +customSmartFolders = "Pastas Inteligentes Personalizadas" +dedicatedSupportSlas = "Suporte dedicado e SLAs" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Tudo em Créditos, mais:" +everythingInFree = "Tudo em Free, mais:" +fasterThroughput = "Débito 10x mais rápido" +forRegularWork = "Para trabalho regular com PDF:" +freeTier = "Nível Free" +fullyPrivateFiles = "Ficheiros totalmente privados" +largeFileProcessing = "Processamento de ficheiros grandes" +managedMemberMessage = "Tem acesso ilimitado a créditos através da sua equipa. Se precisar de ajuda, contacte o líder da sua equipa." +managedMemberTitle = "Créditos Ilimitados" +meteringBillingNote = "Os créditos excedentes são faturados mensalmente juntamente com a sua subscrição Team. Acompanhe a sua utilização a qualquer momento nas definições da sua conta." +meteringExplanation = "O seu plano Team inclui {{credits}} créditos por mês. Quando esgotar, a faturação por excedente fornece automaticamente créditos adicionais para que nunca tenha de parar de trabalhar." +meteringIncluded = "{{credits}} créditos/mês incluídos com o Team" +meteringNoCommitment = "Sem compromisso, cancele a qualquer momento" +meteringNeverRunOut = "Nunca ficar sem créditos" +meteringPayAsYouGo = "Pague apenas o que usar" +meteringPrice = "Créditos adicionais a {{price}}/crédito" +meteringTitle = "Faturação por excedente pagar-consoante-o-uso" +monthlyCredits = "créditos mensais" +orgWideAccess = "Controlos de acesso para toda a organização" +overage = "excedente" +perMonth = "/mês" +popular = "Popular" +premiumAiModels = "Modelos de IA premium" +prioritySupport = "Suporte prioritário" +privateDocCloud = "Nuvem de Documentos Privada" +ragFineTuning = "RAG + fine-tuning" +secureApiAccess = "Acesso seguro à API" +selfHostLink = "Consulte a documentação e os planos" +selfHostPrompt = "Quer fazer self-host?" +standardThroughput = "Débito padrão" +subtitle = "Atualize para Team para obter 10x mais créditos e processamento mais rápido." +subtitlePro = "Ative a faturação automática por excedente para nunca ficar sem créditos." +teamLeaderOnly = "Apenas líderes de equipa podem ativar a faturação por excedente" +teamSubscription = "Team" +titleExhausted = "Utilizou os seus créditos gratuitos" +titleExhaustedPro = "Ficou sem créditos" +unlimitedApiAccess = "Acesso ilimitado à API" +unlimitedMonthlyCredits = "Licença de Site" +unlimitedSeats = "Lugares ilimitados" + +[credits.modal.features] +everythingInCredits = "Tudo em Créditos, mais:" +everythingInFree = "Tudo em Free, mais:" +forRegularWork = "Para trabalho regular com PDF:" + +[credits.insufficient] +brief = "Créditos insuficientes. Precisa de {{required}} créditos, mas tem {{current}}." +freeTier = "Atualize para Team para 10x mais créditos e faturação por excedente ilimitada." +managedMember = "Contacte o líder da sua equipa para obter ajuda." +message = "Não tem créditos suficientes para executar {{tool}}. Atualmente tem {{current}} créditos." +messageWithAmount = "Precisa de {{required}} créditos para executar {{tool}}, mas só tem {{current}}." +teamMember = "Ative a faturação por excedente para nunca ficar sem créditos." +title = "Créditos Insuficientes" + [printFile] header = "Imprimir Ficheiro para Impressora" submit = "Imprimir" @@ -5565,6 +5777,70 @@ user = "Sessão iniciada como" saas = "Stirling Cloud" selfhosted = "Autoalojado" +[settings.planBilling] +currentPlan = "Plano Atual" +loading = "A carregar informações de faturação..." +notAvailable = "Planos e Faturação só estão disponíveis quando ligado ao Stirling Cloud (modo SaaS)." +title = "Planos e Faturação" + +[settings.planBilling.billing] +manageBilling = "Gerir Faturação" +nextBillingDate = "Próxima data de faturação" +overageCost = "Custo de excedente atual: {{amount}} ({{credits}} créditos)" + +[settings.planBilling.credits] +estimatedCost = "Custo estimado: {{amount}}" +freeTierInfo = "O plano Free inclui {{freeCredits}} créditos por mês. Atualize para Team para {{teamCredits}} créditos/mês e faturação por excedente pagar-consoante-o-uso." +included = "{{count}} créditos/mês (incluídos)" +noOverage = "Sem encargos por excedente este mês. Está a usar os seus {{count}} créditos incluídos." +overage = "+ {{count}} excedente" +overageInfo = "Os créditos excedentes são faturados a {{price}} por crédito. Só pagará o que utilizar para além da sua franquia mensal." +title = "Utilização de Créditos" + +[settings.planBilling.errors] +fetchFailed = "Não foi possível obter os dados de faturação" +retry = "Tentar novamente" + +[settings.planBilling.status] +active = "Ativo" +canceled = "Cancelado" +pastDue = "Em atraso" +trial = "Avaliação" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Funcionalidades e suporte empresariais personalizados" +free = "Free" +freeDescription = "50 créditos por mês" +team = "Team" +teamBadge = "Team" +teamDescription = "500 créditos/mês incluídos, faturação automática por excedente para um serviço ininterrupto" +teamTooltipCredits = "O plano Team inclui {{credits}} créditos/mês." +teamTooltipFineprint = "Pague apenas o que usar para além dos créditos incluídos." +teamTooltipOverage = "A faturação automática por excedente a {{price}}/crédito garante um serviço ininterrupto." + +[settings.planBilling.team] +managedByTeam = "Gerido pela equipa" +memberCount = "{{count}} membros da equipa" + +[settings.planBilling.trial] +daysRemaining = "Faltam {{days}} dias" +daysRemainingFull = "O seu período de avaliação termina em {{days}} dias" +endDate = "Expira: {{date}}" +endsOn = "Fim do período de avaliação" +title = "Avaliação Gratuita Ativa" + +[settings.planBilling.upgrade] +cta = "Atualizar para Team" +featureApi = "Acesso à API para automação" +featureCredits = "{{teamCredits}} créditos por mês (vs {{freeCredits}} no Free)" +featureMembers = "Membros de equipa ilimitados" +featureSupport = "Suporte prioritário" +featureThroughput = "Maior débito de processamento" +opensInBrowser = "Abre no navegador para concluir a atualização" +subtitle = "Atualize para Team para:" +title = "Atualize o Seu Plano" + [settings.developer] apiKeys = "API Keys" title = "Programador" @@ -5689,6 +5965,9 @@ people = "Pessoas" teams = "Equipas" title = "Espaço de trabalho" +[settings.team] +title = "Equipa" + [setup] description = "Comece por escolher como pretende usar o Stirling PDF" welcome = "Bem-vindo ao Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "Divisão automática com folhas separadoras" name = "Separador de páginas" tooltip = "Use folhas separadoras com código QR entre documentos ao digitalizar" +[split.methods.byPoster] +name = "Blocos Imprimíveis" +desc = "Divida páginas grandes em tamanhos imprimíveis" +tooltip = "Divide páginas sobredimensionadas em blocos menores adequados para impressão em papel padrão (A4, Letter, etc.)" + [split.methods.byPages] desc = "Extrair páginas específicas (1,3,5-10)" name = "Números de página" @@ -6029,6 +6313,7 @@ tooltip = "Especifique o tamanho máximo do ficheiro (p.ex. 10MB, 500KB)" [split.methods.prefix] splitAt = "Dividir em" splitBy = "Dividir por" +splitInto = "Dividir em" [split.methodSelection.tooltip] bullet1 = "Clique numa carta de método para a selecionar" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Selecione primeiro um método de divisão" chooseMethod = "Escolher método" settings = "Definições" +[split.poster] +rightToLeft = "Dividir da direita para a esquerda" + +[split.poster.pageSize] +label = "Tamanho de Página de Destino" +description = "Tamanho das páginas de saída para impressão" + +[split.poster.xFactor] +label = "Divisões Horizontais" +description = "Número de colunas em que dividir cada página" + +[split.poster.yFactor] +label = "Divisões Verticais" +description = "Número de linhas em que dividir cada página" + [split.tooltip.byChapters] bullet1 = "Nível de marcador: nível em que dividir (1=topo)" bullet2 = "Incluir metadados: preservar propriedades do documento" @@ -6085,6 +6385,14 @@ bullet5 = "Ative o modo duplex se digitalizar ambos os lados das folhas separado text = "Divida automaticamente documentos digitalizados usando folhas separadoras físicas com QR codes. Perfeito para processar vários documentos digitalizados juntos." title = "Dividir por separador de páginas" +[split.tooltip.byPoster] +bullet1 = "Tamanho de Página de Destino: Escolha o tamanho do papel de saída (A4, Letter, etc.)" +bullet2 = "Divisões Horizontais/Verticais: Tamanho da grelha para divisão" +bullet3 = "Direita-para-Esquerda: Inverte a ordem das colunas para layouts RTL" +bullet4 = "Imprima e junte as peças para criar o seu cartaz" +text = "Divida páginas grandes de PDF em blocos menores imprimíveis adequados a tamanhos de papel padrão. Perfeito para criar cartazes a partir de páginas sobredimensionadas." +title = "Dividir para Impressão de Cartaz" + [split.tooltip.byPages] bullet1 = "Pontos de divisão únicos: 3,7 (divide após as páginas 3 e 7)" bullet2 = "Pontos de divisão por intervalo: 3-8 (divide antes da página 3 e após a página 8)" @@ -6364,9 +6672,13 @@ tags = "captura-web,guardar-página,web-para-doc,arquivo" title = "URL Para PDF" [usage] +aboutUsageAnalytics = "Sobre a Análise de Utilização" +configureSettings = "Configurar Definições de Análise" error = "Erro ao carregar estatísticas de utilização" noData = "Sem dados disponíveis" noDataMessage = "De momento não existem estatísticas de utilização disponíveis." +usageAnalyticsExplanation = "As análises de utilização acompanham pedidos a endpoints e padrões de uso das ferramentas. Combinadas com o dashboard de Registo de Auditoria, obtém visibilidade completa da atividade do sistema, desempenho e eventos de segurança." +viewAuditLogs = "Ver Registos de Auditoria" [usage.chart] title = "Gráfico de utilização de endpoints" @@ -6947,3 +7259,278 @@ cancel = "Cancelar" confirm = "Extrair" message = "Este ZIP contém {{count}} ficheiros. Extrair mesmo assim?" title = "Ficheiro ZIP grande" + +[cloudBadge] +tooltip = "Esta operação irá usar os seus créditos cloud" + +[team] +cancelInviteError = "Falha ao cancelar convite" +confirmCancelInvite = "Tem a certeza de que pretende cancelar este convite?" +confirmLeave = "Tem a certeza de que pretende sair desta equipa?" +confirmLeaveLeader = "Como líder de equipa, ao sair será removido da equipa. Tem a certeza?" +confirmRemove = "Tem a certeza de que pretende remover este membro?" +editName = "Editar nome da equipa" +inviteCancelled = "Convite cancelado" +inviteError = "Falha ao enviar convite" +inviteSent = "Convite enviado com sucesso" +leader = "Líder" +leaveButton = "Sair da Equipa" +leaveError = "Falha ao sair da equipa" +leaveSuccess = "Saiu da equipa com sucesso" +loading = "A carregar informações da equipa..." +memberCount = "{{count}} membros" +memberRemoved = "Membro removido com sucesso" +namePlaceholder = "Introduza o nome da equipa" +personal = "Pessoal" +removeError = "Falha ao remover membro" +renameError = "Falha ao renomear equipa" +renameSuccess = "Equipa renomeada com sucesso" + +[team.invitationBanner] +message = "convidou-o a juntar-se" +acceptButton = "Aceitar" +rejectButton = "Recusar" + +[team.features] +badge = "Funcionalidades de Equipa" +subtitle = "Colabore com a sua equipa" +title = "Colaboração em Equipa" +viewPlans = "Ver Planos" + +[team.features.billing] +description = "Gerir faturação e subscrições" +title = "Gestão de Faturação" + +[team.features.credits] +description = "Reserva de créditos partilhada por todos os membros" +title = "Créditos Partilhados" + +[team.features.dashboard] +description = "Ver atividade e utilização da equipa" +title = "Dashboard da Equipa" + +[team.features.invite] +description = "Adicionar membros à sua equipa" +title = "Convidar Membros" + +[team.invite] +cancelLabel = "Cancelar" +invalidEmail = "Endereço de email inválido" +placeholder = "Introduza o endereço de email" +sendButton = "Enviar Convite" +title = "Convidar Membro da Equipa" + +[team.members] +emailColumn = "Email" +empty = "Ainda não há membros da equipa" +nameColumn = "Nome" +pending = "Pendente" +remove = "Remover" +roleColumn = "Função" +title = "Membros da Equipa" + +[team.upgrade] +button = "Atualizar para Team" +description = "Desbloqueie funcionalidades de colaboração de equipa" +title = "Atualizar para o Plano Team" + +[provider.oauth2.google] +scope = "Autenticação de início de sessão" + +[provider.oauth2.google.clientId] +label = "ID do Cliente" +description = "O ID de cliente OAuth2 da Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Segredo do Cliente" +description = "O segredo de cliente OAuth2 da Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Scopes" +description = "Scopes OAuth2 separados por vírgulas" + +[provider.oauth2.google.useAsUsername] +label = "Usar como Nome de Utilizador" +description = "Campo a usar como nome de utilizador (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Autenticação de início de sessão" + +[provider.oauth2.github.clientId] +label = "ID do Cliente" +description = "O ID de cliente OAuth2 das Definições de Programador do GitHub" + +[provider.oauth2.github.clientSecret] +label = "Segredo do Cliente" +description = "O segredo de cliente OAuth2 das Definições de Programador do GitHub" + +[provider.oauth2.github.scopes] +label = "Scopes" +description = "Scopes OAuth2 separados por vírgulas" + +[provider.oauth2.github.useAsUsername] +label = "Usar como Nome de Utilizador" +description = "Campo a usar como nome de utilizador (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Issuer URL" +description = "URL do endpoint OpenID Connect Discovery do realm do Keycloak" + +[provider.oauth2.keycloak.clientId] +label = "ID do Cliente" +description = "O ID de cliente OAuth2 do Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Segredo do Cliente" +description = "O segredo de cliente OAuth2 do Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "Scopes" +description = "Scopes OAuth2 separados por vírgulas" + +[provider.oauth2.keycloak.useAsUsername] +label = "Usar como Nome de Utilizador" +description = "Campo a usar como nome de utilizador (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "OAuth2 Genérico" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Ativar OAuth2 Genérico" +description = "Ativar autenticação usando um fornecedor OAuth2 personalizado" + +[provider.oauth2.generic.provider] +label = "Nome do Fornecedor" +description = "O nome do seu fornecedor OAuth2 (p. ex., Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "Issuer URL" +description = "Fornecedor que suporta OpenID Connect Discovery (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "ID do Cliente" +description = "O ID de cliente OAuth2 do seu fornecedor" + +[provider.oauth2.generic.clientSecret] +label = "Segredo do Cliente" +description = "O segredo de cliente OAuth2 do seu fornecedor" + +[provider.oauth2.generic.scopes] +label = "Scopes" +description = "Scopes OAuth2 separados por vírgulas" + +[provider.oauth2.generic.useAsUsername] +label = "Usar como Nome de Utilizador" +description = "Campo a usar como nome de utilizador" + +[provider.oauth2.generic.autoCreateUser] +label = "Criar Utilizadores Automaticamente" +description = "Criar automaticamente contas de utilizador no primeiro login OAuth2" + +[provider.oauth2.generic.blockRegistration] +label = "Bloquear Registo" +description = "Impedir novo registo de utilizadores via OAuth2" + +[provider.smtp] +name = "Correio SMTP" +scope = "Notificações por Email" + +[provider.smtp.enabled] +label = "Ativar Correio" +description = "Ativar notificações por email e funcionalidade SMTP" + +[provider.smtp.host] +label = "Servidor SMTP" +description = "O nome do host ou endereço IP do seu servidor SMTP" + +[provider.smtp.port] +label = "Porta SMTP" +description = "O número da porta para ligação SMTP (tipicamente 25, 465 ou 587)" + +[provider.smtp.username] +label = "Nome de Utilizador SMTP" +description = "Nome de utilizador para autenticação SMTP" + +[provider.smtp.password] +label = "Palavra-passe SMTP" +description = "Palavra-passe para autenticação SMTP" + +[provider.smtp.from] +label = "Endereço do Remetente" +description = "O endereço de email a usar como remetente" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "Ativar SAML2" +description = "Ativar autenticação SAML2 (apenas Enterprise)" + +[provider.saml2.provider] +label = "Nome do Fornecedor" +description = "O nome do seu fornecedor SAML2" + +[provider.saml2.registrationId] +label = "ID de Registo" +description = "O nome da sua aplicação Service Provider (SP)" + +[provider.saml2.idpMetadataUri] +label = "URI de Metadados do IDP" +description = "O URI dos metadados do seu fornecedor" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login URL" +description = "O URL para iniciar o SSO" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout URL" +description = "O URL para iniciar o SLO" + +[provider.saml2.idpIssuer] +label = "Emissor do IDP" +description = "O ID do seu fornecedor" + +[provider.saml2.idpCert] +label = "Certificado do IDP" +description = "O caminho do certificado (p. ex., classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Chave Privada" +description = "O caminho da sua chave privada" + +[provider.saml2.spCert] +label = "Certificado do SP" +description = "O caminho do seu certificado de assinatura" + +[provider.saml2.autoCreateUser] +label = "Criar Utilizadores Automaticamente" +description = "Criar automaticamente contas de utilizador no primeiro login SAML2" + +[provider.saml2.blockRegistration] +label = "Bloquear Registo" +description = "Impedir novo registo de utilizadores via SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "Importação de Ficheiros" + +[provider.googledrive.enabled] +label = "Ativar Seletor de Ficheiros do Google Drive" +description = "Permitir que os utilizadores importem ficheiros diretamente do Google Drive" + +[provider.googledrive.clientId] +label = "ID do Cliente" +description = "ID de Cliente Google OAuth 2.0 da Google Cloud Console" + +[provider.googledrive.apiKey] +label = "Chave de API" +description = "Chave de API da Google para a Google Picker API da Google Cloud Console" + +[provider.googledrive.appId] +label = "ID da App" +description = "ID da App do Google Drive da Google Cloud Console" diff --git a/frontend/public/locales/ro-RO/translation.toml b/frontend/public/locales/ro-RO/translation.toml index a6374a4ef..e54d280f6 100644 --- a/frontend/public/locales/ro-RO/translation.toml +++ b/frontend/public/locales/ro-RO/translation.toml @@ -96,6 +96,8 @@ pin = "Fixare fișier (rămâne activ după rularea instrumentului)" poweredBy = "Propulsat de" pro = "Pro" processTimeWarning = "Avertisment: Acest proces poate dura până la un minut în funcție de dimensiunea fișierului" +processingComplete = "Fișierul dvs. este gata." +processingCompleteMultiple = "{{count}} fișiere sunt gata." property = "Proprietate" quickPosition = "Poziție rapidă" red = "Roșu" @@ -105,6 +107,7 @@ save = "Salvează" saveToBrowser = "Salvează în Browser" saveUnavailable = "Salvarea nu este disponibilă pentru acest element" seeDockerHub = "Vezi Docker Hub" +editSecret = "Editați această valoare" selectFillter = "-- Selectează --" size = "Dimensiune" sponsor = "Sponsor" @@ -651,6 +654,7 @@ description = "Configurați furnizori externi de autentificare precum OAuth2 și disconnect = "Deconectează" disconnected = "Furnizor deconectat cu succes" disconnectError = "Nu s-a putut deconecta furnizorul" +documentation = "Vizualizați documentația" imageResolutionFull = "Completă (Dimensiune originală)" imageResolutionReduced = "Redusă (Max 1200px)" linkedServices = "Servicii conectate" @@ -964,6 +968,18 @@ label = "Limba implicită" description = "Dimensiunea maximă a fișierelor încărcate (de ex., 100MB, 1GB)" label = "Limită încărcare fișiere" +[admin.settings.general.hideDisabledTools] +description = "Ascundeți instrumentele dezactivate din interfață" +label = "Ascunde instrumentele dezactivate" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Ascundeți butonul Google Drive când nu este activat" +label = "Ascunde Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Ascundeți butonul de scanare QR pe mobil când nu este activat" +label = "Ascunde scanerul mobil" + [admin.settings.general.frontendUrl] description = "URL de bază pentru frontend (ex.: https://pdf.example.com). Folosit pentru linkurile de invitație prin e-mail și încărcările cu cod QR de pe mobil. Lăsați gol pentru a utiliza URL-ul backend." label = "URL frontend" @@ -1148,6 +1164,8 @@ title = "Securitate" [admin.settings.security.audit] label = "Jurnalizare audit" +showDetails = "Afișați detaliile nivelului de audit" +hideDetails = "Ascundeți detaliile nivelului de audit" [admin.settings.security.audit.enabled] description = "Urmărește acțiunile utilizatorilor și evenimentele de sistem pentru conformitate și monitorizarea securității" @@ -1157,10 +1175,32 @@ label = "Activează jurnalizarea de audit" description = "0=OFF, 1=BASIC, 2=STANDARD, 3=VERBOSE" label = "Nivel audit" +[admin.settings.security.audit.levelDetails] +off = "Fără jurnalizare de audit (cu excepția evenimentelor critice de securitate)" +basic = "Operațiuni pe fișiere PDF (compresie, împărțire, îmbinare etc.) și modificări de setări. Capturează: starea operației (reușită/eșec), parametrii metodei, timpii. Volum minim de jurnal." +standard = "Evenimente BASIC plus: autentificare/deconectare utilizator, modificări de cont, solicitări GET generale. Exclude apelurile de interogare continuă (/auth/me, /app-config, /health etc.) pentru a reduce zgomotul în jurnale. Ideal pentru majoritatea implementărilor." +verbose = "Evenimente STANDARD plus: apeluri de interogare continuă, toate solicitările GET, timpi detaliați. Avertisment: volum mare de jurnale și impact asupra performanței." + [admin.settings.security.audit.retentionDays] description = "Numărul de zile de păstrare a jurnalelor de audit" label = "Păstrare audit (zile)" +[admin.settings.security.audit.advancedOptions] +title = "Opțiuni avansate" +description = "Următoarele opțiuni cresc timpul de procesare și utilizarea memoriei. Activați-le doar dacă este cu adevărat necesar." + +[admin.settings.security.audit.captureFileHash] +description = "Extrage amprenta SHA-256 a fișierelor PDF încărcate pentru verificarea integrității. Independent de nivelul de audit." +label = "Capturați amprenta fișierului (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Extrage câmpul autor din documentele PDF în timpul procesării. Necesită analiză PDF, crește latența. Independent de nivelul de audit." +label = "Capturați metadatele autorului PDF" + +[admin.settings.security.audit.captureOperationResults] +description = "Capturează valorile returnate de metode. Nu este recomandat: crește semnificativ volumul jurnalelor și utilizarea discului." +label = "Capturați rezultatele operației" + [admin.settings.security.csrfDisabled] description = "Dezactivează protecția Cross-Site Request Forgery (nerecomandat)" label = "Dezactivează protecția CSRF" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "Configurați jurnalizarea de audit" +configureAuditMessage = "Ajustați nivelul de jurnalizare de audit, perioada de păstrare și alte setări în secțiunea Securitate și Autentificare." disabled = "Jurnalizarea de audit este dezactivată" disabledMessage = "Activați jurnalizarea de audit în configurația aplicației pentru a urmări evenimentele sistemului." enterpriseRequired = "Este necesară licența Enterprise" enterpriseRequiredMessage = "Sistemul de auditare a jurnalelor este o funcție Enterprise. Faceți upgrade la o licență Enterprise pentru a accesa jurnalele de audit și analizele." +goToSettings = "Mergeți la setările de audit" notAvailable = "Sistem de audit indisponibil" notAvailableMessage = "Sistemul de audit nu este configurat sau nu este disponibil." -[audit.charts] -byType = "Evenimente după tip" -byUser = "Evenimente după utilizator" -day = "Zi" -error = "Eroare la încărcarea graficelor" -month = "Lună" -overTime = "Evenimente în timp" -title = "Tablou de bord audit" -week = "Săptămână" - [audit.error] title = "Eroare la încărcarea sistemului de audit" -[audit.events] -actions = "Acțiuni" -clearFilters = "Șterge" -details = "Detalii" -endDate = "Data de sfârșit" -error = "Eroare la încărcarea evenimentelor" -eventDetails = "Detalii eveniment" -filterByType = "Filtrează după tip" -filterByUser = "Filtrează după utilizator" -ipAddress = "Adresă IP" -noEvents = "Nu s-au găsit evenimente" -startDate = "Data de început" -timestamp = "Marcaj temporal" -title = "Evenimente de audit" -type = "Tip" -user = "Utilizator" -viewDetails = "Vezi detalii" - [audit.export] clearFilters = "Șterge" description = "Exportă evenimentele de audit în format CSV sau JSON. Folosiți filtre pentru a limita datele exportate." endDate = "Data de sfârșit" error = "Exportul datelor a eșuat" exportButton = "Exportă datele" +fieldAuthor = "Autor (din PDF)" +fieldDate = "Data" +fieldDocumentName = "Numele documentului" +fieldFileHash = "Amprentă fișier (SHA-256)" +fieldIpAddress = "Adresă IP" +fieldOperationResults = "Rezultatele operației" +fieldOutcome = "Rezultat (Reușită/Eșec)" +fieldTool = "Instrument" +fieldUsername = "Nume utilizator" filterByType = "Filtrează după tip" filterByUser = "Filtrează după utilizator" filters = "Filtre (opțional)" format = "Format export" +selectFields = "Selectați câmpurile de inclus" startDate = "Data de început" title = "Exportă datele de audit" +verboseRequired = "Necesită nivelul de audit VERBOSE" [audit.systemStatus] +autoRefresh = "Reîmprospătare automată" +autoRefreshLabel = "Reîmprospătare automată la fiecare 30 s" +captureBySettings = "Activați din setări" +capturedFields = "Câmpuri capturate" +date = "Data" days = "zile" disabled = "Dezactivată" +documentName = "Numele documentului" enabled = "Activată" +fileHash = "Amprentă fișier" level = "Nivel audit" +pdfAuthor = "Autor PDF" retention = "Perioadă de păstrare" status = "Jurnalizare de audit" title = "Stare sistem" +tool = "Instrument" totalEvents = "Total evenimente" +username = "Nume utilizator" +verboseOnly = "Doar VERBOSE" + +[audit.stats] +activeUsers = "Utilizatori activi" +attention = "Necesită atenție" +avgLatency = "Latență medie" +error = "Eroare la încărcarea statisticilor" +errorLoadingStats = "Nu s-au putut încărca statisticile" +excellent = "Excelent" +good = "Bun" +noData = "N/A" +successRate = "Rată de reușită" +title = "Rezumat" +totalEvents = "Evenimente totale" +vsLastPeriod = "față de perioada anterioară" + +[audit.charts] +byTool = "Cele mai folosite instrumente" +byType = "Evenimente după tip" +byUser = "Evenimente după utilizator" +day = "Zi" +error = "Eroare la încărcarea graficelor" +hourlyActivity = "Activitate pe oră" +month = "Lună" +noData = "Nu există date pentru această perioadă" +overTime = "Evenimente în timp" +title = "Tablou de bord audit" +week = "Săptămână" + +[audit.events] +actions = "Acțiuni" +author = "Autor" +clearFilters = "Șterge" +details = "Detalii" +documentName = "Document" +endDate = "Data de sfârșit" +error = "Eroare la încărcarea evenimentelor" +eventDetails = "Detalii eveniment" +failure = "Eșec" +fileHash = "Amprentă fișier" +filterByType = "Filtrează după tip" +filterByUser = "Filtrează după utilizator" +ipAddress = "Adresă IP" +noEvents = "Nu s-au găsit evenimente" +outcome = "Stare" +sortAsc = "Sortare ascendentă" +sortDesc = "Sortare descendentă" +startDate = "Data de început" +success = "Reușită" +timestamp = "Marcaj temporal" +title = "Evenimente de audit" +type = "Tip" +user = "Utilizator" +viewDetails = "Vezi detalii" + +[audit.filters] +allOutcomes = "Toate" +failureOnly = "Doar eșecuri" +last7Days = "Ultimele 7 zile" +last30Days = "Ultimele 30 de zile" +outcomeFilter = "Rezultat" +quickPresets = "Filtre rapide" +successOnly = "Doar reușite" +thisMonth = "Luna aceasta" +today = "Astăzi" [audit.tabs] +clearData = "Ștergeți datele" dashboard = "Tablou de bord" events = "Evenimente de audit" export = "Export" +[audit.clearData] +cancel = "Anulați" +codeDoesNotMatch = "Codul nu se potrivește" +codePlaceholder = "Introduceți codul aici" +confirmationCode = "Cod de confirmare" +confirmationRequired = "Ștergeți toate datele de audit" +confirmMessage = "Aceasta va elimina definitiv toate jurnalele de audit. Introduceți mai jos codul de confirmare pentru a continua." +confirmTitle = "Confirmați că doriți să ștergeți" +deleteButton = "Ștergeți" +enterCode = "Cod de confirmare" +enterCodeBelow = "Introduceți codul exact așa cum este afișat mai sus (sensibil la majuscule/minuscule)" +initiateDelete = "Ștergeți toate datele" +irreversible = "IREVERSIBIL" +success = "Reușită" +successMessage = "Toate datele de audit au fost șterse cu succes" +warning1 = "Această acțiune nu poate fi anulată" +warning2 = "Ștergerea datelor de audit va elimina definitiv din baza de date toate jurnalele istorice de audit, inclusiv evenimentele de securitate, activitățile utilizatorilor și operațiunile pe fișiere." + [auth] accessDenied = "Acces refuzat" insufficientPermissions = "Nu aveți permisiunea de a efectua această acțiune." @@ -2254,9 +2374,11 @@ copy = "Copiați" done = "Gata" error = "Eroare" expand = "Extinde" +learnMore = "Aflați mai multe" lines = "linii" loading = "Se încarcă..." next = "Înainte" +operation = "această operație" preview = "Previzualizare" previous = "Înapoi" refresh = "Reîmprospătați" @@ -2920,6 +3042,7 @@ copyStack = "Copiază Urmărirea Stivei" discordSubmit = "Discord - Trimite o postare de Suport" dismissAllErrors = "Închideți toate erorile" encryptedPdfMustRemovePassword = "Acest PDF este criptat sau protejat cu parolă. Vă rugăm să îl deblocați înainte de a converti la PDF/A." +generic = "A apărut o eroare" github = "Deschide un tichet pe GitHub" githubSubmit = "GitHub - Deschide un tichet" incorrectPasswordProvided = "Parola PDF este incorectă sau lipsește." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Abonamentul tău a fost actualizat cu succes. Cheia de upgradeSuccess = "Plată reușită! Abonamentul a fost actualizat. Licența a fost actualizată pe serverul tău. Vei primi în curând un email de confirmare." upgradeTitle = "Treci la {{planName}}" yearly = "Anual" +checkoutOpened = "Checkout deschis în browser" +checkoutInstructions = "Finalizați achiziția în fereastra de browser care tocmai s-a deschis. După ce plata este finalizată, reveniți aici și faceți clic pe butonul de mai jos pentru a vă actualiza informațiile de facturare." +refreshBilling = "Am finalizat plata - Reîmprospătați facturarea" +closeLater = "Voi face asta mai târziu" [payment.emailStage] continue = "Continuă" @@ -4679,6 +4806,13 @@ prompt = "Alege pagina pentru extragerea tabelului" submit = "Extrage" title = "PDF în CSV" +[PDFToXLSX] +header = "PDF în Excel" +prompt = "Alegeți paginile din care să extrageți tabele" +submit = "Convertiți" +title = "PDF în Excel (XLSX)" +tags = "foaie de calcul,excel,xlsx,tabel,extrage,convertire" + [PDFToHTML] credit = "Acest serviciu utilizează pdftohtml pentru conversia fișierului." header = "PDF către HTML" @@ -4835,6 +4969,7 @@ customPricing = "Personalizat" featureComparison = "Comparație funcții" from = "De la" hideComparison = "Ascunde comparația funcțiilor" +included = "Inclus" includedInCurrent = "Inclus în planul tău" licensedSeats = "Licențiate: {{count}} locuri" manage = "Gestionează" @@ -4852,9 +4987,11 @@ title = "Plan activ" [plan.availablePlans] subtitle = "Alegeți planul care se potrivește nevoilor dvs." +loadError = "Nu se pot încărca prețurile planurilor. Se folosesc valorile implicite." title = "Planuri disponibile" [plan.enterprise] +siteLicense = "Licență de site" highlight1 = "Preț personalizat" highlight2 = "Asistență dedicată" highlight3 = "Cele mai noi funcții" @@ -4928,6 +5065,81 @@ keyDescription = "Lipiți cheia de licență din e-mail" success = "Licență activată!" successMessage = "Licența a fost activată cu succes. Puteți închide această fereastră." +[plan.team] +name = "Echipă" +siteLicense = "Licență de site" + +[credits] +enableOverageBilling = "Activați facturarea pentru depășiri" +maybeLater = "Poate mai târziu" +upgrade = "Faceți upgrade" + +[credits.modal] +advancedMonitoring = "Monitorizare avansată" +allInOneWorkspace = "Spațiu de lucru PDF all-in-one (vizualizator, instrumente și agent)" +apiSandbox = "API sandbox" +contactSales = "Contactați echipa de vânzări" +creditsRemaining = "{{current}} din {{total}} rămase" +creditsThisMonth = "Credite lunare" +current = "Plan curent" +customPricing = "Personalizat" +customSmartFolders = "Foldere inteligente personalizate" +dedicatedSupportSlas = "Asistență dedicată și SLA-uri" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Tot ce este în Credits, plus:" +everythingInFree = "Tot ce este în Free, plus:" +fasterThroughput = "Debit de procesare de 10x mai rapid" +forRegularWork = "Pentru lucru obișnuit cu PDF:" +freeTier = "Plan gratuit" +fullyPrivateFiles = "Fișiere complet private" +largeFileProcessing = "Procesare fișiere mari" +managedMemberMessage = "Aveți acces nelimitat la credite prin echipa dvs. Dacă aveți nevoie de asistență, contactați liderul echipei." +managedMemberTitle = "Credite nelimitate" +meteringBillingNote = "Creditele de depășire sunt facturate lunar împreună cu abonamentul Team. Urmăriți-vă utilizarea oricând din setările contului." +meteringExplanation = "Planul dvs. Team include {{credits}} credite pe lună. Când rămâneți fără, facturarea pentru depășiri vă oferă automat credite suplimentare, astfel încât să nu fie nevoie să vă opriți din lucru." +meteringIncluded = "{{credits}} credite/lună incluse cu Team" +meteringNoCommitment = "Fără angajament, puteți anula oricând" +meteringNeverRunOut = "Nu rămâneți niciodată fără credite" +meteringPayAsYouGo = "Plătiți doar cât folosiți" +meteringPrice = "Credite suplimentare la {{price}}/credit" +meteringTitle = "Facturare pentru depășiri Pay-What-You-Use" +monthlyCredits = "credite lunare" +orgWideAccess = "Control de acces la nivel de organizație" +overage = "depășire" +perMonth = "/lună" +popular = "Popular" +premiumAiModels = "Modele AI Premium" +prioritySupport = "Asistență prioritară" +privateDocCloud = "Cloud de documente privat" +ragFineTuning = "RAG + fine-tuning" +secureApiAccess = "Acces API securizat" +selfHostLink = "Consultați documentația și planurile" +selfHostPrompt = "Doriți să găzduiți local?" +standardThroughput = "Debit standard" +subtitle = "Faceți upgrade la Team pentru de 10x mai multe credite și procesare mai rapidă." +subtitlePro = "Activați facturarea automată pentru depășiri ca să nu rămâneți fără credite." +teamLeaderOnly = "Doar liderii de echipă pot activa facturarea pentru depășiri" +teamSubscription = "Team" +titleExhausted = "Ați folosit creditele gratuite" +titleExhaustedPro = "Ați rămas fără credite" +unlimitedApiAccess = "Acces API nelimitat" +unlimitedMonthlyCredits = "Licență de site" +unlimitedSeats = "Locuri nelimitate" + +[credits.modal.features] +everythingInCredits = "Tot ce este în Credits, plus:" +everythingInFree = "Tot ce este în Free, plus:" +forRegularWork = "Pentru lucru obișnuit cu PDF:" + +[credits.insufficient] +brief = "Credite insuficiente. Aveți nevoie de {{required}} credite, dar aveți {{current}}." +freeTier = "Faceți upgrade la Team pentru de 10x mai multe credite și facturare nelimitată pentru depășiri." +managedMember = "Contactați liderul echipei pentru asistență." +message = "Nu aveți suficiente credite pentru a rula {{tool}}. În prezent aveți {{current}} credite." +messageWithAmount = "Aveți nevoie de {{required}} credite pentru a rula {{tool}}, dar aveți doar {{current}}." +teamMember = "Activați facturarea pentru depășiri ca să nu rămâneți fără credite." +title = "Credite insuficiente" + [printFile] header = "Tipărește Fișier la Imprimantă" submit = "Tipărește" @@ -5565,6 +5777,70 @@ user = "Conectat ca" saas = "Stirling Cloud" selfhosted = "Găzduit local" +[settings.planBilling] +currentPlan = "Plan curent" +loading = "Se încarcă informațiile de facturare..." +notAvailable = "Planul și facturarea sunt disponibile doar când sunteți conectat la Stirling Cloud (mod SaaS)." +title = "Plan și facturare" + +[settings.planBilling.billing] +manageBilling = "Gestionați facturarea" +nextBillingDate = "Următoarea dată de facturare" +overageCost = "Costul curent al depășirilor: {{amount}} ({{credits}} credite)" + +[settings.planBilling.credits] +estimatedCost = "Cost estimat: {{amount}}" +freeTierInfo = "Planul gratuit include {{freeCredits}} credite pe lună. Faceți upgrade la Team pentru {{teamCredits}} credite/lună și facturare cu plată pe măsură pentru depășiri." +included = "{{count}} credite/lună (incluse)" +noOverage = "Fără costuri de depășire luna aceasta. Folosiți creditele incluse: {{count}}." +overage = "+ {{count}} depășiri" +overageInfo = "Creditele de depășire sunt facturate la {{price}} pe credit. Plătiți doar ce folosiți peste alocarea lunară." +title = "Utilizare credite" + +[settings.planBilling.errors] +fetchFailed = "Nu se pot prelua datele de facturare" +retry = "Reîncercați" + +[settings.planBilling.status] +active = "Activ" +canceled = "Anulat" +pastDue = "Întârziat" +trial = "Trial" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Funcții și asistență enterprise personalizate" +free = "Gratuit" +freeDescription = "50 de credite pe lună" +team = "Team" +teamBadge = "Team" +teamDescription = "500 de credite/lună incluse, facturare automată pentru depășiri pentru un serviciu neîntrerupt" +teamTooltipCredits = "Planul Team include {{credits}} credite/lună." +teamTooltipFineprint = "Plătiți doar ce folosiți peste creditele incluse." +teamTooltipOverage = "Facturarea automată pentru depășiri la {{price}}/credit asigură un serviciu neîntrerupt." + +[settings.planBilling.team] +managedByTeam = "Gestionat de echipă" +memberCount = "{{count}} membri ai echipei" + +[settings.planBilling.trial] +daysRemaining = "{{days}} zile rămase" +daysRemainingFull = "Perioada de trial se încheie în {{days}} zile" +endDate = "Expiră: {{date}}" +endsOn = "Se încheie perioada de trial" +title = "Perioadă de trial activă" + +[settings.planBilling.upgrade] +cta = "Faceți upgrade la Team" +featureApi = "Acces API pentru automatizare" +featureCredits = "{{teamCredits}} credite pe lună (față de {{freeCredits}} pe planul Gratuit)" +featureMembers = "Membri de echipă nelimitați" +featureSupport = "Asistență prioritară" +featureThroughput = "Debit de procesare mai rapid" +opensInBrowser = "Se deschide în browser pentru a finaliza upgrade-ul" +subtitle = "Faceți upgrade la Team pentru:" +title = "Faceți upgrade planului dvs." + [settings.developer] apiKeys = "Chei API" title = "Dezvoltator" @@ -5689,6 +5965,9 @@ people = "Persoane" teams = "Echipe" title = "Spațiu de lucru" +[settings.team] +title = "Echipă" + [setup] description = "Începe alegând cum vrei să folosești Stirling PDF" welcome = "Bun venit la Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "Împărțire automată cu foi separatoare" name = "Foaie separatoare" tooltip = "Folosiți foi separatoare cu cod QR între documente la scanare" +[split.methods.byPoster] +name = "Fragmente imprimabile" +desc = "Împărțiți paginile mari în dimensiuni imprimabile" +tooltip = "Împărțiți paginile supradimensionate în fragmente mai mici, potrivite pentru imprimare pe hârtie standard (A4, Letter etc.)" + [split.methods.byPages] desc = "Extrageți pagini specifice (1,3,5-10)" name = "Numere de pagină" @@ -6029,6 +6313,7 @@ tooltip = "Specificați dimensiunea maximă a fișierului (ex. 10MB, 500KB)" [split.methods.prefix] splitAt = "Împarte la" splitBy = "Împarte după" +splitInto = "Împărțiți în" [split.methodSelection.tooltip] bullet1 = "Faceți clic pe o cartelă de metodă pentru a o selecta" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Vă rugăm să selectați mai întâi o metodă de împăr chooseMethod = "Alegeți metoda" settings = "Setări" +[split.poster] +rightToLeft = "Împărțiți de la dreapta la stânga" + +[split.poster.pageSize] +label = "Dimensiunea paginii țintă" +description = "Dimensiunea paginilor de ieșire pentru imprimare" + +[split.poster.xFactor] +label = "Diviziuni orizontale" +description = "Numărul de coloane în care se împarte fiecare pagină" + +[split.poster.yFactor] +label = "Diviziuni verticale" +description = "Numărul de rânduri în care se împarte fiecare pagină" + [split.tooltip.byChapters] bullet1 = "Nivel semn de carte: Nivelul la care se împarte (1=top level)" bullet2 = "Include metadate: Păstrează proprietățile documentului" @@ -6085,6 +6385,14 @@ bullet5 = "Activați modul duplex dacă scanați ambele fețe ale foilor separat text = "Împărțiți automat documentele scanate folosind foi separatoare fizice cu coduri QR. Perfect pentru procesarea mai multor documente scanate împreună." title = "Împarte cu foaie separatoare" +[split.tooltip.byPoster] +bullet1 = "Dimensiunea paginii țintă: Alegeți dimensiunea hârtiei de ieșire (A4, Letter etc.)" +bullet2 = "Diviziuni orizontale/verticale: Dimensiunea grilei pentru împărțire" +bullet3 = "De la dreapta la stânga: Inversează ordinea coloanelor pentru layout-uri RTL" +bullet4 = "Imprimați și asamblați bucățile pentru a crea posterul" +text = "Împărțiți paginile PDF mari în fragmente mai mici, imprimabile, potrivite pentru dimensiuni standard de hârtie. Perfect pentru a crea postere din pagini supradimensionate." +title = "Împărțire pentru imprimare poster" + [split.tooltip.byPages] bullet1 = "Puncte de împărțire simple: 3,7 (împarte după paginile 3 și 7)" bullet2 = "Puncte de împărțire interval: 3-8 (împarte înainte de pagina 3 și după pagina 8)" @@ -6364,9 +6672,13 @@ tags = "captură-web,salvează-pagina,web-în-document,arhivează" title = "URL în PDF" [usage] +aboutUsageAnalytics = "Despre analiza utilizării" +configureSettings = "Configurați setările de analiză" error = "Eroare la încărcarea statisticilor de utilizare" noData = "Nu sunt date disponibile" noDataMessage = "În prezent nu sunt disponibile statistici de utilizare." +usageAnalyticsExplanation = "Analiza utilizării urmărește solicitările către endpoint-uri și modelele de utilizare ale instrumentelor. Împreună cu tabloul de bord de jurnalizare de audit, obțineți vizibilitate completă asupra activității sistemului, performanței și evenimentelor de securitate." +viewAuditLogs = "Vizualizați jurnalele de audit" [usage.chart] title = "Grafic utilizare endpoint-uri" @@ -6947,3 +7259,278 @@ cancel = "Anulare" confirm = "Extrageți" message = "Acest ZIP conține {{count}} fișiere. Extrageți oricum?" title = "Fișier ZIP mare" + +[cloudBadge] +tooltip = "Această operație va folosi creditele din cloud" + +[team] +cancelInviteError = "Invitația nu a putut fi anulată" +confirmCancelInvite = "Sigur doriți să anulați această invitație?" +confirmLeave = "Sigur doriți să părăsiți această echipă?" +confirmLeaveLeader = "Ca lider de echipă, dacă părăsiți, veți fi eliminat din echipă. Sigur doriți să continuați?" +confirmRemove = "Sigur doriți să eliminați acest membru?" +editName = "Editați numele echipei" +inviteCancelled = "Invitație anulată" +inviteError = "Trimiterea invitației a eșuat" +inviteSent = "Invitația a fost trimisă cu succes" +leader = "Lider" +leaveButton = "Părăsiți echipa" +leaveError = "Nu s-a putut părăsi echipa" +leaveSuccess = "Ați părăsit cu succes echipa" +loading = "Se încarcă informațiile despre echipă..." +memberCount = "{{count}} membri" +memberRemoved = "Membrul a fost eliminat cu succes" +namePlaceholder = "Introduceți numele echipei" +personal = "Personal" +removeError = "Nu s-a putut elimina membrul" +renameError = "Redenumirea echipei a eșuat" +renameSuccess = "Echipa a fost redenumită cu succes" + +[team.invitationBanner] +message = "v-a invitat să vă alăturați" +acceptButton = "Acceptați" +rejectButton = "Refuzați" + +[team.features] +badge = "Funcții pentru echipe" +subtitle = "Colaborați cu echipa" +title = "Colaborare în echipă" +viewPlans = "Vizualizați planurile" + +[team.features.billing] +description = "Gestionați facturarea și abonamentele" +title = "Administrare facturare" + +[team.features.credits] +description = "Fond de credite partajat pentru toți membrii" +title = "Credite partajate" + +[team.features.dashboard] +description = "Vizualizați activitatea și utilizarea echipei" +title = "Tablou de bord al echipei" + +[team.features.invite] +description = "Adăugați membri în echipă" +title = "Invitați membri" + +[team.invite] +cancelLabel = "Anulați" +invalidEmail = "Adresă de email invalidă" +placeholder = "Introduceți adresa de email" +sendButton = "Trimiteți invitația" +title = "Invitați membru în echipă" + +[team.members] +emailColumn = "Email" +empty = "Încă nu există membri în echipă" +nameColumn = "Nume" +pending = "În așteptare" +remove = "Eliminați" +roleColumn = "Rol" +title = "Membrii echipei" + +[team.upgrade] +button = "Faceți upgrade la Team" +description = "Deblocați funcțiile de colaborare în echipă" +title = "Faceți upgrade la planul Team" + +[provider.oauth2.google] +scope = "Autentificare la conectare" + +[provider.oauth2.google.clientId] +label = "Client ID" +description = "Client ID OAuth2 din Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Client Secret" +description = "Client Secret OAuth2 din Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Scope-uri" +description = "Scope-uri OAuth2 separate prin virgulă" + +[provider.oauth2.google.useAsUsername] +label = "Folosiți ca nume de utilizator" +description = "Câmp de folosit ca nume de utilizator (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Autentificare la conectare" + +[provider.oauth2.github.clientId] +label = "Client ID" +description = "Client ID OAuth2 din GitHub Developer Settings" + +[provider.oauth2.github.clientSecret] +label = "Client Secret" +description = "Client Secret OAuth2 din GitHub Developer Settings" + +[provider.oauth2.github.scopes] +label = "Scope-uri" +description = "Scope-uri OAuth2 separate prin virgulă" + +[provider.oauth2.github.useAsUsername] +label = "Folosiți ca nume de utilizator" +description = "Câmp de folosit ca nume de utilizator (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Issuer URL" +description = "URL-ul endpoint-ului OpenID Connect Discovery al realm-ului Keycloak" + +[provider.oauth2.keycloak.clientId] +label = "Client ID" +description = "Client ID OAuth2 din Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Client Secret" +description = "Client Secret OAuth2 din Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "Scope-uri" +description = "Scope-uri OAuth2 separate prin virgulă" + +[provider.oauth2.keycloak.useAsUsername] +label = "Folosiți ca nume de utilizator" +description = "Câmp de folosit ca nume de utilizator (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "OAuth2 generic" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Activați OAuth2 generic" +description = "Activați autentificarea folosind un furnizor OAuth2 personalizat" + +[provider.oauth2.generic.provider] +label = "Nume furnizor" +description = "Numele furnizorului dvs. OAuth2 (de ex., Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "Issuer URL" +description = "Furnizor care suportă OpenID Connect Discovery (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "Client ID" +description = "Client ID OAuth2 de la furnizorul dvs." + +[provider.oauth2.generic.clientSecret] +label = "Client Secret" +description = "Client Secret OAuth2 de la furnizorul dvs." + +[provider.oauth2.generic.scopes] +label = "Scope-uri" +description = "Scope-uri OAuth2 separate prin virgulă" + +[provider.oauth2.generic.useAsUsername] +label = "Folosiți ca nume de utilizator" +description = "Câmp de folosit ca nume de utilizator" + +[provider.oauth2.generic.autoCreateUser] +label = "Creare automată de utilizatori" +description = "Creați automat conturi de utilizator la prima autentificare OAuth2" + +[provider.oauth2.generic.blockRegistration] +label = "Blocați înregistrarea" +description = "Împiedicați înregistrarea de noi utilizatori prin OAuth2" + +[provider.smtp] +name = "Mail SMTP" +scope = "Notificări prin email" + +[provider.smtp.enabled] +label = "Activați mailul" +description = "Activați notificările prin email și funcționalitatea SMTP" + +[provider.smtp.host] +label = "Gazdă SMTP" +description = "Numele gazdei sau adresa IP a serverului SMTP" + +[provider.smtp.port] +label = "Port SMTP" +description = "Numărul portului pentru conexiunea SMTP (de obicei 25, 465 sau 587)" + +[provider.smtp.username] +label = "Utilizator SMTP" +description = "Nume de utilizator pentru autentificarea SMTP" + +[provider.smtp.password] +label = "Parolă SMTP" +description = "Parolă pentru autentificarea SMTP" + +[provider.smtp.from] +label = "Adresă expeditor" +description = "Adresa de email folosită ca expeditor" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "Activați SAML2" +description = "Activați autentificarea SAML2 (doar pentru Enterprise)" + +[provider.saml2.provider] +label = "Nume furnizor" +description = "Numele furnizorului SAML2" + +[provider.saml2.registrationId] +label = "Registration ID" +description = "Numele aplicației dvs. Service Provider (SP)" + +[provider.saml2.idpMetadataUri] +label = "IDP Metadata URI" +description = "URI-ul pentru metadatele furnizorului" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login URL" +description = "URL-ul pentru inițierea SSO" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout URL" +description = "URL-ul pentru inițierea SLO" + +[provider.saml2.idpIssuer] +label = "IDP Issuer" +description = "ID-ul furnizorului dvs." + +[provider.saml2.idpCert] +label = "Certificat IDP" +description = "Calea certificatului (de ex., classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Cheie privată" +description = "Calea cheii private" + +[provider.saml2.spCert] +label = "Certificat SP" +description = "Calea certificatului de semnare" + +[provider.saml2.autoCreateUser] +label = "Creare automată de utilizatori" +description = "Creați automat conturi de utilizator la prima autentificare SAML2" + +[provider.saml2.blockRegistration] +label = "Blocați înregistrarea" +description = "Împiedicați înregistrarea de noi utilizatori prin SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "Import fișiere" + +[provider.googledrive.enabled] +label = "Activați selectorul de fișiere Google Drive" +description = "Permiteți utilizatorilor să importe fișiere direct din Google Drive" + +[provider.googledrive.clientId] +label = "Client ID" +description = "Client ID Google OAuth 2.0 din Google Cloud Console" + +[provider.googledrive.apiKey] +label = "Cheie API" +description = "Cheie Google API pentru Google Picker API din Google Cloud Console" + +[provider.googledrive.appId] +label = "App ID" +description = "App ID Google Drive din Google Cloud Console" diff --git a/frontend/public/locales/ru-RU/translation.toml b/frontend/public/locales/ru-RU/translation.toml index 189db24af..3cf1ca040 100644 --- a/frontend/public/locales/ru-RU/translation.toml +++ b/frontend/public/locales/ru-RU/translation.toml @@ -96,6 +96,8 @@ pin = "Закрепить файл (оставить активным после poweredBy = "Работает на" pro = "Pro" processTimeWarning = "Внимание: Данный процесс может занять до минуты в зависимости от размера файла" +processingComplete = "Ваш файл готов." +processingCompleteMultiple = "{{count}} файлов готовы." property = "Свойство" quickPosition = "Быстрое положение" red = "Красный" @@ -105,6 +107,7 @@ save = "Сохранить" saveToBrowser = "Сохранить в браузере" saveUnavailable = "Сохранение недоступно для этого элемента" seeDockerHub = "Посмотреть на Docker Hub" +editSecret = "Изменить это значение" selectFillter = "-- Выбрать --" size = "Размер" sponsor = "Спонсор" @@ -651,6 +654,7 @@ description = "Настройка внешних провайдеров ауте disconnect = "Отключить" disconnected = "Провайдер успешно отключен" disconnectError = "Не удалось отключить провайдера" +documentation = "Просмотреть документацию" imageResolutionFull = "Полное (оригинальный размер)" imageResolutionReduced = "Уменьшенное (макс. 1200 px)" linkedServices = "Подключенные сервисы" @@ -964,6 +968,18 @@ label = "Локаль по умолчанию" description = "Максимальный размер загружаемого файла (например, 100MB, 1GB)" label = "Лимит загрузки файлов" +[admin.settings.general.hideDisabledTools] +description = "Скрывать отключенные инструменты из интерфейса" +label = "Скрывать отключенные инструменты" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Скрывать кнопку Google Drive, если не включено" +label = "Скрывать Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Скрывать кнопку мобильного QR-сканера, если не включено" +label = "Скрывать мобильный сканер" + [admin.settings.general.frontendUrl] description = "Базовый URL фронтенда (например, https://pdf.example.com). Используется для ссылок приглашений по email и загрузок через мобильный QR‑код. Оставьте пустым, чтобы использовать URL бэкенда." label = "Frontend URL" @@ -1148,6 +1164,8 @@ title = "Безопасность" [admin.settings.security.audit] label = "Журналирование аудита" +showDetails = "Показать подробности уровня аудита" +hideDetails = "Скрыть подробности уровня аудита" [admin.settings.security.audit.enabled] description = "Отслеживать действия пользователей и системные события для соответствия требованиям и мониторинга безопасности" @@ -1157,10 +1175,32 @@ label = "Включить журналирование аудита" description = "0=ВЫКЛ, 1=БАЗОВЫЙ, 2=СТАНДАРТНЫЙ, 3=ПОДРОБНЫЙ" label = "Уровень аудита" +[admin.settings.security.audit.levelDetails] +off = "Без журналирования аудита (кроме критических событий безопасности)" +basic = "Операции с PDF-файлами (compress, split, merge и т. д.) и изменения настроек. Фиксируется: статус операции (успех/ошибка), параметры методов, тайминги. Минимальный объем журнала." +standard = "События BASIC, а также: вход/выход пользователя, изменения учетной записи, общие GET-запросы. Исключает непрерывные опросы (/auth/me, /app-config, /health и т. д.), чтобы снизить шум в журналах. Оптимально для большинства развертываний." +verbose = "События STANDARD, а также: непрерывные опросы, все GET-запросы, детальные тайминги. Внимание: большой объем журналов и влияние на производительность." + [admin.settings.security.audit.retentionDays] description = "Количество дней хранения журналов аудита" label = "Срок хранения аудита (дни)" +[admin.settings.security.audit.advancedOptions] +title = "Расширенные параметры" +description = "Следующие параметры увеличивают время обработки и использование памяти. Включайте только при реальной необходимости." + +[admin.settings.security.audit.captureFileHash] +description = "Извлекать SHA-256 хэш загруженных PDF-файлов для проверки целостности. Независимо от уровня аудита." +label = "Фиксировать хэш файла (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Извлекать поле автора из PDF-документов во время обработки. Требует разбора PDF, увеличивает задержку. Независимо от уровня аудита." +label = "Фиксировать метаданные автора PDF" + +[admin.settings.security.audit.captureOperationResults] +description = "Фиксировать возвращаемые значения методов. Не рекомендуется: значительно увеличивает объем журналов и использование диска." +label = "Фиксировать результаты операций" + [admin.settings.security.csrfDisabled] description = "Отключить защиту от межсайтовой подделки запросов (не рекомендуется)" label = "Отключить защиту CSRF" @@ -1536,72 +1576,152 @@ tags = "вставлять,прикреплять,файл,вложение,вл title = "Добавлять вложения" [audit] +configureAudit = "Настроить журналирование аудита" +configureAuditMessage = "Отрегулируйте уровень журналирования аудита, период хранения и другие параметры в разделе «Безопасность и аутентификация»." disabled = "Журнал аудита отключен" disabledMessage = "Включите журнал аудита в конфигурации приложения, чтобы отслеживать события системы." enterpriseRequired = "Требуется лицензия Enterprise" enterpriseRequiredMessage = "Система журналирования аудита — функция уровня Enterprise. Пожалуйста, перейдите на лицензию Enterprise, чтобы получить доступ к аудит‑логам и аналитике." +goToSettings = "Перейти к настройкам аудита" notAvailable = "Система аудита недоступна" notAvailableMessage = "Система аудита не настроена или недоступна." -[audit.charts] -byType = "События по типу" -byUser = "События по пользователям" -day = "День" -error = "Ошибка загрузки графиков" -month = "Месяц" -overTime = "События во времени" -title = "Панель аудита" -week = "Неделя" - [audit.error] title = "Ошибка загрузки системы аудита" -[audit.events] -actions = "Действия" -clearFilters = "Очистить" -details = "Подробности" -endDate = "Дата окончания" -error = "Ошибка загрузки событий" -eventDetails = "Подробности события" -filterByType = "Фильтр по типу" -filterByUser = "Фильтр по пользователю" -ipAddress = "IP-адрес" -noEvents = "Событий не найдено" -startDate = "Дата начала" -timestamp = "Метка времени" -title = "События аудита" -type = "Тип" -user = "Пользователь" -viewDetails = "Просмотреть подробности" - [audit.export] clearFilters = "Очистить" description = "Экспортируйте события аудита в формат CSV или JSON. Используйте фильтры, чтобы ограничить экспортируемые данные." endDate = "Дата окончания" error = "Не удалось экспортировать данные" exportButton = "Экспортировать данные" +fieldAuthor = "Автор (из PDF)" +fieldDate = "Дата" +fieldDocumentName = "Имя документа" +fieldFileHash = "Хэш файла (SHA-256)" +fieldIpAddress = "IP-адрес" +fieldOperationResults = "Результаты операции" +fieldOutcome = "Результат (успех/ошибка)" +fieldTool = "Инструмент" +fieldUsername = "Имя пользователя" filterByType = "Фильтр по типу" filterByUser = "Фильтр по пользователю" filters = "Фильтры (необязательно)" format = "Формат экспорта" +selectFields = "Выберите поля для включения" startDate = "Дата начала" title = "Экспорт данных аудита" +verboseRequired = "Требуется уровень аудита VERBOSE" [audit.systemStatus] +autoRefresh = "Автообновление" +autoRefreshLabel = "Автообновление каждые 30 с" +captureBySettings = "Включите в настройках" +capturedFields = "Собираемые поля" +date = "Дата" days = "дн." disabled = "Отключен" +documentName = "Имя документа" enabled = "Включен" +fileHash = "Хэш файла" level = "Уровень аудита" +pdfAuthor = "Автор PDF" retention = "Срок хранения" status = "Журнал аудита" title = "Состояние системы" +tool = "Инструмент" totalEvents = "Всего событий" +username = "Имя пользователя" +verboseOnly = "Только VERBOSE" + +[audit.stats] +activeUsers = "Активные пользователи" +attention = "Требуется внимание" +avgLatency = "Средняя задержка" +error = "Ошибка загрузки статистики" +errorLoadingStats = "Не удалось загрузить статистику" +excellent = "Отлично" +good = "Хорошо" +noData = "Н/Д" +successRate = "Уровень успешности" +title = "Сводка" +totalEvents = "Всего событий" +vsLastPeriod = "по сравнению с прошлым периодом" + +[audit.charts] +byTool = "Топ используемых инструментов" +byType = "События по типу" +byUser = "События по пользователям" +day = "День" +error = "Ошибка загрузки графиков" +hourlyActivity = "Почасовая активность" +month = "Месяц" +noData = "Нет данных за этот период" +overTime = "События во времени" +title = "Панель аудита" +week = "Неделя" + +[audit.events] +actions = "Действия" +author = "Автор" +clearFilters = "Очистить" +details = "Подробности" +documentName = "Документ" +endDate = "Дата окончания" +error = "Ошибка загрузки событий" +eventDetails = "Подробности события" +failure = "Ошибка" +fileHash = "Хэш файла" +filterByType = "Фильтр по типу" +filterByUser = "Фильтр по пользователю" +ipAddress = "IP-адрес" +noEvents = "Событий не найдено" +outcome = "Статус" +sortAsc = "Сортировать по возрастанию" +sortDesc = "Сортировать по убыванию" +startDate = "Дата начала" +success = "Успех" +timestamp = "Метка времени" +title = "События аудита" +type = "Тип" +user = "Пользователь" +viewDetails = "Просмотреть подробности" + +[audit.filters] +allOutcomes = "Все" +failureOnly = "Только ошибки" +last7Days = "За последние 7 дней" +last30Days = "За последние 30 дней" +outcomeFilter = "Результат" +quickPresets = "Быстрые фильтры" +successOnly = "Только успех" +thisMonth = "В этом месяце" +today = "Сегодня" [audit.tabs] +clearData = "Очистить данные" dashboard = "Панель" events = "События аудита" export = "Экспорт" +[audit.clearData] +cancel = "Отмена" +codeDoesNotMatch = "Код не совпадает" +codePlaceholder = "Введите код здесь" +confirmationCode = "Код подтверждения" +confirmationRequired = "Удалить все данные аудита" +confirmMessage = "Это навсегда удалит все журналы аудита. Введите код подтверждения ниже, чтобы продолжить." +confirmTitle = "Подтвердите удаление" +deleteButton = "Удалить" +enterCode = "Код подтверждения" +enterCodeBelow = "Введите код в точности как выше (с учетом регистра)" +initiateDelete = "Удалить все данные" +irreversible = "НЕОБРАТИМО" +success = "Успех" +successMessage = "Все данные аудита успешно удалены" +warning1 = "Это действие нельзя отменить" +warning2 = "Удаление данных аудита навсегда удалит все исторические журналы аудита, включая события безопасности, действия пользователей и операции с файлами из базы данных." + [auth] accessDenied = "Доступ запрещен" insufficientPermissions = "У вас нет прав для выполнения этого действия." @@ -2254,9 +2374,11 @@ copy = "Копировать" done = "Готово" error = "Ошибка" expand = "Развернуть" +learnMore = "Подробнее" lines = "строк" loading = "Загрузка..." next = "Далее" +operation = "эту операцию" preview = "Предпросмотр" previous = "Предыдущий" refresh = "Обновить" @@ -2920,6 +3042,7 @@ copyStack = "Скопировать трассировку стека" discordSubmit = "Discord - Отправить запрос в поддержку" dismissAllErrors = "Скрыть все ошибки" encryptedPdfMustRemovePassword = "Этот PDF зашифрован или защищён паролем. Пожалуйста, разблокируйте его перед преобразованием в PDF/A." +generic = "Произошла ошибка" github = "Отправить тикет на GitHub" githubSubmit = "GitHub - Отправить тикет" incorrectPasswordProvided = "Пароль к PDF неверен или не указан." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Подписка успешно обновлена. В upgradeSuccess = "Платёж прошёл успешно! Подписка обновлена. Лицензия на сервере обновлена. Вскоре вы получите подтверждение на email." upgradeTitle = "Обновить до {{planName}}" yearly = "Ежегодно" +checkoutOpened = "Оформление покупки открыто в браузере" +checkoutInstructions = "Завершите покупку в открывшемся окне браузера. После оплаты вернитесь сюда и нажмите кнопку ниже, чтобы обновить платежную информацию." +refreshBilling = "Я завершил(а) оплату — обновить биллинг" +closeLater = "Сделаю это позже" [payment.emailStage] continue = "Продолжить" @@ -4679,6 +4806,13 @@ prompt = "Выберите страницу для извлечения табл submit = "Извлечь" title = "PDF в CSV" +[PDFToXLSX] +header = "PDF в Excel" +prompt = "Выберите страницы для извлечения таблиц" +submit = "Преобразовать" +title = "PDF в Excel (XLSX)" +tags = "табличный документ,excel,xlsx,таблица,извлечение,конвертация" + [PDFToHTML] credit = "Этот сервис использует pdftohtml для преобразования файлов." header = "PDF в HTML" @@ -4835,6 +4969,7 @@ customPricing = "Индивидуально" featureComparison = "Сравнение функций" from = "От" hideComparison = "Скрыть сравнение функций" +included = "Включено" includedInCurrent = "Входит в ваш тариф" licensedSeats = "Лицензировано: {{count}} мест" manage = "Управлять" @@ -4852,9 +4987,11 @@ title = "Активный план" [plan.availablePlans] subtitle = "Выберите план, подходящий вашим потребностям" +loadError = "Не удалось загрузить цены планов. Используются значения по умолчанию." title = "Доступные планы" [plan.enterprise] +siteLicense = "Лицензия на сайт" highlight1 = "Индивидуальная цена" highlight2 = "Персональная поддержка" highlight3 = "Последние функции" @@ -4928,6 +5065,81 @@ keyDescription = "Вставьте лицензионный ключ из пис success = "Лицензия активирована!" successMessage = "Ваша лицензия успешно активирована. Теперь можно закрыть это окно." +[plan.team] +name = "Команда" +siteLicense = "Лицензия на сайт" + +[credits] +enableOverageBilling = "Включить оплату перерасхода" +maybeLater = "Позже" +upgrade = "Обновить" + +[credits.modal] +advancedMonitoring = "Расширенный мониторинг" +allInOneWorkspace = "Единое рабочее пространство PDF (просмотрщик, инструменты и агент)" +apiSandbox = "Песочница API" +contactSales = "Связаться с отделом продаж" +creditsRemaining = "Осталось {{current}} из {{total}}" +creditsThisMonth = "Кредиты за месяц" +current = "Текущий план" +customPricing = "Индивидуально" +customSmartFolders = "Индивидуальные умные папки" +dedicatedSupportSlas = "Выделенная поддержка и SLA" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Все из Credits, плюс:" +everythingInFree = "Все из Free, плюс:" +fasterThroughput = "Пропускная способность в 10 раз выше" +forRegularWork = "Для регулярной работы с PDF:" +freeTier = "Бесплатный тариф" +fullyPrivateFiles = "Полностью приватные файлы" +largeFileProcessing = "Обработка больших файлов" +managedMemberMessage = "У вас неограниченный доступ к кредитам через вашу команду. Если нужна помощь, свяжитесь с лидером команды." +managedMemberTitle = "Неограниченные кредиты" +meteringBillingNote = "Кредиты сверх лимита выставляются ежемесячно вместе с вашей подпиской Team. Отслеживайте использование в любое время в настройках аккаунта." +meteringExplanation = "Ваш план Team включает {{credits}} кредитов в месяц. Когда они заканчиваются, автоматический биллинг перерасхода предоставляет дополнительные кредиты, чтобы вы никогда не прерывали работу." +meteringIncluded = "{{credits}} кредитов/месяц включено в Team" +meteringNoCommitment = "Без обязательств, отмена в любое время" +meteringNeverRunOut = "Никогда не оставайтесь без кредитов" +meteringPayAsYouGo = "Платите только за фактическое использование" +meteringPrice = "Дополнительные кредиты по {{price}}/кредит" +meteringTitle = "Оплата перерасхода «плати по факту»" +monthlyCredits = "кредитов в месяц" +orgWideAccess = "Контроль доступа на уровне организации" +overage = "перерасход" +perMonth = "/месяц" +popular = "Популярно" +premiumAiModels = "Премиальные AI-модели" +prioritySupport = "Приоритетная поддержка" +privateDocCloud = "Приватное облако документов" +ragFineTuning = "RAG + дообучение" +secureApiAccess = "Безопасный доступ к API" +selfHostLink = "Изучить документацию и планы" +selfHostPrompt = "Хотите развернуть сами?" +standardThroughput = "Стандартная пропускная способность" +subtitle = "Обновите до Team, чтобы получить в 10 раз больше кредитов и более быструю обработку." +subtitlePro = "Включите автоматический биллинг перерасхода, чтобы никогда не оставаться без кредитов." +teamLeaderOnly = "Только лидеры команд могут включать биллинг перерасхода" +teamSubscription = "Team" +titleExhausted = "Вы исчерпали бесплатные кредиты" +titleExhaustedPro = "У вас закончились кредиты" +unlimitedApiAccess = "Неограниченный доступ к API" +unlimitedMonthlyCredits = "Лицензия на сайт" +unlimitedSeats = "Неограниченное число пользователей" + +[credits.modal.features] +everythingInCredits = "Все из Credits, плюс:" +everythingInFree = "Все из Free, плюс:" +forRegularWork = "Для регулярной работы с PDF:" + +[credits.insufficient] +brief = "Недостаточно кредитов. Нужно {{required}} кредитов, а у вас {{current}}." +freeTier = "Обновите до Team, чтобы получить в 10 раз больше кредитов и неограниченный биллинг перерасхода." +managedMember = "Обратитесь к лидеру вашей команды за помощью." +message = "У вас недостаточно кредитов для запуска {{tool}}. Сейчас у вас {{current}} кредитов." +messageWithAmount = "Чтобы запустить {{tool}}, нужно {{required}} кредитов, но у вас только {{current}}." +teamMember = "Включите биллинг перерасхода, чтобы никогда не оставаться без кредитов." +title = "Недостаточно кредитов" + [printFile] header = "Печать файла на принтер" submit = "Печать" @@ -5565,6 +5777,70 @@ user = "Вы вошли как" saas = "Stirling Cloud" selfhosted = "Самохостинг" +[settings.planBilling] +currentPlan = "Текущий план" +loading = "Загрузка информации о биллинге..." +notAvailable = "Раздел «План и биллинг» доступен только при подключении к Stirling Cloud (режим SaaS)." +title = "План и биллинг" + +[settings.planBilling.billing] +manageBilling = "Управление биллингом" +nextBillingDate = "Следующая дата выставления счета" +overageCost = "Текущая стоимость перерасхода: {{amount}} ({{credits}} кредитов)" + +[settings.planBilling.credits] +estimatedCost = "Ориентировочная стоимость: {{amount}}" +freeTierInfo = "Бесплатный план включает {{freeCredits}} кредитов в месяц. Обновитесь до Team, чтобы получить {{teamCredits}} кредитов/месяц и оплату перерасхода по факту." +included = "{{count}} кредитов/месяц (включено)" +noOverage = "В этом месяце перерасхода нет. Вы используете включенные {{count}} кредитов." +overage = "+ {{count}} перерасход" +overageInfo = "Кредиты перерасхода тарифицируются по {{price}} за кредит. Вы платите только за то, что используете сверх ежемесячного лимита." +title = "Использование кредитов" + +[settings.planBilling.errors] +fetchFailed = "Не удалось получить данные биллинга" +retry = "Повторить" + +[settings.planBilling.status] +active = "Активен" +canceled = "Отменен" +pastDue = "Просрочен" +trial = "Пробный период" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Индивидуальные корпоративные функции и поддержка" +free = "Бесплатный" +freeDescription = "50 кредитов в месяц" +team = "Team" +teamBadge = "Team" +teamDescription = "500 кредитов/месяц включено, автоматический биллинг перерасхода для непрерывной работы" +teamTooltipCredits = "План Team включает {{credits}} кредитов/месяц." +teamTooltipFineprint = "Платите только за использование сверх включенных кредитов." +teamTooltipOverage = "Автоматический биллинг перерасхода по {{price}}/кредит обеспечивает непрерывную работу." + +[settings.planBilling.team] +managedByTeam = "Управляется командой" +memberCount = "{{count}} участников команды" + +[settings.planBilling.trial] +daysRemaining = "{{days}} дней осталось" +daysRemainingFull = "Ваш пробный период закончится через {{days}} дней" +endDate = "Истекает: {{date}}" +endsOn = "Окончание пробного периода" +title = "Активен пробный период" + +[settings.planBilling.upgrade] +cta = "Обновить до Team" +featureApi = "Доступ к API для автоматизации" +featureCredits = "{{teamCredits}} кредитов в месяц (vs {{freeCredits}} на Free)" +featureMembers = "Неограниченное число участников команды" +featureSupport = "Приоритетная поддержка" +featureThroughput = "Более высокая пропускная способность обработки" +opensInBrowser = "Откроется в браузере для завершения обновления" +subtitle = "Обновите до Team, чтобы получить:" +title = "Обновите свой план" + [settings.developer] apiKeys = "Ключи API" title = "Разработчик" @@ -5689,6 +5965,9 @@ people = "Участники" teams = "Команды" title = "Рабочее пространство" +[settings.team] +title = "Команда" + [setup] description = "Начните с выбора способа использования Stirling PDF" welcome = "Добро пожаловать в Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "Авто-разделение с разделительными лист name = "Разделитель страниц" tooltip = "Используйте листы-разделители с QR-кодом между документами при сканировании" +[split.methods.byPoster] +name = "Печатаемые фрагменты" +desc = "Разделяйте большие страницы на печатные форматы" +tooltip = "Разделяйте сверхразмерные страницы на фрагменты, подходящие для печати на стандартной бумаге (A4, Letter и т. д.)" + [split.methods.byPages] desc = "Извлечь конкретные страницы (1,3,5-10)" name = "Номера страниц" @@ -6029,6 +6313,7 @@ tooltip = "Укажите максимальный размер файла (на [split.methods.prefix] splitAt = "Разделить на" splitBy = "Разделить по" +splitInto = "Разделить на" [split.methodSelection.tooltip] bullet1 = "Нажмите на карточку метода, чтобы выбрать его" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Сначала выберите метод разделен chooseMethod = "Выбрать метод" settings = "Настройки" +[split.poster] +rightToLeft = "Разделять справа налево" + +[split.poster.pageSize] +label = "Целевой размер страницы" +description = "Размер выходных страниц для печати" + +[split.poster.xFactor] +label = "Горизонтальные деления" +description = "Количество столбцов, на которые делится каждая страница" + +[split.poster.yFactor] +label = "Вертикальные деления" +description = "Количество строк, на которые делится каждая страница" + [split.tooltip.byChapters] bullet1 = "Уровень закладок: по какому уровню делить (1 = верхний)" bullet2 = "Включить метаданные: сохранять свойства документа" @@ -6085,6 +6385,14 @@ bullet5 = "Включите дуплексный режим, если скани text = "Автоматически разделяйте отсканированные документы с помощью физических листов‑разделителей с QR‑кодами. Отлично для обработки нескольких документов, отсканированных вместе." title = "Разделить по разделителям страниц" +[split.tooltip.byPoster] +bullet1 = "Целевой размер страницы: выберите формат бумаги вывода (A4, Letter и т. д.)" +bullet2 = "Горизонтальные/вертикальные деления: размер сетки для разделения" +bullet3 = "Справа налево: обратный порядок столбцов для RTL-макетов" +bullet4 = "Распечатайте и соберите части, чтобы создать постер" +text = "Разделяйте большие страницы PDF на более мелкие печатные фрагменты, подходящие для стандартных размеров бумаги. Идеально для создания постеров из сверхбольших страниц." +title = "Разделение для печати постера" + [split.tooltip.byPages] bullet1 = "Единичные точки: 3,7 (делит после страниц 3 и 7)" bullet2 = "Диапазоны: 3-8 (делит перед 3 и после 8)" @@ -6364,9 +6672,13 @@ tags = "веб-захват,сохранение страницы,веб в до title = "URL в PDF" [usage] +aboutUsageAnalytics = "О аналитике использования" +configureSettings = "Настроить параметры аналитики" error = "Ошибка загрузки статистики использования" noData = "Данные недоступны" noDataMessage = "Статистика использования временно недоступна." +usageAnalyticsExplanation = "Аналитика использования отслеживает запросы к конечным точкам и шаблоны использования инструментов. В сочетании с панелью журналирования аудита вы получаете полную видимость активности системы, производительности и событий безопасности." +viewAuditLogs = "Просмотреть журналы аудита" [usage.chart] title = "График использования конечных точек" @@ -6947,3 +7259,278 @@ cancel = "Отмена" confirm = "Извлечь" message = "Этот ZIP содержит {{count}} файлов. Все равно извлечь?" title = "Большой ZIP-файл" + +[cloudBadge] +tooltip = "Эта операция использует ваши облачные кредиты" + +[team] +cancelInviteError = "Не удалось отменить приглашение" +confirmCancelInvite = "Вы уверены, что хотите отменить это приглашение?" +confirmLeave = "Вы уверены, что хотите покинуть эту команду?" +confirmLeaveLeader = "Как лидер команды, при выходе вы будете удалены из команды. Продолжить?" +confirmRemove = "Вы уверены, что хотите удалить этого участника?" +editName = "Изменить имя команды" +inviteCancelled = "Приглашение отменено" +inviteError = "Не удалось отправить приглашение" +inviteSent = "Приглашение успешно отправлено" +leader = "Лидер" +leaveButton = "Покинуть команду" +leaveError = "Не удалось выйти из команды" +leaveSuccess = "Вы успешно покинули команду" +loading = "Загрузка информации о команде..." +memberCount = "{{count}} участников" +memberRemoved = "Участник успешно удален" +namePlaceholder = "Введите имя команды" +personal = "Личная" +removeError = "Не удалось удалить участника" +renameError = "Не удалось переименовать команду" +renameSuccess = "Команда успешно переименована" + +[team.invitationBanner] +message = "пригласил(а) вас присоединиться" +acceptButton = "Принять" +rejectButton = "Отклонить" + +[team.features] +badge = "Возможности Team" +subtitle = "Сотрудничайте с вашей командой" +title = "Совместная работа в команде" +viewPlans = "Посмотреть планы" + +[team.features.billing] +description = "Управление биллингом и подписками" +title = "Управление биллингом" + +[team.features.credits] +description = "Общий пул кредитов для всех участников" +title = "Общие кредиты" + +[team.features.dashboard] +description = "Просмотр активности и использования команды" +title = "Панель команды" + +[team.features.invite] +description = "Добавляйте участников в вашу команду" +title = "Пригласить участников" + +[team.invite] +cancelLabel = "Отмена" +invalidEmail = "Недействительный адрес электронной почты" +placeholder = "Введите адрес электронной почты" +sendButton = "Отправить приглашение" +title = "Пригласить участника команды" + +[team.members] +emailColumn = "Эл. почта" +empty = "Пока нет участников команды" +nameColumn = "Имя" +pending = "В ожидании" +remove = "Удалить" +roleColumn = "Роль" +title = "Участники команды" + +[team.upgrade] +button = "Обновить до Team" +description = "Откройте функции совместной работы команды" +title = "Обновление до плана Team" + +[provider.oauth2.google] +scope = "Аутентификация входа" + +[provider.oauth2.google.clientId] +label = "Client ID" +description = "OAuth2 Client ID из Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret из Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Scopes" +description = "OAuth2 scopes, разделенные запятыми" + +[provider.oauth2.google.useAsUsername] +label = "Использовать как имя пользователя" +description = "Поле для использования в качестве имени пользователя (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Аутентификация входа" + +[provider.oauth2.github.clientId] +label = "Client ID" +description = "OAuth2 Client ID из GitHub Developer Settings" + +[provider.oauth2.github.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret из GitHub Developer Settings" + +[provider.oauth2.github.scopes] +label = "Scopes" +description = "OAuth2 scopes, разделенные запятыми" + +[provider.oauth2.github.useAsUsername] +label = "Использовать как имя пользователя" +description = "Поле для использования в качестве имени пользователя (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Issuer URL" +description = "URL конечной точки OpenID Connect Discovery realm в Keycloak" + +[provider.oauth2.keycloak.clientId] +label = "Client ID" +description = "OAuth2 Client ID из Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret из Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "Scopes" +description = "OAuth2 scopes, разделенные запятыми" + +[provider.oauth2.keycloak.useAsUsername] +label = "Использовать как имя пользователя" +description = "Поле для использования в качестве имени пользователя (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "Универсальный OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Включить универсальный OAuth2" +description = "Включить аутентификацию с использованием произвольного провайдера OAuth2" + +[provider.oauth2.generic.provider] +label = "Имя провайдера" +description = "Имя вашего провайдера OAuth2 (например, Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "Issuer URL" +description = "Провайдер, поддерживающий OpenID Connect Discovery (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "Client ID" +description = "OAuth2 Client ID от вашего провайдера" + +[provider.oauth2.generic.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret от вашего провайдера" + +[provider.oauth2.generic.scopes] +label = "Scopes" +description = "OAuth2 scopes, разделенные запятыми" + +[provider.oauth2.generic.useAsUsername] +label = "Использовать как имя пользователя" +description = "Поле для использования в качестве имени пользователя" + +[provider.oauth2.generic.autoCreateUser] +label = "Автосоздание пользователей" +description = "Автоматически создавать учетные записи при первом входе через OAuth2" + +[provider.oauth2.generic.blockRegistration] +label = "Блокировать регистрацию" +description = "Запретить новую регистрацию через OAuth2" + +[provider.smtp] +name = "SMTP Почта" +scope = "Email-уведомления" + +[provider.smtp.enabled] +label = "Включить почту" +description = "Включить уведомления по email и функциональность SMTP" + +[provider.smtp.host] +label = "SMTP Host" +description = "Имя хоста или IP-адрес вашего SMTP-сервера" + +[provider.smtp.port] +label = "SMTP Port" +description = "Номер порта для подключения SMTP (обычно 25, 465 или 587)" + +[provider.smtp.username] +label = "SMTP Username" +description = "Имя пользователя для аутентификации SMTP" + +[provider.smtp.password] +label = "SMTP Password" +description = "Пароль для аутентификации SMTP" + +[provider.smtp.from] +label = "Адрес отправителя" +description = "Адрес электронной почты, используемый как отправитель" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "Включить SAML2" +description = "Включить аутентификацию SAML2 (только Enterprise)" + +[provider.saml2.provider] +label = "Имя провайдера" +description = "Имя вашего провайдера SAML2" + +[provider.saml2.registrationId] +label = "Registration ID" +description = "Имя вашего приложения Service Provider (SP)" + +[provider.saml2.idpMetadataUri] +label = "IDP Metadata URI" +description = "URI метаданных вашего провайдера" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login URL" +description = "URL для инициирования SSO" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout URL" +description = "URL для инициирования SLO" + +[provider.saml2.idpIssuer] +label = "IDP Issuer" +description = "ID вашего провайдера" + +[provider.saml2.idpCert] +label = "Сертификат IDP" +description = "Путь к сертификату (например, classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Приватный ключ" +description = "Путь к вашему приватному ключу" + +[provider.saml2.spCert] +label = "Сертификат SP" +description = "Путь к вашему подписывающему сертификату" + +[provider.saml2.autoCreateUser] +label = "Автосоздание пользователей" +description = "Автоматически создавать учетные записи при первом входе через SAML2" + +[provider.saml2.blockRegistration] +label = "Блокировать регистрацию" +description = "Запретить новую регистрацию через SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "Импорт файлов" + +[provider.googledrive.enabled] +label = "Включить селектор файлов Google Drive" +description = "Разрешить пользователям импортировать файлы напрямую из Google Drive" + +[provider.googledrive.clientId] +label = "Client ID" +description = "Google OAuth 2.0 Client ID из Google Cloud Console" + +[provider.googledrive.apiKey] +label = "API Key" +description = "Ключ Google API для Google Picker API из Google Cloud Console" + +[provider.googledrive.appId] +label = "ID приложения" +description = "ID приложения Google Drive из Google Cloud Console" diff --git a/frontend/public/locales/sk-SK/translation.toml b/frontend/public/locales/sk-SK/translation.toml index cfac0ce2d..3aca0cae4 100644 --- a/frontend/public/locales/sk-SK/translation.toml +++ b/frontend/public/locales/sk-SK/translation.toml @@ -96,6 +96,8 @@ pin = "Pripnúť súbor (ponechať aktívny po spustení nástroja)" poweredBy = "Poskytované" pro = "Pro" processTimeWarning = "Varovanie: Tento proces môže trvať až minútu v závislosti od veľkosti súboru" +processingComplete = "Váš súbor je pripravený." +processingCompleteMultiple = "Je pripravených {{count}} súborov." property = "Vlastnosť" quickPosition = "Rýchla pozícia" red = "Červená" @@ -105,6 +107,7 @@ save = "Uložiť" saveToBrowser = "Uložiť do prehliadača" saveUnavailable = "Uloženie pre túto položku nie je dostupné" seeDockerHub = "Pozrieť Docker Hub" +editSecret = "Upraviť túto hodnotu" selectFillter = "-- Vyberte --" size = "Veľkosť" sponsor = "Sponzorovať" @@ -651,6 +654,7 @@ description = "Nakonfigurujte externých poskytovateľov overenia ako OAuth2 a S disconnect = "Odpojiť" disconnected = "Poskytovateľ bol úspešne odpojený" disconnectError = "Poskytovateľa sa nepodarilo odpojiť" +documentation = "Zobraziť dokumentáciu" imageResolutionFull = "Plné (pôvodná veľkosť)" imageResolutionReduced = "Znížené (max. 1200 px)" linkedServices = "Prepojené služby" @@ -964,6 +968,18 @@ label = "Predvolená lokalizácia" description = "Maximálna veľkosť nahrávaného súboru (napr. 100MB, 1GB)" label = "Limit nahrávania súborov" +[admin.settings.general.hideDisabledTools] +description = "Skryť deaktivované nástroje v rozhraní" +label = "Skryť deaktivované nástroje" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Skryť tlačidlo Google Drive, keď nie je povolené" +label = "Skryť Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Skryť tlačidlo mobilného QR skenera, keď nie je povolené" +label = "Skryť mobilný skener" + [admin.settings.general.frontendUrl] description = "Základná URL pre frontend (napr. https://pdf.example.com). Používa sa pre odkazy v e-mailových pozvánkach a mobilné nahrávanie cez QR kód. Nechajte prázdne, aby sa použila URL backendu." label = "Frontend URL" @@ -1148,6 +1164,8 @@ title = "Zabezpečenie" [admin.settings.security.audit] label = "Auditné logovanie" +showDetails = "Zobraziť detaily úrovne auditu" +hideDetails = "Skryť detaily úrovne auditu" [admin.settings.security.audit.enabled] description = "Sledovať akcie používateľov a systémové udalosti na účely súladu a bezpečnostného monitoringu" @@ -1157,10 +1175,32 @@ label = "Povoliť auditné logovanie" description = "0=VYP., 1=ZÁKLADNÉ, 2=ŠTANDARD, 3=PODROBNÉ" label = "Úroveň auditu" +[admin.settings.security.audit.levelDetails] +off = "Žiadne auditné logovanie (okrem kritických bezpečnostných udalostí)" +basic = "Operácie so súbormi PDF (kompresia, rozdelenie, zlúčenie atď.) a zmeny nastavení. Zaznamenáva: stav operácie (úspech/zlyhanie), parametre metódy, načasovanie. Minimálny objem záznamov." +standard = "Udalosti BASIC plus: prihlásenie/odhlásenie používateľa, zmeny účtu, všeobecné požiadavky GET. Vylučuje priebežné dotazovacie volania (/auth/me, /app-config, /health atď.) na zníženie šumu v logoch. Ideálne pre väčšinu nasadení." +verbose = "Udalosti STANDARD plus: priebežné dotazovacie volania, všetky požiadavky GET, podrobné načasovanie. Upozornenie: vysoký objem záznamov a vplyv na výkon." + [admin.settings.security.audit.retentionDays] description = "Počet dní uchovávania auditných záznamov" label = "Doba uchovania auditu (dni)" +[admin.settings.security.audit.advancedOptions] +title = "Pokročilé možnosti" +description = "Nasledujúce voľby zvyšujú čas spracovania a využitie pamäte. Povoľte len v prípade skutočnej potreby." + +[admin.settings.security.audit.captureFileHash] +description = "Extrahovať hash SHA-256 nahraných PDF súborov na overenie integrity. Nezávislé od úrovne auditu." +label = "Zachytiť hash súboru (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Extrahovať pole autora z dokumentov PDF počas spracovania. Vyžaduje parsovanie PDF, zvyšuje latenciu. Nezávislé od úrovne auditu." +label = "Zachytiť metadáta autora PDF" + +[admin.settings.security.audit.captureOperationResults] +description = "Zachytiť návratové hodnoty metód. Neodporúča sa: výrazne zvyšuje objem záznamov a využitie disku." +label = "Zachytiť výsledky operácií" + [admin.settings.security.csrfDisabled] description = "Zakázať ochranu proti Cross-Site Request Forgery (neodporúča sa)" label = "Zakázať ochranu CSRF" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "Nakonfigurovať auditné logovanie" +configureAuditMessage = "Upravte úroveň auditného logovania, dobu uchovania a ďalšie nastavenia v sekcii Zabezpečenie a autentifikácia." disabled = "Auditné protokolovanie je vypnuté" disabledMessage = "Povolením auditného protokolovania v konfigurácii aplikácie môžete sledovať udalosti systému." enterpriseRequired = "Vyžaduje sa licencia Enterprise" enterpriseRequiredMessage = "Systém auditných záznamov je funkcia Enterprise. Ak chcete získať prístup k auditným záznamom a analytike, prejdite na licenciu Enterprise." +goToSettings = "Prejsť do nastavení auditu" notAvailable = "Auditný systém nie je k dispozícii" notAvailableMessage = "Auditný systém nie je nakonfigurovaný alebo nie je k dispozícii." -[audit.charts] -byType = "Udalosti podľa typu" -byUser = "Udalosti podľa používateľa" -day = "Deň" -error = "Chyba pri načítaní grafov" -month = "Mesiac" -overTime = "Udalosti v čase" -title = "Auditný prehľad" -week = "Týždeň" - [audit.error] title = "Chyba pri načítaní auditného systému" -[audit.events] -actions = "Akcie" -clearFilters = "Vymazať" -details = "Podrobnosti" -endDate = "Dátum konca" -error = "Chyba pri načítaní udalostí" -eventDetails = "Podrobnosti udalosti" -filterByType = "Filter podľa typu" -filterByUser = "Filter podľa používateľa" -ipAddress = "IP adresa" -noEvents = "Nenašli sa žiadne udalosti" -startDate = "Dátum začiatku" -timestamp = "Časová pečiatka" -title = "Auditné udalosti" -type = "Typ" -user = "Používateľ" -viewDetails = "Zobraziť podrobnosti" - [audit.export] clearFilters = "Vymazať" description = "Exportujte auditné udalosti do formátu CSV alebo JSON. Pomocou filtrov obmedzte exportované údaje." endDate = "Dátum konca" error = "Nepodarilo sa exportovať údaje" exportButton = "Exportovať údaje" +fieldAuthor = "Autor (z PDF)" +fieldDate = "Dátum" +fieldDocumentName = "Názov dokumentu" +fieldFileHash = "Hash súboru (SHA-256)" +fieldIpAddress = "IP adresa" +fieldOperationResults = "Výsledky operácie" +fieldOutcome = "Výsledok (úspech/zlyhanie)" +fieldTool = "Nástroj" +fieldUsername = "Používateľské meno" filterByType = "Filter podľa typu" filterByUser = "Filter podľa používateľa" filters = "Filtre (voliteľné)" format = "Formát exportu" +selectFields = "Vyberte polia na zahrnutie" startDate = "Dátum začiatku" title = "Exportovať auditné údaje" +verboseRequired = "Vyžaduje úroveň auditu VERBOSE" [audit.systemStatus] +autoRefresh = "Automatické obnovenie" +autoRefreshLabel = "Automaticky obnovovať každých 30 s" +captureBySettings = "Povoliť v nastaveniach" +capturedFields = "Zachytené polia" +date = "Dátum" days = "dní" disabled = "Zakázané" +documentName = "Názov dokumentu" enabled = "Povolené" +fileHash = "Hash súboru" level = "Úroveň auditu" +pdfAuthor = "Autor PDF" retention = "Doba uchovávania" status = "Auditné protokolovanie" title = "Stav systému" +tool = "Nástroj" totalEvents = "Celkovo udalostí" +username = "Používateľské meno" +verboseOnly = "Iba VERBOSE" + +[audit.stats] +activeUsers = "Aktívni používatelia" +attention = "Vyžaduje pozornosť" +avgLatency = "Priem. latencia" +error = "Chyba pri načítavaní štatistík" +errorLoadingStats = "Nepodarilo sa načítať štatistiky" +excellent = "Vynikajúce" +good = "Dobré" +noData = "Nedostupné" +successRate = "Miera úspešnosti" +title = "Zhrnutie" +totalEvents = "Celkom udalostí" +vsLastPeriod = "v porovnaní s minulým obdobím" + +[audit.charts] +byTool = "Najpoužívanejšie nástroje" +byType = "Udalosti podľa typu" +byUser = "Udalosti podľa používateľa" +day = "Deň" +error = "Chyba pri načítaní grafov" +hourlyActivity = "Hodinová aktivita" +month = "Mesiac" +noData = "Žiadne údaje pre toto obdobie" +overTime = "Udalosti v čase" +title = "Auditný prehľad" +week = "Týždeň" + +[audit.events] +actions = "Akcie" +author = "Autor" +clearFilters = "Vymazať" +details = "Podrobnosti" +documentName = "Dokument" +endDate = "Dátum konca" +error = "Chyba pri načítaní udalostí" +eventDetails = "Podrobnosti udalosti" +failure = "Zlyhanie" +fileHash = "Hash súboru" +filterByType = "Filter podľa typu" +filterByUser = "Filter podľa používateľa" +ipAddress = "IP adresa" +noEvents = "Nenašli sa žiadne udalosti" +outcome = "Stav" +sortAsc = "Triediť vzostupne" +sortDesc = "Triediť zostupne" +startDate = "Dátum začiatku" +success = "Úspech" +timestamp = "Časová pečiatka" +title = "Auditné udalosti" +type = "Typ" +user = "Používateľ" +viewDetails = "Zobraziť podrobnosti" + +[audit.filters] +allOutcomes = "Všetky" +failureOnly = "Len zlyhania" +last7Days = "Posledných 7 dní" +last30Days = "Posledných 30 dní" +outcomeFilter = "Výsledok" +quickPresets = "Rýchle filtre" +successOnly = "Len úspechy" +thisMonth = "Tento mesiac" +today = "Dnes" [audit.tabs] +clearData = "Vymazať údaje" dashboard = "Prehľad" events = "Auditné udalosti" export = "Export" +[audit.clearData] +cancel = "Zrušiť" +codeDoesNotMatch = "Kód sa nezhoduje" +codePlaceholder = "Sem zadajte kód" +confirmationCode = "Potvrdzovací kód" +confirmationRequired = "Vymazať všetky auditné údaje" +confirmMessage = "Týmto sa natrvalo odstránia všetky auditné záznamy. Na pokračovanie nižšie zadajte potvrdzovací kód." +confirmTitle = "Potvrďte, že chcete odstrániť" +deleteButton = "Odstrániť" +enterCode = "Potvrdzovací kód" +enterCodeBelow = "Zadajte kód presne tak, ako je uvedený vyššie (rozlišujú sa veľké/malé písmená)" +initiateDelete = "Vymazať všetky údaje" +irreversible = "NEVRATNÉ" +success = "Úspech" +successMessage = "Všetky auditné údaje boli úspešne vymazané" +warning1 = "Túto akciu nemožno vrátiť späť" +warning2 = "Vymazaním auditných údajov natrvalo odstránite všetky historické auditné záznamy vrátane bezpečnostných udalostí, aktivít používateľov a operácií so súbormi z databázy." + [auth] accessDenied = "Prístup zamietnutý" insufficientPermissions = "Nemáte oprávnenie vykonať túto akciu." @@ -2254,9 +2374,11 @@ copy = "Kopírovať" done = "Hotovo" error = "Chyba" expand = "Rozbaliť" +learnMore = "Ďalšie informácie" lines = "riadky" loading = "Načítava sa..." next = "Ďalej" +operation = "túto operáciu" preview = "Náhľad" previous = "Predchádzajúce" refresh = "Obnoviť" @@ -2920,6 +3042,7 @@ copyStack = "Kopírovať sledovanie zásobníka" discordSubmit = "Discord - Podajte príspevok na podporu" dismissAllErrors = "Zavrieť všetky chyby" encryptedPdfMustRemovePassword = "Toto PDF je šifrované alebo chránené heslom. Pred konverziou na PDF/A ho odomknite." +generic = "Vyskytla sa chyba" github = "Podajte tiket na GitHub" githubSubmit = "GitHub - Podajte tiket" incorrectPasswordProvided = "Heslo k PDF je nesprávne alebo nebolo zadané." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Vaše predplatné bolo úspešne upgradované. Existuj upgradeSuccess = "Platba úspešná! Vaše predplatné bolo upgradované. Licencia bola aktualizovaná na vašom serveri. Čoskoro dostanete potvrdzujúci email." upgradeTitle = "Inovovať na {{planName}}" yearly = "Ročne" +checkoutOpened = "Platba otvorená v prehliadači" +checkoutInstructions = "Dokončite nákup v okne prehliadača, ktoré sa práve otvorilo. Po dokončení platby sa vráťte sem a kliknite na tlačidlo nižšie na obnovenie fakturačných informácií." +refreshBilling = "Platbu som dokončil(a) – obnoviť fakturáciu" +closeLater = "Urobím to neskôr" [payment.emailStage] continue = "Pokračovať" @@ -4679,6 +4806,13 @@ prompt = "Vyberte stránku na extrakciu tabuľky" submit = "Extrahovať" title = "PDF na CSV" +[PDFToXLSX] +header = "PDF do Excelu" +prompt = "Vyberte strany na extrakciu tabuliek" +submit = "Konvertovať" +title = "PDF do Excelu (XLSX)" +tags = "tabuľkový hárok,excel,xlsx,tabuľka,extrakcia,konverzia" + [PDFToHTML] credit = "Táto služba používa pdftohtml na konverziu súborov." header = "PDF na HTML" @@ -4835,6 +4969,7 @@ customPricing = "Vlastné" featureComparison = "Porovnanie funkcií" from = "Od" hideComparison = "Skryť porovnanie funkcií" +included = "Zahrnuté" includedInCurrent = "Súčasť vášho plánu" licensedSeats = "Licencovaných: {{count}} miest" manage = "Spravovať" @@ -4852,9 +4987,11 @@ title = "Aktívny plán" [plan.availablePlans] subtitle = "Vyberte si plán, ktorý vám vyhovuje" +loadError = "Nie je možné načítať ceny plánov. Používajú sa predvolené hodnoty." title = "Dostupné plány" [plan.enterprise] +siteLicense = "Licencia pre celú organizáciu" highlight1 = "Vlastné ceny" highlight2 = "Vyhradená podpora" highlight3 = "Najnovšie funkcie" @@ -4928,6 +5065,81 @@ keyDescription = "Vložte licenčný kľúč z e‑mailu" success = "Licencia aktivovaná!" successMessage = "Vaša licencia bola úspešne aktivovaná. Teraz môžete toto okno zatvoriť." +[plan.team] +name = "Tím" +siteLicense = "Licencia pre celú organizáciu" + +[credits] +enableOverageBilling = "Povoliť nadlimitné účtovanie" +maybeLater = "Možno neskôr" +upgrade = "Prejsť na vyšší plán" + +[credits.modal] +advancedMonitoring = "Pokročilé monitorovanie" +allInOneWorkspace = "Všetko v jednom: pracovné prostredie pre PDF (prehliadač, nástroje a agent)" +apiSandbox = "API sandbox" +contactSales = "Kontaktovať obchod" +creditsRemaining = "{{current}} z {{total}} zostáva" +creditsThisMonth = "Mesačné kredity" +current = "Aktuálny plán" +customPricing = "Vlastné" +customSmartFolders = "Vlastné inteligentné priečinky" +dedicatedSupportSlas = "Vyhradená podpora a SLA" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Všetko z Credits, navyše:" +everythingInFree = "Všetko z Free, navyše:" +fasterThroughput = "10× rýchlejšia priepustnosť" +forRegularWork = "Na bežnú prácu s PDF:" +freeTier = "Bezplatný plán" +fullyPrivateFiles = "Plne súkromné súbory" +largeFileProcessing = "Spracovanie veľkých súborov" +managedMemberMessage = "Máte neobmedzený prístup ku kreditom cez svoj tím. Ak potrebujete pomoc, kontaktujte svojho vedúceho tímu." +managedMemberTitle = "Neobmedzené kredity" +meteringBillingNote = "Nadlimitné kredity sa fakturujú mesačne spolu s vaším predplatným Team. Svoju spotrebu môžete kedykoľvek sledovať v nastaveniach účtu." +meteringExplanation = "Váš plán Team obsahuje {{credits}} kreditov mesačne. Keď sa minú, nadlimitné účtovanie automaticky poskytne ďalšie kredity, aby ste nemuseli prerušovať prácu." +meteringIncluded = "{{credits}} kreditov/mesiac zahrnutých v pláne Team" +meteringNoCommitment = "Bez viazanosti, zrušiť môžete kedykoľvek" +meteringNeverRunOut = "Kredity sa vám nikdy neminú" +meteringPayAsYouGo = "Platíte len za skutočné použitie" +meteringPrice = "Dodatočné kredity za {{price}}/kredit" +meteringTitle = "Nadlimitné účtovanie podľa skutočného využitia" +monthlyCredits = "mesačné kredity" +orgWideAccess = "Celopodnikové riadenie prístupu" +overage = "nadlimit" +perMonth = "/mesiac" +popular = "Obľúbené" +premiumAiModels = "Prémiové modely AI" +prioritySupport = "Prioritná podpora" +privateDocCloud = "Súkromný cloud dokumentov" +ragFineTuning = "RAG + fine-tuning" +secureApiAccess = "Zabezpečený prístup k API" +selfHostLink = "Pozrite si dokumentáciu a plány" +selfHostPrompt = "Chcete self‑hosting?" +standardThroughput = "Štandardná priepustnosť" +subtitle = "Prejdite na Team a získajte 10× viac kreditov a rýchlejšie spracovanie." +subtitlePro = "Povoľte automatické nadlimitné účtovanie, aby sa vám kredity nikdy neminuli." +teamLeaderOnly = "Nadlimitné účtovanie môžu povoliť len vedúci tímu" +teamSubscription = "Team" +titleExhausted = "Minuli ste svoje bezplatné kredity" +titleExhaustedPro = "Minuli sa vám kredity" +unlimitedApiAccess = "Neobmedzený prístup k API" +unlimitedMonthlyCredits = "Licencia pre celú organizáciu" +unlimitedSeats = "Neobmedzený počet používateľov" + +[credits.modal.features] +everythingInCredits = "Všetko z Credits, navyše:" +everythingInFree = "Všetko z Free, navyše:" +forRegularWork = "Na bežnú prácu s PDF:" + +[credits.insufficient] +brief = "Nedostatok kreditov. Potrebujete {{required}} kreditov, ale máte {{current}}." +freeTier = "Prejdite na Team a získajte 10× viac kreditov a neobmedzené nadlimitné účtovanie." +managedMember = "Kontaktujte svojho vedúceho tímu." +message = "Nemáte dostatok kreditov na spustenie {{tool}}. Aktuálne máte {{current}} kreditov." +messageWithAmount = "Na spustenie {{tool}} potrebujete {{required}} kreditov, ale máte len {{current}}." +teamMember = "Povoľte nadlimitné účtovanie, aby sa vám kredity nikdy neminuli." +title = "Nedostatok kreditov" + [printFile] header = "Vytlačiť súbor na tlačiareň" submit = "Vytlačiť" @@ -5565,6 +5777,70 @@ user = "Prihlásený ako" saas = "Stirling Cloud" selfhosted = "Self-hostovaný" +[settings.planBilling] +currentPlan = "Aktuálny plán" +loading = "Načítavajú sa fakturačné informácie..." +notAvailable = "Plán a fakturácia sú dostupné len pri pripojení k Stirling Cloud (režim SaaS)." +title = "Plán a fakturácia" + +[settings.planBilling.billing] +manageBilling = "Spravovať fakturáciu" +nextBillingDate = "Ďalší dátum fakturácie" +overageCost = "Aktuálne náklady na nadlimit: {{amount}} ({{credits}} kreditov)" + +[settings.planBilling.credits] +estimatedCost = "Odhadované náklady: {{amount}}" +freeTierInfo = "Bezplatný plán obsahuje {{freeCredits}} kreditov mesačne. Prejdite na Team pre {{teamCredits}} kreditov/mesiac a nadlimitné účtovanie podľa skutočného využitia." +included = "{{count}} kreditov/mesiac (zahrnuté)" +noOverage = "Tento mesiac bez nadlimitných poplatkov. Používate svoje zahrnuté {{count}} kreditov." +overage = "+ {{count}} nadlimit" +overageInfo = "Nadlimitné kredity sa účtujú sadzbou {{price}} za kredit. Zaplatíte len za to, čo presiahne váš mesačný limit." +title = "Využitie kreditov" + +[settings.planBilling.errors] +fetchFailed = "Nepodarilo sa získať fakturačné údaje" +retry = "Skúsiť znova" + +[settings.planBilling.status] +active = "Aktívny" +canceled = "Zrušený" +pastDue = "Po splatnosti" +trial = "Skúšobná verzia" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Vlastné enterprise funkcie a podpora" +free = "Free" +freeDescription = "50 kreditov mesačne" +team = "Team" +teamBadge = "Team" +teamDescription = "500 kreditov/mesiac zahrnutých, automatické nadlimitné účtovanie pre nepretržitú prevádzku" +teamTooltipCredits = "Plán Team zahŕňa {{credits}} kreditov/mesiac." +teamTooltipFineprint = "Platíte len za to, čo presiahne zahrnuté kredity." +teamTooltipOverage = "Automatické nadlimitné účtovanie za {{price}}/kredit zaručuje nepretržitú prevádzku." + +[settings.planBilling.team] +managedByTeam = "Spravované tímom" +memberCount = "{{count}} členov tímu" + +[settings.planBilling.trial] +daysRemaining = "Zostáva {{days}} dní" +daysRemainingFull = "Vaša skúšobná verzia skončí o {{days}} dní" +endDate = "Platnosť do: {{date}}" +endsOn = "Koniec skúšobnej verzie" +title = "Skúšobná verzia je aktívna" + +[settings.planBilling.upgrade] +cta = "Prejsť na Team" +featureApi = "Prístup k API pre automatizáciu" +featureCredits = "{{teamCredits}} kreditov za mesiac (oproti {{freeCredits}} v pláne Free)" +featureMembers = "Neobmedzený počet členov tímu" +featureSupport = "Prioritná podpora" +featureThroughput = "Rýchlejšie spracovanie" +opensInBrowser = "Otvorí sa v prehliadači na dokončenie prechodu" +subtitle = "Prejdite na Team a získajte:" +title = "Prejdite na vyšší plán" + [settings.developer] apiKeys = "API kľúče" title = "Vývojár" @@ -5689,6 +5965,9 @@ people = "Ľudia" teams = "Tímy" title = "Pracovný priestor" +[settings.team] +title = "Tím" + [setup] description = "Začnite výberom spôsobu používania Stirling PDF" welcome = "Vitajte v Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "Automatické rozdelenie s oddeľovacími listami" name = "Oddeľovač strán" tooltip = "Použite oddeľovacie listy s QR kódmi medzi dokumentmi pri skenovaní" +[split.methods.byPoster] +name = "Tlačiteľné časti" +desc = "Rozdeľte veľké strany na tlačiteľné rozmery" +tooltip = "Rozdeľte nadrozmerné strany na menšie časti vhodné na tlač na štandardný papier (A4, Letter atď.)" + [split.methods.byPages] desc = "Extrahovať konkrétne strany (1,3,5-10)" name = "Čísla strán" @@ -6029,6 +6313,7 @@ tooltip = "Zadajte maximálnu veľkosť súboru (napr. 10MB, 500KB)" [split.methods.prefix] splitAt = "Rozdeliť na" splitBy = "Rozdeliť podľa" +splitInto = "Rozdeliť na" [split.methodSelection.tooltip] bullet1 = "Kliknutím na kartu metódy ju vyberiete" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Prosím, najprv vyberte metódu rozdelenia" chooseMethod = "Vyberte metódu" settings = "Nastavenia" +[split.poster] +rightToLeft = "Deliť sprava doľava" + +[split.poster.pageSize] +label = "Cieľová veľkosť strany" +description = "Veľkosť výstupných strán na tlač" + +[split.poster.xFactor] +label = "Horizontálne delenia" +description = "Počet stĺpcov, na ktoré sa má každá strana rozdeliť" + +[split.poster.yFactor] +label = "Vertikálne delenia" +description = "Počet riadkov, na ktoré sa má každá strana rozdeliť" + [split.tooltip.byChapters] bullet1 = "Úroveň záložiek: Na ktorej úrovni deliť (1=horná úroveň)" bullet2 = "Zahrnúť metaúdaje: Zachovať vlastnosti dokumentu" @@ -6085,6 +6385,14 @@ bullet5 = "Povoľte duplexný režim, ak skenujete obe strany oddeľovacích lis text = "Automaticky rozdeľujte skenované dokumenty pomocou fyzických oddeľovacích listov s QR kódmi. Perfektné na spracovanie viacerých dokumentov naskenovaných spolu." title = "Rozdeliť podľa oddeľovača strán" +[split.tooltip.byPoster] +bullet1 = "Cieľová veľkosť strany: Vyberte výstupný formát papiera (A4, Letter atď.)" +bullet2 = "Horizontálne/vertikálne delenia: Veľkosť mriežky na rozdelenie" +bullet3 = "Sprava doľava: Obráti poradie stĺpcov pre RTL rozloženia" +bullet4 = "Vytlačte a poskladajte diely pre vytvorenie plagátu" +text = "Rozdeľte veľké strany PDF na menšie tlačiteľné časti vhodné pre štandardné formáty papiera. Ideálne na vytváranie plagátových tlačí z nadrozmerných strán." +title = "Rozdeliť pre tlač plagátu" + [split.tooltip.byPages] bullet1 = "Jednotlivé body: 3,7 (rozdelenie po stranách 3 a 7)" bullet2 = "Rozsahy: 3-8 (rozdelenie pred stranou 3 a po strane 8)" @@ -6364,9 +6672,13 @@ tags = "webová snímka, uložiť stránku, web do dokumentu, archív" title = "URL do PDF" [usage] +aboutUsageAnalytics = "O analytike používania" +configureSettings = "Nastaviť analytiku" error = "Chyba pri načítaní štatistík používania" noData = "Údaje nie sú k dispozícii" noDataMessage = "Aktuálne nie sú k dispozícii žiadne štatistiky používania." +usageAnalyticsExplanation = "Analytika používania sleduje požiadavky na endpointy a vzorce používania nástrojov. V kombinácii s panelom auditného logovania získate úplný prehľad o aktivite systému, výkone a bezpečnostných udalostiach." +viewAuditLogs = "Zobraziť auditné záznamy" [usage.chart] title = "Graf využitia koncových bodov" @@ -6947,3 +7259,278 @@ cancel = "Zrušiť" confirm = "Rozbaliť" message = "Tento ZIP obsahuje {{count}} súborov. Aj tak rozbaliť?" title = "Veľký ZIP súbor" + +[cloudBadge] +tooltip = "Táto operácia použije vaše cloudové kredity" + +[team] +cancelInviteError = "Pozvánku sa nepodarilo zrušiť" +confirmCancelInvite = "Naozaj chcete zrušiť túto pozvánku?" +confirmLeave = "Naozaj chcete opustiť tento tím?" +confirmLeaveLeader = "Ako vedúci tímu budete po odchode odstránený z tímu. Ste si istý/istá?" +confirmRemove = "Naozaj chcete odstrániť tohto člena?" +editName = "Upraviť názov tímu" +inviteCancelled = "Pozvánka zrušená" +inviteError = "Pozvánku sa nepodarilo odoslať" +inviteSent = "Pozvánka úspešne odoslaná" +leader = "Vedúci" +leaveButton = "Opustiť tím" +leaveError = "Tím sa nepodarilo opustiť" +leaveSuccess = "Tím ste úspešne opustili" +loading = "Načítavajú sa informácie o tíme..." +memberCount = "{{count}} členov" +memberRemoved = "Člen bol úspešne odstránený" +namePlaceholder = "Zadajte názov tímu" +personal = "Osobné" +removeError = "Člena sa nepodarilo odstrániť" +renameError = "Tím sa nepodarilo premenovať" +renameSuccess = "Tím bol úspešne premenovaný" + +[team.invitationBanner] +message = "vás pozval(a), aby ste sa pripojili" +acceptButton = "Prijať" +rejectButton = "Odmietnuť" + +[team.features] +badge = "Funkcie tímu" +subtitle = "Spolupracujte so svojím tímom" +title = "Tímová spolupráca" +viewPlans = "Zobraziť plány" + +[team.features.billing] +description = "Spravujte fakturáciu a predplatné" +title = "Správa fakturácie" + +[team.features.credits] +description = "Zdieľaný fond kreditov pre všetkých členov" +title = "Zdieľané kredity" + +[team.features.dashboard] +description = "Zobraziť aktivitu a využitie tímu" +title = "Tímový prehľad" + +[team.features.invite] +description = "Pridajte členov do svojho tímu" +title = "Pozvať členov" + +[team.invite] +cancelLabel = "Zrušiť" +invalidEmail = "Neplatná e‑mailová adresa" +placeholder = "Zadajte e‑mailovú adresu" +sendButton = "Odoslať pozvánku" +title = "Pozvať člena tímu" + +[team.members] +emailColumn = "E‑mail" +empty = "Zatiaľ žiadni členovia tímu" +nameColumn = "Meno" +pending = "Čakajúce" +remove = "Odstrániť" +roleColumn = "Rola" +title = "Členovia tímu" + +[team.upgrade] +button = "Prejsť na Team" +description = "Odomknite tímové funkcie spolupráce" +title = "Prejsť na plán Team" + +[provider.oauth2.google] +scope = "Autentifikácia pri prihlásení" + +[provider.oauth2.google.clientId] +label = "ID klienta" +description = "OAuth2 Client ID z Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Tajný kľúč klienta" +description = "OAuth2 Client Secret z Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Rozsahy" +description = "Čiarkou oddelené OAuth2 rozsahy" + +[provider.oauth2.google.useAsUsername] +label = "Použiť ako používateľské meno" +description = "Pole použité ako používateľské meno (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Autentifikácia pri prihlásení" + +[provider.oauth2.github.clientId] +label = "ID klienta" +description = "OAuth2 Client ID z GitHub Developer Settings" + +[provider.oauth2.github.clientSecret] +label = "Tajný kľúč klienta" +description = "OAuth2 Client Secret z GitHub Developer Settings" + +[provider.oauth2.github.scopes] +label = "Rozsahy" +description = "Čiarkou oddelené OAuth2 rozsahy" + +[provider.oauth2.github.useAsUsername] +label = "Použiť ako používateľské meno" +description = "Pole použité ako používateľské meno (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "URL vydavateľa" +description = "URL koncového bodu OpenID Connect Discovery pre realm Keycloak" + +[provider.oauth2.keycloak.clientId] +label = "ID klienta" +description = "OAuth2 Client ID z Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Tajný kľúč klienta" +description = "OAuth2 Client Secret z Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "Rozsahy" +description = "Čiarkou oddelené OAuth2 rozsahy" + +[provider.oauth2.keycloak.useAsUsername] +label = "Použiť ako používateľské meno" +description = "Pole použité ako používateľské meno (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "Všeobecné OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Povoliť všeobecné OAuth2" +description = "Povoliť autentifikáciu pomocou vlastného poskytovateľa OAuth2" + +[provider.oauth2.generic.provider] +label = "Názov poskytovateľa" +description = "Názov vášho poskytovateľa OAuth2 (napr. Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "URL vydavateľa" +description = "Poskytovateľ, ktorý podporuje OpenID Connect Discovery (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "ID klienta" +description = "OAuth2 Client ID od vášho poskytovateľa" + +[provider.oauth2.generic.clientSecret] +label = "Tajný kľúč klienta" +description = "OAuth2 Client Secret od vášho poskytovateľa" + +[provider.oauth2.generic.scopes] +label = "Rozsahy" +description = "Čiarkou oddelené OAuth2 rozsahy" + +[provider.oauth2.generic.useAsUsername] +label = "Použiť ako používateľské meno" +description = "Pole použité ako používateľské meno" + +[provider.oauth2.generic.autoCreateUser] +label = "Automaticky vytvárať používateľov" +description = "Automaticky vytvoriť používateľské účty pri prvom prihlásení cez OAuth2" + +[provider.oauth2.generic.blockRegistration] +label = "Blokovať registráciu" +description = "Zabrániť registrácii nových používateľov cez OAuth2" + +[provider.smtp] +name = "SMTP pošta" +scope = "E‑mailové upozornenia" + +[provider.smtp.enabled] +label = "Povoliť poštu" +description = "Povoliť e‑mailové upozornenia a funkcionalitu SMTP" + +[provider.smtp.host] +label = "Hostiteľ SMTP" +description = "Názov hostiteľa alebo IP adresa vášho servera SMTP" + +[provider.smtp.port] +label = "Port SMTP" +description = "Číslo portu pre pripojenie SMTP (zvyčajne 25, 465 alebo 587)" + +[provider.smtp.username] +label = "Používateľské meno SMTP" +description = "Používateľské meno pre overenie SMTP" + +[provider.smtp.password] +label = "Heslo SMTP" +description = "Heslo pre overenie SMTP" + +[provider.smtp.from] +label = "Adresa odosielateľa" +description = "E‑mailová adresa použitá ako odosielateľ" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "Povoliť SAML2" +description = "Povoliť autentifikáciu SAML2 (iba pre Enterprise)" + +[provider.saml2.provider] +label = "Názov poskytovateľa" +description = "Názov vášho poskytovateľa SAML2" + +[provider.saml2.registrationId] +label = "ID registrácie" +description = "Názov vašej aplikácie poskytovateľa služby (SP)" + +[provider.saml2.idpMetadataUri] +label = "URI metadát IDP" +description = "URI pre metadáta vášho poskytovateľa" + +[provider.saml2.idpSingleLoginUrl] +label = "URL jednotného prihlásenia IDP" +description = "URL na spustenie SSO" + +[provider.saml2.idpSingleLogoutUrl] +label = "URL jednotného odhlásenia IDP" +description = "URL na spustenie SLO" + +[provider.saml2.idpIssuer] +label = "Vydavateľ IDP" +description = "ID vášho poskytovateľa" + +[provider.saml2.idpCert] +label = "Certifikát IDP" +description = "Cesta k certifikátu (napr. classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Súkromný kľúč" +description = "Cesta k vášmu súkromnému kľúču" + +[provider.saml2.spCert] +label = "Certifikát SP" +description = "Cesta k vášmu podpisovému certifikátu" + +[provider.saml2.autoCreateUser] +label = "Automaticky vytvárať používateľov" +description = "Automaticky vytvoriť používateľské účty pri prvom prihlásení cez SAML2" + +[provider.saml2.blockRegistration] +label = "Blokovať registráciu" +description = "Zabrániť registrácii nových používateľov cez SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "Import súborov" + +[provider.googledrive.enabled] +label = "Povoliť výber súborov z Google Drive" +description = "Umožniť používateľom importovať súbory priamo z Google Drive" + +[provider.googledrive.clientId] +label = "ID klienta" +description = "Google OAuth 2.0 Client ID z Google Cloud Console" + +[provider.googledrive.apiKey] +label = "API kľúč" +description = "Google API kľúč pre Google Picker API z Google Cloud Console" + +[provider.googledrive.appId] +label = "ID aplikácie" +description = "Google Drive App ID z Google Cloud Console" diff --git a/frontend/public/locales/sl-SI/translation.toml b/frontend/public/locales/sl-SI/translation.toml index ac8773fa9..5ac149f81 100644 --- a/frontend/public/locales/sl-SI/translation.toml +++ b/frontend/public/locales/sl-SI/translation.toml @@ -96,6 +96,8 @@ pin = "Pripni datoteko (ostane aktivna po zagonu orodja)" poweredBy = "Poganja" pro = "Pro" processTimeWarning = "Opozorilo: ta postopek lahko traja do minute, odvisno od velikosti datoteke" +processingComplete = "Vaša datoteka je pripravljena." +processingCompleteMultiple = "{{count}} datotek je pripravljenih." property = "Lastnost" quickPosition = "Hiter položaj" red = "rdeča" @@ -105,6 +107,7 @@ save = "Shrani" saveToBrowser = "Shrani v brskalnik" saveUnavailable = "Shranjevanje za ta element ni na voljo" seeDockerHub = "Glej Docker Hub" +editSecret = "Uredi to vrednost" selectFillter = "-- Izberite --" size = "Velikost" sponsor = "Sponzor" @@ -651,6 +654,7 @@ description = "Konfigurirajte zunanje ponudnike preverjanja pristnosti, kot sta disconnect = "Prekini povezavo" disconnected = "Ponudnik uspešno odklopljen" disconnectError = "Ponudnika ni bilo mogoče odklopiti" +documentation = "Ogled dokumentacije" imageResolutionFull = "Polna (izvirna velikost)" imageResolutionReduced = "Zmanjšana (maks. 1200px)" linkedServices = "Povezane storitve" @@ -964,6 +968,18 @@ label = "Privzeti jezik" description = "Največja velikost nalaganja datotek (npr. 100MB, 1GB)" label = "Omejitev nalaganja datotek" +[admin.settings.general.hideDisabledTools] +description = "Skrij onemogočena orodja iz vmesnika" +label = "Skrij onemogočena orodja" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Skrij gumb Google Drive, ko ni omogočen" +label = "Skrij Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Skrij gumb mobilnega QR skenerja, ko ni omogočen" +label = "Skrij mobilni skener" + [admin.settings.general.frontendUrl] description = "Osnovni URL za frontend (npr. https://pdf.example.com). Uporablja se za povezave v e-poštnih povabilih in mobilna nalaganja prek QR kode. Pustite prazno za uporabo URL-ja zaledja." label = "Frontend URL" @@ -1148,6 +1164,8 @@ title = "Varnost" [admin.settings.security.audit] label = "Revizijsko beleženje" +showDetails = "Prikaži podrobnosti revizijske ravni" +hideDetails = "Skrij podrobnosti revizijske ravni" [admin.settings.security.audit.enabled] description = "Spremljaj dejanja uporabnikov in sistemske dogodke za skladnost in varnostni nadzor" @@ -1157,10 +1175,32 @@ label = "Omogoči revizijsko beleženje" description = "0=IZKLOPLJENO, 1=OSNOVNO, 2=STANDARD, 3=PODROBNO" label = "Raven revizije" +[admin.settings.security.audit.levelDetails] +off = "Brez beleženja revizije (razen kritičnih varnostnih dogodkov)" +basic = "Operacije z datotekami PDF (stiskanje, razdelitev, združevanje itd.) in spremembe nastavitev. Zajema: stanje operacije (uspeh/neuspeh), parametre metod, časovne podatke. Minimalna količina dnevnika." +standard = "Dogodki BASIC ter: prijava/odjava uporabnika, spremembe računa, splošne zahteve GET. Izključuje neprekinjene klice spraševanja (/auth/me, /app-config, /health itd.), da se zmanjša šum v dnevnikih. Idealno za večino namestitev." +verbose = "Dogodki STANDARD ter: neprekinjeni klici spraševanja, vse zahteve GET, podrobno merjenje časa. Opozorilo: velika količina dnevnika in vpliv na učinkovitost." + [admin.settings.security.audit.retentionDays] description = "Število dni hrambe revizijskih dnevnikov" label = "Hramba revizij (dni)" +[admin.settings.security.audit.advancedOptions] +title = "Napredne možnosti" +description = "Naslednje možnosti povečajo čas obdelave in porabo pomnilnika. Omogočite jih le, če je res potrebno." + +[admin.settings.security.audit.captureFileHash] +description = "Izvleci zgoščeno vrednost SHA-256 naloženih datotek PDF za preverjanje celovitosti. Neodvisno od revizijske ravni." +label = "Zajemi zgoščeno vrednost datoteke (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Med obdelavo izvleci polje avtorja iz dokumentov PDF. Zahteva razčlenjevanje PDF in poveča zakasnitev. Neodvisno od revizijske ravni." +label = "Zajemi metapodatke o avtorju PDF" + +[admin.settings.security.audit.captureOperationResults] +description = "Zajemaj vrnjene vrednosti metod. Ni priporočeno: znatno poveča količino dnevnikov in uporabo diska." +label = "Zajemi rezultate operacij" + [admin.settings.security.csrfDisabled] description = "Onemogoči zaščito pred ponarejanjem zahtev (ni priporočljivo)" label = "Onemogoči zaščito CSRF" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "Nastavi beleženje revizije" +configureAuditMessage = "Prilagodite raven beleženja revizije, obdobje hrambe in druge nastavitve v razdelku Varnost in overjanje." disabled = "Revizijsko beleženje je onemogočeno" disabledMessage = "Omogočite revizijsko beleženje v konfiguraciji vaše aplikacije za sledenje sistemskim dogodkom." enterpriseRequired = "Potrebna licenca Enterprise" enterpriseRequiredMessage = "Sistem revizijskega beleženja je funkcija za podjetja. Za dostop do revizijskih dnevnikov in analitike nadgradite na licenco Enterprise." +goToSettings = "Pojdi na nastavitve revizije" notAvailable = "Revizijski sistem ni na voljo" notAvailableMessage = "Revizijski sistem ni konfiguriran ali ni na voljo." -[audit.charts] -byType = "Dogodki po vrsti" -byUser = "Dogodki po uporabniku" -day = "Dan" -error = "Napaka pri nalaganju grafov" -month = "Mesec" -overTime = "Dogodki skozi čas" -title = "Revizijska nadzorna plošča" -week = "Teden" - [audit.error] title = "Napaka pri nalaganju revizijskega sistema" -[audit.events] -actions = "Dejanja" -clearFilters = "Počisti" -details = "Podrobnosti" -endDate = "Končni datum" -error = "Napaka pri nalaganju dogodkov" -eventDetails = "Podrobnosti dogodka" -filterByType = "Filtriraj po vrsti" -filterByUser = "Filtriraj po uporabniku" -ipAddress = "IP naslov" -noEvents = "Ni najdenih dogodkov" -startDate = "Začetni datum" -timestamp = "Časovni žig" -title = "Revizijski dogodki" -type = "Vrsta" -user = "Uporabnik" -viewDetails = "Ogled podrobnosti" - [audit.export] clearFilters = "Počisti" description = "Izvozite revizijske dogodke v format CSV ali JSON. Uporabite filtre za omejitev izvoznih podatkov." endDate = "Končni datum" error = "Podatkov ni bilo mogoče izvoziti" exportButton = "Izvozi podatke" +fieldAuthor = "Avtor (iz PDF)" +fieldDate = "Datum" +fieldDocumentName = "Ime dokumenta" +fieldFileHash = "Zgoščena vrednost datoteke (SHA-256)" +fieldIpAddress = "IP naslov" +fieldOperationResults = "Rezultati operacij" +fieldOutcome = "Rezultat (uspeh/neuspeh)" +fieldTool = "Orodje" +fieldUsername = "Uporabniško ime" filterByType = "Filtriraj po vrsti" filterByUser = "Filtriraj po uporabniku" filters = "Filtri (neobvezno)" format = "Format izvoza" +selectFields = "Izberite polja za vključitev" startDate = "Začetni datum" title = "Izvoz revizijskih podatkov" +verboseRequired = "Zahteva revizijsko raven VERBOSE" [audit.systemStatus] +autoRefresh = "Samodejno osveževanje" +autoRefreshLabel = "Samodejno osveži vsakih 30 s" +captureBySettings = "Omogoči v nastavitvah" +capturedFields = "Zajeta polja" +date = "Datum" days = "dni" disabled = "Onemogočeno" +documentName = "Ime dokumenta" enabled = "Omogočeno" +fileHash = "Zgoščena vrednost datoteke" level = "Raven revizije" +pdfAuthor = "Avtor PDF" retention = "Obdobje hrambe" status = "Revizijsko beleženje" title = "Stanje sistema" +tool = "Orodje" totalEvents = "Skupaj dogodkov" +username = "Uporabniško ime" +verboseOnly = "Samo VERBOSE" + +[audit.stats] +activeUsers = "Aktivni uporabniki" +attention = "Potrebna pozornost" +avgLatency = "Povp. zakasnitev" +error = "Napaka pri nalaganju statistike" +errorLoadingStats = "Ni bilo mogoče naložiti statistike" +excellent = "Odlično" +good = "Dobro" +noData = "Ni na voljo" +successRate = "Stopnja uspešnosti" +title = "Povzetek" +totalEvents = "Skupno dogodkov" +vsLastPeriod = "v primerjavi s prejšnjim obdobjem" + +[audit.charts] +byTool = "Najbolj uporabljena orodja" +byType = "Dogodki po vrsti" +byUser = "Dogodki po uporabniku" +day = "Dan" +error = "Napaka pri nalaganju grafov" +hourlyActivity = "Urna dejavnost" +month = "Mesec" +noData = "Za to obdobje ni podatkov" +overTime = "Dogodki skozi čas" +title = "Revizijska nadzorna plošča" +week = "Teden" + +[audit.events] +actions = "Dejanja" +author = "Avtor" +clearFilters = "Počisti" +details = "Podrobnosti" +documentName = "Dokument" +endDate = "Končni datum" +error = "Napaka pri nalaganju dogodkov" +eventDetails = "Podrobnosti dogodka" +failure = "Neuspeh" +fileHash = "Zgoščena vrednost datoteke" +filterByType = "Filtriraj po vrsti" +filterByUser = "Filtriraj po uporabniku" +ipAddress = "IP naslov" +noEvents = "Ni najdenih dogodkov" +outcome = "Stanje" +sortAsc = "Razvrsti naraščajoče" +sortDesc = "Razvrsti padajoče" +startDate = "Začetni datum" +success = "Uspeh" +timestamp = "Časovni žig" +title = "Revizijski dogodki" +type = "Vrsta" +user = "Uporabnik" +viewDetails = "Ogled podrobnosti" + +[audit.filters] +allOutcomes = "Vse" +failureOnly = "Samo neuspehi" +last7Days = "Zadnjih 7 dni" +last30Days = "Zadnjih 30 dni" +outcomeFilter = "Rezultat" +quickPresets = "Hitri filtri" +successOnly = "Samo uspehi" +thisMonth = "Ta mesec" +today = "Danes" [audit.tabs] +clearData = "Počisti podatke" dashboard = "Nadzorna plošča" events = "Revizijski dogodki" export = "Izvoz" +[audit.clearData] +cancel = "Prekliči" +codeDoesNotMatch = "Koda se ne ujema" +codePlaceholder = "Vnesite kodo tukaj" +confirmationCode = "Potrditvena koda" +confirmationRequired = "Izbriši vse revizijske podatke" +confirmMessage = "To bo trajno odstranilo vse revizijske dnevnike. Za nadaljevanje spodaj vnesite potrditveno kodo." +confirmTitle = "Potrdite, da želite izbrisati" +deleteButton = "Izbriši" +enterCode = "Potrditvena koda" +enterCodeBelow = "Vnesite kodo točno tako, kot je prikazana zgoraj (razlikovanje velikosti črk)" +initiateDelete = "Izbriši vse podatke" +irreversible = "NEPOVRATLJIVO" +success = "Uspeh" +successMessage = "Vsi revizijski podatki so bili uspešno izbrisani" +warning1 = "Tega dejanja ni mogoče razveljaviti" +warning2 = "Brisanje revizijskih podatkov bo trajno odstranilo vse zgodovinske revizijske dnevnike, vključno z varnostnimi dogodki, dejavnostmi uporabnikov in operacijami z datotekami iz zbirke podatkov." + [auth] accessDenied = "Dostop zavrnjen" insufficientPermissions = "Nimate dovoljenja za izvedbo tega dejanja." @@ -2254,9 +2374,11 @@ copy = "Kopiraj" done = "Končano" error = "Napaka" expand = "Razširi" +learnMore = "Več o tem" lines = "vrstice" loading = "Nalaganje..." next = "Naslednje" +operation = "to operacijo" preview = "Predogled" previous = "Prejšnje" refresh = "Osveži" @@ -2920,6 +3042,7 @@ copyStack = "Kopiraj sled sklada" discordSubmit = "Discord - Pošlji objavo podpori" dismissAllErrors = "Zapri vse napake" encryptedPdfMustRemovePassword = "Ta PDF je šifriran ali zaščiten z geslom. Prosimo, odklenite ga pred pretvorbo v PDF/A." +generic = "Prišlo je do napake" github = "Oddajte vstopnico na GitHub" githubSubmit = "GitHub - Predloži vstopnico" incorrectPasswordProvided = "Geslo PDF je napačno ali ni podano." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Vaša naročnina je bila uspešno nadgrajena. Vaš obs upgradeSuccess = "Plačilo uspešno! Vaša naročnina je nadgrajena. Licenca na vašem strežniku je posodobljena. Kmalu boste prejeli potrditveno e-pošto." upgradeTitle = "Nadgradite na {{planName}}" yearly = "Letno" +checkoutOpened = "Blagajna je odprta v brskalniku" +checkoutInstructions = "Nakup dokončajte v brskalniškem oknu, ki se je pravkar odprlo. Po zaključilu plačila se vrnite sem in kliknite spodnji gumb za osvežitev podatkov o zaračunavanju." +refreshBilling = "Plačilo je zaključeno – osveži obračun" +closeLater = "To bom naredil pozneje" [payment.emailStage] continue = "Nadaljuj" @@ -4679,6 +4806,13 @@ prompt = "Izberite stran za ekstrahiranje tabele" submit = "Izvleček" title = "PDF v CSV" +[PDFToXLSX] +header = "PDF v Excel" +prompt = "Izberite strani za izluščitev tabel" +submit = "Pretvori" +title = "PDF v Excel (XLSX)" +tags = "spreadsheet,excel,xlsx,table,extract,convert" + [PDFToHTML] credit = "Ta storitev uporablja pdftohtml za pretvorbo datotek." header = "PDF v HTML" @@ -4835,6 +4969,7 @@ customPricing = "Po meri" featureComparison = "Primerjava funkcij" from = "Od" hideComparison = "Skrij primerjavo funkcij" +included = "Vključeno" includedInCurrent = "Vključeno v vaš načrt" licensedSeats = "Licencirano: {{count}} mest" manage = "Upravljaj" @@ -4852,9 +4987,11 @@ title = "Aktivni paket" [plan.availablePlans] subtitle = "Izberite paket, ki ustreza vašim potrebam" +loadError = "Cenika načrtov ni mogoče naložiti. Uporabljene bodo privzete vrednosti." title = "Razpoložljivi paketi" [plan.enterprise] +siteLicense = "Licenca za celotno podjetje" highlight1 = "Cenik po meri" highlight2 = "Namenska podpora" highlight3 = "Najnovejše funkcije" @@ -4928,6 +5065,81 @@ keyDescription = "Prilepite licenčni ključ iz e-pošte" success = "Licenca aktivirana!" successMessage = "Vaša licenca je bila uspešno aktivirana. To okno lahko zaprete." +[plan.team] +name = "Ekipa" +siteLicense = "Licenca za celotno podjetje" + +[credits] +enableOverageBilling = "Omogoči zaračunavanje prekoračitve" +maybeLater = "Morda pozneje" +upgrade = "Nadgradi" + +[credits.modal] +advancedMonitoring = "Napredno spremljanje" +allInOneWorkspace = "Vse-v-enem delovni prostor za PDF (pregledovalnik, orodja in agent)" +apiSandbox = "API sandbox" +contactSales = "Kontaktirajte prodajo" +creditsRemaining = "Preostalih {{current}} od {{total}}" +creditsThisMonth = "Mesečni krediti" +current = "Trenutni načrt" +customPricing = "Po meri" +customSmartFolders = "Pametne mape po meri" +dedicatedSupportSlas = "Namenska podpora in SLA-ji" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Vse v Credits, poleg tega:" +everythingInFree = "Vse v Free, poleg tega:" +fasterThroughput = "10x hitrejša prepustnost" +forRegularWork = "Za redno delo s PDF:" +freeTier = "Brezplačni paket" +fullyPrivateFiles = "Popolnoma zasebne datoteke" +largeFileProcessing = "Obdelava velikih datotek" +managedMemberMessage = "Imate neomejen dostop do kreditov prek svoje ekipe. Če potrebujete pomoč, se obrnite na vodjo ekipe." +managedMemberTitle = "Neomejeni krediti" +meteringBillingNote = "Krediti prekoračitve se obračunajo mesečno skupaj z vašo naročnino Team. Svojo porabo lahko kadarkoli spremljate v nastavitvah računa." +meteringExplanation = "Vaš načrt Team vključuje {{credits}} kreditov na mesec. Ko jih zmanjka, samodejno zaračunavanje prekoračitve zagotovi dodatne kredite, da vam ni treba prenehati z delom." +meteringIncluded = "{{credits}} kreditov/mesec vključeno v Team" +meteringNoCommitment = "Brez vezave, prekličete kadarkoli" +meteringNeverRunOut = "Nikoli ne zmanjka kreditov" +meteringPayAsYouGo = "Plačajte le za dejansko porabo" +meteringPrice = "Dodatni krediti po {{price}}/kredit" +meteringTitle = "Plačilo po porabi za prekoračitve" +monthlyCredits = "mesečni krediti" +orgWideAccess = "Organizacijski nadzori dostopa" +overage = "prekoračitev" +perMonth = "/mesec" +popular = "Priljubljeno" +premiumAiModels = "Premium AI modeli" +prioritySupport = "Prednostna podpora" +privateDocCloud = "Zasebni oblak dokumentov" +ragFineTuning = "RAG + fine-tuning" +secureApiAccess = "Varni dostop do API" +selfHostLink = "Preglejte dokumentacijo in načrte" +selfHostPrompt = "Želite samostojno gostovati?" +standardThroughput = "Standardna prepustnost" +subtitle = "Nadgradite na Team za 10x več kreditov in hitrejšo obdelavo." +subtitlePro = "Omogočite samodejno zaračunavanje prekoračitve, da vam nikoli ne zmanjka kreditov." +teamLeaderOnly = "Le vodje ekip lahko omogočijo zaračunavanje prekoračitve" +teamSubscription = "Team" +titleExhausted = "Porabili ste brezplačne kredite" +titleExhaustedPro = "Zmanjkalo vam je kreditov" +unlimitedApiAccess = "Neomejen dostop do API" +unlimitedMonthlyCredits = "Licenca za celotno podjetje" +unlimitedSeats = "Neomejeno število uporabnikov" + +[credits.modal.features] +everythingInCredits = "Vse v Credits, poleg tega:" +everythingInFree = "Vse v Free, poleg tega:" +forRegularWork = "Za redno delo s PDF:" + +[credits.insufficient] +brief = "Premalo kreditov. Potrebujete {{required}} kreditov, imate pa {{current}}." +freeTier = "Nadgradite na Team za 10x več kreditov in neomejeno zaračunavanje prekoračitve." +managedMember = "Za pomoč se obrnite na svojega vodjo ekipe." +message = "Nimate dovolj kreditov za zagon {{tool}}. Trenutno imate {{current}} kreditov." +messageWithAmount = "Za zagon {{tool}} potrebujete {{required}} kreditov, imate pa le {{current}}." +teamMember = "Omogočite zaračunavanje prekoračitve, da vam nikoli ne zmanjka kreditov." +title = "Premalo kreditov" + [printFile] header = "Natisni datoteko na tiskalnik" submit = "Natisni" @@ -5565,6 +5777,70 @@ user = "Prijavljeni kot" saas = "Stirling Cloud" selfhosted = "Samogostovano" +[settings.planBilling] +currentPlan = "Trenutni načrt" +loading = "Nalaganje podatkov o zaračunavanju ..." +notAvailable = "Načrt in zaračunavanje sta na voljo le ob povezavi s Stirling Cloud (način SaaS)." +title = "Načrt in zaračunavanje" + +[settings.planBilling.billing] +manageBilling = "Upravljaj zaračunavanje" +nextBillingDate = "Naslednji datum zaračunavanja" +overageCost = "Trenutni strošek prekoračitve: {{amount}} ({{credits}} kreditov)" + +[settings.planBilling.credits] +estimatedCost = "Ocenjeni strošek: {{amount}}" +freeTierInfo = "Brezplačni načrt vključuje {{freeCredits}} kreditov na mesec. Nadgradite na Team za {{teamCredits}} kreditov/mesec in zaračunavanje prekoračitve po porabi." +included = "{{count}} kreditov/mesec (vključeno)" +noOverage = "Ta mesec ni stroškov prekoračitve. Uporabljate vključenih {{count}} kreditov." +overage = "+ {{count}} prekoračitve" +overageInfo = "Krediti prekoračitve se zaračunajo po {{price}} na kredit. Plačali boste le za porabo nad vašim mesečnim zneskom." +title = "Poraba kreditov" + +[settings.planBilling.errors] +fetchFailed = "Podatkov o zaračunavanju ni mogoče pridobiti" +retry = "Poskusi znova" + +[settings.planBilling.status] +active = "Aktiven" +canceled = "Preklican" +pastDue = "Zapadlo v plačilo" +trial = "Preskus" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Prilagojene funkcije in podpora za podjetja" +free = "Brezplačno" +freeDescription = "50 kreditov na mesec" +team = "Team" +teamBadge = "Team" +teamDescription = "Vključenih 500 kreditov/mesec, samodejno zaračunavanje prekoračitve za nemoteno storitev" +teamTooltipCredits = "Načrt Team vključuje {{credits}} kreditov/mesec." +teamTooltipFineprint = "Plačate le za porabo nad vključenimi krediti." +teamTooltipOverage = "Samodejno zaračunavanje prekoračitve po {{price}}/kredit zagotavlja nemoteno storitev." + +[settings.planBilling.team] +managedByTeam = "Upravlja ekipa" +memberCount = "{{count}} članov ekipe" + +[settings.planBilling.trial] +daysRemaining = "Preostaja {{days}} dni" +daysRemainingFull = "Vaš preskus se izteče čez {{days}} dni" +endDate = "Poteče: {{date}}" +endsOn = "Konec preskusa" +title = "Brezplačni preskus je aktiven" + +[settings.planBilling.upgrade] +cta = "Nadgradi na Team" +featureApi = "Dostop do API za avtomatizacijo" +featureCredits = "{{teamCredits}} kreditov na mesec (v primerjavi z {{freeCredits}} pri Free)" +featureMembers = "Neomejeno članov ekipe" +featureSupport = "Prednostna podpora" +featureThroughput = "Hitrejša prepustnost obdelave" +opensInBrowser = "Za dokončanje nadgradnje se odpre v brskalniku" +subtitle = "Nadgradite na Team za:" +title = "Nadgradite svoj načrt" + [settings.developer] apiKeys = "API ključi" title = "Razvijalec" @@ -5689,6 +5965,9 @@ people = "Osebe" teams = "Skupine" title = "Delovni prostor" +[settings.team] +title = "Ekipa" + [setup] description = "Začnite z izbiro načina uporabe Stirling PDF" welcome = "Dobrodošli v Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "Samodejna razdelitev z ločilnimi listi" name = "Vmesna ločilna stran" tooltip = "Uporabite ločilne liste z QR kodo med dokumenti pri skeniranju" +[split.methods.byPoster] +name = "Natisljivi odseki" +desc = "Razdeli velike strani na velikosti primerne za tisk" +tooltip = "Razdeli prevelike strani na manjše odseke, primerne za tisk na standardni papir (A4, Letter itd.)" + [split.methods.byPages] desc = "Izvleci določene strani (1,3,5-10)" name = "Številke strani" @@ -6029,6 +6313,7 @@ tooltip = "Določite največjo velikost datoteke (npr. 10MB, 500KB)" [split.methods.prefix] splitAt = "Razdeli pri" splitBy = "Razdeli po" +splitInto = "Razdeli v" [split.methodSelection.tooltip] bullet1 = "Kliknite kartico načina, da jo izberete" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Najprej izberite način razdelitve" chooseMethod = "Izberite način" settings = "Nastavitve" +[split.poster] +rightToLeft = "Razdeli od desne proti levi" + +[split.poster.pageSize] +label = "Ciljna velikost strani" +description = "Velikost izhodnih strani za tisk" + +[split.poster.xFactor] +label = "Vodoravne delitve" +description = "Število stolpcev, na katere se razdeli vsaka stran" + +[split.poster.yFactor] +label = "Navpične delitve" +description = "Število vrstic, na katere se razdeli vsaka stran" + [split.tooltip.byChapters] bullet1 = "Raven zaznamka: katero raven razdeliti (1=vrhnja raven)" bullet2 = "Vključi metapodatke: ohrani lastnosti dokumenta" @@ -6085,6 +6385,14 @@ bullet5 = "Omogočite dvostranski način, če skenirate obe strani ločilnih lis text = "Samodejno razdelite skenirane dokumente z uporabo fizičnih ločilnih listov z QR kodami. Odlično za obdelavo več dokumentov, skeniranih skupaj." title = "Razdeli z ločilnimi listi" +[split.tooltip.byPoster] +bullet1 = "Ciljna velikost strani: izberite izhodno velikost papirja (A4, Letter itd.)" +bullet2 = "Vodoravne/navpične delitve: velikost mreže za razdelitev" +bullet3 = "Od desne proti levi: obrni vrstni red stolpcev za RTL postavitve" +bullet4 = "Natisnite in sestavite dele, da ustvarite svoj poster" +text = "Razdelite velike strani PDF na manjše, za tisk primerne odseke, primerne za standardne velikosti papirja. Odlično za ustvarjanje plakatov iz prevelikih strani." +title = "Razdeli za tisk plakata" + [split.tooltip.byPages] bullet1 = "Posamične točke razdelitve: 3,7 (razdeli po straneh 3 in 7)" bullet2 = "Razpon točk razdelitve: 3-8 (razdeli pred stranjo 3 in po strani 8)" @@ -6364,9 +6672,13 @@ tags = "zajem-spleta,shrani-stran,splet-v-dokument,arhiv" title = "URL v PDF" [usage] +aboutUsageAnalytics = "O analitiki uporabe" +configureSettings = "Nastavi analitiko" error = "Napaka pri nalaganju statistike uporabe" noData = "Ni razpoložljivih podatkov" noDataMessage = "Trenutno statistika uporabe ni na voljo." +usageAnalyticsExplanation = "Analitika uporabe sledi zahtevam do končnih točk in vzorcem uporabe orodij. V kombinaciji z nadzorno ploščo beleženja revizij dobite popoln vpogled v dejavnost sistema, zmogljivost in varnostne dogodke." +viewAuditLogs = "Ogled revizijskih dnevnikov" [usage.chart] title = "Graf uporabe končnih točk" @@ -6947,3 +7259,278 @@ cancel = "Prekliči" confirm = "Razpakiraj" message = "Ta ZIP vsebuje {{count}} datotek. Vseeno razpakiram?" title = "Velika datoteka ZIP" + +[cloudBadge] +tooltip = "Ta operacija bo uporabila vaše kredite v oblaku" + +[team] +cancelInviteError = "Preklic povabila ni uspel" +confirmCancelInvite = "Ali ste prepričani, da želite preklicati to povabilo?" +confirmLeave = "Ali ste prepričani, da želite zapustiti to ekipo?" +confirmLeaveLeader = "Kot vodja ekipe vas bo zapustitev odstranila iz ekipe. Ali ste prepričani?" +confirmRemove = "Ali ste prepričani, da želite odstraniti tega člana?" +editName = "Uredi ime ekipe" +inviteCancelled = "Povabilo preklicano" +inviteError = "Pošiljanje povabila ni uspelo" +inviteSent = "Povabilo uspešno poslano" +leader = "Vodja" +leaveButton = "Zapusti ekipo" +leaveError = "Zapustitev ekipe ni uspela" +leaveSuccess = "Uspešno ste zapustili ekipo" +loading = "Nalaganje podatkov o ekipi ..." +memberCount = "{{count}} članov" +memberRemoved = "Član uspešno odstranjen" +namePlaceholder = "Vnesite ime ekipe" +personal = "Osebno" +removeError = "Odstranjevanje člana ni uspelo" +renameError = "Preimenovanje ekipe ni uspelo" +renameSuccess = "Ekipa je bila uspešno preimenovana" + +[team.invitationBanner] +message = "vas je povabil, da se pridružite" +acceptButton = "Sprejmi" +rejectButton = "Zavrni" + +[team.features] +badge = "Funkcije za ekipe" +subtitle = "Sodelujte s svojo ekipo" +title = "Sodelovanje v ekipi" +viewPlans = "Ogled načrtov" + +[team.features.billing] +description = "Upravljajte zaračunavanje in naročnine" +title = "Upravljanje zaračunavanja" + +[team.features.credits] +description = "Skupni kreditni sklad za vse člane" +title = "Deljeni krediti" + +[team.features.dashboard] +description = "Ogled dejavnosti in porabe ekipe" +title = "Nadzorna plošča ekipe" + +[team.features.invite] +description = "Dodajte člane v svojo ekipo" +title = "Povabite člane" + +[team.invite] +cancelLabel = "Prekliči" +invalidEmail = "Neveljaven e-poštni naslov" +placeholder = "Vnesite e-poštni naslov" +sendButton = "Pošlji povabilo" +title = "Povabi člana ekipe" + +[team.members] +emailColumn = "E-pošta" +empty = "Še ni članov ekipe" +nameColumn = "Ime" +pending = "V teku" +remove = "Odstrani" +roleColumn = "Vloga" +title = "Člani ekipe" + +[team.upgrade] +button = "Nadgradi na Team" +description = "Odklenite funkcije za sodelovanje v ekipi" +title = "Nadgradite na načrt Team" + +[provider.oauth2.google] +scope = "Overjanje prijave" + +[provider.oauth2.google.clientId] +label = "ID odjemalca" +description = "ID odjemalca OAuth2 iz Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Skrivnost odjemalca" +description = "Skrivnost odjemalca OAuth2 iz Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Obsegi" +description = "Z vejicami ločeni obsegi OAuth2" + +[provider.oauth2.google.useAsUsername] +label = "Uporabi kot uporabniško ime" +description = "Polje za uporabo kot uporabniško ime (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Overjanje prijave" + +[provider.oauth2.github.clientId] +label = "ID odjemalca" +description = "ID odjemalca OAuth2 iz GitHub Developer Settings" + +[provider.oauth2.github.clientSecret] +label = "Skrivnost odjemalca" +description = "Skrivnost odjemalca OAuth2 iz GitHub Developer Settings" + +[provider.oauth2.github.scopes] +label = "Obsegi" +description = "Z vejicami ločeni obsegi OAuth2" + +[provider.oauth2.github.useAsUsername] +label = "Uporabi kot uporabniško ime" +description = "Polje za uporabo kot uporabniško ime (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "URL izdajatelja" +description = "URL končne točke OpenID Connect Discovery področja (realm) Keycloak" + +[provider.oauth2.keycloak.clientId] +label = "ID odjemalca" +description = "ID odjemalca OAuth2 iz Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Skrivnost odjemalca" +description = "Skrivnost odjemalca OAuth2 iz Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "Obsegi" +description = "Z vejicami ločeni obsegi OAuth2" + +[provider.oauth2.keycloak.useAsUsername] +label = "Uporabi kot uporabniško ime" +description = "Polje za uporabo kot uporabniško ime (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "Splošni OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Omogoči Splošni OAuth2" +description = "Omogoči overjanje z uporabo poljubnega ponudnika OAuth2" + +[provider.oauth2.generic.provider] +label = "Ime ponudnika" +description = "Ime vašega ponudnika OAuth2 (npr. Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "URL izdajatelja" +description = "Ponudnik, ki podpira OpenID Connect Discovery (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "ID odjemalca" +description = "ID odjemalca OAuth2 vašega ponudnika" + +[provider.oauth2.generic.clientSecret] +label = "Skrivnost odjemalca" +description = "Skrivnost odjemalca OAuth2 vašega ponudnika" + +[provider.oauth2.generic.scopes] +label = "Obsegi" +description = "Z vejicami ločeni obsegi OAuth2" + +[provider.oauth2.generic.useAsUsername] +label = "Uporabi kot uporabniško ime" +description = "Polje za uporabo kot uporabniško ime" + +[provider.oauth2.generic.autoCreateUser] +label = "Samodejno ustvari uporabnike" +description = "Samodejno ustvari uporabniške račune ob prvi prijavi prek OAuth2" + +[provider.oauth2.generic.blockRegistration] +label = "Blokiraj registracijo" +description = "Prepreči registracijo novih uporabnikov prek OAuth2" + +[provider.smtp] +name = "SMTP pošta" +scope = "E-poštna obvestila" + +[provider.smtp.enabled] +label = "Omogoči pošto" +description = "Omogoči e-poštna obvestila in funkcionalnost SMTP" + +[provider.smtp.host] +label = "Gostitelj SMTP" +description = "Ime gostitelja ali IP naslov vašega strežnika SMTP" + +[provider.smtp.port] +label = "Vrata SMTP" +description = "Številka vrat za povezavo SMTP (običajno 25, 465 ali 587)" + +[provider.smtp.username] +label = "Uporabniško ime SMTP" +description = "Uporabniško ime za overjanje SMTP" + +[provider.smtp.password] +label = "Geslo SMTP" +description = "Geslo za overjanje SMTP" + +[provider.smtp.from] +label = "Naslov pošiljatelja" +description = "E-poštni naslov, uporabljen kot pošiljatelj" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "Omogoči SAML2" +description = "Omogoči SAML2 overjanje (samo Enterprise)" + +[provider.saml2.provider] +label = "Ime ponudnika" +description = "Ime vašega ponudnika SAML2" + +[provider.saml2.registrationId] +label = "ID registracije" +description = "Ime vaše aplikacije ponudnika storitev (SP)" + +[provider.saml2.idpMetadataUri] +label = "URI metapodatkov IDP" +description = "URI za metapodatke vašega ponudnika" + +[provider.saml2.idpSingleLoginUrl] +label = "URL enotne prijave IDP" +description = "URL za začetek SSO" + +[provider.saml2.idpSingleLogoutUrl] +label = "URL enotne odjave IDP" +description = "URL za začetek SLO" + +[provider.saml2.idpIssuer] +label = "Izdajatelj IDP" +description = "ID vašega ponudnika" + +[provider.saml2.idpCert] +label = "Certifikat IDP" +description = "Pot certifikata (npr. classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Zasebni ključ" +description = "Pot do vašega zasebnega ključa" + +[provider.saml2.spCert] +label = "Certifikat SP" +description = "Pot do vašega podpisnega certifikata" + +[provider.saml2.autoCreateUser] +label = "Samodejno ustvari uporabnike" +description = "Samodejno ustvari uporabniške račune ob prvi prijavi prek SAML2" + +[provider.saml2.blockRegistration] +label = "Blokiraj registracijo" +description = "Prepreči registracijo novih uporabnikov prek SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "Uvoz datotek" + +[provider.googledrive.enabled] +label = "Omogoči izbirnik datotek Google Drive" +description = "Dovoli uporabnikom neposreden uvoz datotek iz Google Drive" + +[provider.googledrive.clientId] +label = "ID odjemalca" +description = "Google OAuth 2.0 Client ID iz Google Cloud Console" + +[provider.googledrive.apiKey] +label = "API ključ" +description = "Google API ključ za Google Picker API iz Google Cloud Console" + +[provider.googledrive.appId] +label = "ID aplikacije" +description = "Google Drive App ID iz Google Cloud Console" diff --git a/frontend/public/locales/sr-LATN-RS/translation.toml b/frontend/public/locales/sr-LATN-RS/translation.toml index 25794d00e..3da79c020 100644 --- a/frontend/public/locales/sr-LATN-RS/translation.toml +++ b/frontend/public/locales/sr-LATN-RS/translation.toml @@ -96,6 +96,8 @@ pin = "Zakači datoteku (zadrži aktivnom nakon pokretanja alata)" poweredBy = "Omogućeno od strane" pro = "Pro" processTimeWarning = "Warning:Upozorenje: Ovaj proces može trajati i do minut, u zavisnosti od veličine dokumenta" +processingComplete = "Vaša datoteka je spremna." +processingCompleteMultiple = "{{count}} datoteka je spremno." property = "Svojstvo" quickPosition = "Brza pozicija" red = "Crveno" @@ -105,6 +107,7 @@ save = "Sačuvaj" saveToBrowser = "Sačuvaj u pregledaču" saveUnavailable = "Čuvanje nije dostupno za ovu stavku" seeDockerHub = "Pogledaj Docker Hub" +editSecret = "Uredi ovu vrednost" selectFillter = "-- Izaberi --" size = "Veličina" sponsor = "Sponzor" @@ -651,6 +654,7 @@ description = "Podesite spoljne provajdere autentikacije kao što su OAuth2 i SA disconnect = "Prekini vezu" disconnected = "Veza sa provajderom je uspešno prekinuta" disconnectError = "Prekid veze sa provajderom nije uspeo" +documentation = "Pogledaj dokumentaciju" imageResolutionFull = "Puna (originalna veličina)" imageResolutionReduced = "Smanjena (maks. 1200px)" linkedServices = "Povezane usluge" @@ -964,6 +968,18 @@ label = "Podrazumevani lokalitet" description = "Maksimalna veličina za otpremanje datoteka (npr., 100MB, 1GB)" label = "Ograničenje otpremanja datoteka" +[admin.settings.general.hideDisabledTools] +description = "Sakrij onemogućene alate iz interfejsa" +label = "Sakrij onemogućene alate" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Sakrij Google Drive dugme kada nije omogućeno" +label = "Sakrij Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Sakrij dugme za mobilni QR skener kada nije omogućeno" +label = "Sakrij mobilni skener" + [admin.settings.general.frontendUrl] description = "Osnovni URL za frontend (npr., https://pdf.example.com). Koristi se za linkove pozivnica e-poštom i otpremanja putem mobilnog QR koda. Ostavite prazno da biste koristili backend URL." label = "Frontend URL" @@ -1148,6 +1164,8 @@ title = "Bezbednost" [admin.settings.security.audit] label = "Reviziono logovanje" +showDetails = "Prikaži detalje nivoa revizije" +hideDetails = "Sakrij detalje nivoa revizije" [admin.settings.security.audit.enabled] description = "Prati radnje korisnika i sistemske događaje radi usklađenosti i bezbednosnog nadzora" @@ -1157,10 +1175,32 @@ label = "Omogući reviziono logovanje" description = "0=OFF, 1=BASIC, 2=STANDARD, 3=VERBOSE" label = "Nivo revizije" +[admin.settings.security.audit.levelDetails] +off = "Bez vođenja dnevnika revizije (osim kritičnih bezbednosnih događaja)" +basic = "Operacije nad PDF datotekama (kompresija, podela, spajanje itd.) i promene podešavanja. Beleži: status operacije (uspeh/neospeh), parametre metoda, vreme izvršavanja. Minimalna količina zapisa." +standard = "BASIC događaji plus: prijava/odjava korisnika, promene naloga, opšti GET zahtevi. Isključuje kontinuirane polling pozive (/auth/me, /app-config, /health itd.) radi smanjenja šuma u logu. Idealno za većinu okruženja." +verbose = "STANDARD događaji plus: kontinuirani polling pozivi, svi GET zahtevi, detaljno merenje vremena. Upozorenje: velika količina logova i uticaj na performanse." + [admin.settings.security.audit.retentionDays] description = "Broj dana zadržavanja revizionih logova" label = "Zadržavanje revizije (dani)" +[admin.settings.security.audit.advancedOptions] +title = "Napredne opcije" +description = "Sledeće opcije povećavaju vreme obrade i upotrebu memorije. Omogućite samo ako je zaista potrebno." + +[admin.settings.security.audit.captureFileHash] +description = "Izdvajanje SHA-256 heša otpremljenih PDF datoteka radi provere integriteta. Nezavisno od nivoa revizije." +label = "Zabeleži heš datoteke (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Izdvajanje polja autor iz PDF dokumenata tokom obrade. Zahteva parsiranje PDF-a, povećava latenciju. Nezavisno od nivoa revizije." +label = "Zabeleži PDF metapodatke o autoru" + +[admin.settings.security.audit.captureOperationResults] +description = "Zabeleži povratne vrednosti metoda. Nije preporučeno: značajno povećava obim loga i potrošnju diska." +label = "Zabeleži rezultate operacija" + [admin.settings.security.csrfDisabled] description = "Onemogući Cross-Site Request Forgery zaštitu (nije preporučeno)" label = "Onemogući CSRF zaštitu" @@ -1536,72 +1576,152 @@ tags = "uključi,dodaj,datoteka,prilog,prilozi" title = "Dodaj priloge" [audit] +configureAudit = "Podesi dnevnik revizije" +configureAuditMessage = "Podesite nivo beleženja, period zadržavanja i druga podešavanja u odeljku Security & Authentication." disabled = "Audit logovanje je onemogućeno" disabledMessage = "Omogućite audit logovanje u konfiguraciji aplikacije da biste pratili događaje sistema." enterpriseRequired = "Potrebna je Enterprise licenca" enterpriseRequiredMessage = "Sistem evidencije revizije je enterprise funkcija. Nadogradite na enterprise licencu da biste pristupili revizorskim zapisima i analitici." +goToSettings = "Idi na podešavanja revizije" notAvailable = "Audit sistem nije dostupan" notAvailableMessage = "Audit sistem nije podešen ili nije dostupan." -[audit.charts] -byType = "Događaji po tipu" -byUser = "Događaji po korisniku" -day = "Dan" -error = "Greška pri učitavanju grafikona" -month = "Mesec" -overTime = "Događaji kroz vreme" -title = "Audit kontrolna tabla" -week = "Nedelja" - [audit.error] title = "Greška pri učitavanju audit sistema" -[audit.events] -actions = "Radnje" -clearFilters = "Obriši" -details = "Detalji" -endDate = "Datum završetka" -error = "Greška pri učitavanju događaja" -eventDetails = "Detalji događaja" -filterByType = "Filtriraj po tipu" -filterByUser = "Filtriraj po korisniku" -ipAddress = "IP adresa" -noEvents = "Nema pronađenih događaja" -startDate = "Datum početka" -timestamp = "Vremenska oznaka" -title = "Audit događaji" -type = "Tip" -user = "Korisnik" -viewDetails = "Prikaži detalje" - [audit.export] clearFilters = "Obriši" description = "Izvezite audit događaje u CSV ili JSON format. Koristite filtere da ograničite izvezene podatke." endDate = "Datum završetka" error = "Izvoz podataka nije uspeo" exportButton = "Izvezi podatke" +fieldAuthor = "Autor (iz PDF-a)" +fieldDate = "Datum" +fieldDocumentName = "Naziv dokumenta" +fieldFileHash = "Heš datoteke (SHA-256)" +fieldIpAddress = "IP adresa" +fieldOperationResults = "Rezultati operacije" +fieldOutcome = "Ishod (Uspeh/Neuspeh)" +fieldTool = "Alat" +fieldUsername = "Korisničko ime" filterByType = "Filtriraj po tipu" filterByUser = "Filtriraj po korisniku" filters = "Filteri (opciono)" format = "Format izvoza" +selectFields = "Izaberite polja za uključivanje" startDate = "Datum početka" title = "Izvezi audit podatke" +verboseRequired = "Zahteva VERBOSE nivo revizije" [audit.systemStatus] +autoRefresh = "Automatsko osvežavanje" +autoRefreshLabel = "Automatsko osvežavanje svakih 30 s" +captureBySettings = "Omogućite u podešavanjima" +capturedFields = "Zabeležena polja" +date = "Datum" days = "dana" disabled = "Onemogućeno" +documentName = "Naziv dokumenta" enabled = "Omogućeno" +fileHash = "Heš datoteke" level = "Nivo audita" +pdfAuthor = "Autor PDF-a" retention = "Period čuvanja" status = "Audit logovanje" title = "Status sistema" +tool = "Alat" totalEvents = "Ukupno događaja" +username = "Korisničko ime" +verboseOnly = "Samo uz VERBOSE" + +[audit.stats] +activeUsers = "Aktivni korisnici" +attention = "Potrebna pažnja" +avgLatency = "Prosečna latencija" +error = "Greška pri učitavanju statistike" +errorLoadingStats = "Nije uspelo učitavanje statistike" +excellent = "Odlično" +good = "Dobro" +noData = "N/D" +successRate = "Stopa uspeha" +title = "Rezime" +totalEvents = "Ukupno događaja" +vsLastPeriod = "u odnosu na prethodni period" + +[audit.charts] +byTool = "Najkorišćeniji alati" +byType = "Događaji po tipu" +byUser = "Događaji po korisniku" +day = "Dan" +error = "Greška pri učitavanju grafikona" +hourlyActivity = "Satna aktivnost" +month = "Mesec" +noData = "Nema podataka za ovaj period" +overTime = "Događaji kroz vreme" +title = "Audit kontrolna tabla" +week = "Nedelja" + +[audit.events] +actions = "Radnje" +author = "Autor" +clearFilters = "Obriši" +details = "Detalji" +documentName = "Dokument" +endDate = "Datum završetka" +error = "Greška pri učitavanju događaja" +eventDetails = "Detalji događaja" +failure = "Neuspeh" +fileHash = "Heš datoteke" +filterByType = "Filtriraj po tipu" +filterByUser = "Filtriraj po korisniku" +ipAddress = "IP adresa" +noEvents = "Nema pronađenih događaja" +outcome = "Status" +sortAsc = "Sortiraj rastuće" +sortDesc = "Sortiraj opadajuće" +startDate = "Datum početka" +success = "Uspeh" +timestamp = "Vremenska oznaka" +title = "Audit događaji" +type = "Tip" +user = "Korisnik" +viewDetails = "Prikaži detalje" + +[audit.filters] +allOutcomes = "Sve" +failureOnly = "Samo neuspešni" +last7Days = "Poslednjih 7 dana" +last30Days = "Poslednjih 30 dana" +outcomeFilter = "Ishod" +quickPresets = "Brzi filteri" +successOnly = "Samo uspešni" +thisMonth = "Ovaj mesec" +today = "Danas" [audit.tabs] +clearData = "Obriši podatke" dashboard = "Kontrolna tabla" events = "Audit događaji" export = "Izvoz" +[audit.clearData] +cancel = "Otkaži" +codeDoesNotMatch = "Kod se ne poklapa" +codePlaceholder = "Ukucajte kod ovde" +confirmationCode = "Potvrdni kod" +confirmationRequired = "Obriši sve podatke dnevnika revizije" +confirmMessage = "Ovo će trajno ukloniti sve revizione logove. Unesite potvrdni kod ispod da nastavite." +confirmTitle = "Potvrdite da želite brisanje" +deleteButton = "Obriši" +enterCode = "Potvrdni kod" +enterCodeBelow = "Unesite kod tačno kao gore (razlikuju se velika/mala slova)" +initiateDelete = "Obriši sve podatke" +irreversible = "NEPOVRATNO" +success = "Uspešno" +successMessage = "Svi revizioni podaci su uspešno obrisani" +warning1 = "Ova radnja se ne može opozvati" +warning2 = "Brisanje revizionih podataka će trajno ukloniti sve istorijske revizione logove, uključujući bezbednosne događaje, aktivnosti korisnika i operacije nad datotekama iz baze podataka." + [auth] accessDenied = "Pristup odbijen" insufficientPermissions = "Nemate dozvolu da izvršite ovu radnju." @@ -2254,9 +2374,11 @@ copy = "Kopiraj" done = "Gotovo" error = "Greška" expand = "Proširi" +learnMore = "Saznaj više" lines = "linija" loading = "Učitavanje..." next = "Sledeće" +operation = "ova operacija" preview = "Pregled" previous = "Prethodno" refresh = "Osveži" @@ -2920,6 +3042,7 @@ copyStack = "Kopiraj trag greške (Stack Trace)" discordSubmit = "Discord - pošalji poruku za podršku" dismissAllErrors = "Zanemari sve greške" encryptedPdfMustRemovePassword = "Ovaj PDF je šifrovan ili zaštićen lozinkom. Otključajte ga pre konvertovanja u PDF/A." +generic = "Došlo je do greške" github = "Pošalji prijavu na GitHub-u" githubSubmit = "GitHub - pošalji prijavu" incorrectPasswordProvided = "Lozinka za PDF je netačna ili nije uneta." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Vaša pretplata je uspešno nadograđena. Postojeći l upgradeSuccess = "Plaćanje uspešno! Vaša pretplata je nadograđena. Licenca je ažurirana na vašem serveru. Uskoro ćete dobiti potvrdni email." upgradeTitle = "Nadogradi na {{planName}}" yearly = "Godišnje" +checkoutOpened = "Plaćanje otvoreno u pregledaču" +checkoutInstructions = "Dovršite kupovinu u prozoru pregledača koji se upravo otvorio. Nakon završetka plaćanja, vratite se ovde i kliknite dugme ispod da osvežite informacije o naplati." +refreshBilling = "Završio/la sam plaćanje – Osveži naplatu" +closeLater = "Uradiću ovo kasnije" [payment.emailStage] continue = "Nastavi" @@ -4679,6 +4806,13 @@ prompt = "Izaberite stranicu za ekstrakciju tabele" submit = "Izvuci" title = "PDF u CSV" +[PDFToXLSX] +header = "PDF u Excel" +prompt = "Izaberite stranice za izdvajanje tabela" +submit = "Konvertuj" +title = "PDF u Excel (XLSX)" +tags = "proračunska tabela,excel,xlsx,tabela,izdvajanje,konverzija" + [PDFToHTML] credit = "Ova usluga koristi pdftohtml za konverziju fajlova." header = "PDF u HTML" @@ -4835,6 +4969,7 @@ customPricing = "Prilagođeno" featureComparison = "Poređenje funkcija" from = "Od" hideComparison = "Sakrij poređenje funkcija" +included = "Uključeno" includedInCurrent = "Uključeno u vaš plan" licensedSeats = "Licencirano: {{count}} mesta" manage = "Upravljaj" @@ -4852,9 +4987,11 @@ title = "Aktivni paket" [plan.availablePlans] subtitle = "Izaberite paket koji odgovara vašim potrebama" +loadError = "Nije moguće učitati cene plana. Koriste se podrazumevane vrednosti." title = "Dostupni paketi" [plan.enterprise] +siteLicense = "Licenca za organizaciju" highlight1 = "Prilagođene cene" highlight2 = "Posvećena podrška" highlight3 = "Najnovije funkcije" @@ -4928,6 +5065,81 @@ keyDescription = "Nalepite licencni ključ iz e-pošte" success = "Licenca aktivirana!" successMessage = "Vaša licenca je uspešno aktivirana. Sada možete zatvoriti ovaj prozor." +[plan.team] +name = "Team" +siteLicense = "Licenca za organizaciju" + +[credits] +enableOverageBilling = "Omogući naplatu prekoračenja" +maybeLater = "Možda kasnije" +upgrade = "Nadogradi" + +[credits.modal] +advancedMonitoring = "Napredno nadgledanje" +allInOneWorkspace = "Sve-u-jednom PDF radni prostor (prikazivač, alati i agent)" +apiSandbox = "API sandbox" +contactSales = "Kontaktiraj prodaju" +creditsRemaining = "Preostalo {{current}} od {{total}}" +creditsThisMonth = "Mesečni krediti" +current = "Trenutni plan" +customPricing = "Prilagođeno" +customSmartFolders = "Prilagođene pametne fascikle" +dedicatedSupportSlas = "Posvećena podrška i SLA-ovi" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Sve u Credits, plus:" +everythingInFree = "Sve u Free, plus:" +fasterThroughput = "10x brži protok" +forRegularWork = "Za uobičajen rad sa PDF-om:" +freeTier = "Besplatan nivo" +fullyPrivateFiles = "Potpuno privatne datoteke" +largeFileProcessing = "Obrada velikih datoteka" +managedMemberMessage = "Imate neograničen pristup kreditima preko svog tima. Ako vam treba pomoć, obratite se vođi tima." +managedMemberTitle = "Neograničeni krediti" +meteringBillingNote = "Krediti za prekoračenje se naplaćuju mesečno zajedno sa vašom Team pretplatom. Pratite potrošnju u podešavanjima naloga u bilo kom trenutku." +meteringExplanation = "Vaš plan Team uključuje {{credits}} kredita mesečno. Kada ih potrošite, naplata prekoračenja automatski obezbeđuje dodatne kredite kako ne biste morali da prekidate rad." +meteringIncluded = "{{credits}} kredita/mesec uključeno uz Team" +meteringNoCommitment = "Bez obaveze, otkazivanje u bilo kom trenutku" +meteringNeverRunOut = "Krediti nikada ne ponestaju" +meteringPayAsYouGo = "Plaćate samo koliko potrošite" +meteringPrice = "Dodatni krediti po {{price}}/kreditu" +meteringTitle = "Naplata prekoračenja po potrošnji" +monthlyCredits = "mesečni krediti" +orgWideAccess = "Kontrole pristupa na nivou organizacije" +overage = "prekoračenje" +perMonth = "/mesec" +popular = "Popularno" +premiumAiModels = "Premium AI modeli" +prioritySupport = "Prioritetna podrška" +privateDocCloud = "Privatni oblak dokumenata" +ragFineTuning = "RAG + fino podešavanje" +secureApiAccess = "Bezbedan API pristup" +selfHostLink = "Pregledaj dokumentaciju i planove" +selfHostPrompt = "Želite da sami hostujete?" +standardThroughput = "Standardni protok" +subtitle = "Nadogradite na Team za 10x više kredita i bržu obradu." +subtitlePro = "Omogućite automatsku naplatu prekoračenja da vam krediti nikad ne ponestanu." +teamLeaderOnly = "Samo vođe tima mogu da omoguće naplatu prekoračenja" +teamSubscription = "Team" +titleExhausted = "Iskoristili ste svoje besplatne kredite" +titleExhaustedPro = "Ponestalo vam je kredita" +unlimitedApiAccess = "Neograničen API pristup" +unlimitedMonthlyCredits = "Licenca za organizaciju" +unlimitedSeats = "Neograničen broj korisnika" + +[credits.modal.features] +everythingInCredits = "Sve u Credits, plus:" +everythingInFree = "Sve u Free, plus:" +forRegularWork = "Za uobičajen rad sa PDF-om:" + +[credits.insufficient] +brief = "Nedovoljno kredita. Potrebno je {{required}} kredita, a imate {{current}}." +freeTier = "Nadogradite na Team za 10x više kredita i neograničenu naplatu prekoračenja." +managedMember = "Obratite se vođi tima za pomoć." +message = "Nemate dovoljno kredita za pokretanje {{tool}}. Trenutno imate {{current}} kredita." +messageWithAmount = "Potrebno je {{required}} kredita za pokretanje {{tool}}, ali imate samo {{current}}." +teamMember = "Omogućite naplatu prekoračenja da vam krediti nikad ne ponestanu." +title = "Nedovoljno kredita" + [printFile] header = "Odštampaj datoteku na štampaču" submit = "Štampaj" @@ -5565,6 +5777,70 @@ user = "Prijavljeni kao" saas = "Stirling Cloud" selfhosted = "Samohostovano" +[settings.planBilling] +currentPlan = "Trenutni plan" +loading = "Učitavanje informacija o naplati..." +notAvailable = "Plan i naplata su dostupni samo kada ste povezani na Stirling Cloud (SaaS režim)." +title = "Plan i naplata" + +[settings.planBilling.billing] +manageBilling = "Upravljaj naplatom" +nextBillingDate = "Sledeći datum naplate" +overageCost = "Trenutni trošak prekoračenja: {{amount}} ({{credits}} kredita)" + +[settings.planBilling.credits] +estimatedCost = "Procena troška: {{amount}}" +freeTierInfo = "Besplatan plan uključuje {{freeCredits}} kredita mesečno. Nadogradite na Team za {{teamCredits}} kredita/mesec i naplatu prekoračenja po potrošnji." +included = "{{count}} kredita/mesec (uključeno)" +noOverage = "Nema troškova prekoračenja ovog meseca. Koristite uključenih {{count}} kredita." +overage = "+ {{count}} prekoračenja" +overageInfo = "Krediti za prekoračenje se naplaćuju po {{price}} po kreditu. Plaćate samo ono što potrošite preko mesečne kvote." +title = "Upotreba kredita" + +[settings.planBilling.errors] +fetchFailed = "Nije moguće preuzeti podatke o naplati" +retry = "Pokušaj ponovo" + +[settings.planBilling.status] +active = "Aktivan" +canceled = "Otkazan" +pastDue = "Neplaćeno na vreme" +trial = "Proba" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Prilagođene enterprise funkcije i podrška" +free = "Free" +freeDescription = "50 kredita mesečno" +team = "Team" +teamBadge = "Team" +teamDescription = "500 kredita/mesec uključeno, automatska naplata prekoračenja za neprekidnu uslugu" +teamTooltipCredits = "Plan Team uključuje {{credits}} kredita/mesec." +teamTooltipFineprint = "Plaćate samo ono što potrošite preko uključenih kredita." +teamTooltipOverage = "Automatska naplata prekoračenja po {{price}}/kreditu obezbeđuje neprekidnu uslugu." + +[settings.planBilling.team] +managedByTeam = "Pod upravom tima" +memberCount = "{{count}} članova tima" + +[settings.planBilling.trial] +daysRemaining = "Preostalo {{days}} dana" +daysRemainingFull = "Vaša proba se završava za {{days}} dana" +endDate = "Ističe: {{date}}" +endsOn = "Kraj probe" +title = "Besplatna proba je aktivna" + +[settings.planBilling.upgrade] +cta = "Nadogradi na Team" +featureApi = "API pristup za automatizaciju" +featureCredits = "{{teamCredits}} kredita mesečno (naspram {{freeCredits}} na Free)" +featureMembers = "Neograničen broj članova tima" +featureSupport = "Prioritetna podrška" +featureThroughput = "Brži protok obrade" +opensInBrowser = "Otvara se u pregledaču radi dovršetka nadogradnje" +subtitle = "Nadogradite na Team za:" +title = "Nadogradite svoj plan" + [settings.developer] apiKeys = "API ključevi" title = "Razvoj" @@ -5689,6 +5965,9 @@ people = "Osobe" teams = "Timovi" title = "Radni prostor" +[settings.team] +title = "Tim" + [setup] description = "Započnite izborom načina na koji želite da koristite Stirling PDF" welcome = "Dobrodošli u Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "Automatska podela sa razdelnim listovima" name = "Razdelnik strana" tooltip = "Koristite razdelne listove sa QR kodom između dokumenata prilikom skeniranja" +[split.methods.byPoster] +name = "Delovi za štampu" +desc = "Podeli velike stranice na formate pogodne za štampu" +tooltip = "Podeli prevelike stranice na manje delove pogodne za štampu na standardnom papiru (A4, Letter, itd.)" + [split.methods.byPages] desc = "Izdvojite određene strane (1,3,5-10)" name = "Brojevi strana" @@ -6029,6 +6313,7 @@ tooltip = "Navedite maksimalnu veličinu datoteke (npr. 10MB, 500KB)" [split.methods.prefix] splitAt = "Podeli na" splitBy = "Podeli po" +splitInto = "Podeli na" [split.methodSelection.tooltip] bullet1 = "Kliknite na karticu metoda da je izaberete" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Prvo izaberite metod deljenja" chooseMethod = "Izaberite metod" settings = "Podešavanja" +[split.poster] +rightToLeft = "Podeli zdesna ulevo" + +[split.poster.pageSize] +label = "Ciljna veličina stranice" +description = "Veličina izlaznih stranica za štampu" + +[split.poster.xFactor] +label = "Horizontalne podele" +description = "Broj kolona na koje se deli svaka stranica" + +[split.poster.yFactor] +label = "Vertikalne podele" +description = "Broj redova na koje se deli svaka stranica" + [split.tooltip.byChapters] bullet1 = "Nivo obeleživača: Na kom nivou deliti (1 = najviši nivo)" bullet2 = "Uključi metapodatke: Sačuvaj svojstva dokumenta" @@ -6085,6 +6385,14 @@ bullet5 = "Omogućite dupleks režim ako skenirate obe strane razdelnih listova" text = "Automatski podelite skenirane dokumente koristeći fizičke razdelne listove sa QR kodovima. Savršeno za obradu više dokumenata skeniranih zajedno." title = "Podela razdelnikom strana" +[split.tooltip.byPoster] +bullet1 = "Ciljna veličina stranice: izaberite veličinu izlaznog papira (A4, Letter itd.)" +bullet2 = "Horizontalne/vertikalne podele: veličina mreže za deljenje" +bullet3 = "Zdesna ulevo: Obrni redosled kolona za RTL rasporede" +bullet4 = "Odštampajte i sastavite delove da napravite poster" +text = "Podelite velike PDF stranice na manje delove pogodne za standardne veličine papira. Savršeno za pravljenje postera od prevelikih stranica." +title = "Podela za štampu postera" + [split.tooltip.byPages] bullet1 = "Jednostruke tačke podele: 3,7 (deli posle strana 3 i 7)" bullet2 = "Opsežne tačke podele: 3-8 (deli pre strane 3 i posle strane 8)" @@ -6364,9 +6672,13 @@ tags = "uhvati-web,sačuvaj-stranicu,web-u-doc,arhiva" title = "URL u PDF" [usage] +aboutUsageAnalytics = "O analitici korišćenja" +configureSettings = "Podesi postavke analitike" error = "Greška pri učitavanju statistike korišćenja" noData = "Nema dostupnih podataka" noDataMessage = "Trenutno nema dostupnih statistika korišćenja." +usageAnalyticsExplanation = "Analitika korišćenja prati zahteve ka endpointima i obrasce korišćenja alata. U kombinaciji sa kontrolnom tablom dnevnika revizije, dobijate potpun uvid u aktivnost sistema, performanse i bezbednosne događaje." +viewAuditLogs = "Prikaži dnevnike revizije" [usage.chart] title = "Grafikon korišćenja endpointa" @@ -6947,3 +7259,278 @@ cancel = "Otkaži" confirm = "Raspakuj" message = "Ovaj ZIP sadrži {{count}} datoteka. Ipak raspakovati?" title = "Velika ZIP datoteka" + +[cloudBadge] +tooltip = "Ova operacija će potrošiti vaše cloud kredite" + +[team] +cancelInviteError = "Neuspešno otkazivanje pozivnice" +confirmCancelInvite = "Da li ste sigurni da želite da otkažete ovu pozivnicu?" +confirmLeave = "Da li ste sigurni da želite da napustite ovaj tim?" +confirmLeaveLeader = "Kao vođa tima, napuštanjem ćete biti uklonjeni iz tima. Da li ste sigurni?" +confirmRemove = "Da li ste sigurni da želite da uklonite ovog člana?" +editName = "Uredi naziv tima" +inviteCancelled = "Pozivnica otkazana" +inviteError = "Neuspešno slanje pozivnice" +inviteSent = "Pozivnica uspešno poslata" +leader = "Vođa" +leaveButton = "Napusti tim" +leaveError = "Neuspešno napuštanje tima" +leaveSuccess = "Uspešno ste napustili tim" +loading = "Učitavanje informacija o timu..." +memberCount = "{{count}} članova" +memberRemoved = "Član uspešno uklonjen" +namePlaceholder = "Unesite naziv tima" +personal = "Lični" +removeError = "Neuspešno uklanjanje člana" +renameError = "Neuspešno preimenovanje tima" +renameSuccess = "Tim uspešno preimenovan" + +[team.invitationBanner] +message = "vas je pozvao/la da se pridružite" +acceptButton = "Prihvati" +rejectButton = "Odbij" + +[team.features] +badge = "Funkcionalnosti tima" +subtitle = "Saradnja sa vašim timom" +title = "Timska saradnja" +viewPlans = "Pogledaj planove" + +[team.features.billing] +description = "Upravljaj naplatom i pretplatama" +title = "Upravljanje naplatom" + +[team.features.credits] +description = "Zajednički fond kredita za sve članove" +title = "Deljeni krediti" + +[team.features.dashboard] +description = "Pregled aktivnosti i korišćenja tima" +title = "Kontrolna tabla tima" + +[team.features.invite] +description = "Dodajte članove u svoj tim" +title = "Pozovi članove" + +[team.invite] +cancelLabel = "Otkaži" +invalidEmail = "Nevažeća adresa e-pošte" +placeholder = "Unesite adresu e-pošte" +sendButton = "Pošalji pozivnicu" +title = "Pozovi člana tima" + +[team.members] +emailColumn = "E-pošta" +empty = "Još nema članova tima" +nameColumn = "Ime" +pending = "Na čekanju" +remove = "Ukloni" +roleColumn = "Uloga" +title = "Članovi tima" + +[team.upgrade] +button = "Nadogradi na Team" +description = "Otključajte funkcije timske saradnje" +title = "Nadogradi na plan Team" + +[provider.oauth2.google] +scope = "Autentikacija za prijavu" + +[provider.oauth2.google.clientId] +label = "ID klijenta" +description = "OAuth2 ID klijenta iz Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Tajna klijenta" +description = "OAuth2 tajna klijenta iz Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Opsezi" +description = "Zarezom odvojeni OAuth2 opsezi" + +[provider.oauth2.google.useAsUsername] +label = "Koristi kao korisničko ime" +description = "Polje koje će se koristiti kao korisničko ime (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Autentikacija za prijavu" + +[provider.oauth2.github.clientId] +label = "ID klijenta" +description = "OAuth2 ID klijenta iz GitHub Developer Settings" + +[provider.oauth2.github.clientSecret] +label = "Tajna klijenta" +description = "OAuth2 tajna klijenta iz GitHub Developer Settings" + +[provider.oauth2.github.scopes] +label = "Opsezi" +description = "Zarezom odvojeni OAuth2 opsezi" + +[provider.oauth2.github.useAsUsername] +label = "Koristi kao korisničko ime" +description = "Polje koje će se koristiti kao korisničko ime (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Issuer URL" +description = "URL OpenID Connect Discovery krajnje tačke za Keycloak realm" + +[provider.oauth2.keycloak.clientId] +label = "ID klijenta" +description = "OAuth2 ID klijenta iz Keycloak-a" + +[provider.oauth2.keycloak.clientSecret] +label = "Tajna klijenta" +description = "OAuth2 tajna klijenta iz Keycloak-a" + +[provider.oauth2.keycloak.scopes] +label = "Opsezi" +description = "Zarezom odvojeni OAuth2 opsezi" + +[provider.oauth2.keycloak.useAsUsername] +label = "Koristi kao korisničko ime" +description = "Polje koje će se koristiti kao korisničko ime (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "Generic OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Omogući Generic OAuth2" +description = "Omogući autentikaciju pomoću prilagođenog OAuth2 provajdera" + +[provider.oauth2.generic.provider] +label = "Naziv provajdera" +description = "Naziv vašeg OAuth2 provajdera (npr. Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "Issuer URL" +description = "Provajder koji podržava OpenID Connect Discovery (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "ID klijenta" +description = "OAuth2 ID klijenta od vašeg provajdera" + +[provider.oauth2.generic.clientSecret] +label = "Tajna klijenta" +description = "OAuth2 tajna klijenta od vašeg provajdera" + +[provider.oauth2.generic.scopes] +label = "Opsezi" +description = "Zarezom odvojeni OAuth2 opsezi" + +[provider.oauth2.generic.useAsUsername] +label = "Koristi kao korisničko ime" +description = "Polje koje će se koristiti kao korisničko ime" + +[provider.oauth2.generic.autoCreateUser] +label = "Automatski kreiraj korisnike" +description = "Automatski kreiraj korisničke naloge pri prvoj OAuth2 prijavi" + +[provider.oauth2.generic.blockRegistration] +label = "Blokiraj registraciju" +description = "Spreči registraciju novih korisnika putem OAuth2" + +[provider.smtp] +name = "SMTP pošta" +scope = "Obaveštenja e-poštom" + +[provider.smtp.enabled] +label = "Omogući poštu" +description = "Omogući obaveštenja e-poštom i SMTP funkcionalnost" + +[provider.smtp.host] +label = "SMTP host" +description = "Naziv hosta ili IP adresa vašeg SMTP servera" + +[provider.smtp.port] +label = "SMTP port" +description = "Broj porta za SMTP vezu (obično 25, 465 ili 587)" + +[provider.smtp.username] +label = "SMTP korisničko ime" +description = "Korisničko ime za SMTP autentikaciju" + +[provider.smtp.password] +label = "SMTP lozinka" +description = "Lozinka za SMTP autentikaciju" + +[provider.smtp.from] +label = "Adresa pošiljaoca" +description = "Adresa e-pošte koja će se koristiti kao pošiljalac" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "Omogući SAML2" +description = "Omogući SAML2 autentikaciju (samo Enterprise)" + +[provider.saml2.provider] +label = "Naziv provajdera" +description = "Naziv vašeg SAML2 provajdera" + +[provider.saml2.registrationId] +label = "ID registracije" +description = "Naziv vaše Service Provider (SP) aplikacije" + +[provider.saml2.idpMetadataUri] +label = "URI metapodataka IDP-a" +description = "URI metapodataka vašeg provajdera" + +[provider.saml2.idpSingleLoginUrl] +label = "URL za IDP jednokratnu prijavu" +description = "URL za pokretanje SSO-a" + +[provider.saml2.idpSingleLogoutUrl] +label = "URL za IDP jednokratnu odjavu" +description = "URL za pokretanje SLO-a" + +[provider.saml2.idpIssuer] +label = "IDP izdavač" +description = "ID vašeg provajdera" + +[provider.saml2.idpCert] +label = "IDP sertifikat" +description = "Putanja do sertifikata (npr. classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Privatni ključ" +description = "Putanja do vašeg privatnog ključa" + +[provider.saml2.spCert] +label = "SP sertifikat" +description = "Putanja do vašeg potpisnog sertifikata" + +[provider.saml2.autoCreateUser] +label = "Automatski kreiraj korisnike" +description = "Automatski kreiraj korisničke naloge pri prvoj SAML2 prijavi" + +[provider.saml2.blockRegistration] +label = "Blokiraj registraciju" +description = "Spreči registraciju novih korisnika putem SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "Uvoz datoteka" + +[provider.googledrive.enabled] +label = "Omogući birač datoteka za Google Drive" +description = "Dozvoli korisnicima da uvoze datoteke direktno iz Google Drive-a" + +[provider.googledrive.clientId] +label = "ID klijenta" +description = "Google OAuth 2.0 Client ID iz Google Cloud Console" + +[provider.googledrive.apiKey] +label = "API ključ" +description = "Google API ključ za Google Picker API iz Google Cloud Console" + +[provider.googledrive.appId] +label = "ID aplikacije" +description = "Google Drive App ID iz Google Cloud Console" diff --git a/frontend/public/locales/sv-SE/translation.toml b/frontend/public/locales/sv-SE/translation.toml index 56c8b88ec..c27e8f348 100644 --- a/frontend/public/locales/sv-SE/translation.toml +++ b/frontend/public/locales/sv-SE/translation.toml @@ -96,6 +96,8 @@ pin = "Fäst fil (behåll aktiv efter verktygskörning)" poweredBy = "Drivs av" pro = "Pro" processTimeWarning = "Varning: Denna process kan ta upp till en minut beroende på filstorlek" +processingComplete = "Din fil är klar." +processingCompleteMultiple = "{{count}} filer är klara." property = "Egenskap" quickPosition = "Snabbposition" red = "Röd" @@ -105,6 +107,7 @@ save = "Spara" saveToBrowser = "Spara till webbläsare" saveUnavailable = "Spara är inte tillgängligt för detta objekt" seeDockerHub = "Se Docker Hub" +editSecret = "Redigera detta värde" selectFillter = "-- Välj --" size = "Storlek" sponsor = "Sponsör" @@ -651,6 +654,7 @@ description = "Konfigurera externa autentiseringsleverantörer som OAuth2 och SA disconnect = "Koppla från" disconnected = "Leverantör frånkopplad" disconnectError = "Det gick inte att koppla från leverantören" +documentation = "Visa dokumentation" imageResolutionFull = "Full (originalstorlek)" imageResolutionReduced = "Reducerad (max 1200px)" linkedServices = "Länkade tjänster" @@ -964,6 +968,18 @@ label = "Standardlocale" description = "Maximal filuppladdningsstorlek (t.ex. 100MB, 1GB)" label = "Gräns för filuppladdning" +[admin.settings.general.hideDisabledTools] +description = "Dölj inaktiverade verktyg i gränssnittet" +label = "Dölj inaktiverade verktyg" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Dölj Google Drive-knappen när den inte är aktiverad" +label = "Dölj Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Dölj knappen för mobil QR-skanner när den inte är aktiverad" +label = "Dölj mobil QR-skanner" + [admin.settings.general.frontendUrl] description = "Bas-URL för frontend (t.ex. https://pdf.example.com). Används för e-postinbjudningslänkar och mobila QR-koduppladdningar. Lämna tomt för att använda backend-URL." label = "Frontend-URL" @@ -1148,6 +1164,8 @@ title = "Säkerhet" [admin.settings.security.audit] label = "Granskningsloggning" +showDetails = "Visa granskningsnivåns detaljer" +hideDetails = "Dölj granskningsnivåns detaljer" [admin.settings.security.audit.enabled] description = "Spåra användaråtgärder och systemhändelser för regelefterlevnad och säkerhetsövervakning" @@ -1157,10 +1175,32 @@ label = "Aktivera granskningsloggning" description = "0=AV, 1=GRUNDLÄGGANDE, 2=STANDARD, 3=UTFÖRLIG" label = "Granskningsnivå" +[admin.settings.security.audit.levelDetails] +off = "Ingen granskningsloggning (förutom kritiska säkerhetshändelser)" +basic = "PDF-filåtgärder (komprimera, dela, slå ihop osv.) och ändringar av inställningar. Registrerar: åtgärdsstatus (lyckad/misslyckad), metodparametrar, tidsåtgång. Minimal loggvolym." +standard = "BASIC-händelser plus: inloggning/utloggning, kontoförändringar, allmänna GET-begäranden. Utesluter kontinuerliga pollningsanrop (/auth/me, /app-config, /health osv.) för att minska loggbrus. Idealiskt för de flesta installationer." +verbose = "STANDARD-händelser plus: kontinuerliga pollningsanrop, alla GET-begäranden, detaljerad tidsmätning. Varning: hög loggvolym och prestandapåverkan." + [admin.settings.security.audit.retentionDays] description = "Antal dagar att behålla granskningsloggar" label = "Behållningstid (dagar)" +[admin.settings.security.audit.advancedOptions] +title = "Avancerade alternativ" +description = "Följande alternativ ökar behandlingstid och minnesanvändning. Aktivera endast om det verkligen behövs." + +[admin.settings.security.audit.captureFileHash] +description = "Extrahera SHA-256-hash för uppladdade PDF-filer för integritetsverifiering. Oberoende av granskningsnivå." +label = "Registrera filhash (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Extrahera författarfältet från PDF-dokument under bearbetning. Kräver PDF-parsning, ökar svarstiden. Oberoende av granskningsnivå." +label = "Registrera PDF-författarmetadata" + +[admin.settings.security.audit.captureOperationResults] +description = "Registrera metodernas returvärden. Rekommenderas inte: ökar loggvolym och diskutrymme avsevärt." +label = "Registrera åtgärdsresultat" + [admin.settings.security.csrfDisabled] description = "Inaktivera skydd mot Cross-Site Request Forgery (rekommenderas inte)" label = "Inaktivera CSRF-skydd" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "Konfigurera granskningsloggning" +configureAuditMessage = "Justera granskningsnivå, lagringsperiod och andra inställningar i avsnittet Säkerhet och autentisering." disabled = "Granskningsloggning är inaktiverad" disabledMessage = "Aktivera granskningsloggning i din applikationskonfiguration för att spåra systemhändelser." enterpriseRequired = "Enterprise-licens krävs" enterpriseRequiredMessage = "Revisionsloggningen är en Enterprise-funktion. Uppgradera till en Enterprise-licens för att få åtkomst till revisionsloggar och analys." +goToSettings = "Gå till granskningsinställningar" notAvailable = "Granskningssystemet är inte tillgängligt" notAvailableMessage = "Granskningssystemet är inte konfigurerat eller inte tillgängligt." -[audit.charts] -byType = "Händelser efter typ" -byUser = "Händelser per användare" -day = "Dag" -error = "Fel vid inläsning av diagram" -month = "Månad" -overTime = "Händelser över tid" -title = "Granskningsinstrumentpanel" -week = "Vecka" - [audit.error] title = "Fel vid inläsning av granskningssystemet" -[audit.events] -actions = "Åtgärder" -clearFilters = "Rensa" -details = "Detaljer" -endDate = "Slutdatum" -error = "Fel vid inläsning av händelser" -eventDetails = "Händelsedetaljer" -filterByType = "Filtrera efter typ" -filterByUser = "Filtrera efter användare" -ipAddress = "IP-adress" -noEvents = "Inga händelser hittades" -startDate = "Startdatum" -timestamp = "Tidsstämpel" -title = "Granskningshändelser" -type = "Typ" -user = "Användare" -viewDetails = "Visa detaljer" - [audit.export] clearFilters = "Rensa" description = "Exportera granskningshändelser till CSV- eller JSON-format. Använd filter för att begränsa den exporterade datan." endDate = "Slutdatum" error = "Det gick inte att exportera data" exportButton = "Exportera data" +fieldAuthor = "Författare (från PDF)" +fieldDate = "Datum" +fieldDocumentName = "Dokumentnamn" +fieldFileHash = "Filhash (SHA-256)" +fieldIpAddress = "IP-adress" +fieldOperationResults = "Åtgärdsresultat" +fieldOutcome = "Utfall (Lyckat/Misslyckat)" +fieldTool = "Verktyg" +fieldUsername = "Användarnamn" filterByType = "Filtrera efter typ" filterByUser = "Filtrera efter användare" filters = "Filter (valfritt)" format = "Exportformat" +selectFields = "Välj fält att inkludera" startDate = "Startdatum" title = "Exportera granskningsdata" +verboseRequired = "Kräver VERBOSE-granskningsnivå" [audit.systemStatus] +autoRefresh = "Automatisk uppdatering" +autoRefreshLabel = "Uppdatera automatiskt var 30 s" +captureBySettings = "Aktivera i inställningarna" +capturedFields = "Registrerade fält" +date = "Datum" days = "dagar" disabled = "Inaktiverad" +documentName = "Dokumentnamn" enabled = "Aktiverad" +fileHash = "Filhash" level = "Granskningsnivå" +pdfAuthor = "PDF-författare" retention = "Lagringsperiod" status = "Granskningsloggning" title = "Systemstatus" +tool = "Verktyg" totalEvents = "Totalt antal händelser" +username = "Användarnamn" +verboseOnly = "Endast VERBOSE" + +[audit.stats] +activeUsers = "Aktiva användare" +attention = "Åtgärd krävs" +avgLatency = "Genomsnittlig latens" +error = "Fel vid inläsning av statistik" +errorLoadingStats = "Det gick inte att läsa in statistik" +excellent = "Utmärkt" +good = "Bra" +noData = "Ej tillämpligt" +successRate = "Lyckandefrekvens" +title = "Översikt" +totalEvents = "Totalt antal händelser" +vsLastPeriod = "jämfört med föregående period" + +[audit.charts] +byTool = "Mest använda verktyg" +byType = "Händelser efter typ" +byUser = "Händelser per användare" +day = "Dag" +error = "Fel vid inläsning av diagram" +hourlyActivity = "Timvis aktivitet" +month = "Månad" +noData = "Inga data för denna period" +overTime = "Händelser över tid" +title = "Granskningsinstrumentpanel" +week = "Vecka" + +[audit.events] +actions = "Åtgärder" +author = "Författare" +clearFilters = "Rensa" +details = "Detaljer" +documentName = "Dokument" +endDate = "Slutdatum" +error = "Fel vid inläsning av händelser" +eventDetails = "Händelsedetaljer" +failure = "Misslyckad" +fileHash = "Filhash" +filterByType = "Filtrera efter typ" +filterByUser = "Filtrera efter användare" +ipAddress = "IP-adress" +noEvents = "Inga händelser hittades" +outcome = "Status" +sortAsc = "Sortera stigande" +sortDesc = "Sortera fallande" +startDate = "Startdatum" +success = "Lyckad" +timestamp = "Tidsstämpel" +title = "Granskningshändelser" +type = "Typ" +user = "Användare" +viewDetails = "Visa detaljer" + +[audit.filters] +allOutcomes = "Alla" +failureOnly = "Endast misslyckade" +last7Days = "Senaste 7 dagarna" +last30Days = "Senaste 30 dagarna" +outcomeFilter = "Utfall" +quickPresets = "Snabbfilter" +successOnly = "Endast lyckade" +thisMonth = "Denna månad" +today = "Idag" [audit.tabs] +clearData = "Rensa data" dashboard = "Instrumentpanel" events = "Granskningshändelser" export = "Exportera" +[audit.clearData] +cancel = "Avbryt" +codeDoesNotMatch = "Koden stämmer inte" +codePlaceholder = "Skriv koden här" +confirmationCode = "Bekräftelsekod" +confirmationRequired = "Ta bort all granskningsdata" +confirmMessage = "Detta tar permanent bort alla granskningsloggar. Ange bekräftelsekoden nedan för att fortsätta." +confirmTitle = "Bekräfta att du vill ta bort" +deleteButton = "Ta bort" +enterCode = "Bekräftelsekod" +enterCodeBelow = "Ange koden exakt som ovan (skiftlägeskänsligt)" +initiateDelete = "Ta bort all data" +irreversible = "OÅTERKALLELIGT" +success = "Lyckades" +successMessage = "All granskningsdata har rensats" +warning1 = "Denna åtgärd kan inte ångras" +warning2 = "Att ta bort granskningsdata tar permanent bort alla historiska granskningsloggar, inklusive säkerhetshändelser, användaraktiviteter och filåtgärder från databasen." + [auth] accessDenied = "Åtkomst nekad" insufficientPermissions = "Du har inte behörighet att utföra denna åtgärd." @@ -2254,9 +2374,11 @@ copy = "Kopiera" done = "Klar" error = "Fel" expand = "Fäll ut" +learnMore = "Läs mer" lines = "rader" loading = "Läser in..." next = "Nästa" +operation = "denna åtgärd" preview = "Förhandsgranska" previous = "Föregående" refresh = "Uppdatera" @@ -2920,6 +3042,7 @@ copyStack = "Kopiera stackspårning" discordSubmit = "Discord - Skicka in ett supportinlägg" dismissAllErrors = "Avfärda alla fel" encryptedPdfMustRemovePassword = "Denna PDF är krypterad eller lösenordsskyddad. Lås upp den innan konvertering till PDF/A." +generic = "Ett fel inträffade" github = "Skicka in en fråga på GitHub" githubSubmit = "GitHub - Skicka in en fråga" incorrectPasswordProvided = "PDF‑lösenordet är felaktigt eller saknas." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Din prenumeration har uppgraderats. Din befintliga lic upgradeSuccess = "Betalning lyckades! Din prenumeration har uppgraderats. Licensen har uppdaterats på din server. Du får snart en bekräftelse via e-post." upgradeTitle = "Uppgradera till {{planName}}" yearly = "Årsvis" +checkoutOpened = "Kassan öppnades i webbläsaren" +checkoutInstructions = "Slutför ditt köp i webbläsarfönstret som just öppnades. När betalningen är klar, återvänd hit och klicka på knappen nedan för att uppdatera din faktureringsinformation." +refreshBilling = "Jag har slutfört betalningen – uppdatera fakturering" +closeLater = "Jag gör detta senare" [payment.emailStage] continue = "Fortsätt" @@ -4679,6 +4806,13 @@ prompt = "Välj sida för att extrahera tabell" submit = "Extrahera" title = "PDF till CSV" +[PDFToXLSX] +header = "PDF till Excel" +prompt = "Välj sidor för att extrahera tabeller" +submit = "Konvertera" +title = "PDF till Excel (XLSX)" +tags = "kalkylblad,excel,xlsx,tabell,extrahera,konvertera" + [PDFToHTML] credit = "Denna tjänst använder pdftohtml för filkonvertering." header = "PDF till HTML" @@ -4835,6 +4969,7 @@ customPricing = "Anpassad" featureComparison = "Funktionsjämförelse" from = "Från" hideComparison = "Dölj funktionsjämförelse" +included = "Ingår" includedInCurrent = "Ingår i din plan" licensedSeats = "Licensierade: {{count}} platser" manage = "Hantera" @@ -4852,9 +4987,11 @@ title = "Aktiv plan" [plan.availablePlans] subtitle = "Välj den plan som passar dina behov" +loadError = "Det gick inte att läsa in planpriser. Använder standardvärden." title = "Tillgängliga planer" [plan.enterprise] +siteLicense = "Sitelicens" highlight1 = "Anpassad prissättning" highlight2 = "Dedikerad support" highlight3 = "Senaste funktionerna" @@ -4928,6 +5065,81 @@ keyDescription = "Klistra in licensnyckeln från ditt e‑postmeddelande" success = "Licens aktiverad!" successMessage = "Din licens har aktiverats. Du kan nu stänga detta fönster." +[plan.team] +name = "Team" +siteLicense = "Sitelicens" + +[credits] +enableOverageBilling = "Aktivera debitering vid överförbrukning" +maybeLater = "Kanske senare" +upgrade = "Uppgradera" + +[credits.modal] +advancedMonitoring = "Avancerad övervakning" +allInOneWorkspace = "Allt-i-ett PDF-arbetsyta (visare, verktyg och agent)" +apiSandbox = "API-sandbox" +contactSales = "Kontakta säljteamet" +creditsRemaining = "{{current}} av {{total}} kvar" +creditsThisMonth = "Månatliga krediter" +current = "Nuvarande plan" +customPricing = "Anpassad" +customSmartFolders = "Anpassade smarta mappar" +dedicatedSupportSlas = "Dedikerad support och SLA:er" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Allt i Credits, plus:" +everythingInFree = "Allt i Free, plus:" +fasterThroughput = "10x snabbare genomströmning" +forRegularWork = "För regelbundet PDF-arbete:" +freeTier = "Gratisnivå" +fullyPrivateFiles = "Helt privata filer" +largeFileProcessing = "Hantering av stora filer" +managedMemberMessage = "Du har obegränsad tillgång till krediter via ditt team. Om du behöver hjälp, kontakta din teamledare." +managedMemberTitle = "Obegränsade krediter" +meteringBillingNote = "Krediter för överförbrukning debiteras månadsvis tillsammans med din Team-prenumeration. Följ din användning när som helst i kontoinställningarna." +meteringExplanation = "Din Team-plan inkluderar {{credits}} krediter per månad. När de tar slut tillhandahåller debitering vid överförbrukning automatiskt extra krediter så att du aldrig behöver sluta arbeta." +meteringIncluded = "{{credits}} krediter/månad ingår med Team" +meteringNoCommitment = "Ingen bindningstid, avbryt när som helst" +meteringNeverRunOut = "Få aldrig slut på krediter" +meteringPayAsYouGo = "Betala bara för det du använder" +meteringPrice = "Ytterligare krediter för {{price}}/kredit" +meteringTitle = "Betala‑för‑användning vid överförbrukning" +monthlyCredits = "månatliga krediter" +orgWideAccess = "Organisationstäckande åtkomstkontroller" +overage = "överförbrukning" +perMonth = "/månad" +popular = "Populär" +premiumAiModels = "Premium AI-modeller" +prioritySupport = "Prioriterad support" +privateDocCloud = "Privat dokumentmoln" +ragFineTuning = "RAG + finjustering" +secureApiAccess = "Säker API-åtkomst" +selfHostLink = "Granska dokumentation och planer" +selfHostPrompt = "Vill du självhosta?" +standardThroughput = "Standardgenomströmning" +subtitle = "Uppgradera till Team för 10x fler krediter och snabbare bearbetning." +subtitlePro = "Aktivera automatisk debitering vid överförbrukning för att aldrig få slut på krediter." +teamLeaderOnly = "Endast teamledare kan aktivera debitering vid överförbrukning" +teamSubscription = "Team" +titleExhausted = "Du har använt dina gratiskrediter" +titleExhaustedPro = "Du har slut på krediter" +unlimitedApiAccess = "Obegränsad API-åtkomst" +unlimitedMonthlyCredits = "Sitelicens" +unlimitedSeats = "Obegränsat antal platser" + +[credits.modal.features] +everythingInCredits = "Allt i Credits, plus:" +everythingInFree = "Allt i Free, plus:" +forRegularWork = "För regelbundet PDF-arbete:" + +[credits.insufficient] +brief = "Otillräckliga krediter. Du behöver {{required}} krediter men har {{current}}." +freeTier = "Uppgradera till Team för 10x fler krediter och obegränsad debitering vid överförbrukning." +managedMember = "Kontakta din teamledare för hjälp." +message = "Du har inte tillräckligt med krediter för att köra {{tool}}. Du har för närvarande {{current}} krediter." +messageWithAmount = "Du behöver {{required}} krediter för att köra {{tool}}, men du har bara {{current}}." +teamMember = "Aktivera debitering vid överförbrukning för att aldrig få slut på krediter." +title = "Otillräckliga krediter" + [printFile] header = "Skriv ut fil till skrivare" submit = "Skriv ut" @@ -5565,6 +5777,70 @@ user = "Inloggad som" saas = "Stirling Cloud" selfhosted = "Självhostad" +[settings.planBilling] +currentPlan = "Nuvarande plan" +loading = "Läser in faktureringsinformation..." +notAvailable = "Plan och fakturering är endast tillgängligt när du är ansluten till Stirling Cloud (SaaS-läge)." +title = "Plan och fakturering" + +[settings.planBilling.billing] +manageBilling = "Hantera fakturering" +nextBillingDate = "Nästa faktureringsdatum" +overageCost = "Aktuell kostnad för överförbrukning: {{amount}} ({{credits}} krediter)" + +[settings.planBilling.credits] +estimatedCost = "Beräknad kostnad: {{amount}}" +freeTierInfo = "Gratisplanen inkluderar {{freeCredits}} krediter per månad. Uppgradera till Team för {{teamCredits}} krediter/månad och debitering vid överförbrukning enligt användning." +included = "{{count}} krediter/månad (ingår)" +noOverage = "Inga överförbrukningsavgifter denna månad. Du använder dina inkluderade {{count}} krediter." +overage = "+ {{count}} överförbrukning" +overageInfo = "Krediter för överförbrukning debiteras med {{price}} per kredit. Du betalar bara för det du använder utöver din månatliga tilldelning." +title = "Kreditanvändning" + +[settings.planBilling.errors] +fetchFailed = "Det gick inte att hämta faktureringsdata" +retry = "Försök igen" + +[settings.planBilling.status] +active = "Aktiv" +canceled = "Avslutad" +pastDue = "Försenad" +trial = "Provperiod" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Anpassade företagsfunktioner och support" +free = "Free" +freeDescription = "50 krediter per månad" +team = "Team" +teamBadge = "Team" +teamDescription = "500 krediter/månad ingår, automatisk debitering vid överförbrukning för oavbruten tjänst" +teamTooltipCredits = "Team-planen inkluderar {{credits}} krediter/månad." +teamTooltipFineprint = "Betala bara för det du använder utöver inkluderade krediter." +teamTooltipOverage = "Automatisk debitering vid överförbrukning med {{price}}/kredit säkerställer oavbruten tjänst." + +[settings.planBilling.team] +managedByTeam = "Hanteras av team" +memberCount = "{{count}} teammedlemmar" + +[settings.planBilling.trial] +daysRemaining = "{{days}} dagar kvar" +daysRemainingFull = "Din provperiod slutar om {{days}} dagar" +endDate = "Löper ut: {{date}}" +endsOn = "Provperioden slutar" +title = "Aktiv provperiod" + +[settings.planBilling.upgrade] +cta = "Uppgradera till Team" +featureApi = "API-åtkomst för automatisering" +featureCredits = "{{teamCredits}} krediter per månad (jämfört med {{freeCredits}} i Free)" +featureMembers = "Obegränsade teammedlemmar" +featureSupport = "Prioriterad support" +featureThroughput = "Snabbare genomströmning" +opensInBrowser = "Öppnas i webbläsaren för att slutföra uppgraderingen" +subtitle = "Uppgradera till Team för:" +title = "Uppgradera din plan" + [settings.developer] apiKeys = "API-nycklar" title = "Utvecklare" @@ -5689,6 +5965,9 @@ people = "Personer" teams = "Team" title = "Arbetsyta" +[settings.team] +title = "Team" + [setup] description = "Kom igång genom att välja hur du vill använda Stirling PDF" welcome = "Välkommen till Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "Auto‑dela med avdelarblad" name = "Avdelarsida" tooltip = "Använd QR‑kod‑avdelarblad mellan dokument vid skanning" +[split.methods.byPoster] +name = "Utskrivbara delar" +desc = "Dela upp stora sidor i utskrivbara storlekar" +tooltip = "Dela upp överstora sidor i mindre delar som passar utskrift på standardpapper (A4, Letter osv.)" + [split.methods.byPages] desc = "Extrahera specifika sidor (1,3,5-10)" name = "Sidnummer" @@ -6029,6 +6313,7 @@ tooltip = "Ange maximal filstorlek (t.ex. 10MB, 500KB)" [split.methods.prefix] splitAt = "Dela vid" splitBy = "Dela efter" +splitInto = "Dela upp i" [split.methodSelection.tooltip] bullet1 = "Klicka på ett metodkort för att välja det" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Välj först en delningsmetod" chooseMethod = "Välj metod" settings = "Inställningar" +[split.poster] +rightToLeft = "Dela från höger till vänster" + +[split.poster.pageSize] +label = "Målstorlek för sida" +description = "Storlek på utmatade sidor för utskrift" + +[split.poster.xFactor] +label = "Horisontella indelningar" +description = "Antal kolumner att dela varje sida i" + +[split.poster.yFactor] +label = "Vertikala indelningar" +description = "Antal rader att dela varje sida i" + [split.tooltip.byChapters] bullet1 = "Bokmärkesnivå: Vilken nivå som ska delas på (1=topnivå)" bullet2 = "Inkludera metadata: Bevara dokumentegenskaper" @@ -6085,6 +6385,14 @@ bullet5 = "Aktivera duplexläge om du skannar båda sidor av avdelarbladen" text = "Dela automatiskt skannade dokument med fysiska avdelarblad med QR‑koder. Perfekt för att bearbeta flera dokument skannade tillsammans." title = "Dela med avdelarsidor" +[split.tooltip.byPoster] +bullet1 = "Målstorlek för sida: Välj pappersstorlek (A4, Letter osv.)" +bullet2 = "Horisontella/vertikala indelningar: Rutnätsstorlek för delning" +bullet3 = "Höger‑till‑vänster: Omvänd kolumnordning för RTL‑layouter" +bullet4 = "Skriv ut och montera delarna för att skapa din affisch" +text = "Dela upp stora PDF-sidor i mindre utskrivbara delar som passar standardpappersstorlekar. Perfekt för att skapa affischutskrifter från överstora sidor." +title = "Dela för affischutskrift" + [split.tooltip.byPages] bullet1 = "Enstaka delningspunkter: 3,7 (delar efter sidorna 3 och 7)" bullet2 = "Intervallpunkter: 3-8 (delar före sida 3 och efter sida 8)" @@ -6364,9 +6672,13 @@ tags = "webbfångst,spara-sida,webb-till-dokument,arkivera" title = "URL till PDF" [usage] +aboutUsageAnalytics = "Om användningsanalys" +configureSettings = "Konfigurera analysinställningar" error = "Fel vid inläsning av användningsstatistik" noData = "Ingen data tillgänglig" noDataMessage = "Ingen användningsstatistik är tillgänglig för närvarande." +usageAnalyticsExplanation = "Användningsanalys spårar slutpunktsanrop och mönster i verktygsanvändning. I kombination med instrumentpanelen för granskningsloggning får du full insyn i systemaktivitet, prestanda och säkerhetshändelser." +viewAuditLogs = "Visa granskningsloggar" [usage.chart] title = "Diagram över användning av slutpunkter" @@ -6947,3 +7259,278 @@ cancel = "Avbryt" confirm = "Extrahera" message = "Denna ZIP innehåller {{count}} filer. Extrahera ändå?" title = "Stor ZIP-fil" + +[cloudBadge] +tooltip = "Denna åtgärd kommer att använda dina molnkrediter" + +[team] +cancelInviteError = "Det gick inte att avbryta inbjudan" +confirmCancelInvite = "Är du säker på att du vill avbryta denna inbjudan?" +confirmLeave = "Är du säker på att du vill lämna detta team?" +confirmLeaveLeader = "Som teamledare tas du bort från teamet om du lämnar. Är du säker?" +confirmRemove = "Är du säker på att du vill ta bort den här medlemmen?" +editName = "Redigera teamnamn" +inviteCancelled = "Inbjudan avbruten" +inviteError = "Det gick inte att skicka inbjudan" +inviteSent = "Inbjudan skickades" +leader = "Teamledare" +leaveButton = "Lämna team" +leaveError = "Det gick inte att lämna teamet" +leaveSuccess = "Du har lämnat teamet" +loading = "Läser in teaminformation..." +memberCount = "{{count}} medlemmar" +memberRemoved = "Medlem borttagen" +namePlaceholder = "Ange teamnamn" +personal = "Personligt" +removeError = "Det gick inte att ta bort medlem" +renameError = "Det gick inte att byta namn på teamet" +renameSuccess = "Teamets namn har uppdaterats" + +[team.invitationBanner] +message = "har bjudit in dig att gå med" +acceptButton = "Acceptera" +rejectButton = "Avböj" + +[team.features] +badge = "Teamfunktioner" +subtitle = "Samarbeta med ditt team" +title = "Teamsamarbete" +viewPlans = "Visa planer" + +[team.features.billing] +description = "Hantera fakturering och prenumerationer" +title = "Faktureringshantering" + +[team.features.credits] +description = "Delad kreditpool för alla medlemmar" +title = "Delade krediter" + +[team.features.dashboard] +description = "Visa teamaktivitet och användning" +title = "Teaminstrumentpanel" + +[team.features.invite] +description = "Lägg till medlemmar i ditt team" +title = "Bjud in medlemmar" + +[team.invite] +cancelLabel = "Avbryt" +invalidEmail = "Ogiltig e-postadress" +placeholder = "Ange e-postadress" +sendButton = "Skicka inbjudan" +title = "Bjud in teammedlem" + +[team.members] +emailColumn = "E-post" +empty = "Inga teammedlemmar än" +nameColumn = "Namn" +pending = "Väntande" +remove = "Ta bort" +roleColumn = "Roll" +title = "Teammedlemmar" + +[team.upgrade] +button = "Uppgradera till Team" +description = "Lås upp funktioner för teamsamarbete" +title = "Uppgradera till Team-plan" + +[provider.oauth2.google] +scope = "Autentisering för inloggning" + +[provider.oauth2.google.clientId] +label = "Client ID" +description = "OAuth2 Client ID från Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret från Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Scopes" +description = "Kommaseparerade OAuth2-scopes" + +[provider.oauth2.google.useAsUsername] +label = "Använd som användarnamn" +description = "Fält att använda som användarnamn (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Autentisering för inloggning" + +[provider.oauth2.github.clientId] +label = "Client ID" +description = "OAuth2 Client ID från GitHub Developer Settings" + +[provider.oauth2.github.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret från GitHub Developer Settings" + +[provider.oauth2.github.scopes] +label = "Scopes" +description = "Kommaseparerade OAuth2-scopes" + +[provider.oauth2.github.useAsUsername] +label = "Använd som användarnamn" +description = "Fält att använda som användarnamn (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Utfärdarens URL" +description = "URL till Keycloak-realmets OpenID Connect Discovery-slutpunkt" + +[provider.oauth2.keycloak.clientId] +label = "Client ID" +description = "OAuth2 Client ID från Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret från Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "Scopes" +description = "Kommaseparerade OAuth2-scopes" + +[provider.oauth2.keycloak.useAsUsername] +label = "Använd som användarnamn" +description = "Fält att använda som användarnamn (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "Generisk OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Aktivera generisk OAuth2" +description = "Aktivera autentisering via en anpassad OAuth2-leverantör" + +[provider.oauth2.generic.provider] +label = "Leverantörsnamn" +description = "Namnet på din OAuth2-leverantör (t.ex. Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "Utfärdarens URL" +description = "Leverantör som stöder OpenID Connect Discovery (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "Client ID" +description = "OAuth2 Client ID från din leverantör" + +[provider.oauth2.generic.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret från din leverantör" + +[provider.oauth2.generic.scopes] +label = "Scopes" +description = "Kommaseparerade OAuth2-scopes" + +[provider.oauth2.generic.useAsUsername] +label = "Använd som användarnamn" +description = "Fält att använda som användarnamn" + +[provider.oauth2.generic.autoCreateUser] +label = "Skapa användare automatiskt" +description = "Skapa automatiskt användarkonton vid första OAuth2-inloggningen" + +[provider.oauth2.generic.blockRegistration] +label = "Blockera registrering" +description = "Förhindra ny användarregistrering via OAuth2" + +[provider.smtp] +name = "SMTP-e-post" +scope = "E-postaviseringar" + +[provider.smtp.enabled] +label = "Aktivera e-post" +description = "Aktivera e-postaviseringar och SMTP-funktionalitet" + +[provider.smtp.host] +label = "SMTP-värd" +description = "Värdnamn eller IP-adress för din SMTP-server" + +[provider.smtp.port] +label = "SMTP-port" +description = "Portnummer för SMTP-anslutning (vanligen 25, 465 eller 587)" + +[provider.smtp.username] +label = "SMTP-användarnamn" +description = "Användarnamn för SMTP-autentisering" + +[provider.smtp.password] +label = "SMTP-lösenord" +description = "Lösenord för SMTP-autentisering" + +[provider.smtp.from] +label = "Från-adress" +description = "E-postadressen som ska användas som avsändare" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "Aktivera SAML2" +description = "Aktivera SAML2-autentisering (endast Enterprise)" + +[provider.saml2.provider] +label = "Leverantörsnamn" +description = "Namnet på din SAML2-leverantör" + +[provider.saml2.registrationId] +label = "Registrerings-ID" +description = "Namnet på din Service Provider (SP)-app" + +[provider.saml2.idpMetadataUri] +label = "IDP Metadata URI" +description = "URI till din leverantörs metadata" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login URL" +description = "URL för att initiera SSO" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout URL" +description = "URL för att initiera SLO" + +[provider.saml2.idpIssuer] +label = "IDP Issuer" +description = "ID för din leverantör" + +[provider.saml2.idpCert] +label = "IDP-certifikat" +description = "Certifikatets sökväg (t.ex. classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Privat nyckel" +description = "Sökväg till din privata nyckel" + +[provider.saml2.spCert] +label = "SP-certifikat" +description = "Sökväg till ditt signeringscertifikat" + +[provider.saml2.autoCreateUser] +label = "Skapa användare automatiskt" +description = "Skapa automatiskt användarkonton vid första SAML2-inloggningen" + +[provider.saml2.blockRegistration] +label = "Blockera registrering" +description = "Förhindra ny användarregistrering via SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "Filimport" + +[provider.googledrive.enabled] +label = "Aktivera filväljare för Google Drive" +description = "Tillåt användare att importera filer direkt från Google Drive" + +[provider.googledrive.clientId] +label = "Client ID" +description = "Google OAuth 2.0 Client ID från Google Cloud Console" + +[provider.googledrive.apiKey] +label = "API-nyckel" +description = "Google API-nyckel för Google Picker API från Google Cloud Console" + +[provider.googledrive.appId] +label = "App-ID" +description = "Google Drive App ID från Google Cloud Console" diff --git a/frontend/public/locales/th-TH/translation.toml b/frontend/public/locales/th-TH/translation.toml index bda3ce8a2..545a1b9d6 100644 --- a/frontend/public/locales/th-TH/translation.toml +++ b/frontend/public/locales/th-TH/translation.toml @@ -96,6 +96,8 @@ pin = "ปักหมุดไฟล์ (คงไว้หลังรัน poweredBy = "ขับเคลื่อนโดย" pro = "โปร" processTimeWarning = "คำเตือน: กระบวนการนี้อาจใช้เวลาสูงสุดหนึ่งนาทีขึ้นอยู่กับขนาดไฟล์" +processingComplete = "ไฟล์ของคุณพร้อมแล้ว" +processingCompleteMultiple = "ไฟล์ {{count}} รายการพร้อมแล้ว" property = "คุณสมบัติ" quickPosition = "ตำแหน่งแบบด่วน" red = "แดง" @@ -105,6 +107,7 @@ save = "บันทึก" saveToBrowser = "บันทึกในเบราว์เซอร์" saveUnavailable = "ไม่สามารถบันทึกสำหรับรายการนี้" seeDockerHub = "ดู Docker Hub" +editSecret = "แก้ไขค่านี้" selectFillter = "-- เลือก --" size = "ขนาด" sponsor = "ผู้สนับสนุน" @@ -651,6 +654,7 @@ description = "กำหนดค่าผู้ให้บริการย disconnect = "ตัดการเชื่อมต่อ" disconnected = "ตัดการเชื่อมต่อผู้ให้บริการสำเร็จ" disconnectError = "ไม่สามารถตัดการเชื่อมต่อผู้ให้บริการได้" +documentation = "ดูเอกสารประกอบ" imageResolutionFull = "เต็ม (ขนาดดั้งเดิม)" imageResolutionReduced = "ลดลง (สูงสุด 1200px)" linkedServices = "บริการที่เชื่อมต่อแล้ว" @@ -964,6 +968,18 @@ label = "Locale เริ่มต้น" description = "ขนาดไฟล์อัปโหลดสูงสุด (เช่น 100MB, 1GB)" label = "ขนาดอัปโหลดไฟล์สูงสุด" +[admin.settings.general.hideDisabledTools] +description = "ซ่อนเครื่องมือที่ปิดใช้งานออกจากอินเทอร์เฟซ" +label = "ซ่อนเครื่องมือที่ปิดใช้งาน" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "ซ่อนปุ่ม Google Drive เมื่อไม่ได้เปิดใช้งาน" +label = "ซ่อน Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "ซ่อนปุ่มสแกน QR บนมือถือเมื่อไม่ได้เปิดใช้งาน" +label = "ซ่อนสแกนเนอร์มือถือ" + [admin.settings.general.frontendUrl] description = "URL ฐานสำหรับ Frontend (เช่น https://pdf.example.com) ใช้สำหรับลิงก์เชิญทางอีเมลและการอัปโหลดด้วยรหัส QR บนมือถือ เว้นว่างเพื่อใช้ Backend URL" label = "Frontend URL" @@ -1148,6 +1164,8 @@ title = "ความปลอดภัย" [admin.settings.security.audit] label = "บันทึกการตรวจสอบ" +showDetails = "แสดงรายละเอียดระดับการตรวจสอบ" +hideDetails = "ซ่อนรายละเอียดระดับการตรวจสอบ" [admin.settings.security.audit.enabled] description = "ติดตามการกระทำของผู้ใช้และเหตุการณ์ของระบบเพื่อการปฏิบัติตามและการตรวจสอบความปลอดภัย" @@ -1157,10 +1175,32 @@ label = "เปิดใช้งานบันทึกการตรวจ description = "0=ปิด, 1=พื้นฐาน, 2=มาตรฐาน, 3=ละเอียด" label = "ระดับการตรวจสอบ" +[admin.settings.security.audit.levelDetails] +off = "ไม่บันทึกการตรวจสอบ (ยกเว้นเหตุการณ์ด้านความปลอดภัยที่สำคัญ)" +basic = "การดำเนินการกับไฟล์ PDF (บีบอัด แยก รวม ฯลฯ) และการเปลี่ยนแปลงการตั้งค่า บันทึก: สถานะการดำเนินการ (สำเร็จ/ล้มเหลว) พารามิเตอร์ของเมธอด เวลา ปริมาณล็อกขั้นต่ำ" +standard = "เหตุการณ์แบบ BASIC เพิ่มเติม: การเข้าสู่ระบบ/ออกจากระบบของผู้ใช้ การเปลี่ยนแปลงบัญชี คำขอ GET ทั่วไป ไม่รวมการเรียกแบบโพลลิงอย่างต่อเนื่อง (/auth/me, /app-config, /health ฯลฯ) เพื่อลดสัญญาณรบกวนของล็อก เหมาะสำหรับการใช้งานส่วนใหญ่" +verbose = "เหตุการณ์แบบ STANDARD เพิ่มเติม: การเรียกแบบโพลลิงอย่างต่อเนื่อง คำขอ GET ทั้งหมด รายละเอียดเวลา คำเตือน: ปริมาณล็อกสูงและกระทบต่อประสิทธิภาพ" + [admin.settings.security.audit.retentionDays] description = "จำนวนวันที่เก็บบันทึกการตรวจสอบ" label = "ระยะเวลาเก็บบันทึก (วัน)" +[admin.settings.security.audit.advancedOptions] +title = "ตัวเลือกขั้นสูง" +description = "ตัวเลือกต่อไปนี้จะเพิ่มเวลาและหน่วยความจำในการประมวลผล เปิดใช้เฉพาะเมื่อจำเป็นจริงๆ" + +[admin.settings.security.audit.captureFileHash] +description = "ดึงค่าแฮช SHA-256 ของไฟล์ PDF ที่อัปโหลดเพื่อการตรวจสอบความถูกต้อง ไม่ขึ้นกับระดับการตรวจสอบ" +label = "เก็บแฮชไฟล์ (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "ดึงค่าผู้เขียนจากเอกสาร PDF ระหว่างประมวลผล ต้องแยกวิเคราะห์ PDF ทำให้เกิดความหน่วงมากขึ้น ไม่ขึ้นกับระดับการตรวจสอบ" +label = "เก็บข้อมูลเมตาผู้เขียน PDF" + +[admin.settings.security.audit.captureOperationResults] +description = "เก็บค่าที่เมธอดส่งกลับ ไม่แนะนำ: เพิ่มปริมาณล็อกและการใช้ดิสก์อย่างมาก" +label = "เก็บผลการดำเนินการ" + [admin.settings.security.csrfDisabled] description = "ปิดการป้องกัน Cross-Site Request Forgery (ไม่แนะนำ)" label = "ปิดการป้องกัน CSRF" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "กำหนดค่าการบันทึกการตรวจสอบ" +configureAuditMessage = "ปรับระดับการบันทึกการตรวจสอบ ระยะเวลาเก็บรักษา และการตั้งค่าอื่นๆ ในส่วนความปลอดภัยและการยืนยันตัวตน" disabled = "การบันทึกการตรวจสอบถูกปิดใช้งาน" disabledMessage = "เปิดใช้การบันทึกการตรวจสอบในการกำหนดค่าแอปพลิเคชันของคุณเพื่อการติดตามเหตุการณ์ของระบบ" enterpriseRequired = "ต้องใช้ไลเซนส์ Enterprise" enterpriseRequiredMessage = "ระบบบันทึกการตรวจสอบเป็นฟีเจอร์ระดับองค์กร โปรดอัปเกรดเป็นไลเซนส์ Enterprise เพื่อเข้าถึงบันทึกการตรวจสอบและการวิเคราะห์" +goToSettings = "ไปที่การตั้งค่าการตรวจสอบ" notAvailable = "ระบบบันทึกการตรวจสอบไม่พร้อมใช้งาน" notAvailableMessage = "ระบบบันทึกการตรวจสอบยังไม่ได้กำหนดค่าหรือไม่พร้อมใช้งาน" -[audit.charts] -byType = "เหตุการณ์ตามประเภท" -byUser = "เหตุการณ์ตามผู้ใช้" -day = "วัน" -error = "เกิดข้อผิดพลาดในการโหลดแผนภูมิ" -month = "เดือน" -overTime = "เหตุการณ์ตามช่วงเวลา" -title = "แดชบอร์ดการตรวจสอบ" -week = "สัปดาห์" - [audit.error] title = "เกิดข้อผิดพลาดในการโหลดระบบบันทึกการตรวจสอบ" -[audit.events] -actions = "การดำเนินการ" -clearFilters = "ล้าง" -details = "รายละเอียด" -endDate = "วันที่สิ้นสุด" -error = "เกิดข้อผิดพลาดในการโหลดเหตุการณ์" -eventDetails = "รายละเอียดเหตุการณ์" -filterByType = "กรองตามประเภท" -filterByUser = "กรองตามผู้ใช้" -ipAddress = "ที่อยู่ IP" -noEvents = "ไม่พบเหตุการณ์" -startDate = "วันที่เริ่มต้น" -timestamp = "เวลาประทับ" -title = "เหตุการณ์การตรวจสอบ" -type = "ประเภท" -user = "ผู้ใช้" -viewDetails = "ดูรายละเอียด" - [audit.export] clearFilters = "ล้าง" description = "ส่งออกเหตุการณ์การตรวจสอบเป็นไฟล์ CSV หรือ JSON ใช้ตัวกรองเพื่อจำกัดข้อมูลที่ส่งออก" endDate = "วันที่สิ้นสุด" error = "ไม่สามารถส่งออกข้อมูล" exportButton = "ส่งออกข้อมูล" +fieldAuthor = "ผู้เขียน (จาก PDF)" +fieldDate = "วันที่" +fieldDocumentName = "ชื่อเอกสาร" +fieldFileHash = "แฮชไฟล์ (SHA-256)" +fieldIpAddress = "ที่อยู่ IP" +fieldOperationResults = "ผลการดำเนินการ" +fieldOutcome = "ผลลัพธ์ (สำเร็จ/ล้มเหลว)" +fieldTool = "เครื่องมือ" +fieldUsername = "ชื่อผู้ใช้" filterByType = "กรองตามประเภท" filterByUser = "กรองตามผู้ใช้" filters = "ตัวกรอง (ไม่บังคับ)" format = "รูปแบบการส่งออก" +selectFields = "เลือกฟิลด์ที่จะรวม" startDate = "วันที่เริ่มต้น" title = "ส่งออกข้อมูลการตรวจสอบ" +verboseRequired = "ต้องใช้ระดับการตรวจสอบแบบ VERBOSE" [audit.systemStatus] +autoRefresh = "รีเฟรชอัตโนมัติ" +autoRefreshLabel = "รีเฟรชอัตโนมัติทุก 30 วินาที" +captureBySettings = "เปิดใช้งานในการตั้งค่า" +capturedFields = "ฟิลด์ที่เก็บข้อมูล" +date = "วันที่" days = "วัน" disabled = "ปิดใช้งาน" +documentName = "ชื่อเอกสาร" enabled = "เปิดใช้งาน" +fileHash = "แฮชไฟล์" level = "ระดับการตรวจสอบ" +pdfAuthor = "ผู้เขียน PDF" retention = "ระยะเวลาเก็บรักษา" status = "การบันทึกการตรวจสอบ" title = "สถานะระบบ" +tool = "เครื่องมือ" totalEvents = "จำนวนเหตุการณ์ทั้งหมด" +username = "ชื่อผู้ใช้" +verboseOnly = "เฉพาะ VERBOSE" + +[audit.stats] +activeUsers = "ผู้ใช้ที่ใช้งานอยู่" +attention = "ต้องดำเนินการ" +avgLatency = "เวลาแฝงเฉลี่ย" +error = "เกิดข้อผิดพลาดในการโหลดสถิติ" +errorLoadingStats = "ไม่สามารถโหลดสถิติได้" +excellent = "ยอดเยี่ยม" +good = "ดี" +noData = "N/A" +successRate = "อัตราความสำเร็จ" +title = "สรุป" +totalEvents = "เหตุการณ์ทั้งหมด" +vsLastPeriod = "เทียบกับช่วงก่อนหน้า" + +[audit.charts] +byTool = "เครื่องมือที่ถูกใช้มากที่สุด" +byType = "เหตุการณ์ตามประเภท" +byUser = "เหตุการณ์ตามผู้ใช้" +day = "วัน" +error = "เกิดข้อผิดพลาดในการโหลดแผนภูมิ" +hourlyActivity = "กิจกรรมรายชั่วโมง" +month = "เดือน" +noData = "ไม่มีข้อมูลสำหรับช่วงนี้" +overTime = "เหตุการณ์ตามช่วงเวลา" +title = "แดชบอร์ดการตรวจสอบ" +week = "สัปดาห์" + +[audit.events] +actions = "การดำเนินการ" +author = "ผู้เขียน" +clearFilters = "ล้าง" +details = "รายละเอียด" +documentName = "เอกสาร" +endDate = "วันที่สิ้นสุด" +error = "เกิดข้อผิดพลาดในการโหลดเหตุการณ์" +eventDetails = "รายละเอียดเหตุการณ์" +failure = "ล้มเหลว" +fileHash = "แฮชไฟล์" +filterByType = "กรองตามประเภท" +filterByUser = "กรองตามผู้ใช้" +ipAddress = "ที่อยู่ IP" +noEvents = "ไม่พบเหตุการณ์" +outcome = "สถานะ" +sortAsc = "เรียงจากน้อยไปมาก" +sortDesc = "เรียงจากมากไปน้อย" +startDate = "วันที่เริ่มต้น" +success = "สำเร็จ" +timestamp = "เวลาประทับ" +title = "เหตุการณ์การตรวจสอบ" +type = "ประเภท" +user = "ผู้ใช้" +viewDetails = "ดูรายละเอียด" + +[audit.filters] +allOutcomes = "ทั้งหมด" +failureOnly = "เฉพาะที่ล้มเหลว" +last7Days = "7 วันที่ผ่านมา" +last30Days = "30 วันที่ผ่านมา" +outcomeFilter = "ผลลัพธ์" +quickPresets = "ตัวกรองด่วน" +successOnly = "เฉพาะที่สำเร็จ" +thisMonth = "เดือนนี้" +today = "วันนี้" [audit.tabs] +clearData = "ล้างข้อมูล" dashboard = "แดชบอร์ด" events = "เหตุการณ์การตรวจสอบ" export = "ส่งออก" +[audit.clearData] +cancel = "ยกเลิก" +codeDoesNotMatch = "โค้ดไม่ตรงกัน" +codePlaceholder = "พิมพ์รหัสที่นี่" +confirmationCode = "รหัสยืนยัน" +confirmationRequired = "ลบข้อมูลการตรวจสอบทั้งหมด" +confirmMessage = "การดำเนินการนี้จะลบล็อกการตรวจสอบทั้งหมดอย่างถาวร ป้อนรหัสยืนยันด้านล่างเพื่อดำเนินการต่อ" +confirmTitle = "โปรดยืนยันว่าคุณต้องการลบ" +deleteButton = "ลบ" +enterCode = "รหัสยืนยัน" +enterCodeBelow = "ป้อนรหัสให้ตรงกับที่แสดงด้านบน (ตัวพิมพ์เล็ก-ใหญ่มีผล)" +initiateDelete = "ลบข้อมูลทั้งหมด" +irreversible = "ไม่สามารถย้อนกลับได้" +success = "สำเร็จ" +successMessage = "ล้างข้อมูลการตรวจสอบทั้งหมดเรียบร้อยแล้ว" +warning1 = "ไม่สามารถยกเลิกการทำรายการนี้ได้" +warning2 = "การลบข้อมูลการตรวจสอบจะลบล็อกการตรวจสอบทั้งหมดในอดีตอย่างถาวร รวมทั้งเหตุการณ์ด้านความปลอดภัย กิจกรรมของผู้ใช้ และการดำเนินการกับไฟล์ออกจากฐานข้อมูล" + [auth] accessDenied = "ปฏิเสธการเข้าถึง" insufficientPermissions = "คุณไม่มีสิทธิ์ในการดำเนินการนี้" @@ -2254,9 +2374,11 @@ copy = "คัดลอก" done = "เสร็จสิ้น" error = "ข้อผิดพลาด" expand = "ขยาย" +learnMore = "เรียนรู้เพิ่มเติม" lines = "บรรทัด" loading = "กำลังโหลด..." next = "ถัดไป" +operation = "การดำเนินการนี้" preview = "แสดงตัวอย่าง" previous = "ก่อนหน้า" refresh = "รีเฟรช" @@ -2920,6 +3042,7 @@ copyStack = "คัดลอก Stack Trace" discordSubmit = "Discord - ส่งโพสต์การสนับสนุน" dismissAllErrors = "ปิดข้อผิดพลาดทั้งหมด" encryptedPdfMustRemovePassword = "PDF นี้มีการเข้ารหัสหรือป้องกันด้วยรหัสผ่าน โปรดปลดล็อกก่อนแปลงเป็น PDF/A" +generic = "เกิดข้อผิดพลาด" github = "ส่งตั๋วใน GitHub" githubSubmit = "GitHub - ส่งตั๋ว" incorrectPasswordProvided = "รหัสผ่าน PDF ไม่ถูกต้องหรือไม่ได้ระบุ" @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "การสมัครของคุณอัปเ upgradeSuccess = "ชำระเงินสำเร็จ! การสมัครของคุณได้รับการอัปเกรดแล้ว ไลเซนส์บนเซิร์ฟเวอร์ของคุณถูกอัปเดตแล้ว คุณจะได้รับอีเมลยืนยันในไม่ช้า" upgradeTitle = "อัปเกรดเป็น {{planName}}" yearly = "รายปี" +checkoutOpened = "เปิดหน้าชำระเงินในเบราว์เซอร์แล้ว" +checkoutInstructions = "กรุณาทำการซื้อให้เสร็จในหน้าต่างเบราว์เซอร์ที่เพิ่งเปิดขึ้น หลังการชำระเงินเสร็จสิ้น กลับมาที่นี่และกดปุ่มด้านล่างเพื่อรีเฟรชข้อมูลการเรียกเก็บเงินของคุณ" +refreshBilling = "ชำระเงินเสร็จแล้ว - รีเฟรชการเรียกเก็บเงิน" +closeLater = "ทำภายหลัง" [payment.emailStage] continue = "ดำเนินการต่อ" @@ -4679,6 +4806,13 @@ prompt = "เลือกหน้าที่ต้องการแยกต submit = "แยก" title = "PDF เป็น CSV" +[PDFToXLSX] +header = "PDF เป็น Excel" +prompt = "เลือกหน้าที่ต้องการดึงตาราง" +submit = "แปลง" +title = "PDF เป็น Excel (XLSX)" +tags = "สเปรดชีต,excel,xlsx,ตาราง,แยก,แปลง" + [PDFToHTML] credit = "บริการนี้ใช้ pdftohtml สำหรับการแปลงไฟล์" header = "PDF เป็น HTML" @@ -4835,6 +4969,7 @@ customPricing = "กำหนดเอง" featureComparison = "การเปรียบเทียบฟีเจอร์" from = "เริ่มต้นที่" hideComparison = "ซ่อนการเปรียบเทียบฟีเจอร์" +included = "รวมไว้แล้ว" includedInCurrent = "รวมอยู่ในแพ็กเกจของคุณ" licensedSeats = "ที่นั่งที่มีสิทธิ์: {{count}} ที่นั่ง" manage = "จัดการ" @@ -4852,9 +4987,11 @@ title = "แผนที่ใช้งาน" [plan.availablePlans] subtitle = "เลือกแผนที่เหมาะกับความต้องการของคุณ" +loadError = "ไม่สามารถโหลดราคาของแผนได้ กำลังใช้ค่าเริ่มต้น" title = "แผนที่มีให้" [plan.enterprise] +siteLicense = "สิทธิ์การใช้งานทั้งไซต์" highlight1 = "กำหนดราคาเอง" highlight2 = "การสนับสนุนเฉพาะทาง" highlight3 = "ฟีเจอร์ล่าสุด" @@ -4928,6 +5065,81 @@ keyDescription = "วางคีย์ไลเซนส์จากอีเ success = "เปิดใช้งานไลเซนส์แล้ว!" successMessage = "เปิดใช้งานไลเซนส์ของคุณเรียบร้อยแล้ว ตอนนี้คุณสามารถปิดหน้าต่างนี้ได้" +[plan.team] +name = "Team" +siteLicense = "สิทธิ์การใช้งานทั้งไซต์" + +[credits] +enableOverageBilling = "เปิดใช้งานการคิดค่าบริการส่วนเกิน" +maybeLater = "ไว้ทีหลัง" +upgrade = "อัปเกรด" + +[credits.modal] +advancedMonitoring = "การมอนิเตอร์ขั้นสูง" +allInOneWorkspace = "พื้นที่ทำงาน PDF แบบครบวงจร (ตัวดูไฟล์ เครื่องมือ และเอเจนต์)" +apiSandbox = "API sandbox" +contactSales = "ติดต่อฝ่ายขาย" +creditsRemaining = "เหลือ {{current}} จาก {{total}}" +creditsThisMonth = "เครดิตรายเดือน" +current = "แผนปัจจุบัน" +customPricing = "กำหนดเอง" +customSmartFolders = "โฟลเดอร์อัจฉริยะกำหนดเอง" +dedicatedSupportSlas = "การสนับสนุนเฉพาะทางและ SLA" +enterpriseSubscription = "Enterprise" +everythingInCredits = "ทุกอย่างใน Credits และเพิ่มเติม:" +everythingInFree = "ทุกอย่างใน Free และเพิ่มเติม:" +fasterThroughput = "อัตราการประมวลผลเร็วขึ้น 10 เท่า" +forRegularWork = "สำหรับงาน PDF ทั่วไป:" +freeTier = "ฟรี" +fullyPrivateFiles = "ไฟล์เป็นส่วนตัวอย่างเต็มรูปแบบ" +largeFileProcessing = "ประมวลผลไฟล์ขนาดใหญ่" +managedMemberMessage = "คุณมีสิทธิ์เข้าถึงเครดิตไม่จำกัดผ่านทีมของคุณ หากต้องการความช่วยเหลือ โปรดติดต่อหัวหน้าทีมของคุณ" +managedMemberTitle = "เครดิตไม่จำกัด" +meteringBillingNote = "เครดิตส่วนเกินจะถูกเรียกเก็บทุกเดือนพร้อมกับการสมัครสมาชิก Team ของคุณ ติดตามการใช้งานได้ตลอดเวลาในการตั้งค่าบัญชีของคุณ" +meteringExplanation = "แผน Team ของคุณรวม {{credits}} เครดิตต่อเดือน เมื่อใช้หมด ระบบคิดค่าบริการส่วนเกินจะเพิ่มเครดิตให้อัตโนมัติเพื่อไม่ให้การทำงานของคุณสะดุด" +meteringIncluded = "รวม {{credits}} เครดิต/เดือน กับ Team" +meteringNoCommitment = "ไม่มีข้อผูกมัด ยกเลิกได้ทุกเมื่อ" +meteringNeverRunOut = "ไม่ให้เครดิตหมด" +meteringPayAsYouGo = "จ่ายตามที่ใช้จริง" +meteringPrice = "เครดิตเพิ่มเติมที่ {{price}}/เครดิต" +meteringTitle = "การคิดค่าบริการส่วนเกินแบบจ่ายตามการใช้งาน" +monthlyCredits = "เครดิตรายเดือน" +orgWideAccess = "การควบคุมการเข้าถึงทั่วทั้งองค์กร" +overage = "ส่วนเกิน" +perMonth = "/เดือน" +popular = "ยอดนิยม" +premiumAiModels = "โมเดล AI ระดับพรีเมียม" +prioritySupport = "การสนับสนุนแบบเร่งด่วน" +privateDocCloud = "Private Document Cloud" +ragFineTuning = "RAG + fine-tuning" +secureApiAccess = "การเข้าถึง API อย่างปลอดภัย" +selfHostLink = "ดูเอกสารและแผน" +selfHostPrompt = "ต้องการโฮสต์เองไหม?" +standardThroughput = "อัตราการประมวลผลมาตรฐาน" +subtitle = "อัปเกรดเป็น Team เพื่อรับเครดิตเพิ่ม 10 เท่าและประมวลผลได้เร็วขึ้น" +subtitlePro = "เปิดใช้งานการคิดค่าบริการส่วนเกินเพื่อไม่ให้เครดิตหมด" +teamLeaderOnly = "เฉพาะหัวหน้าทีมเท่านั้นที่สามารถเปิดใช้งานการคิดค่าบริการส่วนเกิน" +teamSubscription = "Team" +titleExhausted = "คุณใช้เครดิตฟรีหมดแล้ว" +titleExhaustedPro = "เครดิตของคุณหมดแล้ว" +unlimitedApiAccess = "การเข้าถึง API แบบไม่จำกัด" +unlimitedMonthlyCredits = "สิทธิ์การใช้งานทั้งไซต์" +unlimitedSeats = "ผู้ใช้ไม่จำกัด" + +[credits.modal.features] +everythingInCredits = "ทุกอย่างใน Credits และเพิ่มเติม:" +everythingInFree = "ทุกอย่างใน Free และเพิ่มเติม:" +forRegularWork = "สำหรับงาน PDF ทั่วไป:" + +[credits.insufficient] +brief = "เครดิตไม่เพียงพอ คุณต้องใช้ {{required}} เครดิต แต่มีเพียง {{current}}" +freeTier = "อัปเกรดเป็น Team เพื่อรับเครดิตมากขึ้น 10 เท่าและการคิดค่าบริการส่วนเกินแบบไม่จำกัด" +managedMember = "โปรดติดต่อหัวหน้าทีมของคุณเพื่อขอความช่วยเหลือ" +message = "คุณมีเครดิตไม่เพียงพอที่จะรัน {{tool}} ขณะนี้คุณมี {{current}} เครดิต" +messageWithAmount = "คุณต้องใช้ {{required}} เครดิตเพื่อรัน {{tool}} แต่คุณมีเพียง {{current}}" +teamMember = "เปิดใช้งานการคิดค่าบริการส่วนเกินเพื่อไม่ให้เครดิตหมด" +title = "เครดิตไม่เพียงพอ" + [printFile] header = "พิมพ์ไฟล์ไปยังเครื่องพิมพ์" submit = "พิมพ์" @@ -5565,6 +5777,70 @@ user = "เข้าสู่ระบบเป็น" saas = "Stirling Cloud" selfhosted = "โฮสต์เอง" +[settings.planBilling] +currentPlan = "แผนปัจจุบัน" +loading = "กำลังโหลดข้อมูลการเรียกเก็บเงิน..." +notAvailable = "แผนและการเรียกเก็บเงินใช้ได้เฉพาะเมื่อเชื่อมต่อกับ Stirling Cloud (โหมด SaaS)" +title = "แผนและการเรียกเก็บเงิน" + +[settings.planBilling.billing] +manageBilling = "จัดการการเรียกเก็บเงิน" +nextBillingDate = "รอบบิลถัดไป" +overageCost = "ค่าใช้จ่ายส่วนเกินปัจจุบัน: {{amount}} ({{credits}} เครดิต)" + +[settings.planBilling.credits] +estimatedCost = "ค่าใช้จ่ายโดยประมาณ: {{amount}}" +freeTierInfo = "แผนฟรีรวม {{freeCredits}} เครดิตต่อเดือน อัปเกรดเป็น Team เพื่อรับ {{teamCredits}} เครดิต/เดือน และการคิดค่าบริการส่วนเกินแบบจ่ายตามการใช้งาน" +included = "{{count}} เครดิต/เดือน (รวม)" +noOverage = "ไม่มีค่าบริการส่วนเกินในเดือนนี้ คุณกำลังใช้ {{count}} เครดิตที่รวมมาให้" +overage = "+ {{count}} ส่วนเกิน" +overageInfo = "เครดิตส่วนเกินจะคิดที่ {{price}} ต่อเครดิต คุณจะจ่ายเฉพาะสิ่งที่ใช้เกินจากโควตารายเดือนของคุณ" +title = "การใช้เครดิต" + +[settings.planBilling.errors] +fetchFailed = "ไม่สามารถดึงข้อมูลการเรียกเก็บเงินได้" +retry = "ลองใหม่" + +[settings.planBilling.status] +active = "ใช้งานอยู่" +canceled = "ยกเลิกแล้ว" +pastDue = "ค้างชำระ" +trial = "ทดลองใช้" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "ฟีเจอร์และการสนับสนุนระดับองค์กรที่ปรับแต่งได้" +free = "Free" +freeDescription = "50 เครดิตต่อเดือน" +team = "Team" +teamBadge = "Team" +teamDescription = "รวม 500 เครดิต/เดือน พร้อมการคิดค่าบริการส่วนเกินอัตโนมัติเพื่อการใช้งานต่อเนื่อง" +teamTooltipCredits = "แผน Team รวม {{credits}} เครดิต/เดือน" +teamTooltipFineprint = "จ่ายเฉพาะส่วนที่ใช้เกินจากเครดิตที่รวมมาให้" +teamTooltipOverage = "การคิดค่าบริการส่วนเกินอัตโนมัติที่ {{price}}/เครดิต ช่วยให้บริการไม่สะดุด" + +[settings.planBilling.team] +managedByTeam = "จัดการโดยทีม" +memberCount = "สมาชิก {{count}} คน" + +[settings.planBilling.trial] +daysRemaining = "เหลืออีก {{days}} วัน" +daysRemainingFull = "ช่วงทดลองใช้ของคุณจะสิ้นสุดใน {{days}} วัน" +endDate = "หมดอายุ: {{date}}" +endsOn = "สิ้นสุดการทดลองใช้" +title = "กำลังใช้งานรุ่นทดลองฟรี" + +[settings.planBilling.upgrade] +cta = "อัปเกรดเป็น Team" +featureApi = "การเข้าถึง API เพื่อการอัตโนมัติ" +featureCredits = "{{teamCredits}} เครดิตต่อเดือน (เทียบกับ {{freeCredits}} ใน Free)" +featureMembers = "สมาชิกทีมไม่จำกัด" +featureSupport = "การสนับสนุนแบบเร่งด่วน" +featureThroughput = "การประมวลผลที่เร็วขึ้น" +opensInBrowser = "เปิดในเบราว์เซอร์เพื่อทำการอัปเกรดให้เสร็จสิ้น" +subtitle = "อัปเกรดเป็น Team เพื่อ:" +title = "อัปเกรดแผนของคุณ" + [settings.developer] apiKeys = "API Keys" title = "นักพัฒนา" @@ -5689,6 +5965,9 @@ people = "สมาชิก" teams = "ทีม" title = "พื้นที่ทำงาน" +[settings.team] +title = "ทีม" + [setup] description = "เริ่มต้นโดยเลือกวิธีที่คุณต้องการใช้ Stirling PDF" welcome = "ยินดีต้อนรับสู่ Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "แยกอัตโนมัติด้วยแผ่นคั่น name = "แผ่นแบ่งหน้า" tooltip = "ใช้แผ่นคั่น QR code ระหว่างเอกสารเมื่อสแกน" +[split.methods.byPoster] +name = "แบ่งเป็นชิ้นพิมพ์" +desc = "แยกหน้าขนาดใหญ่ให้เป็นขนาดที่พิมพ์ได้" +tooltip = "แบ่งหน้าที่มีขนาดใหญ่เกินเป็นชิ้นเล็กลง เหมาะสำหรับการพิมพ์บนกระดาษมาตรฐาน (A4, Letter ฯลฯ)" + [split.methods.byPages] desc = "สกัดหน้าเฉพาะ (1,3,5-10)" name = "หมายเลขหน้า" @@ -6029,6 +6313,7 @@ tooltip = "ระบุขนาดไฟล์สูงสุด (เช่น [split.methods.prefix] splitAt = "แยกที่" splitBy = "แยกตาม" +splitInto = "แยกเป็น" [split.methodSelection.tooltip] bullet1 = "คลิกบนการ์ดวิธีเพื่อเลือก" @@ -6048,6 +6333,21 @@ selectMethodFirst = "โปรดเลือกวิธีการแยก chooseMethod = "เลือกวิธี" settings = "การตั้งค่า" +[split.poster] +rightToLeft = "แยกจากขวาไปซ้าย" + +[split.poster.pageSize] +label = "ขนาดหน้ากระดาษเป้าหมาย" +description = "ขนาดหน้าผลลัพธ์สำหรับการพิมพ์" + +[split.poster.xFactor] +label = "การแบ่งแนวนอน" +description = "จำนวนคอลัมน์ที่จะแบ่งแต่ละหน้า" + +[split.poster.yFactor] +label = "การแบ่งแนวตั้ง" +description = "จำนวนแถวที่จะแบ่งแต่ละหน้า" + [split.tooltip.byChapters] bullet1 = "ระดับบุ๊กมาร์ก: เลือกระดับที่จะใช้แยก (1=ระดับบนสุด)" bullet2 = "รวมเมตาดาต้า: คงคุณสมบัติเอกสาร" @@ -6085,6 +6385,14 @@ bullet5 = "เปิดใช้โหมดพิมพ์สองหน้า text = "แยกเอกสารที่สแกนอัตโนมัติโดยใช้แผ่นคั่นที่มี QR codes เหมาะสำหรับประมวลผลเอกสารหลายชุดที่สแกนรวมกัน" title = "แยกด้วยแผ่นแบ่งหน้า" +[split.tooltip.byPoster] +bullet1 = "ขนาดหน้ากระดาษเป้าหมาย: เลือกขนาดกระดาษผลลัพธ์ (A4, Letter ฯลฯ)" +bullet2 = "การแบ่งแนวนอน/แนวตั้ง: ขนาดกริดสำหรับการแบ่งหน้า" +bullet3 = "ขวาไปซ้าย: สลับลำดับคอลัมน์สำหรับเลย์เอาต์ RTL" +bullet4 = "พิมพ์และประกอบชิ้นส่วนเพื่อสร้างโปสเตอร์ของคุณ" +text = "แยกหน้า PDF ขนาดใหญ่เป็นชิ้นเล็กที่พิมพ์ได้ เหมาะกับขนาดกระดาษมาตรฐาน เหมาะสำหรับสร้างงานพิมพ์โปสเตอร์จากหน้าที่มีขนาดใหญ่เกิน" +title = "แบ่งสำหรับพิมพ์โปสเตอร์" + [split.tooltip.byPages] bullet1 = "จุดแยกเดี่ยว: 3,7 (ตัดหลังหน้า 3 และ 7)" bullet2 = "จุดแยกช่วง: 3-8 (ตัดก่อนหน้า 3 และหลังหน้า 8)" @@ -6364,9 +6672,13 @@ tags = "จับเว็บ, บันทึกหน้า, เว็บเ title = "URL เป็น PDF" [usage] +aboutUsageAnalytics = "เกี่ยวกับการวิเคราะห์การใช้งาน" +configureSettings = "กำหนดค่าการตั้งค่าการวิเคราะห์" error = "เกิดข้อผิดพลาดในการโหลดสถิติการใช้งาน" noData = "ไม่มีข้อมูล" noDataMessage = "ขณะนี้ไม่มีสถิติการใช้งาน" +usageAnalyticsExplanation = "การวิเคราะห์การใช้งานจะติดตามคำขอไปยัง endpoint และรูปแบบการใช้เครื่องมือ เมื่อนำมารวมกับแดชบอร์ดบันทึกการตรวจสอบ คุณจะเห็นกิจกรรมของระบบ ประสิทธิภาพ และเหตุการณ์ด้านความปลอดภัยได้อย่างครบถ้วน" +viewAuditLogs = "ดูบันทึกการตรวจสอบ" [usage.chart] title = "แผนภูมิการใช้งาน Endpoint" @@ -6947,3 +7259,278 @@ cancel = "ยกเลิก" confirm = "แตกไฟล์" message = "ZIP นี้มี {{count}} ไฟล์ ต้องการแตกไฟล์ต่อหรือไม่?" title = "ไฟล์ ZIP ขนาดใหญ่" + +[cloudBadge] +tooltip = "การดำเนินการนี้จะใช้เครดิตคลาวด์ของคุณ" + +[team] +cancelInviteError = "ยกเลิกคำเชิญไม่สำเร็จ" +confirmCancelInvite = "คุณแน่ใจหรือไม่ว่าต้องการยกเลิกคำเชิญนี้?" +confirmLeave = "คุณแน่ใจหรือไม่ว่าต้องการออกจากทีมนี้?" +confirmLeaveLeader = "ในฐานะหัวหน้าทีม การออกจะนำคุณออกจากทีม คุณแน่ใจหรือไม่?" +confirmRemove = "คุณแน่ใจหรือไม่ว่าต้องการลบสมาชิกนี้?" +editName = "แก้ไขชื่อทีม" +inviteCancelled = "ยกเลิกคำเชิญแล้ว" +inviteError = "ส่งคำเชิญไม่สำเร็จ" +inviteSent = "ส่งคำเชิญเรียบร้อยแล้ว" +leader = "หัวหน้าทีม" +leaveButton = "ออกจากทีม" +leaveError = "ออกจากทีมไม่สำเร็จ" +leaveSuccess = "ออกจากทีมเรียบร้อยแล้ว" +loading = "กำลังโหลดข้อมูลทีม..." +memberCount = "สมาชิก {{count}} คน" +memberRemoved = "ลบสมาชิกเรียบร้อยแล้ว" +namePlaceholder = "ป้อนชื่อทีม" +personal = "ส่วนบุคคล" +removeError = "ลบสมาชิกล้มเหลว" +renameError = "เปลี่ยนชื่อทีมไม่สำเร็จ" +renameSuccess = "เปลี่ยนชื่อทีมเรียบร้อยแล้ว" + +[team.invitationBanner] +message = "ได้เชิญคุณให้เข้าร่วม" +acceptButton = "ยอมรับ" +rejectButton = "ปฏิเสธ" + +[team.features] +badge = "ฟีเจอร์สำหรับทีม" +subtitle = "ทำงานร่วมกันกับทีมของคุณ" +title = "การทำงานร่วมกันในทีม" +viewPlans = "ดูแผน" + +[team.features.billing] +description = "จัดการการเรียกเก็บเงินและการสมัครสมาชิก" +title = "การจัดการการเรียกเก็บเงิน" + +[team.features.credits] +description = "พูลเครดิตร่วมสำหรับสมาชิกทุกคน" +title = "เครดิตที่ใช้ร่วมกัน" + +[team.features.dashboard] +description = "ดูความเคลื่อนไหวและการใช้งานของทีม" +title = "แดชบอร์ดทีม" + +[team.features.invite] +description = "เพิ่มสมาชิกในทีมของคุณ" +title = "เชิญสมาชิก" + +[team.invite] +cancelLabel = "ยกเลิก" +invalidEmail = "ที่อยู่อีเมลไม่ถูกต้อง" +placeholder = "ป้อนที่อยู่อีเมล" +sendButton = "ส่งคำเชิญ" +title = "เชิญสมาชิกทีม" + +[team.members] +emailColumn = "อีเมล" +empty = "ยังไม่มีสมาชิกทีม" +nameColumn = "ชื่อ" +pending = "รอดำเนินการ" +remove = "ลบ" +roleColumn = "บทบาท" +title = "สมาชิกทีม" + +[team.upgrade] +button = "อัปเกรดเป็น Team" +description = "ปลดล็อกฟีเจอร์การทำงานร่วมกันของทีม" +title = "อัปเกรดเป็นแผน Team" + +[provider.oauth2.google] +scope = "การยืนยันตัวตนสำหรับลงชื่อเข้าใช้" + +[provider.oauth2.google.clientId] +label = "Client ID" +description = "OAuth2 Client ID จาก Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret จาก Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Scopes" +description = "OAuth2 scopes คั่นด้วยเครื่องหมายจุลภาค" + +[provider.oauth2.google.useAsUsername] +label = "ใช้เป็นชื่อผู้ใช้" +description = "ฟิลด์ที่จะใช้เป็นชื่อผู้ใช้ (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "การยืนยันตัวตนสำหรับลงชื่อเข้าใช้" + +[provider.oauth2.github.clientId] +label = "Client ID" +description = "OAuth2 Client ID จาก GitHub Developer Settings" + +[provider.oauth2.github.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret จาก GitHub Developer Settings" + +[provider.oauth2.github.scopes] +label = "Scopes" +description = "OAuth2 scopes คั่นด้วยเครื่องหมายจุลภาค" + +[provider.oauth2.github.useAsUsername] +label = "ใช้เป็นชื่อผู้ใช้" +description = "ฟิลด์ที่จะใช้เป็นชื่อผู้ใช้ (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Issuer URL" +description = "URL ของจุดค้นพบ OpenID Connect ของ realm ใน Keycloak" + +[provider.oauth2.keycloak.clientId] +label = "Client ID" +description = "OAuth2 Client ID จาก Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret จาก Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "Scopes" +description = "OAuth2 scopes คั่นด้วยเครื่องหมายจุลภาค" + +[provider.oauth2.keycloak.useAsUsername] +label = "ใช้เป็นชื่อผู้ใช้" +description = "ฟิลด์ที่จะใช้เป็นชื่อผู้ใช้ (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "OAuth2 ทั่วไป" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "เปิดใช้งาน OAuth2 ทั่วไป" +description = "เปิดใช้งานการยืนยันตัวตนด้วยผู้ให้บริการ OAuth2 แบบกำหนดเอง" + +[provider.oauth2.generic.provider] +label = "ชื่อผู้ให้บริการ" +description = "ชื่อผู้ให้บริการ OAuth2 ของคุณ (เช่น Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "Issuer URL" +description = "ผู้ให้บริการที่รองรับ OpenID Connect Discovery (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "Client ID" +description = "OAuth2 Client ID จากผู้ให้บริการของคุณ" + +[provider.oauth2.generic.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret จากผู้ให้บริการของคุณ" + +[provider.oauth2.generic.scopes] +label = "Scopes" +description = "OAuth2 scopes คั่นด้วยเครื่องหมายจุลภาค" + +[provider.oauth2.generic.useAsUsername] +label = "ใช้เป็นชื่อผู้ใช้" +description = "ฟิลด์ที่จะใช้เป็นชื่อผู้ใช้" + +[provider.oauth2.generic.autoCreateUser] +label = "สร้างผู้ใช้อัตโนมัติ" +description = "สร้างบัญชีผู้ใช้อัตโนมัติเมื่อเข้าสู่ระบบด้วย OAuth2 ครั้งแรก" + +[provider.oauth2.generic.blockRegistration] +label = "บล็อกการลงทะเบียน" +description = "ป้องกันการลงทะเบียนผู้ใช้ใหม่ผ่าน OAuth2" + +[provider.smtp] +name = "SMTP Mail" +scope = "การแจ้งเตือนทางอีเมล" + +[provider.smtp.enabled] +label = "เปิดใช้งานอีเมล" +description = "เปิดใช้งานการแจ้งเตือนทางอีเมลและฟังก์ชัน SMTP" + +[provider.smtp.host] +label = "SMTP Host" +description = "ชื่อโฮสต์หรือที่อยู่ IP ของเซิร์ฟเวอร์ SMTP ของคุณ" + +[provider.smtp.port] +label = "SMTP Port" +description = "หมายเลขพอร์ตสำหรับการเชื่อมต่อ SMTP (โดยทั่วไป 25, 465 หรือ 587)" + +[provider.smtp.username] +label = "SMTP Username" +description = "ชื่อผู้ใช้สำหรับการยืนยันตัวตน SMTP" + +[provider.smtp.password] +label = "SMTP Password" +description = "รหัสผ่านสำหรับการยืนยันตัวตน SMTP" + +[provider.smtp.from] +label = "ที่อยู่อีเมลผู้ส่ง" +description = "ที่อยู่อีเมลที่จะใช้เป็นผู้ส่ง" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "เปิดใช้งาน SAML2" +description = "เปิดใช้งานการยืนยันตัวตนด้วย SAML2 (เฉพาะ Enterprise)" + +[provider.saml2.provider] +label = "ชื่อผู้ให้บริการ" +description = "ชื่อผู้ให้บริการ SAML2 ของคุณ" + +[provider.saml2.registrationId] +label = "Registration ID" +description = "ชื่อแอป Service Provider (SP) ของคุณ" + +[provider.saml2.idpMetadataUri] +label = "IDP Metadata URI" +description = "URI สำหรับ metadata ของผู้ให้บริการของคุณ" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login URL" +description = "URL สำหรับเริ่มต้น SSO" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout URL" +description = "URL สำหรับเริ่มต้น SLO" + +[provider.saml2.idpIssuer] +label = "IDP Issuer" +description = "ID ของผู้ให้บริการของคุณ" + +[provider.saml2.idpCert] +label = "IDP Certificate" +description = "พาธใบรับรอง (เช่น classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Private Key" +description = "พาธคีย์ส่วนตัวของคุณ" + +[provider.saml2.spCert] +label = "SP Certificate" +description = "พาธใบรับรองสำหรับการลงนามของคุณ" + +[provider.saml2.autoCreateUser] +label = "สร้างผู้ใช้อัตโนมัติ" +description = "สร้างบัญชีผู้ใช้อัตโนมัติเมื่อเข้าสู่ระบบด้วย SAML2 ครั้งแรก" + +[provider.saml2.blockRegistration] +label = "บล็อกการลงทะเบียน" +description = "ป้องกันการลงทะเบียนผู้ใช้ใหม่ผ่าน SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "นำเข้าไฟล์" + +[provider.googledrive.enabled] +label = "เปิดใช้งานตัวเลือกไฟล์ Google Drive" +description = "อนุญาตให้ผู้นำเข้าไฟล์จาก Google Drive ได้โดยตรง" + +[provider.googledrive.clientId] +label = "Client ID" +description = "Google OAuth 2.0 Client ID จาก Google Cloud Console" + +[provider.googledrive.apiKey] +label = "API Key" +description = "Google API Key สำหรับ Google Picker API จาก Google Cloud Console" + +[provider.googledrive.appId] +label = "App ID" +description = "Google Drive App ID จาก Google Cloud Console" diff --git a/frontend/public/locales/tr-TR/translation.toml b/frontend/public/locales/tr-TR/translation.toml index 5a8416b7c..db74d70f3 100644 --- a/frontend/public/locales/tr-TR/translation.toml +++ b/frontend/public/locales/tr-TR/translation.toml @@ -96,6 +96,8 @@ pin = "Dosyayı Sabitle (araç çalıştıktan sonra etkin tut)" poweredBy = "Tarafından desteklenmektedir" pro = "Pro" processTimeWarning = "Uyarı: Bu işlem, dosya boyutuna bağlı olarak bir dakikaya kadar sürebilir." +processingComplete = "Dosyanız hazır." +processingCompleteMultiple = "{{count}} dosya hazır." property = "Özellik" quickPosition = "Hızlı Konum" red = "Kırmızı" @@ -105,6 +107,7 @@ save = "Kaydet" saveToBrowser = "Tarayıcıya Kaydet" saveUnavailable = "Bu öğe için kaydetme kullanılamıyor" seeDockerHub = "Docker Hub'a bakın" +editSecret = "Bu değeri düzenle" selectFillter = "-- Seçiniz --" size = "Boyut" sponsor = "Bağış" @@ -651,6 +654,7 @@ description = "OAuth2 ve SAML gibi harici kimlik doğrulama sağlayıcılarını disconnect = "Bağlantıyı Kes" disconnected = "Sağlayıcının bağlantısı başarıyla kesildi" disconnectError = "Sağlayıcı bağlantısı kesilemedi" +documentation = "Belgeleri görüntüle" imageResolutionFull = "Tam (Orijinal Boyut)" imageResolutionReduced = "Azaltılmış (Maks 1200px)" linkedServices = "Bağlı Hizmetler" @@ -964,6 +968,18 @@ label = "Varsayılan Yerel Ayar" description = "Maksimum dosya yükleme boyutu (örn., 100MB, 1GB)" label = "Dosya Yükleme Sınırı" +[admin.settings.general.hideDisabledTools] +description = "Devre dışı bırakılan araçları arayüzde gizle" +label = "Devre Dışı Araçları Gizle" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Etkin değilken Google Drive düğmesini gizle" +label = "Google Drive'ı Gizle" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Etkin değilken mobil QR tarayıcı düğmesini gizle" +label = "Mobil QR Tarayıcıyı Gizle" + [admin.settings.general.frontendUrl] description = "Ön uç için temel URL (örn. https://pdf.example.com). E-posta davet bağlantıları ve mobil QR kod yüklemeleri için kullanılır. Arka uç URL'sini kullanmak için boş bırakın." label = "Ön Uç URL'si" @@ -1148,6 +1164,8 @@ title = "Güvenlik" [admin.settings.security.audit] label = "Denetim Günlüğü" +showDetails = "Denetim düzeyi ayrıntılarını göster" +hideDetails = "Denetim düzeyi ayrıntılarını gizle" [admin.settings.security.audit.enabled] description = "Uyumluluk ve güvenlik izleme için kullanıcı eylemlerini ve sistem olaylarını takip edin" @@ -1157,10 +1175,32 @@ label = "Denetim Günlüğünü Etkinleştir" description = "0=KAPALI, 1=BAŞLANGIÇ, 2=STANDART, 3=AYRINTILI" label = "Denetim Düzeyi" +[admin.settings.security.audit.levelDetails] +off = "Günlük kaydı yok (kritik güvenlik olayları hariç)" +basic = "PDF dosya işlemleri (compress, split, merge, vb.) ve ayar değişiklikleri. Yakalananlar: işlem durumu (başarılı/başarısız), yöntem parametreleri, zamanlama. Minimum günlük hacmi." +standard = "BASIC olaylarına ek olarak: kullanıcı giriş/çıkışı, hesap değişiklikleri, genel GET istekleri. Günlük gürültüsünü azaltmak için sürekli yoklama çağrılarını (/auth/me, /app-config, /health, vb.) hariç tutar. Çoğu kurulum için idealdir." +verbose = "STANDARD olaylarına ek olarak: sürekli yoklama çağrıları, tüm GET istekleri, ayrıntılı zamanlama. Uyarı: yüksek günlük hacmi ve performans etkisi." + [admin.settings.security.audit.retentionDays] description = "Denetim günlüklerinin saklanacağı gün sayısı" label = "Denetim Saklama Süresi (gün)" +[admin.settings.security.audit.advancedOptions] +title = "Gelişmiş Seçenekler" +description = "Aşağıdaki seçenekler işlem süresini ve bellek kullanımını artırır. Yalnızca gerçekten gerektiğinde etkinleştirin." + +[admin.settings.security.audit.captureFileHash] +description = "Bütünlük doğrulaması için yüklenen PDF dosyalarının SHA-256 özetini çıkarın. Denetim düzeyinden bağımsızdır." +label = "Dosya Özeti (SHA-256) Yakala" + +[admin.settings.security.audit.capturePdfAuthor] +description = "İşlem sırasında PDF belgelerinden yazar alanını çıkarın. PDF ayrıştırma gerektirir, gecikmeyi artırır. Denetim düzeyinden bağımsızdır." +label = "PDF Yazar Meta Verisini Yakala" + +[admin.settings.security.audit.captureOperationResults] +description = "Yöntem dönüş değerlerini yakalayın. Önerilmez: günlük hacmini ve disk kullanımını önemli ölçüde artırır." +label = "İşlem Sonuçlarını Yakala" + [admin.settings.security.csrfDisabled] description = "Siteler Arası İstek Sahteciliği (CSRF) korumasını devre dışı bırak (önerilmez)" label = "CSRF Korumasını Devre Dışı Bırak" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "Denetim Günlüğünü Yapılandır" +configureAuditMessage = "Güvenlik ve Kimlik Doğrulama bölümünde denetim günlüğü düzeyini, saklama süresini ve diğer ayarları ayarlayın." disabled = "Denetim günlüğü devre dışı" disabledMessage = "Sistem olaylarını takip etmek için uygulama yapılandırmanızda denetim günlüğünü etkinleştirin." enterpriseRequired = "Enterprise Lisansı Gerekli" enterpriseRequiredMessage = "Denetim günlükleme sistemi bir Enterprise özelliğidir. Denetim günlüklerine ve analizlerine erişmek için lütfen Enterprise lisansına yükseltin." +goToSettings = "Denetim Ayarlarına Git" notAvailable = "Denetim sistemi kullanılamıyor" notAvailableMessage = "Denetim sistemi yapılandırılmamış veya kullanılamıyor." -[audit.charts] -byType = "Türüne Göre Olaylar" -byUser = "Kullanıcıya Göre Olaylar" -day = "Gün" -error = "Grafikler yüklenirken hata" -month = "Ay" -overTime = "Zaman İçinde Olaylar" -title = "Denetim Panosu" -week = "Hafta" - [audit.error] title = "Denetim sistemi yüklenirken hata" -[audit.events] -actions = "İşlemler" -clearFilters = "Temizle" -details = "Ayrıntılar" -endDate = "Bitiş tarihi" -error = "Olaylar yüklenirken hata" -eventDetails = "Olay Ayrıntıları" -filterByType = "Türe göre filtrele" -filterByUser = "Kullanıcıya göre filtrele" -ipAddress = "IP Adresi" -noEvents = "Olay bulunamadı" -startDate = "Başlangıç tarihi" -timestamp = "Zaman damgası" -title = "Denetim Olayları" -type = "Tür" -user = "Kullanıcı" -viewDetails = "Ayrıntıları Görüntüle" - [audit.export] clearFilters = "Temizle" description = "Denetim olaylarını CSV veya JSON biçiminde dışa aktarın. Dışa aktarılan verileri sınırlamak için filtreleri kullanın." endDate = "Bitiş tarihi" error = "Veriler dışa aktarılamadı" exportButton = "Verileri Dışa Aktar" +fieldAuthor = "Yazar (PDF'den)" +fieldDate = "Tarih" +fieldDocumentName = "Belge Adı" +fieldFileHash = "Dosya Özeti (SHA-256)" +fieldIpAddress = "IP Adresi" +fieldOperationResults = "İşlem Sonuçları" +fieldOutcome = "Sonuç (Başarılı/Başarısız)" +fieldTool = "Araç" +fieldUsername = "Kullanıcı adı" filterByType = "Türe göre filtrele" filterByUser = "Kullanıcıya göre filtrele" filters = "Filtreler (İsteğe bağlı)" format = "Dışa Aktarım Biçimi" +selectFields = "Dahil edilecek alanları seçin" startDate = "Başlangıç tarihi" title = "Denetim Verilerini Dışa Aktar" +verboseRequired = "VERBOSE denetim düzeyi gerektirir" [audit.systemStatus] +autoRefresh = "Otomatik yenileme" +autoRefreshLabel = "Her 30 sn'de otomatik yenile" +captureBySettings = "Ayarlar'da etkinleştir" +capturedFields = "Yakalanan Alanlar" +date = "Tarih" days = "gün" disabled = "Devre dışı" +documentName = "Belge Adı" enabled = "Etkin" +fileHash = "Dosya Özeti" level = "Denetim Düzeyi" +pdfAuthor = "PDF Yazarı" retention = "Saklama Süresi" status = "Denetim Günlüğü" title = "Sistem Durumu" +tool = "Araç" totalEvents = "Toplam Olay" +username = "Kullanıcı adı" +verboseOnly = "Yalnızca VERBOSE" + +[audit.stats] +activeUsers = "Aktif Kullanıcılar" +attention = "Dikkat gerekiyor" +avgLatency = "Ort. Gecikme" +error = "İstatistikler yüklenirken hata" +errorLoadingStats = "İstatistikler yüklenemedi" +excellent = "Mükemmel" +good = "İyi" +noData = "Yok" +successRate = "Başarı Oranı" +title = "Özet" +totalEvents = "Toplam Olay" +vsLastPeriod = "önceki döneme göre" + +[audit.charts] +byTool = "En Çok Kullanılan Araçlar" +byType = "Türüne Göre Olaylar" +byUser = "Kullanıcıya Göre Olaylar" +day = "Gün" +error = "Grafikler yüklenirken hata" +hourlyActivity = "Saatlik Aktivite" +month = "Ay" +noData = "Bu dönem için veri yok" +overTime = "Zaman İçinde Olaylar" +title = "Denetim Panosu" +week = "Hafta" + +[audit.events] +actions = "İşlemler" +author = "Yazar" +clearFilters = "Temizle" +details = "Ayrıntılar" +documentName = "Belge" +endDate = "Bitiş tarihi" +error = "Olaylar yüklenirken hata" +eventDetails = "Olay Ayrıntıları" +failure = "Başarısız" +fileHash = "Dosya Özeti" +filterByType = "Türe göre filtrele" +filterByUser = "Kullanıcıya göre filtrele" +ipAddress = "IP Adresi" +noEvents = "Olay bulunamadı" +outcome = "Durum" +sortAsc = "Artan sırala" +sortDesc = "Azalan sırala" +startDate = "Başlangıç tarihi" +success = "Başarılı" +timestamp = "Zaman damgası" +title = "Denetim Olayları" +type = "Tür" +user = "Kullanıcı" +viewDetails = "Ayrıntıları Görüntüle" + +[audit.filters] +allOutcomes = "Tümü" +failureOnly = "Yalnızca başarısızlıklar" +last7Days = "Son 7 gün" +last30Days = "Son 30 gün" +outcomeFilter = "Sonuç" +quickPresets = "Hızlı filtreler" +successOnly = "Yalnızca başarılar" +thisMonth = "Bu ay" +today = "Bugün" [audit.tabs] +clearData = "Verileri Temizle" dashboard = "Pano" events = "Denetim Olayları" export = "Dışa Aktar" +[audit.clearData] +cancel = "İptal" +codeDoesNotMatch = "Kod eşleşmiyor" +codePlaceholder = "Kodu buraya yazın" +confirmationCode = "Doğrulama Kodu" +confirmationRequired = "Tüm Denetim Verilerini Sil" +confirmMessage = "Bu işlem tüm denetim günlüklerini kalıcı olarak kaldıracaktır. Devam etmek için aşağıya doğrulama kodunu girin." +confirmTitle = "Lütfen silmek istediğinizi onaylayın" +deleteButton = "Sil" +enterCode = "Doğrulama Kodu" +enterCodeBelow = "Kodu yukarıda gösterildiği gibi aynen girin (büyük/küçük harfe duyarlı)" +initiateDelete = "Tüm Verileri Sil" +irreversible = "GERİ ALINAMAZ" +success = "Başarılı" +successMessage = "Tüm denetim verileri başarıyla temizlendi" +warning1 = "Bu işlem geri alınamaz" +warning2 = "Denetim verilerinin silinmesi, güvenlik olayları, kullanıcı etkinlikleri ve dosya işlemleri dahil olmak üzere veritabanındaki tüm geçmiş denetim günlüklerini kalıcı olarak kaldıracaktır." + [auth] accessDenied = "Erişim Reddedildi" insufficientPermissions = "Bu işlemi gerçekleştirmek için izniniz yok." @@ -2254,9 +2374,11 @@ copy = "Kopyala" done = "Bitti" error = "Hata" expand = "Genişlet" +learnMore = "Daha fazla bilgi edinin" lines = "satır" loading = "Yükleniyor..." next = "Sonraki" +operation = "bu işlem" preview = "Önizleme" previous = "Önceki" refresh = "Yenile" @@ -2920,6 +3042,7 @@ copyStack = "Yığın İzini Kopyala" discordSubmit = "Discord - Destek gönderisi gönderin" dismissAllErrors = "Tüm Hataları Kapat" encryptedPdfMustRemovePassword = "Bu PDF şifreli veya parola korumalı. PDF/A'ya dönüştürmeden önce lütfen kilidini açın." +generic = "Bir hata oluştu" github = "GitHub üzerinden bir hata bildirin" githubSubmit = "GitHub - Hata gönderin" incorrectPasswordProvided = "PDF parolası yanlış veya sağlanmadı." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Aboneliğiniz başarıyla yükseltildi. Mevcut lisans upgradeSuccess = "Ödeme başarılı! Aboneliğiniz yükseltildi. Lisansınız sunucunuza güncellendi. Kısa süre içinde bir onay e-postası alacaksınız." upgradeTitle = "{{planName}} planına yükselt" yearly = "Yıllık" +checkoutOpened = "Ödeme Tarayıcıda Açıldı" +checkoutInstructions = "Yeni açılan tarayıcı penceresinde satın almayı tamamlayın. Ödeme tamamlandıktan sonra buraya dönün ve faturalandırma bilgilerinizi yenilemek için aşağıdaki düğmeye tıklayın." +refreshBilling = "Ödemeyi Tamamladım - Faturalandırmayı Yenile" +closeLater = "Bunu Daha Sonra Yapacağım" [payment.emailStage] continue = "Devam et" @@ -4679,6 +4806,13 @@ prompt = "Tabloyu çıkarmak için sayfa seçin" submit = "Çıkart" title = "PDF'den CSV'ye" +[PDFToXLSX] +header = "PDF'den Excel'e" +prompt = "Tabloları çıkarmak için sayfaları seçin" +submit = "Dönüştür" +title = "PDF'den Excel'e (XLSX)" +tags = "e-tablo,excel,xlsx,tablo,çıkar,dönüştür" + [PDFToHTML] credit = "Bu hizmet dosya dönüşümü için pdftohtml kullanır." header = "PDF'den HTML'e" @@ -4835,6 +4969,7 @@ customPricing = "Özel" featureComparison = "Özellik Karşılaştırması" from = "Başlangıç" hideComparison = "Özellik Karşılaştırmasını Gizle" +included = "Dahil" includedInCurrent = "Planınızda Dahil" licensedSeats = "Lisanslı: {{count}} koltuk" manage = "Yönet" @@ -4852,9 +4987,11 @@ title = "Aktif Plan" [plan.availablePlans] subtitle = "İhtiyaçlarınıza uygun planı seçin" +loadError = "Plan fiyatları yüklenemedi. Varsayılan değerler kullanılıyor." title = "Mevcut Planlar" [plan.enterprise] +siteLicense = "Site Lisansı" highlight1 = "Özel fiyatlandırma" highlight2 = "Özel destek" highlight3 = "En yeni özellikler" @@ -4928,6 +5065,81 @@ keyDescription = "E-postanızdaki lisans anahtarını yapıştırın" success = "Lisans Etkinleştirildi!" successMessage = "Lisansınız başarıyla etkinleştirildi. Bu pencereyi şimdi kapatabilirsiniz." +[plan.team] +name = "Takım" +siteLicense = "Site Lisansı" + +[credits] +enableOverageBilling = "Aşım Faturalandırmasını Etkinleştir" +maybeLater = "Belki sonra" +upgrade = "Yükselt" + +[credits.modal] +advancedMonitoring = "Gelişmiş izleme" +allInOneWorkspace = "Tümü bir arada PDF çalışma alanı (görüntüleyici, araçlar ve ajan)" +apiSandbox = "API sandbox" +contactSales = "Satış ile iletişime geçin" +creditsRemaining = "{{total}} içinden {{current}} kaldı" +creditsThisMonth = "Aylık krediler" +current = "Geçerli Plan" +customPricing = "Özel" +customSmartFolders = "Özel Akıllı Klasörler" +dedicatedSupportSlas = "Özel destek ve SLA'lar" +enterpriseSubscription = "Kurumsal" +everythingInCredits = "Krediler'deki her şey ve fazlası:" +everythingInFree = "Ücretsiz'deki her şey ve fazlası:" +fasterThroughput = "10 kat daha hızlı işleme hızı" +forRegularWork = "Düzenli PDF çalışmaları için:" +freeTier = "Ücretsiz Katman" +fullyPrivateFiles = "Tamamen özel dosyalar" +largeFileProcessing = "Büyük dosya işleme" +managedMemberMessage = "Takımınız aracılığıyla sınırsız kredi erişiminiz var. Yardıma ihtiyacınız olursa lütfen takım liderinizle iletişime geçin." +managedMemberTitle = "Sınırsız Krediler" +meteringBillingNote = "Aşım kredileri, Takım aboneliğinizle birlikte aylık olarak faturalandırılır. Kullanımınızı istediğiniz zaman hesap ayarlarınızdan takip edebilirsiniz." +meteringExplanation = "Takım planınız ayda {{credits}} kredi içerir. Bittiğinde, aşım faturalandırma otomatik olarak ek krediler sağlar; böylece çalışmayı asla durdurmak zorunda kalmazsınız." +meteringIncluded = "Takım ile ayda {{credits}} kredi dahil" +meteringNoCommitment = "Taahhüt yok, istediğiniz zaman iptal edin" +meteringNeverRunOut = "Krediniz asla bitmesin" +meteringPayAsYouGo = "Kullandığın kadar öde" +meteringPrice = "Ek krediler {{price}}/kredi" +meteringTitle = "Kullandığın Kadar Öde Aşım Faturalandırması" +monthlyCredits = "aylık krediler" +orgWideAccess = "Kuruluş genelinde erişim kontrolleri" +overage = "aşım" +perMonth = "/ay" +popular = "Popüler" +premiumAiModels = "Premium AI modelleri" +prioritySupport = "Öncelikli destek" +privateDocCloud = "Özel Belge Bulutu" +ragFineTuning = "RAG + ince ayar" +secureApiAccess = "Güvenli API erişimi" +selfHostLink = "Belgeleri ve planları inceleyin" +selfHostPrompt = "Kendi sunucunuzda barındırmak mı istiyorsunuz?" +standardThroughput = "Standart işleme hızı" +subtitle = "10 kat kredi ve daha hızlı işleme için Takım'a yükseltin." +subtitlePro = "Kredinizin asla bitmemesi için otomatik aşım faturalandırmayı etkinleştirin." +teamLeaderOnly = "Yalnızca takım liderleri aşım faturalandırmayı etkinleştirebilir" +teamSubscription = "Takım" +titleExhausted = "Ücretsiz kredilerinizi kullandınız" +titleExhaustedPro = "Kredileriniz tükendi" +unlimitedApiAccess = "Sınırsız API erişimi" +unlimitedMonthlyCredits = "Site Lisansı" +unlimitedSeats = "Sınırsız kullanıcı" + +[credits.modal.features] +everythingInCredits = "Krediler'deki her şey ve fazlası:" +everythingInFree = "Ücretsiz'deki her şey ve fazlası:" +forRegularWork = "Düzenli PDF çalışmaları için:" + +[credits.insufficient] +brief = "Yetersiz kredi. {{required}} krediye ihtiyacınız var ancak {{current}} var." +freeTier = "10 kat daha fazla kredi ve sınırsız aşım faturalandırma için Takım'a yükseltin." +managedMember = "Lütfen yardım için takım liderinizle iletişime geçin." +message = "{{tool}} çalıştırmak için yeterli krediniz yok. Şu anda {{current}} krediniz var." +messageWithAmount = "{{tool}} çalıştırmak için {{required}} krediye ihtiyacınız var, ancak yalnızca {{current}} var." +teamMember = "Kredinizin asla bitmemesi için aşım faturalandırmayı etkinleştirin." +title = "Yetersiz Kredi" + [printFile] header = "Dosyayı Yazıcıya Yazdır" submit = "Yazdır" @@ -5565,6 +5777,70 @@ user = "Şu olarak oturum açıldı" saas = "Stirling Cloud" selfhosted = "Öz Barındırılan" +[settings.planBilling] +currentPlan = "Geçerli Plan" +loading = "Faturalandırma bilgileri yükleniyor..." +notAvailable = "Plan ve Faturalandırma yalnızca Stirling Cloud'a bağlıyken kullanılabilir (SaaS modu)." +title = "Plan ve Faturalandırma" + +[settings.planBilling.billing] +manageBilling = "Faturalandırmayı Yönet" +nextBillingDate = "Sonraki faturalandırma tarihi" +overageCost = "Geçerli aşım maliyeti: {{amount}} ({{credits}} kredi)" + +[settings.planBilling.credits] +estimatedCost = "Tahmini maliyet: {{amount}}" +freeTierInfo = "Ücretsiz plan ayda {{freeCredits}} kredi içerir. {{teamCredits}} kredi/ay ve kullandıkça öde aşım faturalandırma için Takım'a yükseltin." +included = "{{count}} kredi/ay (dahil)" +noOverage = "Bu ay aşım ücreti yok. Dahil olan {{count}} kredinizi kullanıyorsunuz." +overage = "+ {{count}} aşım" +overageInfo = "Aşım kredileri, kredi başına {{price}} üzerinden faturalandırılır. Yalnızca aylık hakkınızın ötesinde kullandıklarınız için ödeme yaparsınız." +title = "Kredi Kullanımı" + +[settings.planBilling.errors] +fetchFailed = "Faturalandırma verileri alınamadı" +retry = "Yeniden dene" + +[settings.planBilling.status] +active = "Aktif" +canceled = "İptal edildi" +pastDue = "Vadesi geçmiş" +trial = "Deneme" + +[settings.planBilling.tier] +enterprise = "Kurumsal" +enterpriseDescription = "Özel kurumsal özellikler ve destek" +free = "Ücretsiz" +freeDescription = "Aylık 50 kredi" +team = "Takım" +teamBadge = "Takım" +teamDescription = "Ayda 500 kredi dahil, kesintisiz hizmet için otomatik aşım faturalandırma" +teamTooltipCredits = "Takım planı ayda {{credits}} kredi içerir." +teamTooltipFineprint = "Dahil kredilerin ötesinde kullandıklarınız için ödeme yapın." +teamTooltipOverage = "Kesintisiz hizmet için {{price}}/kredi üzerinden otomatik aşım faturalandırma." + +[settings.planBilling.team] +managedByTeam = "Takım tarafından yönetiliyor" +memberCount = "{{count}} takım üyesi" + +[settings.planBilling.trial] +daysRemaining = "{{days}} gün kaldı" +daysRemainingFull = "Denemeniz {{days}} gün içinde sona eriyor" +endDate = "Bitiş: {{date}}" +endsOn = "Deneme bitişi" +title = "Ücretsiz Deneme Aktif" + +[settings.planBilling.upgrade] +cta = "Takım'a Yükseltin" +featureApi = "Otomasyon için API erişimi" +featureCredits = "Ayda {{teamCredits}} kredi (Ücretsiz'de {{freeCredits}} yerine)" +featureMembers = "Sınırsız takım üyesi" +featureSupport = "Öncelikli destek" +featureThroughput = "Daha hızlı işleme hızı" +opensInBrowser = "Yükseltmeyi tamamlamak için tarayıcıda açılır" +subtitle = "Takım'a yükseltme ile:" +title = "Planınızı Yükseltin" + [settings.developer] apiKeys = "API Anahtarları" title = "Geliştirici" @@ -5689,6 +5965,9 @@ people = "Kişiler" teams = "Ekipler" title = "Çalışma Alanı" +[settings.team] +title = "Takım" + [setup] description = "Stirling PDF'yi nasıl kullanmak istediğinizi seçerek başlayın" welcome = "Stirling PDF'ye hoş geldiniz" @@ -6011,6 +6290,11 @@ desc = "Ayırıcı sayfalarla otomatik bölme" name = "Ayırıcı Sayfa" tooltip = "Taramada belgeler arasına QR kodlu ayırıcı sayfalar kullanın" +[split.methods.byPoster] +name = "Yazdırılabilir Parçalar" +desc = "Büyük sayfaları yazdırılabilir boyutlara bölün" +tooltip = "Aşırı büyük sayfaları standart kağıtta (A4, Letter vb.) yazdırmaya uygun daha küçük parçalara ayırın" + [split.methods.byPages] desc = "Belirli sayfaları çıkar (1,3,5-10)" name = "Sayfa Numaraları" @@ -6029,6 +6313,7 @@ tooltip = "Azami dosya boyutunu belirtin (örn. 10MB, 500KB)" [split.methods.prefix] splitAt = "Şurada böl" splitBy = "Göre böl" +splitInto = "Şuna Böl" [split.methodSelection.tooltip] bullet1 = "Seçmek için bir yöntem kartına tıklayın" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Lütfen önce bir bölme yöntemi seçin" chooseMethod = "Yöntem Seç" settings = "Ayarlar" +[split.poster] +rightToLeft = "Sağdan sola böl" + +[split.poster.pageSize] +label = "Hedef Sayfa Boyutu" +description = "Yazdırma için çıktı sayfalarının boyutu" + +[split.poster.xFactor] +label = "Yatay Bölümler" +description = "Her sayfanın bölüneceği sütun sayısı" + +[split.poster.yFactor] +label = "Dikey Bölümler" +description = "Her sayfanın bölüneceği satır sayısı" + [split.tooltip.byChapters] bullet1 = "Yer İmi Düzeyi: Hangi düzeyde bölüneceği (1=üst düzey)" bullet2 = "Meta Verileri Dahil Et: Belge özelliklerini koru" @@ -6085,6 +6385,14 @@ bullet5 = "Ayırıcı sayfaların her iki yüzünü de tarıyorsanız Çift Yön text = "QR kodlu fiziksel ayırıcı sayfaları kullanarak taranan belgeleri otomatik olarak bölün. Birlikte taranan birden çok belgeyi işlemek için mükemmeldir." title = "Ayırıcı Sayfaya Göre Böl" +[split.tooltip.byPoster] +bullet1 = "Hedef Sayfa Boyutu: Çıktı kağıt boyutunu seçin (A4, Letter vb.)" +bullet2 = "Yatay/Dikey Bölümler: Bölme için ızgara boyutu" +bullet3 = "Sağdan Sola: RTL düzenleri için sütun sırasını ters çevirin" +bullet4 = "Poster oluşturmak için parçaları yazdırıp birleştirin" +text = "Büyük PDF sayfalarını, standart kağıt boyutlarına uygun daha küçük, yazdırılabilir parçalara bölün. Aşırı büyük sayfalardan poster baskıları oluşturmak için idealdir." +title = "Poster Baskı için Böl" + [split.tooltip.byPages] bullet1 = "Tek bölme noktaları: 3,7 (3 ve 7. sayfalardan sonra böler)" bullet2 = "Aralık bölme noktaları: 3-8 (3. sayfadan önce ve 8. sayfadan sonra böler)" @@ -6364,9 +6672,13 @@ tags = "web-yakala,sayfa-kaydet,webten-dökümana,arşivle" title = "URL'den PDF'e" [usage] +aboutUsageAnalytics = "Kullanım Analitiği Hakkında" +configureSettings = "Analitik Ayarlarını Yapılandır" error = "Kullanım istatistikleri yüklenirken hata" noData = "Veri yok" noDataMessage = "Şu anda kullanım istatistikleri mevcut değil." +usageAnalyticsExplanation = "Kullanım analitiği, uç nokta isteklerini ve araç kullanım kalıplarını izler. Denetim Günlüğü panosuyla birlikte, sistem etkinliği, performans ve güvenlik olaylarına tam görünürlük elde edersiniz." +viewAuditLogs = "Denetim Günlüklerini Görüntüle" [usage.chart] title = "Uç Nokta Kullanım Grafiği" @@ -6947,3 +7259,278 @@ cancel = "İptal" confirm = "Çıkart" message = "Bu ZIP {{count}} dosya içeriyor. Yine de çıkartılsın mı?" title = "Büyük ZIP Dosyası" + +[cloudBadge] +tooltip = "Bu işlem bulut kredilerinizi kullanacak" + +[team] +cancelInviteError = "Davet iptal edilemedi" +confirmCancelInvite = "Bu daveti iptal etmek istediğinizden emin misiniz?" +confirmLeave = "Bu takımdan ayrılmak istediğinizden emin misiniz?" +confirmLeaveLeader = "Bir takım lideri olarak ayrılmanız, sizi takımdan kaldırır. Emin misiniz?" +confirmRemove = "Bu üyeyi kaldırmak istediğinizden emin misiniz?" +editName = "Takım adını düzenle" +inviteCancelled = "Davet iptal edildi" +inviteError = "Davet gönderilemedi" +inviteSent = "Davet başarıyla gönderildi" +leader = "Lider" +leaveButton = "Takımdan Ayrıl" +leaveError = "Takımdan ayrılamadı" +leaveSuccess = "Takımdan başarıyla ayrıldınız" +loading = "Takım bilgileri yükleniyor..." +memberCount = "{{count}} üye" +memberRemoved = "Üye başarıyla kaldırıldı" +namePlaceholder = "Takım adını girin" +personal = "Kişisel" +removeError = "Üye kaldırılamadı" +renameError = "Takım yeniden adlandırılamadı" +renameSuccess = "Takım başarıyla yeniden adlandırıldı" + +[team.invitationBanner] +message = "sizi katılmaya davet etti" +acceptButton = "Kabul Et" +rejectButton = "Reddet" + +[team.features] +badge = "Takım Özellikleri" +subtitle = "Takımınızla iş birliği yapın" +title = "Takım İş Birliği" +viewPlans = "Planları Görüntüle" + +[team.features.billing] +description = "Faturalandırmayı ve abonelikleri yönetin" +title = "Faturalandırma Yönetimi" + +[team.features.credits] +description = "Tüm üyeler için paylaşılan kredi havuzu" +title = "Paylaşılan Krediler" + +[team.features.dashboard] +description = "Takım etkinliği ve kullanımı görüntüleyin" +title = "Takım Panosu" + +[team.features.invite] +description = "Takımınıza üye ekleyin" +title = "Üye Davet Et" + +[team.invite] +cancelLabel = "İptal" +invalidEmail = "Geçersiz e-posta adresi" +placeholder = "E-posta adresi girin" +sendButton = "Davet Gönder" +title = "Takım Üyesi Davet Et" + +[team.members] +emailColumn = "E-posta" +empty = "Henüz takım üyesi yok" +nameColumn = "Ad" +pending = "Beklemede" +remove = "Kaldır" +roleColumn = "Rol" +title = "Takım Üyeleri" + +[team.upgrade] +button = "Takım'a Yükseltin" +description = "Takım iş birliği özelliklerinin kilidini açın" +title = "Takım Planına Yükseltin" + +[provider.oauth2.google] +scope = "Oturum açma kimlik doğrulaması" + +[provider.oauth2.google.clientId] +label = "İstemci Kimliği" +description = "Google Cloud Console'dan OAuth2 istemci kimliği" + +[provider.oauth2.google.clientSecret] +label = "İstemci Sırrı" +description = "Google Cloud Console'dan OAuth2 istemci sırrı" + +[provider.oauth2.google.scopes] +label = "Kapsamlar" +description = "Virgülle ayrılmış OAuth2 kapsamları" + +[provider.oauth2.google.useAsUsername] +label = "Kullanıcı Adı Olarak Kullan" +description = "Kullanıcı adı olarak kullanılacak alan (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Oturum açma kimlik doğrulaması" + +[provider.oauth2.github.clientId] +label = "İstemci Kimliği" +description = "GitHub Developer Settings'ten OAuth2 istemci kimliği" + +[provider.oauth2.github.clientSecret] +label = "İstemci Sırrı" +description = "GitHub Developer Settings'ten OAuth2 istemci sırrı" + +[provider.oauth2.github.scopes] +label = "Kapsamlar" +description = "Virgülle ayrılmış OAuth2 kapsamları" + +[provider.oauth2.github.useAsUsername] +label = "Kullanıcı Adı Olarak Kullan" +description = "Kullanıcı adı olarak kullanılacak alan (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Yayıncı URL'si" +description = "Keycloak realm'inin OpenID Connect Keşif uç noktasının URL'si" + +[provider.oauth2.keycloak.clientId] +label = "İstemci Kimliği" +description = "Keycloak'tan OAuth2 istemci kimliği" + +[provider.oauth2.keycloak.clientSecret] +label = "İstemci Sırrı" +description = "Keycloak'tan OAuth2 istemci sırrı" + +[provider.oauth2.keycloak.scopes] +label = "Kapsamlar" +description = "Virgülle ayrılmış OAuth2 kapsamları" + +[provider.oauth2.keycloak.useAsUsername] +label = "Kullanıcı Adı Olarak Kullan" +description = "Kullanıcı adı olarak kullanılacak alan (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "Genel OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Genel OAuth2'yi Etkinleştir" +description = "Özel bir OAuth2 sağlayıcısı kullanarak kimlik doğrulamayı etkinleştirin" + +[provider.oauth2.generic.provider] +label = "Sağlayıcı Adı" +description = "OAuth2 sağlayıcınızın adı (örn. Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "Veren URL'si" +description = "OpenID Connect Keşfi'ni destekleyen sağlayıcı (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "İstemci Kimliği" +description = "Sağlayıcınızdan alınan OAuth2 istemci kimliği" + +[provider.oauth2.generic.clientSecret] +label = "İstemci Sırrı" +description = "Sağlayıcınızdan alınan OAuth2 istemci sırrı" + +[provider.oauth2.generic.scopes] +label = "Kapsamlar" +description = "Virgülle ayrılmış OAuth2 kapsamları" + +[provider.oauth2.generic.useAsUsername] +label = "Kullanıcı Adı Olarak Kullan" +description = "Kullanıcı adı olarak kullanılacak alan" + +[provider.oauth2.generic.autoCreateUser] +label = "Kullanıcıları Otomatik Oluştur" +description = "İlk OAuth2 oturum açışında kullanıcı hesaplarını otomatik olarak oluştur" + +[provider.oauth2.generic.blockRegistration] +label = "Kaydı Engelle" +description = "OAuth2 üzerinden yeni kullanıcı kaydını engelle" + +[provider.smtp] +name = "SMTP Posta" +scope = "E-posta Bildirimleri" + +[provider.smtp.enabled] +label = "Postayı Etkinleştir" +description = "E-posta bildirimlerini ve SMTP işlevselliğini etkinleştirin" + +[provider.smtp.host] +label = "SMTP Sunucusu" +description = "SMTP sunucunuzun ana makine adı veya IP adresi" + +[provider.smtp.port] +label = "SMTP Bağlantı Noktası" +description = "SMTP bağlantısı için bağlantı noktası numarası (genellikle 25, 465 veya 587)" + +[provider.smtp.username] +label = "SMTP Kullanıcı Adı" +description = "SMTP kimlik doğrulaması için kullanıcı adı" + +[provider.smtp.password] +label = "SMTP Parolası" +description = "SMTP kimlik doğrulaması için parola" + +[provider.smtp.from] +label = "Kimden Adresi" +description = "Gönderici olarak kullanılacak e-posta adresi" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "SAML2'yi Etkinleştir" +description = "SAML2 kimlik doğrulamasını etkinleştirin (yalnızca Kurumsal)" + +[provider.saml2.provider] +label = "Sağlayıcı Adı" +description = "SAML2 sağlayıcınızın adı" + +[provider.saml2.registrationId] +label = "Kayıt Kimliği" +description = "Hizmet Sağlayıcı (SP) uygulamanızın adı" + +[provider.saml2.idpMetadataUri] +label = "IDP Meta Verisi URI'si" +description = "Sağlayıcınızın meta verileri için URI" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Tek Oturum Açma URL'si" +description = "SSO başlatma için URL" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Tek Oturum Kapatma URL'si" +description = "SLO başlatma için URL" + +[provider.saml2.idpIssuer] +label = "IDP Veren" +description = "Sağlayıcınızın kimliği" + +[provider.saml2.idpCert] +label = "IDP Sertifikası" +description = "Sertifika yolu (örn. classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Özel Anahtar" +description = "Özel anahtar yolunuz" + +[provider.saml2.spCert] +label = "SP Sertifikası" +description = "İmzalama sertifikanızın yolu" + +[provider.saml2.autoCreateUser] +label = "Kullanıcıları Otomatik Oluştur" +description = "İlk SAML2 oturum açışında kullanıcı hesaplarını otomatik olarak oluşturun" + +[provider.saml2.blockRegistration] +label = "Kaydı Engelle" +description = "SAML2 üzerinden yeni kullanıcı kaydını engelle" + +[provider.googledrive] +name = "Google Drive" +scope = "Dosya İçe Aktarma" + +[provider.googledrive.enabled] +label = "Google Drive Dosya Seçiciyi Etkinleştir" +description = "Kullanıcıların doğrudan Google Drive'dan dosya içe aktarmasına izin ver" + +[provider.googledrive.clientId] +label = "İstemci Kimliği" +description = "Google Cloud Console'dan Google OAuth 2.0 İstemci Kimliği" + +[provider.googledrive.apiKey] +label = "API Anahtarı" +description = "Google Cloud Console'dan Google Picker API için Google API Anahtarı" + +[provider.googledrive.appId] +label = "Uygulama Kimliği" +description = "Google Cloud Console'dan Google Drive Uygulama Kimliği" diff --git a/frontend/public/locales/uk-UA/translation.toml b/frontend/public/locales/uk-UA/translation.toml index 6206166f0..a84ec64e1 100644 --- a/frontend/public/locales/uk-UA/translation.toml +++ b/frontend/public/locales/uk-UA/translation.toml @@ -96,6 +96,8 @@ pin = "Закріпити файл (залишити активним після poweredBy = "Працює на" pro = "Pro" processTimeWarning = "Увага: Цей процес може тривати до хвилини в залежності від розміру файлу." +processingComplete = "Ваш файл готовий." +processingCompleteMultiple = "{{count}} файлів готово." property = "Властивість" quickPosition = "Швидке розташування" red = "Червоний" @@ -105,6 +107,7 @@ save = "Зберегти" saveToBrowser = "Зберегти в браузері" saveUnavailable = "Збереження недоступне для цього елемента" seeDockerHub = "Переглянути Docker Hub" +editSecret = "Редагувати це значення" selectFillter = "-- Вибрати --" size = "Розмір" sponsor = "Спонсор" @@ -651,6 +654,7 @@ description = "Налаштуйте зовнішніх провайдерів а disconnect = "Від’єднати" disconnected = "Провайдера успішно від’єднано" disconnectError = "Не вдалося від’єднати провайдера" +documentation = "Переглянути документацію" imageResolutionFull = "Повна (оригінальний розмір)" imageResolutionReduced = "Зменшена (макс. 1200 пікселів)" linkedServices = "Пов’язані служби" @@ -964,6 +968,18 @@ label = "Мова за замовчуванням" description = "Максимальний розмір завантаження файлу (наприклад, 100MB, 1GB)" label = "Обмеження завантаження файлів" +[admin.settings.general.hideDisabledTools] +description = "Приховати вимкнені інструменти в інтерфейсі" +label = "Приховати вимкнені інструменти" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Приховати кнопку Google Drive, якщо не ввімкнено" +label = "Приховати Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Приховати кнопку мобільного сканера QR, якщо не ввімкнено" +label = "Приховати мобільний сканер" + [admin.settings.general.frontendUrl] description = "Базовий URL для фронтенду (напр., https://pdf.example.com). Використовується для посилань у листах-запрошеннях і мобільних завантажень через QR-код. Залиште порожнім, щоб використовувати URL бекенду." label = "URL фронтенду" @@ -1148,6 +1164,8 @@ title = "Безпека" [admin.settings.security.audit] label = "Журнал аудиту" +showDetails = "Показати деталі рівня аудиту" +hideDetails = "Приховати деталі рівня аудиту" [admin.settings.security.audit.enabled] description = "Відстежувати дії користувачів і системні події для відповідності та моніторингу безпеки" @@ -1157,10 +1175,32 @@ label = "Увімкнути журнал аудиту" description = "0=OFF, 1=BASIC, 2=STANDARD, 3=VERBOSE" label = "Рівень аудиту" +[admin.settings.security.audit.levelDetails] +off = "Без журналювання аудиту (крім критичних подій безпеки)" +basic = "Операції з файлами PDF (стиснення, поділ, об’єднання тощо) і зміни налаштувань. Фіксує: статус операції (успіх/невдача), параметри методів, час виконання. Мінімальний обсяг журналу." +standard = "Події BASIC плюс: вхід/вихід користувачів, зміни облікових записів, загальні GET-запити. Виключає безперервні опитувальні виклики (/auth/me, /app-config, /health тощо) для зменшення шуму в журналах. Оптимально для більшості розгортань." +verbose = "Події STANDARD плюс: безперервні опитувальні виклики, усі GET-запити, детальний час виконання. Попередження: великий обсяг журналів і вплив на продуктивність." + [admin.settings.security.audit.retentionDays] description = "Кількість днів зберігання журналів аудиту" label = "Зберігання аудиту (дні)" +[admin.settings.security.audit.advancedOptions] +title = "Додаткові параметри" +description = "Наведені нижче параметри збільшують час обробки та споживання пам’яті. Увімкніть лише за реальної потреби." + +[admin.settings.security.audit.captureFileHash] +description = "Обчислювати хеш SHA-256 завантажених PDF-файлів для перевірки цілісності. Незалежно від рівня аудиту." +label = "Фіксувати хеш файлу (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Витягувати поле автора з документів PDF під час обробки. Потребує парсингу PDF, збільшує затримку. Незалежно від рівня аудиту." +label = "Фіксувати метадані автора PDF" + +[admin.settings.security.audit.captureOperationResults] +description = "Фіксувати значення, що повертаються методами. Не рекомендується: суттєво збільшує обсяг журналу та використання диска." +label = "Фіксувати результати операцій" + [admin.settings.security.csrfDisabled] description = "Вимкнути захист від Cross-Site Request Forgery (не рекомендовано)" label = "Вимкнути захист CSRF" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "Налаштувати журналювання аудиту" +configureAuditMessage = "Відкоригуйте рівень журналювання аудиту, період зберігання та інші параметри в розділі «Безпека й автентифікація»." disabled = "Ведення журналу аудиту вимкнено" disabledMessage = "Увімкніть ведення журналу аудиту в конфігурації застосунку, щоб відстежувати події системи." enterpriseRequired = "Потрібна ліцензія Enterprise" enterpriseRequiredMessage = "Система журналювання аудиту — функція рівня Enterprise. Оновіть до ліцензії Enterprise, щоб мати доступ до журналів аудиту та аналітики." +goToSettings = "Перейти до налаштувань аудиту" notAvailable = "Система аудиту недоступна" notAvailableMessage = "Система аудиту не налаштована або недоступна." -[audit.charts] -byType = "Події за типом" -byUser = "Події за користувачем" -day = "День" -error = "Помилка завантаження діаграм" -month = "Місяць" -overTime = "Події в часі" -title = "Панель аудиту" -week = "Тиждень" - [audit.error] title = "Помилка завантаження системи аудиту" -[audit.events] -actions = "Дії" -clearFilters = "Очистити" -details = "Подробиці" -endDate = "Кінцева дата" -error = "Помилка завантаження подій" -eventDetails = "Подробиці події" -filterByType = "Фільтр за типом" -filterByUser = "Фільтр за користувачем" -ipAddress = "IP-адреса" -noEvents = "Подій не знайдено" -startDate = "Початкова дата" -timestamp = "Часова мітка" -title = "Події аудиту" -type = "Тип" -user = "Користувач" -viewDetails = "Переглянути подробиці" - [audit.export] clearFilters = "Очистити" description = "Експортуйте події аудиту у формат CSV або JSON. Використовуйте фільтри, щоб обмежити експортовані дані." endDate = "Кінцева дата" error = "Не вдалося експортувати дані" exportButton = "Експортувати дані" +fieldAuthor = "Автор (з PDF)" +fieldDate = "Дата" +fieldDocumentName = "Назва документа" +fieldFileHash = "Хеш файлу (SHA-256)" +fieldIpAddress = "IP-адреса" +fieldOperationResults = "Результати операцій" +fieldOutcome = "Результат (успіх/невдача)" +fieldTool = "Інструмент" +fieldUsername = "Ім’я користувача" filterByType = "Фільтр за типом" filterByUser = "Фільтр за користувачем" filters = "Фільтри (необов’язково)" format = "Формат експорту" +selectFields = "Виберіть поля для включення" startDate = "Початкова дата" title = "Експорт даних аудиту" +verboseRequired = "Потрібен рівень аудиту VERBOSE" [audit.systemStatus] +autoRefresh = "Автооновлення" +autoRefreshLabel = "Автооновлення кожні 30 с" +captureBySettings = "Увімкніть у налаштуваннях" +capturedFields = "Захоплені поля" +date = "Дата" days = "днів" disabled = "Вимкнено" +documentName = "Назва документа" enabled = "Увімкнено" +fileHash = "Хеш файлу" level = "Рівень аудиту" +pdfAuthor = "Автор PDF" retention = "Період зберігання" status = "Ведення журналу аудиту" title = "Стан системи" +tool = "Інструмент" totalEvents = "Усього подій" +username = "Ім’я користувача" +verboseOnly = "Лише VERBOSE" + +[audit.stats] +activeUsers = "Активні користувачі" +attention = "Потрібна увага" +avgLatency = "Середня затримка" +error = "Помилка завантаження статистики" +errorLoadingStats = "Не вдалося завантажити статистику" +excellent = "Відмінно" +good = "Добре" +noData = "Н/Д" +successRate = "Рівень успішності" +title = "Зведення" +totalEvents = "Усього подій" +vsLastPeriod = "порівняно з попереднім періодом" + +[audit.charts] +byTool = "Найпопулярніші інструменти" +byType = "Події за типом" +byUser = "Події за користувачем" +day = "День" +error = "Помилка завантаження діаграм" +hourlyActivity = "Погодинна активність" +month = "Місяць" +noData = "Немає даних за цей період" +overTime = "Події в часі" +title = "Панель аудиту" +week = "Тиждень" + +[audit.events] +actions = "Дії" +author = "Автор" +clearFilters = "Очистити" +details = "Подробиці" +documentName = "Документ" +endDate = "Кінцева дата" +error = "Помилка завантаження подій" +eventDetails = "Подробиці події" +failure = "Невдача" +fileHash = "Хеш файлу" +filterByType = "Фільтр за типом" +filterByUser = "Фільтр за користувачем" +ipAddress = "IP-адреса" +noEvents = "Подій не знайдено" +outcome = "Статус" +sortAsc = "Сортувати за зростанням" +sortDesc = "Сортувати за спаданням" +startDate = "Початкова дата" +success = "Успіх" +timestamp = "Часова мітка" +title = "Події аудиту" +type = "Тип" +user = "Користувач" +viewDetails = "Переглянути подробиці" + +[audit.filters] +allOutcomes = "Усі" +failureOnly = "Лише з помилками" +last7Days = "Останні 7 днів" +last30Days = "Останні 30 днів" +outcomeFilter = "Результат" +quickPresets = "Швидкі фільтри" +successOnly = "Лише успіх" +thisMonth = "Цього місяця" +today = "Сьогодні" [audit.tabs] +clearData = "Очистити дані" dashboard = "Панель" events = "Події аудиту" export = "Експорт" +[audit.clearData] +cancel = "Скасувати" +codeDoesNotMatch = "Код не співпадає" +codePlaceholder = "Введіть код тут" +confirmationCode = "Код підтвердження" +confirmationRequired = "Видалити всі дані аудиту" +confirmMessage = "Це назавжди видалить усі журнали аудиту. Введіть код підтвердження нижче, щоб продовжити." +confirmTitle = "Підтвердіть, що хочете видалити" +deleteButton = "Видалити" +enterCode = "Код підтвердження" +enterCodeBelow = "Введіть код точно як вище (з урахуванням регістру)" +initiateDelete = "Видалити всі дані" +irreversible = "НЕЗВОРОТНО" +success = "Успіх" +successMessage = "Усі дані аудиту успішно очищено" +warning1 = "Цю дію не можна скасувати" +warning2 = "Видалення даних аудиту назавжди прибере всі історичні журнали аудиту, включно з подіями безпеки, активністю користувачів та операціями з файлами з бази даних." + [auth] accessDenied = "Доступ заборонено" insufficientPermissions = "У вас немає прав для виконання цієї дії." @@ -2254,9 +2374,11 @@ copy = "Копіювати" done = "Готово" error = "Помилка" expand = "Розгорнути" +learnMore = "Дізнатися більше" lines = "рядків" loading = "Завантаження..." next = "Далі" +operation = "цю операцію" preview = "Попередній перегляд" previous = "Назад" refresh = "Оновити" @@ -2920,6 +3042,7 @@ copyStack = "Скопіювати стек викликів" discordSubmit = "Discord - Надіслати повідомлення підтримки" dismissAllErrors = "Закрити всі помилки" encryptedPdfMustRemovePassword = "Цей PDF зашифрований або захищений паролем. Будь ласка, розблокуйте його перед перетворенням у PDF/A." +generic = "Сталася помилка" github = "Надіслати запит на GitHub" githubSubmit = "GitHub - Надіслати запит" incorrectPasswordProvided = "Пароль до PDF невірний або не вказаний." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Вашу підписку успішно оновле upgradeSuccess = "Платіж успішний! Вашу підписку оновлено. Ліцензію оновлено на вашому сервері. Незабаром ви отримаєте лист-підтвердження." upgradeTitle = "Оновити до {{planName}}" yearly = "Щороку" +checkoutOpened = "Оплату відкрито в браузері" +checkoutInstructions = "Завершіть покупку у щойно відкритому вікні браузера. Після завершення оплати поверніться сюди та натисніть кнопку нижче, щоб оновити інформацію про білінг." +refreshBilling = "Я завершив оплату — оновити білінг" +closeLater = "Зроблю це пізніше" [payment.emailStage] continue = "Продовжити" @@ -4679,6 +4806,13 @@ prompt = "Виберіть сторінку для витягу таблиці" submit = "Конвертувати" title = "PDF в CSV" +[PDFToXLSX] +header = "PDF у Excel" +prompt = "Виберіть сторінки для вилучення таблиць" +submit = "Перетворити" +title = "PDF у Excel (XLSX)" +tags = "електронна таблиця,excel,xlsx,таблиця,витягнути,перетворити" + [PDFToHTML] credit = "Цей сервіс використовує pdftohtml для перетворення файлів." header = "PDF в HTML" @@ -4835,6 +4969,7 @@ customPricing = "Індивідуальний" featureComparison = "Порівняння можливостей" from = "Від" hideComparison = "Приховати порівняння можливостей" +included = "Включено" includedInCurrent = "Входить у ваш план" licensedSeats = "Ліцензовано: {{count}} місць" manage = "Керувати" @@ -4852,9 +4987,11 @@ title = "Активний план" [plan.availablePlans] subtitle = "Виберіть план, який відповідає вашим потребам" +loadError = "Не вдалося завантажити ціни планів. Використовуються типові значення." title = "Доступні плани" [plan.enterprise] +siteLicense = "Ліцензія для організації" highlight1 = "Індивідуальне ціноутворення" highlight2 = "Виділена підтримка" highlight3 = "Найновіші можливості" @@ -4928,6 +5065,81 @@ keyDescription = "Вставте ліцензійний ключ із листа success = "Ліцензію активовано!" successMessage = "Вашу ліцензію успішно активовано. Тепер можете закрити це вікно." +[plan.team] +name = "Team" +siteLicense = "Ліцензія для організації" + +[credits] +enableOverageBilling = "Увімкнути понадлімітний білінг" +maybeLater = "Можливо пізніше" +upgrade = "Оновити" + +[credits.modal] +advancedMonitoring = "Розширений моніторинг" +allInOneWorkspace = "Єдиний робочий простір для PDF (переглядач, інструменти та агент)" +apiSandbox = "Пісочниця API" +contactSales = "Зв’язатися з відділом продажів" +creditsRemaining = "Залишилося {{current}} з {{total}}" +creditsThisMonth = "Щомісячні кредити" +current = "Поточний план" +customPricing = "Індивідуально" +customSmartFolders = "Користувацькі розумні папки" +dedicatedSupportSlas = "Виділена підтримка та SLA" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Усе в Credits, а також:" +everythingInFree = "Усе у Free, а також:" +fasterThroughput = "Пропускна здатність у 10 разів вища" +forRegularWork = "Для стандартної роботи з PDF:" +freeTier = "Безкоштовний рівень" +fullyPrivateFiles = "Повністю приватні файли" +largeFileProcessing = "Обробка великих файлів" +managedMemberMessage = "Ви маєте необмежений доступ до кредитів через вашу команду. Якщо потрібна допомога, зверніться до лідера команди." +managedMemberTitle = "Необмежені кредити" +meteringBillingNote = "Понадлімітні кредити виставляються щомісяця разом із вашою підпискою Team. Відстежуйте використання у налаштуваннях облікового запису будь-коли." +meteringExplanation = "Ваш план Team включає {{credits}} кредитів на місяць. Коли вони закінчуються, понадлімітний білінг автоматично надає додаткові кредити, тож вам не доведеться зупиняти роботу." +meteringIncluded = "{{credits}} кредитів/місяць включено з Team" +meteringNoCommitment = "Без зобов’язань, можна скасувати будь-коли" +meteringNeverRunOut = "Кредити ніколи не закінчаться" +meteringPayAsYouGo = "Платіть лише за використане" +meteringPrice = "Додаткові кредити по {{price}}/кредит" +meteringTitle = "Понадлімітний білінг «плати за використане»" +monthlyCredits = "кредити на місяць" +orgWideAccess = "Контроль доступу по всій організації" +overage = "понадліміт" +perMonth = "/міс" +popular = "Популярний" +premiumAiModels = "Преміум AI-моделі" +prioritySupport = "Пріоритетна підтримка" +privateDocCloud = "Приватна хмара документів" +ragFineTuning = "RAG + fine-tuning" +secureApiAccess = "Безпечний доступ до API" +selfHostLink = "Ознайомтеся з документацією та планами" +selfHostPrompt = "Хочете розгорнути у себе?" +standardThroughput = "Стандартна пропускна здатність" +subtitle = "Оновіть до Team, щоб отримати у 10 разів більше кредитів і швидшу обробку." +subtitlePro = "Увімкніть автоматичний понадлімітний білінг, щоб кредити ніколи не закінчувалися." +teamLeaderOnly = "Лише лідери команди можуть вмикати понадлімітний білінг" +teamSubscription = "Team" +titleExhausted = "Ви використали свої безкоштовні кредити" +titleExhaustedPro = "У вас закінчилися кредити" +unlimitedApiAccess = "Необмежений доступ до API" +unlimitedMonthlyCredits = "Ліцензія для організації" +unlimitedSeats = "Необмежена кількість місць" + +[credits.modal.features] +everythingInCredits = "Усе в Credits, а також:" +everythingInFree = "Усе у Free, а також:" +forRegularWork = "Для стандартної роботи з PDF:" + +[credits.insufficient] +brief = "Недостатньо кредитів. Потрібно {{required}} кредитів, а маєте {{current}}." +freeTier = "Оновіть до Team, щоб отримати у 10 разів більше кредитів і необмежений понадлімітний білінг." +managedMember = "Зверніться до лідера вашої команди по допомогу." +message = "У вас недостатньо кредитів для запуску {{tool}}. Зараз у вас {{current}} кредитів." +messageWithAmount = "Потрібно {{required}} кредитів для запуску {{tool}}, але у вас лише {{current}}." +teamMember = "Увімкніть понадлімітний білінг, щоб кредити ніколи не закінчувалися." +title = "Недостатньо кредитів" + [printFile] header = "Роздрукувати файл прінтером" submit = "Роздрукувати" @@ -5565,6 +5777,70 @@ user = "Увійшли як" saas = "Stirling Cloud" selfhosted = "Самохостинг" +[settings.planBilling] +currentPlan = "Поточний план" +loading = "Завантаження інформації про білінг..." +notAvailable = "План і білінг доступні лише при підключенні до Stirling Cloud (режим SaaS)." +title = "План і білінг" + +[settings.planBilling.billing] +manageBilling = "Керувати білінгом" +nextBillingDate = "Наступна дата білінгу" +overageCost = "Поточна вартість понадліміту: {{amount}} ({{credits}} кредитів)" + +[settings.planBilling.credits] +estimatedCost = "Орієнтовна вартість: {{amount}}" +freeTierInfo = "Безкоштовний план включає {{freeCredits}} кредитів на місяць. Оновіть до Team для {{teamCredits}} кредитів/місяць і понадлімітного білінгу з оплатою за фактом використання." +included = "{{count}} кредитів/місяць (включено)" +noOverage = "Цього місяця немає понадлімітних нарахувань. Ви використовуєте включені {{count}} кредитів." +overage = "+ {{count}} понадліміт" +overageInfo = "Понадлімітні кредити тарифікуються по {{price}} за кредит. Ви платите лише за використання понад місячний ліміт." +title = "Використання кредитів" + +[settings.planBilling.errors] +fetchFailed = "Не вдалося отримати дані білінгу" +retry = "Повторити" + +[settings.planBilling.status] +active = "Активний" +canceled = "Скасовано" +pastDue = "Прострочено" +trial = "Пробний" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Користувацькі можливості та підтримка рівня Enterprise" +free = "Безкоштовно" +freeDescription = "50 кредитів на місяць" +team = "Team" +teamBadge = "Team" +teamDescription = "500 кредитів/місяць включено, автоматичний понадлімітний білінг для безперервної роботи" +teamTooltipCredits = "План Team включає {{credits}} кредитів/місяць." +teamTooltipFineprint = "Платите лише за використане понад включені кредити." +teamTooltipOverage = "Автоматичний понадлімітний білінг по {{price}}/кредит забезпечує безперервну роботу." + +[settings.planBilling.team] +managedByTeam = "Керується командою" +memberCount = "{{count}} учасників команди" + +[settings.planBilling.trial] +daysRemaining = "Залишилось {{days}} дн." +daysRemainingFull = "Ваш пробний період закінчиться через {{days}} дн." +endDate = "Спливає: {{date}}" +endsOn = "Кінець пробного періоду" +title = "Активний пробний період" + +[settings.planBilling.upgrade] +cta = "Оновити до Team" +featureApi = "Доступ до API для автоматизації" +featureCredits = "{{teamCredits}} кредитів на місяць (проти {{freeCredits}} у Free)" +featureMembers = "Необмежена кількість учасників команди" +featureSupport = "Пріоритетна підтримка" +featureThroughput = "Швидше опрацювання" +opensInBrowser = "Відкриється в браузері для завершення оновлення" +subtitle = "Оновіть до Team, щоб отримати:" +title = "Оновити ваш план" + [settings.developer] apiKeys = "Ключі API" title = "Розробка" @@ -5689,6 +5965,9 @@ people = "Учасники" teams = "Команди" title = "Робочий простір" +[settings.team] +title = "Команда" + [setup] description = "Почніть із вибору, як хочете використовувати Stirling PDF" welcome = "Ласкаво просимо до Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "Авторозділення з аркушами-розділювача name = "Розділювач сторінок" tooltip = "Використовуйте аркуші-розділювачі з QR-кодом між документами під час сканування" +[split.methods.byPoster] +name = "Друковані фрагменти" +desc = "Розділити великі сторінки на розміри, придатні для друку" +tooltip = "Розбити надмірно великі сторінки на менші частини, придатні для друку на стандартному папері (A4, Letter тощо)" + [split.methods.byPages] desc = "Витягти конкретні сторінки (1,3,5-10)" name = "Номери сторінок" @@ -6029,6 +6313,7 @@ tooltip = "Вкажіть максимальний розмір файлу (на [split.methods.prefix] splitAt = "Розділити на" splitBy = "Розділити за" +splitInto = "Розділити на" [split.methodSelection.tooltip] bullet1 = "Клацніть картку методу, щоб вибрати її" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Будь ласка, спочатку виберіть ме chooseMethod = "Вибрати метод" settings = "Налаштування" +[split.poster] +rightToLeft = "Розділяти справа-наліво" + +[split.poster.pageSize] +label = "Цільовий розмір сторінки" +description = "Розмір вихідних сторінок для друку" + +[split.poster.xFactor] +label = "Горизонтальні поділи" +description = "Кількість стовпців, на які ділити кожну сторінку" + +[split.poster.yFactor] +label = "Вертикальні поділи" +description = "Кількість рядків, на які ділити кожну сторінку" + [split.tooltip.byChapters] bullet1 = "Рівень закладок: рівень для розділення (1 = верхній рівень)" bullet2 = "Включити метадані: зберегти властивості документа" @@ -6085,6 +6385,14 @@ bullet5 = "Увімкніть дуплекс-режим, якщо скануєт text = "Автоматично розділяйте відскановані документи, використовуючи фізичні аркуші-розділювачі з QR-кодами. Чудово підходить для обробки кількох документів, відсканованих разом." title = "Розділити за розділювачем сторінок" +[split.tooltip.byPoster] +bullet1 = "Цільовий розмір сторінки: виберіть розмір паперу (A4, Letter тощо)" +bullet2 = "Горизонтальні/вертикальні поділи: розмір сітки для розділення" +bullet3 = "Справа-наліво: зворотний порядок стовпців для RTL-макетів" +bullet4 = "Надрукуйте та зберіть частини, щоб створити постер" +text = "Розділяйте великі сторінки PDF на менші друковані частини, придатні для стандартних форматів паперу. Ідеально для створення постерів із великих сторінок." +title = "Розділення для друку постера" + [split.tooltip.byPages] bullet1 = "Окремі точки розділення: 3,7 (розділяє після сторінок 3 і 7)" bullet2 = "Діапазонні точки: 3-8 (розділяє перед сторінкою 3 і після сторінки 8)" @@ -6364,9 +6672,13 @@ tags = "веб-захоплення,збереження сторінки,веб title = "URL у PDF" [usage] +aboutUsageAnalytics = "Про аналітику використання" +configureSettings = "Налаштувати аналітику" error = "Помилка завантаження статистики використання" noData = "Немає доступних даних" noDataMessage = "Статистика використання наразі недоступна." +usageAnalyticsExplanation = "Аналітика використання відстежує запити до кінцевих точок і шаблони використання інструментів. У поєднанні з панеллю журналу аудиту ви отримуєте повну видимість активності системи, продуктивності та подій безпеки." +viewAuditLogs = "Переглянути журнали аудиту" [usage.chart] title = "Графік використання кінцевих точок" @@ -6947,3 +7259,278 @@ cancel = "Скасувати" confirm = "Розпакувати" message = "Цей ZIP містить {{count}} файлів. Розпакувати попри це?" title = "Великий ZIP-файл" + +[cloudBadge] +tooltip = "Ця операція використає ваші хмарні кредити" + +[team] +cancelInviteError = "Не вдалося скасувати запрошення" +confirmCancelInvite = "Ви впевнені, що хочете скасувати це запрошення?" +confirmLeave = "Ви впевнені, що хочете залишити цю команду?" +confirmLeaveLeader = "Як лідер команди, при виході вас буде видалено з команди. Продовжити?" +confirmRemove = "Ви впевнені, що хочете видалити цього учасника?" +editName = "Редагувати назву команди" +inviteCancelled = "Запрошення скасовано" +inviteError = "Не вдалося надіслати запрошення" +inviteSent = "Запрошення успішно надіслано" +leader = "Лідер" +leaveButton = "Вийти з команди" +leaveError = "Не вдалося вийти з команди" +leaveSuccess = "Успішно вийшли з команди" +loading = "Завантаження інформації про команду..." +memberCount = "{{count}} учасників" +memberRemoved = "Учасника успішно видалено" +namePlaceholder = "Введіть назву команди" +personal = "Особисте" +removeError = "Не вдалося видалити учасника" +renameError = "Не вдалося перейменувати команду" +renameSuccess = "Команду успішно перейменовано" + +[team.invitationBanner] +message = "запросив(ла) вас приєднатися" +acceptButton = "Прийняти" +rejectButton = "Відхилити" + +[team.features] +badge = "Можливості Team" +subtitle = "Працюйте разом із командою" +title = "Командна співпраця" +viewPlans = "Переглянути плани" + +[team.features.billing] +description = "Керування білінгом і підписками" +title = "Керування білінгом" + +[team.features.credits] +description = "Спільний пул кредитів для всіх учасників" +title = "Спільні кредити" + +[team.features.dashboard] +description = "Перегляд активності та використання команди" +title = "Панель команди" + +[team.features.invite] +description = "Додавайте учасників до своєї команди" +title = "Запросити учасників" + +[team.invite] +cancelLabel = "Скасувати" +invalidEmail = "Некоректна адреса електронної пошти" +placeholder = "Введіть адресу електронної пошти" +sendButton = "Надіслати запрошення" +title = "Запросити учасника команди" + +[team.members] +emailColumn = "Електронна пошта" +empty = "Поки що немає учасників команди" +nameColumn = "Ім’я" +pending = "В очікуванні" +remove = "Видалити" +roleColumn = "Роль" +title = "Учасники команди" + +[team.upgrade] +button = "Оновити до Team" +description = "Відкрийте можливості командної співпраці" +title = "Оновити до плану Team" + +[provider.oauth2.google] +scope = "Автентифікація входу" + +[provider.oauth2.google.clientId] +label = "Client ID" +description = "OAuth2 Client ID з Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret з Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Області доступу" +description = "Області доступу OAuth2, розділені комами" + +[provider.oauth2.google.useAsUsername] +label = "Використовувати як ім’я користувача" +description = "Поле для використання як ім’я користувача (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Автентифікація входу" + +[provider.oauth2.github.clientId] +label = "Client ID" +description = "OAuth2 Client ID з GitHub Developer Settings" + +[provider.oauth2.github.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret з GitHub Developer Settings" + +[provider.oauth2.github.scopes] +label = "Області доступу" +description = "Області доступу OAuth2, розділені комами" + +[provider.oauth2.github.useAsUsername] +label = "Використовувати як ім’я користувача" +description = "Поле для використання як ім’я користувача (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Issuer URL" +description = "URL кінцевої точки OpenID Connect Discovery realm у Keycloak" + +[provider.oauth2.keycloak.clientId] +label = "Client ID" +description = "OAuth2 Client ID з Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret з Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "Області доступу" +description = "Області доступу OAuth2, розділені комами" + +[provider.oauth2.keycloak.useAsUsername] +label = "Використовувати як ім’я користувача" +description = "Поле для використання як ім’я користувача (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "Загальний OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Увімкнути загальний OAuth2" +description = "Увімкнути автентифікацію з використанням власного постачальника OAuth2" + +[provider.oauth2.generic.provider] +label = "Назва постачальника" +description = "Назва вашого постачальника OAuth2 (напр., Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "Issuer URL" +description = "Постачальник, який підтримує OpenID Connect Discovery (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "Client ID" +description = "OAuth2 Client ID від вашого постачальника" + +[provider.oauth2.generic.clientSecret] +label = "Client Secret" +description = "OAuth2 Client Secret від вашого постачальника" + +[provider.oauth2.generic.scopes] +label = "Області доступу" +description = "Області доступу OAuth2, розділені комами" + +[provider.oauth2.generic.useAsUsername] +label = "Використовувати як ім’я користувача" +description = "Поле для використання як ім’я користувача" + +[provider.oauth2.generic.autoCreateUser] +label = "Автостворення користувачів" +description = "Автоматично створювати облікові записи при першому вході через OAuth2" + +[provider.oauth2.generic.blockRegistration] +label = "Блокувати реєстрацію" +description = "Заборонити нову реєстрацію користувачів через OAuth2" + +[provider.smtp] +name = "SMTP пошта" +scope = "Сповіщення електронною поштою" + +[provider.smtp.enabled] +label = "Увімкнути пошту" +description = "Увімкнути сповіщення електронною поштою та функціональність SMTP" + +[provider.smtp.host] +label = "SMTP Host" +description = "Ім’я хоста або IP-адреса вашого сервера SMTP" + +[provider.smtp.port] +label = "SMTP Port" +description = "Номер порту для підключення SMTP (зазвичай 25, 465 або 587)" + +[provider.smtp.username] +label = "SMTP Username" +description = "Ім’я користувача для автентифікації SMTP" + +[provider.smtp.password] +label = "SMTP Password" +description = "Пароль для автентифікації SMTP" + +[provider.smtp.from] +label = "Адреса відправника" +description = "Адреса електронної пошти відправника" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "Увімкнути SAML2" +description = "Увімкнути автентифікацію SAML2 (лише Enterprise)" + +[provider.saml2.provider] +label = "Назва постачальника" +description = "Назва вашого постачальника SAML2" + +[provider.saml2.registrationId] +label = "ID реєстрації" +description = "Назва вашого застосунку Service Provider (SP)" + +[provider.saml2.idpMetadataUri] +label = "IDP Metadata URI" +description = "URI метаданих вашого постачальника" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login URL" +description = "URL для ініціювання SSO" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout URL" +description = "URL для ініціювання SLO" + +[provider.saml2.idpIssuer] +label = "IDP Issuer" +description = "ID вашого постачальника" + +[provider.saml2.idpCert] +label = "Сертифікат IDP" +description = "Шлях до сертифіката (напр., classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Приватний ключ" +description = "Шлях до вашого приватного ключа" + +[provider.saml2.spCert] +label = "Сертифікат SP" +description = "Шлях до вашого сертифіката підпису" + +[provider.saml2.autoCreateUser] +label = "Автостворення користувачів" +description = "Автоматично створювати облікові записи при першому вході через SAML2" + +[provider.saml2.blockRegistration] +label = "Блокувати реєстрацію" +description = "Заборонити нову реєстрацію користувачів через SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "Імпорт файлів" + +[provider.googledrive.enabled] +label = "Увімкнути вибір файлів Google Drive" +description = "Дозволити користувачам імпортувати файли безпосередньо з Google Drive" + +[provider.googledrive.clientId] +label = "Client ID" +description = "Google OAuth 2.0 Client ID з Google Cloud Console" + +[provider.googledrive.apiKey] +label = "API Key" +description = "Ключ Google API для Google Picker API з Google Cloud Console" + +[provider.googledrive.appId] +label = "App ID" +description = "Google Drive App ID з Google Cloud Console" diff --git a/frontend/public/locales/vi-VN/translation.toml b/frontend/public/locales/vi-VN/translation.toml index bd04656e4..128c3eef1 100644 --- a/frontend/public/locales/vi-VN/translation.toml +++ b/frontend/public/locales/vi-VN/translation.toml @@ -96,6 +96,8 @@ pin = "Ghim tệp (giữ hoạt động sau khi chạy công cụ)" poweredBy = "Được hỗ trợ bởi" pro = "Pro" processTimeWarning = "Cảnh báo: Quá trình này có thể mất đến một phút tùy thuộc vào kích thước tệp" +processingComplete = "Tệp của bạn đã sẵn sàng." +processingCompleteMultiple = "{{count}} tệp đã sẵn sàng." property = "Thuộc tính" quickPosition = "Vị trí nhanh" red = "Đỏ" @@ -105,6 +107,7 @@ save = "Lưu" saveToBrowser = "Lưu vào trình duyệt" saveUnavailable = "Không thể lưu mục này" seeDockerHub = "Xem Docker Hub" +editSecret = "Chỉnh sửa giá trị này" selectFillter = "-- Chọn --" size = "Kích thước" sponsor = "Nhà tài trợ" @@ -651,6 +654,7 @@ description = "Cấu hình nhà cung cấp xác thực bên ngoài như OAuth2 v disconnect = "Ngắt kết nối" disconnected = "Ngắt kết nối nhà cung cấp thành công" disconnectError = "Không thể ngắt kết nối nhà cung cấp" +documentation = "Xem tài liệu" imageResolutionFull = "Đầy đủ (Kích thước gốc)" imageResolutionReduced = "Giảm (Tối đa 1200px)" linkedServices = "Dịch vụ đã liên kết" @@ -964,6 +968,18 @@ label = "Ngôn ngữ mặc định" description = "Kích thước tải lên tối đa (ví dụ: 100MB, 1GB)" label = "Giới hạn tải lên tệp" +[admin.settings.general.hideDisabledTools] +description = "Ẩn các công cụ bị vô hiệu hóa khỏi giao diện" +label = "Ẩn công cụ bị vô hiệu hóa" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "Ẩn nút Google Drive khi chưa bật" +label = "Ẩn Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "Ẩn nút quét QR trên di động khi chưa bật" +label = "Ẩn Trình quét di động" + [admin.settings.general.frontendUrl] description = "URL gốc cho frontend (vd., https://pdf.example.com). Dùng cho liên kết mời qua email và tải lên bằng mã QR trên di động. Để trống để dùng URL backend." label = "URL Frontend" @@ -1148,6 +1164,8 @@ title = "Bảo mật" [admin.settings.security.audit] label = "Ghi nhật ký kiểm toán" +showDetails = "Hiển thị chi tiết mức kiểm toán" +hideDetails = "Ẩn chi tiết mức kiểm toán" [admin.settings.security.audit.enabled] description = "Theo dõi hành động người dùng và sự kiện hệ thống cho mục đích tuân thủ và giám sát bảo mật" @@ -1157,10 +1175,32 @@ label = "Bật ghi nhật ký kiểm toán" description = "0=TẮT, 1=CƠ BẢN, 2=TIÊU CHUẨN, 3=CHI TIẾT" label = "Mức kiểm toán" +[admin.settings.security.audit.levelDetails] +off = "Không ghi nhật ký kiểm toán (trừ các sự kiện bảo mật quan trọng)" +basic = "Thao tác tệp PDF (nén, tách, gộp, v.v.) và thay đổi cài đặt. Ghi nhận: trạng thái thao tác (thành công/thất bại), tham số phương thức, thời gian. Lượng log tối thiểu." +standard = "Sự kiện BASIC cộng thêm: đăng nhập/đăng xuất người dùng, thay đổi tài khoản, yêu cầu GET chung. Loại trừ các cuộc gọi thăm dò liên tục (/auth/me, /app-config, /health, v.v.) để giảm nhiễu log. Phù hợp cho hầu hết triển khai." +verbose = "Sự kiện STANDARD cộng thêm: các cuộc gọi thăm dò liên tục, tất cả yêu cầu GET, chi tiết thời gian. Cảnh báo: lượng log lớn và ảnh hưởng hiệu năng." + [admin.settings.security.audit.retentionDays] description = "Số ngày lưu trữ nhật ký kiểm toán" label = "Giữ nhật ký (ngày)" +[admin.settings.security.audit.advancedOptions] +title = "Tùy chọn nâng cao" +description = "Các tùy chọn sau sẽ tăng thời gian xử lý và sử dụng bộ nhớ. Chỉ bật khi thực sự cần thiết." + +[admin.settings.security.audit.captureFileHash] +description = "Trích xuất mã băm SHA-256 của các tệp PDF tải lên để xác minh tính toàn vẹn. Độc lập với mức kiểm toán." +label = "Ghi nhận mã băm tệp (SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "Trích xuất trường tác giả từ tài liệu PDF trong quá trình xử lý. Yêu cầu phân tích PDF, tăng độ trễ. Độc lập với mức kiểm toán." +label = "Ghi nhận metadata Tác giả PDF" + +[admin.settings.security.audit.captureOperationResults] +description = "Ghi nhận giá trị trả về của phương thức. Không khuyến nghị: làm tăng đáng kể lượng log và dung lượng đĩa." +label = "Ghi nhận kết quả thao tác" + [admin.settings.security.csrfDisabled] description = "Tắt bảo vệ Cross-Site Request Forgery (không khuyến nghị)" label = "Tắt bảo vệ CSRF" @@ -1536,72 +1576,152 @@ tags = "embed,attach,file,attachment,attachments" title = "Add attachments" [audit] +configureAudit = "Cấu hình ghi nhật ký kiểm toán" +configureAuditMessage = "Điều chỉnh mức ghi nhật ký kiểm toán, thời gian lưu trữ và các cài đặt khác trong phần Bảo mật & Xác thực." disabled = "Ghi nhật ký kiểm toán đã bị tắt" disabledMessage = "Bật ghi nhật ký kiểm toán trong cấu hình ứng dụng để theo dõi các sự kiện hệ thống." enterpriseRequired = "Yêu cầu giấy phép Enterprise" enterpriseRequiredMessage = "Hệ thống ghi nhật ký kiểm toán là tính năng Enterprise. Vui lòng nâng cấp lên giấy phép Enterprise để truy cập nhật ký và phân tích." +goToSettings = "Đi tới cài đặt kiểm toán" notAvailable = "Hệ thống kiểm toán không khả dụng" notAvailableMessage = "Hệ thống kiểm toán chưa được cấu hình hoặc không khả dụng." -[audit.charts] -byType = "Sự kiện theo loại" -byUser = "Sự kiện theo người dùng" -day = "Ngày" -error = "Lỗi khi tải biểu đồ" -month = "Tháng" -overTime = "Sự kiện theo thời gian" -title = "Bảng điều khiển kiểm toán" -week = "Tuần" - [audit.error] title = "Lỗi khi tải hệ thống kiểm toán" -[audit.events] -actions = "Hành động" -clearFilters = "Xóa" -details = "Chi tiết" -endDate = "Ngày kết thúc" -error = "Lỗi khi tải sự kiện" -eventDetails = "Chi tiết sự kiện" -filterByType = "Lọc theo loại" -filterByUser = "Lọc theo người dùng" -ipAddress = "Địa chỉ IP" -noEvents = "Không tìm thấy sự kiện" -startDate = "Ngày bắt đầu" -timestamp = "Dấu thời gian" -title = "Sự kiện kiểm toán" -type = "Loại" -user = "Người dùng" -viewDetails = "Xem chi tiết" - [audit.export] clearFilters = "Xóa" description = "Xuất sự kiện kiểm toán sang định dạng CSV hoặc JSON. Dùng bộ lọc để giới hạn dữ liệu xuất." endDate = "Ngày kết thúc" error = "Không thể xuất dữ liệu" exportButton = "Xuất dữ liệu" +fieldAuthor = "Tác giả (từ PDF)" +fieldDate = "Ngày" +fieldDocumentName = "Tên tài liệu" +fieldFileHash = "Mã băm tệp (SHA-256)" +fieldIpAddress = "Địa chỉ IP" +fieldOperationResults = "Kết quả thao tác" +fieldOutcome = "Kết quả (Thành công/Thất bại)" +fieldTool = "Công cụ" +fieldUsername = "Tên người dùng" filterByType = "Lọc theo loại" filterByUser = "Lọc theo người dùng" filters = "Bộ lọc (Tùy chọn)" format = "Định dạng xuất" +selectFields = "Chọn trường để bao gồm" startDate = "Ngày bắt đầu" title = "Xuất dữ liệu kiểm toán" +verboseRequired = "Yêu cầu mức kiểm toán VERBOSE" [audit.systemStatus] +autoRefresh = "Tự động làm mới" +autoRefreshLabel = "Tự động làm mới mỗi 30 giây" +captureBySettings = "Bật trong cài đặt" +capturedFields = "Trường đã ghi nhận" +date = "Ngày" days = "ngày" disabled = "Đã tắt" +documentName = "Tên tài liệu" enabled = "Đã bật" +fileHash = "Mã băm tệp" level = "Mức kiểm toán" +pdfAuthor = "Tác giả PDF" retention = "Thời gian lưu trữ" status = "Ghi nhật ký kiểm toán" title = "Trạng thái hệ thống" +tool = "Công cụ" totalEvents = "Tổng số sự kiện" +username = "Tên người dùng" +verboseOnly = "Chỉ VERBOSE" + +[audit.stats] +activeUsers = "Người dùng hoạt động" +attention = "Cần chú ý" +avgLatency = "Độ trễ trung bình" +error = "Lỗi tải thống kê" +errorLoadingStats = "Không tải được thống kê" +excellent = "Xuất sắc" +good = "Tốt" +noData = "N/A" +successRate = "Tỷ lệ thành công" +title = "Tổng quan" +totalEvents = "Tổng số sự kiện" +vsLastPeriod = "so với kỳ trước" + +[audit.charts] +byTool = "Công cụ được dùng nhiều nhất" +byType = "Sự kiện theo loại" +byUser = "Sự kiện theo người dùng" +day = "Ngày" +error = "Lỗi khi tải biểu đồ" +hourlyActivity = "Hoạt động theo giờ" +month = "Tháng" +noData = "Không có dữ liệu cho giai đoạn này" +overTime = "Sự kiện theo thời gian" +title = "Bảng điều khiển kiểm toán" +week = "Tuần" + +[audit.events] +actions = "Hành động" +author = "Tác giả" +clearFilters = "Xóa" +details = "Chi tiết" +documentName = "Tài liệu" +endDate = "Ngày kết thúc" +error = "Lỗi khi tải sự kiện" +eventDetails = "Chi tiết sự kiện" +failure = "Thất bại" +fileHash = "Mã băm tệp" +filterByType = "Lọc theo loại" +filterByUser = "Lọc theo người dùng" +ipAddress = "Địa chỉ IP" +noEvents = "Không tìm thấy sự kiện" +outcome = "Trạng thái" +sortAsc = "Sắp xếp tăng dần" +sortDesc = "Sắp xếp giảm dần" +startDate = "Ngày bắt đầu" +success = "Thành công" +timestamp = "Dấu thời gian" +title = "Sự kiện kiểm toán" +type = "Loại" +user = "Người dùng" +viewDetails = "Xem chi tiết" + +[audit.filters] +allOutcomes = "Tất cả" +failureOnly = "Chỉ thất bại" +last7Days = "7 ngày qua" +last30Days = "30 ngày qua" +outcomeFilter = "Kết quả" +quickPresets = "Bộ lọc nhanh" +successOnly = "Chỉ thành công" +thisMonth = "Tháng này" +today = "Hôm nay" [audit.tabs] +clearData = "Xóa dữ liệu" dashboard = "Bảng điều khiển" events = "Sự kiện kiểm toán" export = "Xuất" +[audit.clearData] +cancel = "Hủy" +codeDoesNotMatch = "Mã không khớp" +codePlaceholder = "Nhập mã tại đây" +confirmationCode = "Mã xác nhận" +confirmationRequired = "Xóa toàn bộ dữ liệu kiểm toán" +confirmMessage = "Thao tác này sẽ xóa vĩnh viễn tất cả nhật ký kiểm toán. Nhập mã xác nhận bên dưới để tiếp tục." +confirmTitle = "Vui lòng xác nhận bạn muốn xóa" +deleteButton = "Xóa" +enterCode = "Mã xác nhận" +enterCodeBelow = "Nhập mã chính xác như hiển thị ở trên (phân biệt chữ hoa/thường)" +initiateDelete = "Xóa toàn bộ dữ liệu" +irreversible = "KHÔNG THỂ HOÀN TÁC" +success = "Thành công" +successMessage = "Đã xóa thành công toàn bộ dữ liệu kiểm toán" +warning1 = "Hành động này không thể hoàn tác" +warning2 = "Xóa dữ liệu kiểm toán sẽ loại bỏ vĩnh viễn tất cả nhật ký kiểm toán lịch sử, bao gồm sự kiện bảo mật, hoạt động người dùng và thao tác tệp khỏi cơ sở dữ liệu." + [auth] accessDenied = "Từ chối truy cập" insufficientPermissions = "Bạn không có quyền thực hiện thao tác này." @@ -2254,9 +2374,11 @@ copy = "Sao chép" done = "Xong" error = "Lỗi" expand = "Mở rộng" +learnMore = "Tìm hiểu thêm" lines = "dòng" loading = "Đang tải..." next = "Tiếp" +operation = "thao tác này" preview = "Xem trước" previous = "Trước" refresh = "Làm mới" @@ -2920,6 +3042,7 @@ copyStack = "Sao chép Stack Trace" discordSubmit = "Discord - Gửi bài đăng hỗ trợ" dismissAllErrors = "Bỏ qua tất cả lỗi" encryptedPdfMustRemovePassword = "PDF này đã được mã hóa hoặc bảo vệ bằng mật khẩu. Vui lòng mở khóa trước khi chuyển đổi sang PDF/A." +generic = "Đã xảy ra lỗi" github = "Gửi ticket trên GitHub" githubSubmit = "GitHub - Gửi ticket" incorrectPasswordProvided = "Mật khẩu PDF không đúng hoặc chưa được cung cấp." @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "Gói đăng ký của bạn đã nâng cấp thành c upgradeSuccess = "Thanh toán thành công! Gói của bạn đã được nâng cấp. Giấy phép trên server đã được cập nhật. Bạn sẽ sớm nhận email xác nhận." upgradeTitle = "Nâng cấp lên {{planName}}" yearly = "Theo năm" +checkoutOpened = "Trang thanh toán đã mở trong trình duyệt" +checkoutInstructions = "Hoàn tất mua hàng trong cửa sổ trình duyệt vừa mở. Sau khi thanh toán xong, quay lại đây và nhấp nút bên dưới để làm mới thông tin thanh toán của bạn." +refreshBilling = "Tôi đã hoàn tất thanh toán - Làm mới thông tin thanh toán" +closeLater = "Để sau" [payment.emailStage] continue = "Tiếp tục" @@ -4679,6 +4806,13 @@ prompt = "Chọn trang để trích xuất bảng" submit = "Trích xuất" title = "PDF sang CSV" +[PDFToXLSX] +header = "PDF sang Excel" +prompt = "Chọn trang để trích xuất bảng" +submit = "Chuyển đổi" +title = "PDF sang Excel (XLSX)" +tags = "bảng tính,excel,xlsx,bảng,trích xuất,chuyển đổi" + [PDFToHTML] credit = "Dịch vụ này sử dụng pdftohtml để chuyển đổi tệp." header = "PDF sang HTML" @@ -4835,6 +4969,7 @@ customPricing = "Tùy chỉnh" featureComparison = "So sánh tính năng" from = "Từ" hideComparison = "Ẩn so sánh tính năng" +included = "Đã bao gồm" includedInCurrent = "Bao gồm trong gói của bạn" licensedSeats = "Đã cấp phép: {{count}} ghế" manage = "Quản lý" @@ -4852,9 +4987,11 @@ title = "Gói đang hoạt động" [plan.availablePlans] subtitle = "Chọn gói phù hợp với nhu cầu của bạn" +loadError = "Không thể tải giá gói. Sử dụng giá trị mặc định." title = "Các gói khả dụng" [plan.enterprise] +siteLicense = "Giấy phép theo site" highlight1 = "Giá tùy chỉnh" highlight2 = "Hỗ trợ chuyên trách" highlight3 = "Tính năng mới nhất" @@ -4928,6 +5065,81 @@ keyDescription = "Dán khóa giấy phép từ email của bạn" success = "Đã kích hoạt giấy phép!" successMessage = "Giấy phép của bạn đã được kích hoạt thành công. Bạn có thể đóng cửa sổ này." +[plan.team] +name = "Team" +siteLicense = "Giấy phép theo site" + +[credits] +enableOverageBilling = "Bật tính phí vượt mức" +maybeLater = "Để sau" +upgrade = "Nâng cấp" + +[credits.modal] +advancedMonitoring = "Giám sát nâng cao" +allInOneWorkspace = "Không gian làm việc PDF tất cả trong một (viewer, tools & agent)" +apiSandbox = "API sandbox" +contactSales = "Liên hệ bộ phận kinh doanh" +creditsRemaining = "Còn lại {{current}} trên {{total}}" +creditsThisMonth = "Tín dụng hàng tháng" +current = "Gói hiện tại" +customPricing = "Tùy chỉnh" +customSmartFolders = "Thư mục thông minh tùy chỉnh" +dedicatedSupportSlas = "Hỗ trợ riêng & SLA" +enterpriseSubscription = "Enterprise" +everythingInCredits = "Bao gồm mọi thứ trong Credits, cộng thêm:" +everythingInFree = "Bao gồm mọi thứ trong Free, cộng thêm:" +fasterThroughput = "Tốc độ xử lý nhanh gấp 10 lần" +forRegularWork = "Dành cho công việc PDF thường xuyên:" +freeTier = "Bậc Free" +fullyPrivateFiles = "Tệp hoàn toàn riêng tư" +largeFileProcessing = "Xử lý tệp lớn" +managedMemberMessage = "Bạn có quyền truy cập tín dụng không giới hạn thông qua nhóm của mình. Nếu cần hỗ trợ, vui lòng liên hệ trưởng nhóm." +managedMemberTitle = "Tín dụng không giới hạn" +meteringBillingNote = "Tín dụng vượt mức sẽ được tính phí hàng tháng cùng với gói Team của bạn. Theo dõi mức sử dụng bất cứ lúc nào trong cài đặt tài khoản." +meteringExplanation = "Gói Team của bạn bao gồm {{credits}} tín dụng mỗi tháng. Khi dùng hết, tính phí vượt mức sẽ tự động cung cấp thêm tín dụng để bạn không bao giờ phải dừng công việc." +meteringIncluded = "Bao gồm {{credits}} tín dụng/tháng với Team" +meteringNoCommitment = "Không cam kết, có thể hủy bất cứ lúc nào" +meteringNeverRunOut = "Không bao giờ hết tín dụng" +meteringPayAsYouGo = "Chỉ trả cho phần bạn dùng" +meteringPrice = "Tín dụng bổ sung với giá {{price}}/tín dụng" +meteringTitle = "Tính phí vượt mức theo mức sử dụng" +monthlyCredits = "tín dụng hàng tháng" +orgWideAccess = "Kiểm soát truy cập toàn tổ chức" +overage = "vượt mức" +perMonth = "/tháng" +popular = "Phổ biến" +premiumAiModels = "Mô hình AI cao cấp" +prioritySupport = "Hỗ trợ ưu tiên" +privateDocCloud = "Đám mây tài liệu riêng tư" +ragFineTuning = "RAG + fine-tuning" +secureApiAccess = "Truy cập API an toàn" +selfHostLink = "Xem tài liệu và các gói" +selfHostPrompt = "Muốn tự triển khai?" +standardThroughput = "Tốc độ xử lý tiêu chuẩn" +subtitle = "Nâng cấp lên Team để có lượng tín dụng gấp 10 lần và xử lý nhanh hơn." +subtitlePro = "Bật tính phí vượt mức tự động để không bao giờ hết tín dụng." +teamLeaderOnly = "Chỉ trưởng nhóm mới có thể bật tính phí vượt mức" +teamSubscription = "Team" +titleExhausted = "Bạn đã dùng hết tín dụng miễn phí" +titleExhaustedPro = "Bạn đã hết tín dụng" +unlimitedApiAccess = "Truy cập API không giới hạn" +unlimitedMonthlyCredits = "Giấy phép theo site" +unlimitedSeats = "Số ghế không giới hạn" + +[credits.modal.features] +everythingInCredits = "Bao gồm mọi thứ trong Credits, cộng thêm:" +everythingInFree = "Bao gồm mọi thứ trong Free, cộng thêm:" +forRegularWork = "Dành cho công việc PDF thường xuyên:" + +[credits.insufficient] +brief = "Tín dụng không đủ. Bạn cần {{required}} tín dụng nhưng chỉ có {{current}}." +freeTier = "Nâng cấp lên Team để có tín dụng gấp 10 lần và tính phí vượt mức không giới hạn." +managedMember = "Vui lòng liên hệ trưởng nhóm để được hỗ trợ." +message = "Bạn không có đủ tín dụng để chạy {{tool}}. Hiện bạn có {{current}} tín dụng." +messageWithAmount = "Bạn cần {{required}} tín dụng để chạy {{tool}}, nhưng bạn chỉ có {{current}}." +teamMember = "Bật tính phí vượt mức để không bao giờ hết tín dụng." +title = "Tín dụng không đủ" + [printFile] header = "In tệp vào máy in" submit = "In" @@ -5565,6 +5777,70 @@ user = "Đăng nhập với tư cách" saas = "Stirling Cloud" selfhosted = "Tự lưu trữ" +[settings.planBilling] +currentPlan = "Gói hiện tại" +loading = "Đang tải thông tin thanh toán..." +notAvailable = "Gói & Thanh toán chỉ khả dụng khi kết nối với Stirling Cloud (chế độ SaaS)." +title = "Gói & Thanh toán" + +[settings.planBilling.billing] +manageBilling = "Quản lý thanh toán" +nextBillingDate = "Ngày thanh toán tiếp theo" +overageCost = "Chi phí vượt mức hiện tại: {{amount}} ({{credits}} tín dụng)" + +[settings.planBilling.credits] +estimatedCost = "Chi phí ước tính: {{amount}}" +freeTierInfo = "Gói Free bao gồm {{freeCredits}} tín dụng mỗi tháng. Nâng cấp lên Team để có {{teamCredits}} tín dụng/tháng và tính phí vượt mức trả theo mức dùng." +included = "{{count}} tín dụng/tháng (đã bao gồm)" +noOverage = "Tháng này không có phí vượt mức. Bạn đang dùng {{count}} tín dụng đã bao gồm." +overage = "+ {{count}} vượt mức" +overageInfo = "Tín dụng vượt mức được tính phí {{price}} mỗi tín dụng. Bạn chỉ trả cho phần vượt quá hạn mức hàng tháng." +title = "Mức sử dụng tín dụng" + +[settings.planBilling.errors] +fetchFailed = "Không thể lấy dữ liệu thanh toán" +retry = "Thử lại" + +[settings.planBilling.status] +active = "Đang hoạt động" +canceled = "Đã hủy" +pastDue = "Quá hạn" +trial = "Dùng thử" + +[settings.planBilling.tier] +enterprise = "Enterprise" +enterpriseDescription = "Tính năng và hỗ trợ doanh nghiệp tùy chỉnh" +free = "Free" +freeDescription = "50 tín dụng mỗi tháng" +team = "Team" +teamBadge = "Team" +teamDescription = "Bao gồm 500 tín dụng/tháng, tính phí vượt mức tự động để dịch vụ không gián đoạn" +teamTooltipCredits = "Gói Team bao gồm {{credits}} tín dụng/tháng." +teamTooltipFineprint = "Chỉ trả cho phần dùng vượt quá tín dụng bao gồm." +teamTooltipOverage = "Tính phí vượt mức tự động {{price}}/tín dụng đảm bảo dịch vụ không gián đoạn." + +[settings.planBilling.team] +managedByTeam = "Được quản lý bởi nhóm" +memberCount = "{{count}} thành viên nhóm" + +[settings.planBilling.trial] +daysRemaining = "Còn {{days}} ngày" +daysRemainingFull = "Bản dùng thử của bạn kết thúc sau {{days}} ngày" +endDate = "Hết hạn: {{date}}" +endsOn = "Kết thúc dùng thử" +title = "Đang dùng thử miễn phí" + +[settings.planBilling.upgrade] +cta = "Nâng cấp lên Team" +featureApi = "Truy cập API để tự động hóa" +featureCredits = "{{teamCredits}} tín dụng mỗi tháng (so với {{freeCredits}} của Free)" +featureMembers = "Thành viên nhóm không giới hạn" +featureSupport = "Hỗ trợ ưu tiên" +featureThroughput = "Tốc độ xử lý nhanh hơn" +opensInBrowser = "Mở trong trình duyệt để hoàn tất nâng cấp" +subtitle = "Nâng cấp lên Team để có:" +title = "Nâng cấp gói của bạn" + [settings.developer] apiKeys = "API Keys" title = "Nhà phát triển" @@ -5689,6 +5965,9 @@ people = "Thành viên" teams = "Nhóm" title = "Không gian làm việc" +[settings.team] +title = "Nhóm" + [setup] description = "Bắt đầu bằng cách chọn cách bạn muốn sử dụng Stirling PDF" welcome = "Chào mừng đến với Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "Tự động chia bằng tờ phân cách" name = "Trang phân cách" tooltip = "Dùng tờ phân cách QR giữa các tài liệu khi quét" +[split.methods.byPoster] +name = "Phần in được" +desc = "Chia các trang lớn thành kích thước có thể in" +tooltip = "Chia các trang quá khổ thành các phần nhỏ phù hợp để in trên giấy tiêu chuẩn (A4, Letter, v.v.)" + [split.methods.byPages] desc = "Trích xuất các trang cụ thể (1,3,5-10)" name = "Số trang" @@ -6029,6 +6313,7 @@ tooltip = "Chỉ định kích thước tệp tối đa (ví dụ: 10MB, 500KB)" [split.methods.prefix] splitAt = "Chia tại" splitBy = "Chia theo" +splitInto = "Chia thành" [split.methodSelection.tooltip] bullet1 = "Nhấp vào một thẻ phương thức để chọn" @@ -6048,6 +6333,21 @@ selectMethodFirst = "Vui lòng chọn một phương thức chia trước" chooseMethod = "Chọn phương thức" settings = "Cài đặt" +[split.poster] +rightToLeft = "Chia từ phải sang trái" + +[split.poster.pageSize] +label = "Kích thước trang đích" +description = "Kích thước trang đầu ra để in" + +[split.poster.xFactor] +label = "Số cột" +description = "Số cột để chia mỗi trang" + +[split.poster.yFactor] +label = "Số hàng" +description = "Số hàng để chia mỗi trang" + [split.tooltip.byChapters] bullet1 = "Cấp dấu trang: Cấp sẽ dùng để chia (1=bậc cao nhất)" bullet2 = "Bao gồm Siêu dữ liệu: Giữ nguyên thuộc tính tài liệu" @@ -6085,6 +6385,14 @@ bullet5 = "Bật Chế độ in hai mặt nếu quét cả hai mặt của tờ text = "Tự động chia tài liệu đã quét bằng các tờ phân cách vật lý có mã QR. Hoàn hảo khi xử lý nhiều tài liệu quét chung." title = "Chia theo trang phân cách" +[split.tooltip.byPoster] +bullet1 = "Kích thước trang đích: Chọn cỡ giấy đầu ra (A4, Letter, v.v.)" +bullet2 = "Phân chia ngang/dọc: Kích thước lưới để chia" +bullet3 = "Phải sang Trái: Đảo thứ tự cột cho bố cục RTL" +bullet4 = "In và ghép các mảnh để tạo poster" +text = "Chia các trang PDF lớn thành các phần nhỏ có thể in phù hợp với cỡ giấy tiêu chuẩn. Hoàn hảo để tạo bản in poster từ các trang quá khổ." +title = "Chia cho in poster" + [split.tooltip.byPages] bullet1 = "Điểm chia đơn: 3,7 (chia sau trang 3 và 7)" bullet2 = "Điểm chia theo khoảng: 3-8 (chia trước trang 3 và sau trang 8)" @@ -6364,9 +6672,13 @@ tags = "chụp web,lưu trang,web sang tài liệu,lưu trữ" title = "URL sang PDF" [usage] +aboutUsageAnalytics = "Giới thiệu về Phân tích sử dụng" +configureSettings = "Cấu hình cài đặt phân tích" error = "Lỗi khi tải thống kê sử dụng" noData = "Không có dữ liệu" noDataMessage = "Hiện không có thống kê sử dụng." +usageAnalyticsExplanation = "Phân tích sử dụng theo dõi các yêu cầu endpoint và mẫu sử dụng công cụ. Kết hợp với bảng điều khiển Ghi nhật ký kiểm toán, bạn có tầm nhìn đầy đủ về hoạt động hệ thống, hiệu năng và sự kiện bảo mật." +viewAuditLogs = "Xem nhật ký kiểm toán" [usage.chart] title = "Biểu đồ sử dụng điểm cuối" @@ -6947,3 +7259,278 @@ cancel = "Hủy" confirm = "Giải nén" message = "ZIP này chứa {{count}} tệp. Vẫn giải nén?" title = "Tệp ZIP lớn" + +[cloudBadge] +tooltip = "Thao tác này sẽ sử dụng tín dụng đám mây của bạn" + +[team] +cancelInviteError = "Không hủy được lời mời" +confirmCancelInvite = "Bạn có chắc muốn hủy lời mời này?" +confirmLeave = "Bạn có chắc muốn rời nhóm này?" +confirmLeaveLeader = "Là trưởng nhóm, rời đi sẽ xóa bạn khỏi nhóm. Bạn có chắc không?" +confirmRemove = "Bạn có chắc muốn xóa thành viên này?" +editName = "Chỉnh sửa tên nhóm" +inviteCancelled = "Đã hủy lời mời" +inviteError = "Gửi lời mời không thành công" +inviteSent = "Đã gửi lời mời thành công" +leader = "Trưởng nhóm" +leaveButton = "Rời nhóm" +leaveError = "Rời nhóm không thành công" +leaveSuccess = "Đã rời nhóm thành công" +loading = "Đang tải thông tin nhóm..." +memberCount = "{{count}} thành viên" +memberRemoved = "Đã xóa thành viên thành công" +namePlaceholder = "Nhập tên nhóm" +personal = "Cá nhân" +removeError = "Xóa thành viên không thành công" +renameError = "Đổi tên nhóm không thành công" +renameSuccess = "Đã đổi tên nhóm thành công" + +[team.invitationBanner] +message = "đã mời bạn tham gia" +acceptButton = "Chấp nhận" +rejectButton = "Từ chối" + +[team.features] +badge = "Tính năng Team" +subtitle = "Cộng tác với nhóm của bạn" +title = "Cộng tác theo nhóm" +viewPlans = "Xem các gói" + +[team.features.billing] +description = "Quản lý thanh toán và đăng ký" +title = "Quản lý thanh toán" + +[team.features.credits] +description = "Kho tín dụng dùng chung cho tất cả thành viên" +title = "Tín dụng dùng chung" + +[team.features.dashboard] +description = "Xem hoạt động và mức sử dụng của nhóm" +title = "Bảng điều khiển nhóm" + +[team.features.invite] +description = "Thêm thành viên vào nhóm của bạn" +title = "Mời thành viên" + +[team.invite] +cancelLabel = "Hủy" +invalidEmail = "Địa chỉ email không hợp lệ" +placeholder = "Nhập địa chỉ email" +sendButton = "Gửi lời mời" +title = "Mời thành viên nhóm" + +[team.members] +emailColumn = "Email" +empty = "Chưa có thành viên nhóm" +nameColumn = "Tên" +pending = "Đang chờ" +remove = "Xóa" +roleColumn = "Vai trò" +title = "Thành viên nhóm" + +[team.upgrade] +button = "Nâng cấp lên Team" +description = "Mở khóa tính năng cộng tác nhóm" +title = "Nâng cấp lên gói Team" + +[provider.oauth2.google] +scope = "Xác thực đăng nhập" + +[provider.oauth2.google.clientId] +label = "Client ID" +description = "OAuth2 Client ID từ Google Cloud Console" + +[provider.oauth2.google.clientSecret] +label = "Client Secret" +description = "OAuth2 client secret từ Google Cloud Console" + +[provider.oauth2.google.scopes] +label = "Scopes" +description = "Danh sách scope OAuth2, phân tách bằng dấu phẩy" + +[provider.oauth2.google.useAsUsername] +label = "Dùng làm Tên người dùng" +description = "Trường dùng làm tên người dùng (email, name, given_name, family_name)" + +[provider.oauth2.github] +scope = "Xác thực đăng nhập" + +[provider.oauth2.github.clientId] +label = "Client ID" +description = "OAuth2 Client ID từ GitHub Developer Settings" + +[provider.oauth2.github.clientSecret] +label = "Client Secret" +description = "OAuth2 client secret từ GitHub Developer Settings" + +[provider.oauth2.github.scopes] +label = "Scopes" +description = "Danh sách scope OAuth2, phân tách bằng dấu phẩy" + +[provider.oauth2.github.useAsUsername] +label = "Dùng làm Tên người dùng" +description = "Trường dùng làm tên người dùng (email, login, name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Issuer URL" +description = "URL endpoint OpenID Connect Discovery của realm Keycloak" + +[provider.oauth2.keycloak.clientId] +label = "Client ID" +description = "OAuth2 Client ID từ Keycloak" + +[provider.oauth2.keycloak.clientSecret] +label = "Client Secret" +description = "OAuth2 client secret từ Keycloak" + +[provider.oauth2.keycloak.scopes] +label = "Scopes" +description = "Danh sách scope OAuth2, phân tách bằng dấu phẩy" + +[provider.oauth2.keycloak.useAsUsername] +label = "Dùng làm Tên người dùng" +description = "Trường dùng làm tên người dùng (email, name, given_name, family_name, preferred_username)" + +[provider.oauth2.generic] +name = "OAuth2 Tổng quát" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "Bật OAuth2 Tổng quát" +description = "Bật xác thực bằng nhà cung cấp OAuth2 tùy chỉnh" + +[provider.oauth2.generic.provider] +label = "Tên nhà cung cấp" +description = "Tên nhà cung cấp OAuth2 của bạn (ví dụ: Azure AD, Okta)" + +[provider.oauth2.generic.issuer] +label = "Issuer URL" +description = "Nhà cung cấp hỗ trợ OpenID Connect Discovery (/.well-known/openid-configuration)" + +[provider.oauth2.generic.clientId] +label = "Client ID" +description = "OAuth2 Client ID từ nhà cung cấp của bạn" + +[provider.oauth2.generic.clientSecret] +label = "Client Secret" +description = "OAuth2 client secret từ nhà cung cấp của bạn" + +[provider.oauth2.generic.scopes] +label = "Scopes" +description = "Danh sách scope OAuth2, phân tách bằng dấu phẩy" + +[provider.oauth2.generic.useAsUsername] +label = "Dùng làm Tên người dùng" +description = "Trường dùng làm tên người dùng" + +[provider.oauth2.generic.autoCreateUser] +label = "Tự động tạo người dùng" +description = "Tự động tạo tài khoản người dùng khi đăng nhập OAuth2 lần đầu" + +[provider.oauth2.generic.blockRegistration] +label = "Chặn đăng ký" +description = "Ngăn người dùng mới đăng ký qua OAuth2" + +[provider.smtp] +name = "SMTP Mail" +scope = "Thông báo email" + +[provider.smtp.enabled] +label = "Bật Email" +description = "Bật thông báo email và chức năng SMTP" + +[provider.smtp.host] +label = "SMTP Host" +description = "Tên máy chủ hoặc địa chỉ IP của máy chủ SMTP của bạn" + +[provider.smtp.port] +label = "SMTP Port" +description = "Cổng kết nối SMTP (thường là 25, 465 hoặc 587)" + +[provider.smtp.username] +label = "SMTP Username" +description = "Tên người dùng để xác thực SMTP" + +[provider.smtp.password] +label = "SMTP Password" +description = "Mật khẩu để xác thực SMTP" + +[provider.smtp.from] +label = "Địa chỉ người gửi" +description = "Địa chỉ email dùng làm người gửi" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "Bật SAML2" +description = "Bật xác thực SAML2 (chỉ dành cho Enterprise)" + +[provider.saml2.provider] +label = "Tên nhà cung cấp" +description = "Tên nhà cung cấp SAML2 của bạn" + +[provider.saml2.registrationId] +label = "Registration ID" +description = "Tên ứng dụng Service Provider (SP) của bạn" + +[provider.saml2.idpMetadataUri] +label = "IDP Metadata URI" +description = "URI metadata của nhà cung cấp của bạn" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP Single Login URL" +description = "URL để khởi tạo SSO" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP Single Logout URL" +description = "URL để khởi tạo SLO" + +[provider.saml2.idpIssuer] +label = "IDP Issuer" +description = "ID của nhà cung cấp của bạn" + +[provider.saml2.idpCert] +label = "Chứng chỉ IDP" +description = "Đường dẫn chứng chỉ (ví dụ: classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "Khóa riêng" +description = "Đường dẫn khóa riêng của bạn" + +[provider.saml2.spCert] +label = "Chứng chỉ SP" +description = "Đường dẫn chứng chỉ ký của bạn" + +[provider.saml2.autoCreateUser] +label = "Tự động tạo người dùng" +description = "Tự động tạo tài khoản người dùng khi đăng nhập SAML2 lần đầu" + +[provider.saml2.blockRegistration] +label = "Chặn đăng ký" +description = "Ngăn người dùng mới đăng ký qua SAML2" + +[provider.googledrive] +name = "Google Drive" +scope = "Nhập tệp" + +[provider.googledrive.enabled] +label = "Bật bộ chọn tệp Google Drive" +description = "Cho phép người dùng nhập tệp trực tiếp từ Google Drive" + +[provider.googledrive.clientId] +label = "Client ID" +description = "Google OAuth 2.0 Client ID từ Google Cloud Console" + +[provider.googledrive.apiKey] +label = "API Key" +description = "Google API Key cho Google Picker API từ Google Cloud Console" + +[provider.googledrive.appId] +label = "App ID" +description = "Google Drive App ID từ Google Cloud Console" diff --git a/frontend/public/locales/zh-BO/translation.toml b/frontend/public/locales/zh-BO/translation.toml index 2b1276f9c..7e9ed4c70 100644 --- a/frontend/public/locales/zh-BO/translation.toml +++ b/frontend/public/locales/zh-BO/translation.toml @@ -96,6 +96,8 @@ pin = "固定文件(工具运行后保持活动)" poweredBy = "མཁོ་སྲོད་བྱེད་མཁན།" pro = "ཆེད་ལས།" processTimeWarning = "ཉེན་བཅོས། བྱ་རིམ་འདི་ཡིག་ཆའི་ཆེ་ཆུང་ལ་གཞིགས་ནས་སྐར་མ་གཅིག་བར་འགོར་སྲིད།" +processingComplete = "您的文件已准备就绪。" +processingCompleteMultiple = "{{count}} 个文件已准备就绪。" property = "ཁྱད་ཆོས།" quickPosition = "快速定位" red = "དམར་པོ" @@ -105,6 +107,7 @@ save = "ཉར་ཚགས།" saveToBrowser = "བཤར་ཆེ་ནང་ཉར་ཚགས།" saveUnavailable = "此项无法保存" seeDockerHub = "Docker Hub ལ་ལྟ་བ།" +editSecret = "编辑此值" selectFillter = "-- འདེམས་རོགས། --" size = "大小" sponsor = "མཐུན་འགྱུར་སྦྱོར་མཁན།" @@ -651,6 +654,7 @@ description = "配置外部身份验证提供方,如 OAuth2 和 SAML。" disconnect = "断开连接" disconnected = "已成功断开提供方" disconnectError = "断开提供方失败" +documentation = "查看文档" imageResolutionFull = "完整(原始大小)" imageResolutionReduced = "缩小(最大 1200px)" linkedServices = "已连接的服务" @@ -964,6 +968,18 @@ label = "默认区域" description = "最大文件上传大小(例如:100MB、1GB)" label = "文件上传限制" +[admin.settings.general.hideDisabledTools] +description = "在界面中隐藏已禁用的工具" +label = "隐藏已禁用的工具" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "未启用时隐藏 Google Drive 按钮" +label = "隐藏 Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "未启用时隐藏移动端 QR 扫描按钮" +label = "隐藏移动端扫描器" + [admin.settings.general.frontendUrl] description = "前端的基础 URL(例如 https://pdf.example.com)。用于邮件邀请链接和移动端 QR 码上传。留空则使用后端 URL。" label = "前端 URL" @@ -1148,6 +1164,8 @@ title = "安全" [admin.settings.security.audit] label = "审计日志" +showDetails = "显示审计级别详情" +hideDetails = "隐藏审计级别详情" [admin.settings.security.audit.enabled] description = "跟踪用户操作和系统事件,用于合规与安全监控" @@ -1157,10 +1175,32 @@ label = "启用审计日志" description = "0=关闭,1=基础,2=标准,3=详细" label = "审计等级" +[admin.settings.security.audit.levelDetails] +off = "不记录审计日志(关键安全事件除外)" +basic = "PDF 文件操作(压缩、拆分、合并等)和设置变更。捕获:操作状态(成功/失败)、方法参数、时间信息。最小日志量。" +standard = "在 BASIC 事件基础上,另外:用户登录/登出、账户变更、通用 GET 请求。为减少日志噪声,排除持续轮询调用(/auth/me、/app-config、/health 等)。适用于大多数部署。" +verbose = "在 STANDARD 事件基础上,另外:持续轮询调用、所有 GET 请求、详细时间信息。警告:日志量大且影响性能。" + [admin.settings.security.audit.retentionDays] description = "保留审计日志的天数" label = "审计保留(天)" +[admin.settings.security.audit.advancedOptions] +title = "高级选项" +description = "以下选项会增加处理时间和内存使用量。仅在确有需要时启用。" + +[admin.settings.security.audit.captureFileHash] +description = "提取上传 PDF 文件的 SHA-256 哈希用于完整性校验。与审计级别无关。" +label = "捕获文件哈希(SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "在处理过程中从 PDF 文档中提取作者字段。需要解析 PDF,会增加延迟。与审计级别无关。" +label = "捕获 PDF 作者元数据" + +[admin.settings.security.audit.captureOperationResults] +description = "捕获方法返回值。不推荐:会显著增加日志量和磁盘占用。" +label = "捕获操作结果" + [admin.settings.security.csrfDisabled] description = "禁用跨站请求伪造保护(不推荐)" label = "禁用 CSRF 保护" @@ -1536,72 +1576,152 @@ tags = "附件,添加,删除,嵌入,文件" title = "添加附件" [audit] +configureAudit = "配置审计日志" +configureAuditMessage = "在“安全与认证”部分调整审计级别、保留期限及其他设置。" disabled = "已禁用审计日志" disabledMessage = "请在应用配置中启用审计日志以跟踪系统事件。" enterpriseRequired = "需要企业版许可证" enterpriseRequiredMessage = "审计日志系统是企业功能。请升级到企业版许可证以访问审计日志和分析功能。" +goToSettings = "前往审计设置" notAvailable = "审计系统不可用" notAvailableMessage = "审计系统未配置或不可用。" -[audit.charts] -byType = "按类型分类的事件" -byUser = "按用户分类的事件" -day = "日" -error = "加载图表时出错" -month = "月" -overTime = "事件随时间变化" -title = "审计仪表板" -week = "周" - [audit.error] title = "加载审计系统时出错" -[audit.events] -actions = "操作" -clearFilters = "清除" -details = "详情" -endDate = "结束日期" -error = "加载事件时出错" -eventDetails = "事件详情" -filterByType = "按类型筛选" -filterByUser = "按用户筛选" -ipAddress = "IP 地址" -noEvents = "未找到事件" -startDate = "开始日期" -timestamp = "时间戳" -title = "审计事件" -type = "类型" -user = "用户" -viewDetails = "查看详情" - [audit.export] clearFilters = "清除" description = "将审计事件导出为 CSV 或 JSON 格式。使用筛选器限制导出数据。" endDate = "结束日期" error = "导出数据失败" exportButton = "导出数据" +fieldAuthor = "作者(来自 PDF)" +fieldDate = "日期" +fieldDocumentName = "文档名称" +fieldFileHash = "文件哈希(SHA-256)" +fieldIpAddress = "IP 地址" +fieldOperationResults = "操作结果" +fieldOutcome = "结果(成功/失败)" +fieldTool = "工具" +fieldUsername = "用户名" filterByType = "按类型筛选" filterByUser = "按用户筛选" filters = "筛选条件(可选)" format = "导出格式" +selectFields = "选择要包含的字段" startDate = "开始日期" title = "导出审计数据" +verboseRequired = "需要 VERBOSE 审计级别" [audit.systemStatus] +autoRefresh = "自动刷新" +autoRefreshLabel = "每 30 秒自动刷新" +captureBySettings = "请在设置中启用" +capturedFields = "已捕获字段" +date = "日期" days = "天" disabled = "已禁用" +documentName = "文档名称" enabled = "已启用" +fileHash = "文件哈希" level = "审计级别" +pdfAuthor = "PDF 作者" retention = "保留期限" status = "审计日志" title = "系统状态" +tool = "工具" totalEvents = "事件总数" +username = "用户名" +verboseOnly = "仅 VERBOSE" + +[audit.stats] +activeUsers = "活跃用户" +attention = "需要关注" +avgLatency = "平均延迟" +error = "加载统计信息出错" +errorLoadingStats = "无法加载统计信息" +excellent = "优秀" +good = "良好" +noData = "N/A" +successRate = "成功率" +title = "概览" +totalEvents = "事件总数" +vsLastPeriod = "较上期" + +[audit.charts] +byTool = "最常用工具" +byType = "按类型分类的事件" +byUser = "按用户分类的事件" +day = "日" +error = "加载图表时出错" +hourlyActivity = "分时活动" +month = "月" +noData = "该时段无数据" +overTime = "事件随时间变化" +title = "审计仪表板" +week = "周" + +[audit.events] +actions = "操作" +author = "作者" +clearFilters = "清除" +details = "详情" +documentName = "文档" +endDate = "结束日期" +error = "加载事件时出错" +eventDetails = "事件详情" +failure = "失败" +fileHash = "文件哈希" +filterByType = "按类型筛选" +filterByUser = "按用户筛选" +ipAddress = "IP 地址" +noEvents = "未找到事件" +outcome = "状态" +sortAsc = "升序排序" +sortDesc = "降序排序" +startDate = "开始日期" +success = "成功" +timestamp = "时间戳" +title = "审计事件" +type = "类型" +user = "用户" +viewDetails = "查看详情" + +[audit.filters] +allOutcomes = "全部" +failureOnly = "仅失败" +last7Days = "过去 7 天" +last30Days = "过去 30 天" +outcomeFilter = "结果" +quickPresets = "快速筛选" +successOnly = "仅成功" +thisMonth = "本月" +today = "今天" [audit.tabs] +clearData = "清除数据" dashboard = "仪表板" events = "审计事件" export = "导出" +[audit.clearData] +cancel = "取消" +codeDoesNotMatch = "代码不匹配" +codePlaceholder = "在此输入代码" +confirmationCode = "确认代码" +confirmationRequired = "删除全部审计数据" +confirmMessage = "这将永久移除所有审计日志。请输入下方确认代码以继续。" +confirmTitle = "请确认您要删除" +deleteButton = "删除" +enterCode = "确认代码" +enterCodeBelow = "请严格按照上方显示输入代码(区分大小写)" +initiateDelete = "删除全部数据" +irreversible = "不可逆" +success = "成功" +successMessage = "已成功清除所有审计数据" +warning1 = "此操作无法撤销" +warning2 = "删除审计数据将永久移除数据库中的所有历史审计日志,包括安全事件、用户活动和文件操作。" + [auth] accessDenied = "拒绝访问" insufficientPermissions = "你没有执行此操作的权限。" @@ -2254,9 +2374,11 @@ copy = "复制" done = "完成" error = "错误" expand = "展开" +learnMore = "了解更多" lines = "行" loading = "正在加载..." next = "下一步" +operation = "此操作" preview = "预览" previous = "上一步" refresh = "刷新" @@ -2920,6 +3042,7 @@ copyStack = "Stack Trace པར་སློག" discordSubmit = "Discord - རྒྱབ་སྐྱོར་སྙན་ཞུ་འབུལ་བ།" dismissAllErrors = "清除所有错误" encryptedPdfMustRemovePassword = "此 PDF 已加密或受密码保护。请先解锁再转换为 PDF/A。" +generic = "发生错误" github = "GitHub སྟེང་དུ་སྙན་ཞུ་འབུལ་བ།" githubSubmit = "GitHub - སྙན་ཞུ་འབུལ་བ།" incorrectPasswordProvided = "PDF 密码不正确或未提供。" @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "您的订阅已成功升级。现有许可证密钥已 upgradeSuccess = "支付成功!您的订阅已升级。许可证已在服务器上更新。稍后您将收到确认邮件。" upgradeTitle = "升级到 {{planName}}" yearly = "按年" +checkoutOpened = "已在浏览器中打开结算页面" +checkoutInstructions = "请在刚打开的浏览器窗口中完成购买。支付完成后返回此处,点击下方按钮刷新您的计费信息。" +refreshBilling = "我已完成支付 - 刷新计费" +closeLater = "稍后再做" [payment.emailStage] continue = "继续" @@ -4679,6 +4806,13 @@ prompt = "选择要提取表格的页面" submit = "提取" title = "PDF ནས་ CSV ལ།" +[PDFToXLSX] +header = "PDF 转 Excel" +prompt = "选择要提取表格的页面" +submit = "转换" +title = "PDF 转 Excel(XLSX)" +tags = "电子表格,excel,xlsx,表格,提取,转换" + [PDFToHTML] credit = "此服务使用 pdftohtml 进行文件转换。" header = "PDF ནས་ HTML ལ།" @@ -4835,6 +4969,7 @@ customPricing = "自定义" featureComparison = "功能对比" from = "起价" hideComparison = "隐藏功能对比" +included = "已包含" includedInCurrent = "已包含在您的方案中" licensedSeats = "已授权:{{count}} 个席位" manage = "管理" @@ -4852,9 +4987,11 @@ title = "当前套餐" [plan.availablePlans] subtitle = "选择最符合您需求的套餐" +loadError = "无法加载套餐定价。已使用默认值。" title = "可用套餐" [plan.enterprise] +siteLicense = "站点许可证" highlight1 = "定制定价" highlight2 = "专属支持" highlight3 = "最新功能" @@ -4928,6 +5065,81 @@ keyDescription = "粘贴您邮件中的许可证密钥" success = "许可证已激活!" successMessage = "您的许可证已成功激活。您现在可以关闭此窗口。" +[plan.team] +name = "团队" +siteLicense = "站点许可证" + +[credits] +enableOverageBilling = "启用超额计费" +maybeLater = "稍后再说" +upgrade = "升级" + +[credits.modal] +advancedMonitoring = "高级监控" +allInOneWorkspace = "一体化 PDF 工作空间(查看器、工具与代理)" +apiSandbox = "API 沙盒" +contactSales = "联系销售" +creditsRemaining = "剩余 {{current}} / {{total}}" +creditsThisMonth = "每月额度" +current = "当前套餐" +customPricing = "自定义" +customSmartFolders = "自定义智能文件夹" +dedicatedSupportSlas = "专属支持与 SLA" +enterpriseSubscription = "企业版" +everythingInCredits = "包含“额度”中的全部内容,另加:" +everythingInFree = "包含“免费版”的全部功能,另加:" +fasterThroughput = "10 倍吞吐速度" +forRegularWork = "适合常规 PDF 工作:" +freeTier = "免费版" +fullyPrivateFiles = "完全私有的文件" +largeFileProcessing = "大文件处理" +managedMemberMessage = "您可通过团队无限使用额度。如需帮助,请联系您的团队负责人。" +managedMemberTitle = "无限额度" +meteringBillingNote = "超额额度将与您的团队订阅一同按月结算。您可随时在账户设置中查看用量。" +meteringExplanation = "您的团队套餐每月包含 {{credits}} 额度。用完后,系统会通过超额计费自动提供额外额度,确保工作不中断。" +meteringIncluded = "团队套餐每月包含 {{credits}} 额度" +meteringNoCommitment = "无长期绑定,随时可取消" +meteringNeverRunOut = "额度永不断供" +meteringPayAsYouGo = "只为实际使用付费" +meteringPrice = "额外额度 {{price}}/额度" +meteringTitle = "按使用量的超额计费" +monthlyCredits = "每月额度" +orgWideAccess = "组织范围的访问控制" +overage = "超额" +perMonth = "/月" +popular = "热门" +premiumAiModels = "高级 AI 模型" +prioritySupport = "优先支持" +privateDocCloud = "私有文档云" +ragFineTuning = "RAG + 微调" +secureApiAccess = "安全的 API 访问" +selfHostLink = "查看文档与套餐" +selfHostPrompt = "想要自托管?" +standardThroughput = "标准吞吐" +subtitle = "升级到团队版,获取 10 倍额度与更快处理速度。" +subtitlePro = "启用自动超额计费,额度永不断供。" +teamLeaderOnly = "仅团队负责人可启用超额计费" +teamSubscription = "团队" +titleExhausted = "您的免费额度已用完" +titleExhaustedPro = "您的额度已用尽" +unlimitedApiAccess = "无限 API 访问" +unlimitedMonthlyCredits = "站点许可证" +unlimitedSeats = "无限席位" + +[credits.modal.features] +everythingInCredits = "包含“额度”中的全部内容,另加:" +everythingInFree = "包含“免费版”的全部功能,另加:" +forRegularWork = "适合常规 PDF 工作:" + +[credits.insufficient] +brief = "额度不足。您需要 {{required}} 额度,但当前只有 {{current}}。" +freeTier = "升级到团队版,获取 10 倍额度并支持无限制的超额计费。" +managedMember = "请联系您的团队负责人获取帮助。" +message = "您的额度不足,无法运行 {{tool}}。您当前有 {{current}} 额度。" +messageWithAmount = "您需要 {{required}} 额度来运行 {{tool}},但您只有 {{current}}。" +teamMember = "启用超额计费,额度永不断供。" +title = "额度不足" + [printFile] header = "ཡིག་ཆ་པར་འདེབས་འཕྲུལ་འཁོར་ལ་པར་འདེབས།" submit = "པར་འདེབས།" @@ -5565,6 +5777,70 @@ user = "登录身份" saas = "Stirling Cloud" selfhosted = "自托管" +[settings.planBilling] +currentPlan = "当前套餐" +loading = "正在加载计费信息..." +notAvailable = "“套餐与计费”仅在连接到 Stirling Cloud(SaaS 模式)时可用。" +title = "套餐与计费" + +[settings.planBilling.billing] +manageBilling = "管理计费" +nextBillingDate = "下次结算日期" +overageCost = "当前超额费用:{{amount}}({{credits}} 额度)" + +[settings.planBilling.credits] +estimatedCost = "预计费用:{{amount}}" +freeTierInfo = "免费版每月包含 {{freeCredits}} 额度。升级到团队版可获得 {{teamCredits}} 额度/月,并支持按量超额计费。" +included = "{{count}} 额度/月(已包含)" +noOverage = "本月无超额费用。您正在使用包含的 {{count}} 额度。" +overage = "+ {{count}} 超额" +overageInfo = "超额额度按每额度 {{price}} 计费。超出每月额度的部分,您只需为实际使用付费。" +title = "额度使用情况" + +[settings.planBilling.errors] +fetchFailed = "无法获取计费数据" +retry = "重试" + +[settings.planBilling.status] +active = "已激活" +canceled = "已取消" +pastDue = "逾期" +trial = "试用" + +[settings.planBilling.tier] +enterprise = "企业" +enterpriseDescription = "定制的企业功能与支持" +free = "免费" +freeDescription = "每月 50 额度" +team = "团队" +teamBadge = "团队" +teamDescription = "包含 500 额度/月,自动超额计费,服务不中断" +teamTooltipCredits = "团队套餐包含 {{credits}} 额度/月。" +teamTooltipFineprint = "仅为超出包含额度的部分付费。" +teamTooltipOverage = "自动按 {{price}}/额度进行超额计费,确保服务不中断。" + +[settings.planBilling.team] +managedByTeam = "由团队管理" +memberCount = "{{count}} 名团队成员" + +[settings.planBilling.trial] +daysRemaining = "剩余 {{days}} 天" +daysRemainingFull = "您的试用将在 {{days}} 天后结束" +endDate = "到期时间:{{date}}" +endsOn = "试用结束" +title = "免费试用已启用" + +[settings.planBilling.upgrade] +cta = "升级到团队版" +featureApi = "用于自动化的 API 访问" +featureCredits = "每月 {{teamCredits}} 额度(免费版为 {{freeCredits}})" +featureMembers = "不限团队成员" +featureSupport = "优先支持" +featureThroughput = "更快的处理吞吐" +opensInBrowser = "将在浏览器中打开以完成升级" +subtitle = "升级到团队版可获得:" +title = "升级您的套餐" + [settings.developer] apiKeys = "API 密钥" title = "开发者" @@ -5689,6 +5965,9 @@ people = "成员" teams = "团队" title = "工作区" +[settings.team] +title = "团队" + [setup] description = "选择您希望使用 Stirling PDF 的方式开始" welcome = "欢迎使用 Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "使用分隔页自动拆分" name = "分隔页" tooltip = "在扫描时将带有 QR 码的分隔页插入文档之间" +[split.methods.byPoster] +name = "可打印分块" +desc = "将大页面拆分为可打印尺寸" +tooltip = "将超大页面划分为适合在标准纸张(A4、Letter 等)上打印的较小分块" + [split.methods.byPages] desc = "提取特定页面(1,3,5-10)" name = "页码" @@ -6029,6 +6313,7 @@ tooltip = "指定最大文件大小(如 10MB、500KB)" [split.methods.prefix] splitAt = "拆分于" splitBy = "按以下方式拆分" +splitInto = "拆分为" [split.methodSelection.tooltip] bullet1 = "点击方法卡片以选择" @@ -6048,6 +6333,21 @@ selectMethodFirst = "请先选择一种拆分方法" chooseMethod = "选择方法" settings = "设置" +[split.poster] +rightToLeft = "从右到左拆分" + +[split.poster.pageSize] +label = "目标页面尺寸" +description = "用于打印的输出页面大小" + +[split.poster.xFactor] +label = "水平分割数" +description = "每页按列拆分的数量" + +[split.poster.yFactor] +label = "垂直分割数" +description = "每页按行拆分的数量" + [split.tooltip.byChapters] bullet1 = "书签级别:在第几个级别拆分(1=顶级)" bullet2 = "包含元数据:保留文档属性" @@ -6085,6 +6385,14 @@ bullet5 = "若扫描分隔页双面,请启用双面模式" text = "使用带有 QR 码的实体分隔页自动拆分扫描的文档。非常适合一次性扫描多份文档。" title = "按分隔页拆分" +[split.tooltip.byPoster] +bullet1 = "目标页面尺寸:选择输出纸张大小(A4、Letter 等)" +bullet2 = "水平/垂直分割:用于拆分的网格大小" +bullet3 = "从右到左:为 RTL 布局反转列顺序" +bullet4 = "打印并拼接这些部分以制作海报" +text = "将较大的 PDF 页面拆分为适合标准纸张尺寸打印的更小分块。非常适合把超大页面制作成海报打印。" +title = "海报打印拆分" + [split.tooltip.byPages] bullet1 = "单个拆分点:3,7(在第 3 页和第 7 页之后拆分)" bullet2 = "范围拆分点:3-8(在第 3 页之前与第 8 页之后拆分)" @@ -6364,9 +6672,13 @@ tags = "དྲ་ངོས་ལེན་པ།,ཤོག་ངོས་ཉར title = "URL ནས་ PDF ལ།" [usage] +aboutUsageAnalytics = "关于使用分析" +configureSettings = "配置分析设置" error = "加载使用统计时出错" noData = "暂无数据" noDataMessage = "当前无使用统计数据。" +usageAnalyticsExplanation = "使用分析会跟踪端点请求和工具使用模式。结合审计日志仪表板,您可以全面掌握系统活动、性能与安全事件。" +viewAuditLogs = "查看审计日志" [usage.chart] title = "端点使用情况图表" @@ -6947,3 +7259,278 @@ cancel = "取消" confirm = "解压" message = "此 ZIP 包含 {{count}} 个文件。仍要解压吗?" title = "大型 ZIP 文件" + +[cloudBadge] +tooltip = "此操作将使用您的云额度" + +[team] +cancelInviteError = "取消邀请失败" +confirmCancelInvite = "确定要取消此邀请吗?" +confirmLeave = "确定要离开此团队吗?" +confirmLeaveLeader = "作为团队负责人,离开将把您从团队中移除。确定要继续吗?" +confirmRemove = "确定要移除此成员吗?" +editName = "编辑团队名称" +inviteCancelled = "已取消邀请" +inviteError = "发送邀请失败" +inviteSent = "邀请已发送" +leader = "负责人" +leaveButton = "离开团队" +leaveError = "离开团队失败" +leaveSuccess = "已成功离开团队" +loading = "正在加载团队信息..." +memberCount = "{{count}} 名成员" +memberRemoved = "已成功移除成员" +namePlaceholder = "输入团队名称" +personal = "个人" +removeError = "移除成员失败" +renameError = "重命名团队失败" +renameSuccess = "团队重命名成功" + +[team.invitationBanner] +message = "邀请您加入" +acceptButton = "接受" +rejectButton = "拒绝" + +[team.features] +badge = "团队功能" +subtitle = "与团队协作" +title = "团队协作" +viewPlans = "查看套餐" + +[team.features.billing] +description = "管理计费与订阅" +title = "计费管理" + +[team.features.credits] +description = "所有成员共享额度池" +title = "共享额度" + +[team.features.dashboard] +description = "查看团队活动与使用情况" +title = "团队仪表板" + +[team.features.invite] +description = "将成员添加到您的团队" +title = "邀请成员" + +[team.invite] +cancelLabel = "取消" +invalidEmail = "无效的邮箱地址" +placeholder = "输入邮箱地址" +sendButton = "发送邀请" +title = "邀请团队成员" + +[team.members] +emailColumn = "邮箱" +empty = "暂无团队成员" +nameColumn = "姓名" +pending = "待接受" +remove = "移除" +roleColumn = "角色" +title = "团队成员" + +[team.upgrade] +button = "升级到团队版" +description = "解锁团队协作功能" +title = "升级到团队套餐" + +[provider.oauth2.google] +scope = "登录认证" + +[provider.oauth2.google.clientId] +label = "Client ID" +description = "来自 Google Cloud Console 的 OAuth2 Client ID" + +[provider.oauth2.google.clientSecret] +label = "Client Secret" +description = "来自 Google Cloud Console 的 OAuth2 Client Secret" + +[provider.oauth2.google.scopes] +label = "作用域" +description = "以逗号分隔的 OAuth2 作用域" + +[provider.oauth2.google.useAsUsername] +label = "用作用户名" +description = "用作用户名的字段(email、name、given_name、family_name)" + +[provider.oauth2.github] +scope = "登录认证" + +[provider.oauth2.github.clientId] +label = "Client ID" +description = "来自 GitHub Developer Settings 的 OAuth2 Client ID" + +[provider.oauth2.github.clientSecret] +label = "Client Secret" +description = "来自 GitHub Developer Settings 的 OAuth2 Client Secret" + +[provider.oauth2.github.scopes] +label = "作用域" +description = "以逗号分隔的 OAuth2 作用域" + +[provider.oauth2.github.useAsUsername] +label = "用作用户名" +description = "用作用户名的字段(email、login、name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "Issuer URL" +description = "Keycloak Realm 的 OpenID Connect 发现端点 URL" + +[provider.oauth2.keycloak.clientId] +label = "Client ID" +description = "来自 Keycloak 的 OAuth2 Client ID" + +[provider.oauth2.keycloak.clientSecret] +label = "Client Secret" +description = "来自 Keycloak 的 OAuth2 Client Secret" + +[provider.oauth2.keycloak.scopes] +label = "作用域" +description = "以逗号分隔的 OAuth2 作用域" + +[provider.oauth2.keycloak.useAsUsername] +label = "用作用户名" +description = "用作用户名的字段(email、name、given_name、family_name、preferred_username)" + +[provider.oauth2.generic] +name = "通用 OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "启用通用 OAuth2" +description = "使用自定义 OAuth2 提供商进行认证" + +[provider.oauth2.generic.provider] +label = "提供商名称" +description = "您的 OAuth2 提供商名称(例如 Azure AD、Okta)" + +[provider.oauth2.generic.issuer] +label = "Issuer URL" +description = "支持 OpenID Connect Discovery(/.well-known/openid-configuration)的提供商" + +[provider.oauth2.generic.clientId] +label = "Client ID" +description = "来自您的提供商的 OAuth2 Client ID" + +[provider.oauth2.generic.clientSecret] +label = "Client Secret" +description = "来自您的提供商的 OAuth2 Client Secret" + +[provider.oauth2.generic.scopes] +label = "作用域" +description = "以逗号分隔的 OAuth2 作用域" + +[provider.oauth2.generic.useAsUsername] +label = "用作用户名" +description = "用作用户名的字段" + +[provider.oauth2.generic.autoCreateUser] +label = "自动创建用户" +description = "首次通过 OAuth2 登录时自动创建用户账号" + +[provider.oauth2.generic.blockRegistration] +label = "阻止注册" +description = "禁止通过 OAuth2 注册新用户" + +[provider.smtp] +name = "SMTP 邮件" +scope = "邮件通知" + +[provider.smtp.enabled] +label = "启用邮件" +description = "启用邮件通知与 SMTP 功能" + +[provider.smtp.host] +label = "SMTP 主机" +description = "SMTP 服务器的主机名或 IP 地址" + +[provider.smtp.port] +label = "SMTP 端口" +description = "SMTP 连接端口(通常为 25、465 或 587)" + +[provider.smtp.username] +label = "SMTP 用户名" +description = "SMTP 认证用户名" + +[provider.smtp.password] +label = "SMTP 密码" +description = "SMTP 认证密码" + +[provider.smtp.from] +label = "发件人地址" +description = "作为发件人的邮箱地址" + +[provider.saml2] +name = "SAML2" +scope = "SSO (SAML)" + +[provider.saml2.enabled] +label = "启用 SAML2" +description = "启用 SAML2 认证(仅企业版)" + +[provider.saml2.provider] +label = "提供商名称" +description = "您的 SAML2 提供商名称" + +[provider.saml2.registrationId] +label = "注册 ID" +description = "您的服务提供商(SP)应用名称" + +[provider.saml2.idpMetadataUri] +label = "IDP 元数据 URI" +description = "您的提供商元数据的 URI" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP 单点登录 URL" +description = "用于发起 SSO 的 URL" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP 单点登出 URL" +description = "用于发起 SLO 的 URL" + +[provider.saml2.idpIssuer] +label = "IDP Issuer" +description = "您的提供商的 ID" + +[provider.saml2.idpCert] +label = "IDP 证书" +description = "证书路径(例如:classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "私钥" +description = "您的私钥路径" + +[provider.saml2.spCert] +label = "SP 证书" +description = "您的签名证书路径" + +[provider.saml2.autoCreateUser] +label = "自动创建用户" +description = "首次通过 SAML2 登录时自动创建用户账号" + +[provider.saml2.blockRegistration] +label = "阻止注册" +description = "禁止通过 SAML2 注册新用户" + +[provider.googledrive] +name = "Google Drive" +scope = "文件导入" + +[provider.googledrive.enabled] +label = "启用 Google Drive 文件选择器" +description = "允许用户直接从 Google Drive 导入文件" + +[provider.googledrive.clientId] +label = "Client ID" +description = "来自 Google Cloud Console 的 Google OAuth 2.0 Client ID" + +[provider.googledrive.apiKey] +label = "API Key" +description = "来自 Google Cloud Console 的 Google Picker API 的 Google API Key" + +[provider.googledrive.appId] +label = "App ID" +description = "来自 Google Cloud Console 的 Google Drive App ID" diff --git a/frontend/public/locales/zh-CN/translation.toml b/frontend/public/locales/zh-CN/translation.toml index 4016ca8f5..25805b190 100644 --- a/frontend/public/locales/zh-CN/translation.toml +++ b/frontend/public/locales/zh-CN/translation.toml @@ -96,6 +96,8 @@ pin = "固定文件(在工具运行后保持激活)" poweredBy = "服务来源:" pro = "专业版" processTimeWarning = "警告:此过程可能需要多达一分钟,具体时间取决于文件大小" +processingComplete = "您的文件已就绪。" +processingCompleteMultiple = "{{count}} 个文件已就绪。" property = "资产" quickPosition = "快速定位" red = "红色" @@ -105,6 +107,7 @@ save = "保存" saveToBrowser = "保存到浏览器" saveUnavailable = "此项目无法保存" seeDockerHub = "查看 Docker Hub" +editSecret = "编辑此值" selectFillter = "-- 选择--" size = "大小" sponsor = "赞助" @@ -651,6 +654,7 @@ description = "配置 OAuth2 和 SAML 等外部身份验证提供商。" disconnect = "断开连接" disconnected = "已成功断开提供商" disconnectError = "断开提供商失败" +documentation = "查看文档" imageResolutionFull = "完整(原始尺寸)" imageResolutionReduced = "压缩(最大 1200px)" linkedServices = "已连接的服务" @@ -964,6 +968,18 @@ label = "默认语言区域" description = "最大文件上传大小(例如:100MB、1GB)" label = "文件上传限制" +[admin.settings.general.hideDisabledTools] +description = "在界面中隐藏已禁用的工具" +label = "隐藏已禁用的工具" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "未启用时隐藏 Google Drive 按钮" +label = "隐藏 Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "未启用时隐藏移动端 QR 扫描按钮" +label = "隐藏移动端扫描器" + [admin.settings.general.frontendUrl] description = "前端的基础 URL(例如:https://pdf.example.com)。用于邮件邀请链接和手机二维码上传。留空则使用后端 URL。" label = "前端 URL" @@ -1148,6 +1164,8 @@ title = "安全" [admin.settings.security.audit] label = "审计日志" +showDetails = "显示审计级别详细信息" +hideDetails = "隐藏审计级别详细信息" [admin.settings.security.audit.enabled] description = "跟踪用户操作和系统事件以满足合规与安全监控" @@ -1157,10 +1175,32 @@ label = "启用审计日志" description = "0=OFF,1=BASIC,2=STANDARD,3=VERBOSE" label = "审计级别" +[admin.settings.security.audit.levelDetails] +off = "不记录审计日志(关键安全事件除外)" +basic = "PDF 文件操作(压缩、拆分、合并等)和设置更改。捕获:操作状态(成功/失败)、方法参数、时间。最小日志量。" +standard = "在 BASIC 之上:用户登录/登出、账户更改、通用 GET 请求。不包括连续轮询调用(/auth/me、/app-config、/health 等),以减少日志噪声。适合大多数部署。" +verbose = "在 STANDARD 之上:连续轮询调用、所有 GET 请求、详细时间。警告:日志量大且影响性能。" + [admin.settings.security.audit.retentionDays] description = "审计日志的保留天数" label = "审计保留(天)" +[admin.settings.security.audit.advancedOptions] +title = "高级选项" +description = "以下选项会增加处理时间和内存占用,仅在确有需要时启用。" + +[admin.settings.security.audit.captureFileHash] +description = "提取上传 PDF 文件的 SHA-256 哈希用于完整性验证。独立于审计级别。" +label = "捕获文件哈希(SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "在处理过程中提取 PDF 文档的作者字段。需要解析 PDF,会增加延迟。独立于审计级别。" +label = "捕获 PDF 作者元数据" + +[admin.settings.security.audit.captureOperationResults] +description = "捕获方法返回值。不建议:会显著增加日志量和磁盘占用。" +label = "捕获操作结果" + [admin.settings.security.csrfDisabled] description = "禁用跨站请求伪造保护(不建议)" label = "禁用CSRF保护" @@ -1536,72 +1576,152 @@ tags = "嵌入、附件、文件、附加" title = "添加附件" [audit] +configureAudit = "配置审计日志" +configureAuditMessage = "在“安全与认证”部分调整审计日志级别、保留期和其他设置。" disabled = "已禁用审计日志" disabledMessage = "请在应用配置中启用审计日志以跟踪系统事件。" enterpriseRequired = "需要企业许可证" enterpriseRequiredMessage = "审计日志系统是企业功能。请升级到企业许可证以访问审计日志和分析。" +goToSettings = "前往审计设置" notAvailable = "审计系统不可用" notAvailableMessage = "审计系统未配置或不可用。" -[audit.charts] -byType = "按类型统计事件" -byUser = "按用户统计事件" -day = "日" -error = "加载图表时出错" -month = "月" -overTime = "事件随时间变化" -title = "审计仪表板" -week = "周" - [audit.error] title = "加载审计系统时出错" -[audit.events] -actions = "操作" -clearFilters = "清除" -details = "详情" -endDate = "结束日期" -error = "加载事件时出错" -eventDetails = "事件详情" -filterByType = "按类型筛选" -filterByUser = "按用户筛选" -ipAddress = "IP 地址" -noEvents = "未找到事件" -startDate = "开始日期" -timestamp = "时间戳" -title = "审计事件" -type = "类型" -user = "用户" -viewDetails = "查看详情" - [audit.export] clearFilters = "清除" description = "将审计事件导出为 CSV 或 JSON 格式。使用筛选器限定导出数据。" endDate = "结束日期" error = "导出数据失败" exportButton = "导出数据" +fieldAuthor = "作者(来自 PDF)" +fieldDate = "日期" +fieldDocumentName = "文档名称" +fieldFileHash = "文件哈希(SHA-256)" +fieldIpAddress = "IP 地址" +fieldOperationResults = "操作结果" +fieldOutcome = "结果(成功/失败)" +fieldTool = "工具" +fieldUsername = "用户名" filterByType = "按类型筛选" filterByUser = "按用户筛选" filters = "筛选器(可选)" format = "导出格式" +selectFields = "选择要包含的字段" startDate = "开始日期" title = "导出审计数据" +verboseRequired = "需要 VERBOSE 审计级别" [audit.systemStatus] +autoRefresh = "自动刷新" +autoRefreshLabel = "每30秒自动刷新" +captureBySettings = "在设置中启用" +capturedFields = "已捕获的字段" +date = "日期" days = "天" disabled = "已禁用" +documentName = "文档名称" enabled = "已启用" +fileHash = "文件哈希" level = "审计级别" +pdfAuthor = "PDF 作者" retention = "保留期限" status = "审计日志" title = "系统状态" +tool = "工具" totalEvents = "事件总数" +username = "用户名" +verboseOnly = "仅限 VERBOSE" + +[audit.stats] +activeUsers = "活跃用户" +attention = "需要关注" +avgLatency = "平均延迟" +error = "加载统计时出错" +errorLoadingStats = "无法加载统计" +excellent = "优秀" +good = "良好" +noData = "无" +successRate = "成功率" +title = "概览" +totalEvents = "事件总数" +vsLastPeriod = "相比上期" + +[audit.charts] +byTool = "最常使用的工具" +byType = "按类型统计事件" +byUser = "按用户统计事件" +day = "日" +error = "加载图表时出错" +hourlyActivity = "每小时活动" +month = "月" +noData = "此期间无数据" +overTime = "事件随时间变化" +title = "审计仪表板" +week = "周" + +[audit.events] +actions = "操作" +author = "作者" +clearFilters = "清除" +details = "详情" +documentName = "文档" +endDate = "结束日期" +error = "加载事件时出错" +eventDetails = "事件详情" +failure = "失败" +fileHash = "文件哈希" +filterByType = "按类型筛选" +filterByUser = "按用户筛选" +ipAddress = "IP 地址" +noEvents = "未找到事件" +outcome = "状态" +sortAsc = "升序" +sortDesc = "降序" +startDate = "开始日期" +success = "成功" +timestamp = "时间戳" +title = "审计事件" +type = "类型" +user = "用户" +viewDetails = "查看详情" + +[audit.filters] +allOutcomes = "全部" +failureOnly = "仅失败" +last7Days = "过去7天" +last30Days = "过去30天" +outcomeFilter = "结果" +quickPresets = "快速筛选" +successOnly = "仅成功" +thisMonth = "本月" +today = "今天" [audit.tabs] +clearData = "清除数据" dashboard = "仪表板" events = "审计事件" export = "导出" +[audit.clearData] +cancel = "取消" +codeDoesNotMatch = "代码不匹配" +codePlaceholder = "在此输入代码" +confirmationCode = "确认代码" +confirmationRequired = "删除所有审计数据" +confirmMessage = "这将永久移除所有审计日志。请输入下方确认代码以继续。" +confirmTitle = "请确认您要删除" +deleteButton = "删除" +enterCode = "确认代码" +enterCodeBelow = "按上方所示精确输入代码(区分大小写)" +initiateDelete = "删除所有数据" +irreversible = "不可逆" +success = "成功" +successMessage = "已成功清除所有审计数据" +warning1 = "此操作无法撤销" +warning2 = "删除审计数据将永久移除数据库中的所有历史审计日志,包括安全事件、用户活动和文件操作。" + [auth] accessDenied = "拒绝访问" insufficientPermissions = "您没有执行此操作的权限。" @@ -2254,9 +2374,11 @@ copy = "复制" done = "完成" error = "错误" expand = "展开" +learnMore = "了解更多" lines = "行" loading = "正在加载..." next = "下一页" +operation = "此操作" preview = "预览" previous = "上一页" refresh = "刷新" @@ -2920,6 +3042,7 @@ copyStack = "复制堆栈跟踪" discordSubmit = "Discord - 提交支持帖子" dismissAllErrors = "关闭所有错误" encryptedPdfMustRemovePassword = "此 PDF 已加密或受密码保护。请在转换为 PDF/A 之前将其解锁。" +generic = "发生错误" github = "在 GitHub 上提交工单" githubSubmit = "GitHub - 提交工单" incorrectPasswordProvided = "PDF 密码不正确或未提供。" @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "您的订阅已成功升级。现有许可证密钥已 upgradeSuccess = "支付成功!您的订阅已升级。服务器上的许可证已更新。您将很快收到确认 Email。" upgradeTitle = "升级到 {{planName}}" yearly = "按年" +checkoutOpened = "已在浏览器中打开结账页面" +checkoutInstructions = "请在刚刚打开的浏览器窗口中完成购买。付款完成后,返回此处并点击下方按钮以刷新您的账单信息。" +refreshBilling = "我已完成付款 - 刷新账单" +closeLater = "稍后再说" [payment.emailStage] continue = "继续" @@ -4679,6 +4806,13 @@ prompt = "选择需要提取表格的页面" submit = "提取" title = "PDF 转 CSV" +[PDFToXLSX] +header = "PDF 转 Excel" +prompt = "选择要提取表格的页面" +submit = "转换" +title = "PDF 转 Excel(XLSX)" +tags = "电子表格,excel,xlsx,表格,提取,转换" + [PDFToHTML] credit = "此服务使用 pdftohtml 进行文件转换。" header = "将 PDF 转换为 HTML" @@ -4835,6 +4969,7 @@ customPricing = "自定义" featureComparison = "功能对比" from = "起" hideComparison = "隐藏功能对比" +included = "已包含" includedInCurrent = "您的方案已包含" licensedSeats = "许可:{{count}} 席位" manage = "管理" @@ -4852,9 +4987,11 @@ title = "当前套餐" [plan.availablePlans] subtitle = "选择符合您需求的套餐" +loadError = "无法加载方案定价。使用默认值。" title = "可用套餐" [plan.enterprise] +siteLicense = "站点许可" highlight1 = "自定义定价" highlight2 = "专属支持" highlight3 = "最新功能" @@ -4928,6 +5065,81 @@ keyDescription = "粘贴您邮件中的许可证密钥" success = "许可证已激活!" successMessage = "您的许可证已成功激活。现在可以关闭此窗口。" +[plan.team] +name = "团队" +siteLicense = "站点许可" + +[credits] +enableOverageBilling = "启用超额计费" +maybeLater = "稍后再说" +upgrade = "升级" + +[credits.modal] +advancedMonitoring = "高级监控" +allInOneWorkspace = "一体化 PDF 工作空间(查看器、工具与代理)" +apiSandbox = "API 沙盒" +contactSales = "联系销售" +creditsRemaining = "剩余 {{current}} / {{total}}" +creditsThisMonth = "每月额度" +current = "当前方案" +customPricing = "自定义" +customSmartFolders = "自定义智能文件夹" +dedicatedSupportSlas = "专属支持与 SLA" +enterpriseSubscription = "企业版" +everythingInCredits = "包含“额度”中的所有内容,另外:" +everythingInFree = "包含“免费版”中的所有内容,另外:" +fasterThroughput = "吞吐量提升 10 倍" +forRegularWork = "适用于常规 PDF 工作:" +freeTier = "免费版" +fullyPrivateFiles = "完全私密的文件" +largeFileProcessing = "大文件处理" +managedMemberMessage = "您可通过团队无限使用额度。如需帮助,请联系您的团队负责人。" +managedMemberTitle = "无限额度" +meteringBillingNote = "超额额度按月与您的 Team 订阅一并结算。可在账户设置中随时查看用量。" +meteringExplanation = "您的 Team 方案每月包含 {{credits}} 额度。用完后,超额计费会自动提供额外额度,确保不中断工作。" +meteringIncluded = "Team 每月包含 {{credits}} 额度" +meteringNoCommitment = "无绑定,随时可取消" +meteringNeverRunOut = "额度永不断供" +meteringPayAsYouGo = "按量付费" +meteringPrice = "额外额度 {{price}}/额度" +meteringTitle = "按使用量计费的超额结算" +monthlyCredits = "每月额度" +orgWideAccess = "组织范围的访问控制" +overage = "超额" +perMonth = "/月" +popular = "热门" +premiumAiModels = "高级 AI 模型" +prioritySupport = "优先支持" +privateDocCloud = "私有文档云" +ragFineTuning = "RAG + 微调" +secureApiAccess = "安全 API 访问" +selfHostLink = "查看文档与方案" +selfHostPrompt = "想要自托管?" +standardThroughput = "标准吞吐量" +subtitle = "升级到 Team,可获得 10 倍额度与更快的处理速度。" +subtitlePro = "启用自动超额计费,确保额度永不断供。" +teamLeaderOnly = "仅团队负责人可启用超额计费" +teamSubscription = "Team" +titleExhausted = "您已用完免费额度" +titleExhaustedPro = "您的额度已用尽" +unlimitedApiAccess = "无限 API 访问" +unlimitedMonthlyCredits = "站点许可" +unlimitedSeats = "无限席位" + +[credits.modal.features] +everythingInCredits = "包含“额度”中的所有内容,另外:" +everythingInFree = "包含“免费版”中的所有内容,另外:" +forRegularWork = "适用于常规 PDF 工作:" + +[credits.insufficient] +brief = "额度不足。您需要 {{required}},但只有 {{current}}。" +freeTier = "升级到 Team,额度提升 10 倍并享受无限超额计费。" +managedMember = "请联系您的团队负责人以获取帮助。" +message = "您没有足够的额度来运行 {{tool}}。当前拥有 {{current}} 额度。" +messageWithAmount = "运行 {{tool}} 需要 {{required}} 额度,但您只有 {{current}}。" +teamMember = "启用超额计费,确保额度永不断供。" +title = "额度不足" + [printFile] header = "使用打印机打印文件" submit = "打印" @@ -5565,6 +5777,70 @@ user = "登录身份" saas = "Stirling Cloud" selfhosted = "自托管" +[settings.planBilling] +currentPlan = "当前方案" +loading = "正在加载账单信息..." +notAvailable = "连接 Stirling Cloud(SaaS 模式)后才可使用“方案与账单”。" +title = "方案与账单" + +[settings.planBilling.billing] +manageBilling = "管理账单" +nextBillingDate = "下次结算日期" +overageCost = "当前超额费用:{{amount}}({{credits}} 额度)" + +[settings.planBilling.credits] +estimatedCost = "预估费用:{{amount}}" +freeTierInfo = "免费方案每月包含 {{freeCredits}} 额度。升级到 Team 可获得每月 {{teamCredits}} 额度并享受按量超额计费。" +included = "已包含 {{count}} 额度/月" +noOverage = "本月无超额费用。您正在使用已包含的 {{count}} 额度。" +overage = "+ {{count}} 超额" +overageInfo = "超额额度按每额度 {{price}} 计费。仅为超出每月配额的部分付费。" +title = "额度使用情况" + +[settings.planBilling.errors] +fetchFailed = "无法获取账单数据" +retry = "重试" + +[settings.planBilling.status] +active = "有效" +canceled = "已取消" +pastDue = "逾期未付" +trial = "试用" + +[settings.planBilling.tier] +enterprise = "企业版" +enterpriseDescription = "自定义企业功能与支持" +free = "免费版" +freeDescription = "每月 50 额度" +team = "Team" +teamBadge = "Team" +teamDescription = "每月包含 500 额度,自动超额计费,服务不中断" +teamTooltipCredits = "Team 方案每月包含 {{credits}} 额度。" +teamTooltipFineprint = "仅为超出包含额度的部分付费。" +teamTooltipOverage = "自动超额计费 {{price}}/额度,确保服务不中断。" + +[settings.planBilling.team] +managedByTeam = "由团队管理" +memberCount = "{{count}} 名团队成员" + +[settings.planBilling.trial] +daysRemaining = "剩余 {{days}} 天" +daysRemainingFull = "您的试用将在 {{days}} 天后结束" +endDate = "到期时间:{{date}}" +endsOn = "试用结束日期" +title = "试用版已激活" + +[settings.planBilling.upgrade] +cta = "升级到 Team" +featureApi = "用于自动化的 API 访问" +featureCredits = "每月 {{teamCredits}} 额度(对比免费版的 {{freeCredits}})" +featureMembers = "无限团队成员" +featureSupport = "优先支持" +featureThroughput = "更快的处理吞吐量" +opensInBrowser = "在浏览器中打开以完成升级" +subtitle = "升级到 Team 可获得:" +title = "升级您的方案" + [settings.developer] apiKeys = "API 密钥" title = "开发者" @@ -5689,6 +5965,9 @@ people = "成员" teams = "团队" title = "工作区" +[settings.team] +title = "团队" + [setup] description = "选择您希望使用 Stirling PDF 的方式开始" welcome = "欢迎使用 Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "使用分隔页自动拆分" name = "分隔页" tooltip = "扫描时在文档间放置带二维码的分隔页" +[split.methods.byPoster] +name = "可打印分块" +desc = "将大页拆分为可打印尺寸" +tooltip = "将超大页面按标准纸张(A4、Letter 等)分割为更小块,便于打印" + [split.methods.byPages] desc = "提取特定页面(1,3,5-10)" name = "页码" @@ -6029,6 +6313,7 @@ tooltip = "指定最大文件大小(如 10MB、500KB)" [split.methods.prefix] splitAt = "拆分于" splitBy = "拆分依据" +splitInto = "拆分为" [split.methodSelection.tooltip] bullet1 = "点击方法卡片进行选择" @@ -6048,6 +6333,21 @@ selectMethodFirst = "请先选择一种拆分方式" chooseMethod = "选择方式" settings = "设置" +[split.poster] +rightToLeft = "从右到左拆分" + +[split.poster.pageSize] +label = "目标页面尺寸" +description = "用于打印的输出页面尺寸" + +[split.poster.xFactor] +label = "水平分割数" +description = "每页拆分成的列数" + +[split.poster.yFactor] +label = "垂直分割数" +description = "每页拆分成的行数" + [split.tooltip.byChapters] bullet1 = "书签层级:在第几级书签处拆分(1=顶级)" bullet2 = "包含元数据:保留文档属性" @@ -6085,6 +6385,14 @@ bullet5 = "如果扫描分隔页的双面,请启用双工模式" text = "使用带有 QR 码的实体分隔页自动拆分扫描文档。非常适合处理合并扫描的多份文档。" title = "按分隔页拆分" +[split.tooltip.byPoster] +bullet1 = "目标页面尺寸:选择输出纸张尺寸(A4、Letter 等)" +bullet2 = "水平/垂直分割数:拆分网格大小" +bullet3 = "从右到左:为 RTL 布局反转列顺序" +bullet4 = "打印并拼接各部分以制作海报" +text = "将大型 PDF 页面拆分为适合标准纸张尺寸打印的更小分块。非常适合把超大页面制作成海报打印。" +title = "用于海报打印的拆分" + [split.tooltip.byPages] bullet1 = "单一拆分点:3,7(在第 3 与第 7 页后拆分)" bullet2 = "范围拆分点:3-8(在第 3 页前与第 8 页后拆分)" @@ -6364,9 +6672,13 @@ tags = "网页捕获、保存网页、网页转文档、归档" title = "URL 转 PDF" [usage] +aboutUsageAnalytics = "关于使用分析" +configureSettings = "配置分析设置" error = "加载使用统计时出错" noData = "暂无数据" noDataMessage = "当前暂无使用统计。" +usageAnalyticsExplanation = "使用分析会跟踪端点请求和工具使用模式。结合审计日志仪表盘,您可以全面了解系统活动、性能与安全事件。" +viewAuditLogs = "查看审计日志" [usage.chart] title = "端点使用图表" @@ -6947,3 +7259,278 @@ cancel = "取消" confirm = "解压" message = "此 ZIP 包含 {{count}} 个文件。仍要解压?" title = "大型 ZIP 文件" + +[cloudBadge] +tooltip = "此操作将使用您的云额度" + +[team] +cancelInviteError = "取消邀请失败" +confirmCancelInvite = "确定要取消此邀请吗?" +confirmLeave = "确定要离开此团队吗?" +confirmLeaveLeader = "作为团队负责人,离开将把您从团队中移除。确定继续吗?" +confirmRemove = "确定要移除此成员吗?" +editName = "编辑团队名称" +inviteCancelled = "已取消邀请" +inviteError = "发送邀请失败" +inviteSent = "邀请已发送" +leader = "负责人" +leaveButton = "离开团队" +leaveError = "离开团队失败" +leaveSuccess = "已成功离开团队" +loading = "正在加载团队信息..." +memberCount = "{{count}} 名成员" +memberRemoved = "成员已成功移除" +namePlaceholder = "输入团队名称" +personal = "个人" +removeError = "移除成员失败" +renameError = "重命名团队失败" +renameSuccess = "团队重命名成功" + +[team.invitationBanner] +message = "已邀请您加入" +acceptButton = "接受" +rejectButton = "拒绝" + +[team.features] +badge = "团队功能" +subtitle = "与团队协作" +title = "团队协作" +viewPlans = "查看方案" + +[team.features.billing] +description = "管理账单与订阅" +title = "账单管理" + +[team.features.credits] +description = "所有成员共享的额度池" +title = "共享额度" + +[team.features.dashboard] +description = "查看团队活动与使用情况" +title = "团队仪表盘" + +[team.features.invite] +description = "向团队添加成员" +title = "邀请成员" + +[team.invite] +cancelLabel = "取消" +invalidEmail = "无效的电子邮箱地址" +placeholder = "输入电子邮箱地址" +sendButton = "发送邀请" +title = "邀请团队成员" + +[team.members] +emailColumn = "邮箱" +empty = "尚无团队成员" +nameColumn = "姓名" +pending = "待接受" +remove = "移除" +roleColumn = "角色" +title = "团队成员" + +[team.upgrade] +button = "升级到 Team" +description = "解锁团队协作功能" +title = "升级到 Team 方案" + +[provider.oauth2.google] +scope = "登录认证" + +[provider.oauth2.google.clientId] +label = "客户端 ID" +description = "来自 Google Cloud Console 的 OAuth2 客户端 ID" + +[provider.oauth2.google.clientSecret] +label = "客户端密钥" +description = "来自 Google Cloud Console 的 OAuth2 客户端密钥" + +[provider.oauth2.google.scopes] +label = "范围" +description = "以逗号分隔的 OAuth2 范围" + +[provider.oauth2.google.useAsUsername] +label = "用作用户名" +description = "用作用户名的字段(email、name、given_name、family_name)" + +[provider.oauth2.github] +scope = "登录认证" + +[provider.oauth2.github.clientId] +label = "客户端 ID" +description = "来自 GitHub Developer Settings 的 OAuth2 客户端 ID" + +[provider.oauth2.github.clientSecret] +label = "客户端密钥" +description = "来自 GitHub Developer Settings 的 OAuth2 客户端密钥" + +[provider.oauth2.github.scopes] +label = "范围" +description = "以逗号分隔的 OAuth2 范围" + +[provider.oauth2.github.useAsUsername] +label = "用作用户名" +description = "用作用户名的字段(email、login、name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "发行者 URL" +description = "Keycloak Realm 的 OpenID Connect Discovery 端点的 URL" + +[provider.oauth2.keycloak.clientId] +label = "客户端 ID" +description = "来自 Keycloak 的 OAuth2 客户端 ID" + +[provider.oauth2.keycloak.clientSecret] +label = "客户端密钥" +description = "来自 Keycloak 的 OAuth2 客户端密钥" + +[provider.oauth2.keycloak.scopes] +label = "范围" +description = "以逗号分隔的 OAuth2 范围" + +[provider.oauth2.keycloak.useAsUsername] +label = "用作用户名" +description = "用作用户名的字段(email、name、given_name、family_name、preferred_username)" + +[provider.oauth2.generic] +name = "通用 OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "启用通用 OAuth2" +description = "使用自定义 OAuth2 提供商启用认证" + +[provider.oauth2.generic.provider] +label = "提供商名称" +description = "您的 OAuth2 提供商名称(例如 Azure AD、Okta)" + +[provider.oauth2.generic.issuer] +label = "发行者 URL" +description = "支持 OpenID Connect Discovery(/.well-known/openid-configuration)的提供商" + +[provider.oauth2.generic.clientId] +label = "客户端 ID" +description = "来自您的提供商的 OAuth2 客户端 ID" + +[provider.oauth2.generic.clientSecret] +label = "客户端密钥" +description = "来自您的提供商的 OAuth2 客户端密钥" + +[provider.oauth2.generic.scopes] +label = "范围" +description = "以逗号分隔的 OAuth2 范围" + +[provider.oauth2.generic.useAsUsername] +label = "用作用户名" +description = "用作用户名的字段" + +[provider.oauth2.generic.autoCreateUser] +label = "自动创建用户" +description = "首次通过 OAuth2 登录时自动创建用户账户" + +[provider.oauth2.generic.blockRegistration] +label = "阻止注册" +description = "禁止通过 OAuth2 注册新用户" + +[provider.smtp] +name = "SMTP 邮件" +scope = "邮件通知" + +[provider.smtp.enabled] +label = "启用邮件" +description = "启用邮件通知与 SMTP 功能" + +[provider.smtp.host] +label = "SMTP 主机" +description = "您的 SMTP 服务器的主机名或 IP 地址" + +[provider.smtp.port] +label = "SMTP 端口" +description = "SMTP 连接端口(通常为 25、465 或 587)" + +[provider.smtp.username] +label = "SMTP 用户名" +description = "用于 SMTP 认证的用户名" + +[provider.smtp.password] +label = "SMTP 密码" +description = "用于 SMTP 认证的密码" + +[provider.smtp.from] +label = "发件地址" +description = "用作发件人的电子邮箱地址" + +[provider.saml2] +name = "SAML2" +scope = "SSO(SAML)" + +[provider.saml2.enabled] +label = "启用 SAML2" +description = "启用 SAML2 认证(仅限企业版)" + +[provider.saml2.provider] +label = "提供商名称" +description = "您的 SAML2 提供商名称" + +[provider.saml2.registrationId] +label = "注册 ID" +description = "您的服务提供商(SP)应用名称" + +[provider.saml2.idpMetadataUri] +label = "IDP Metadata URI" +description = "您的提供商的元数据 URI" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP 单点登录 URL" +description = "用于发起 SSO 的 URL" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP 单点登出 URL" +description = "用于发起 SLO 的 URL" + +[provider.saml2.idpIssuer] +label = "IDP Issuer" +description = "您的提供商的 ID" + +[provider.saml2.idpCert] +label = "IDP 证书" +description = "证书路径(例如:classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "私钥" +description = "您的私钥路径" + +[provider.saml2.spCert] +label = "SP 证书" +description = "您的签名证书路径" + +[provider.saml2.autoCreateUser] +label = "自动创建用户" +description = "首次通过 SAML2 登录时自动创建用户账户" + +[provider.saml2.blockRegistration] +label = "阻止注册" +description = "禁止通过 SAML2 注册新用户" + +[provider.googledrive] +name = "Google Drive" +scope = "文件导入" + +[provider.googledrive.enabled] +label = "启用 Google Drive 文件选择器" +description = "允许用户直接从 Google Drive 导入文件" + +[provider.googledrive.clientId] +label = "客户端 ID" +description = "来自 Google Cloud Console 的 Google OAuth 2.0 Client ID" + +[provider.googledrive.apiKey] +label = "API Key" +description = "来自 Google Cloud Console 的用于 Google Picker API 的 Google API Key" + +[provider.googledrive.appId] +label = "App ID" +description = "来自 Google Cloud Console 的 Google Drive App ID" diff --git a/frontend/public/locales/zh-TW/translation.toml b/frontend/public/locales/zh-TW/translation.toml index 70d6a023a..4490dc31a 100644 --- a/frontend/public/locales/zh-TW/translation.toml +++ b/frontend/public/locales/zh-TW/translation.toml @@ -96,6 +96,8 @@ pin = "釘選檔案(工具執行後保持作用中)" poweredBy = "技術支援" pro = "專業版" processTimeWarning = "警告:此過程可能長達一分鐘,具體取決於檔案大小" +processingComplete = "您的檔案已就緒。" +processingCompleteMultiple = "已有 {{count}} 個檔案就緒。" property = "屬性" quickPosition = "快速定位" red = "紅色" @@ -105,6 +107,7 @@ save = "儲存" saveToBrowser = "儲存到瀏覽器" saveUnavailable = "此項目無法儲存" seeDockerHub = "造訪 Docker Hub 儲存庫" +editSecret = "編輯此值" selectFillter = "-- 選擇 --" size = "大小" sponsor = "贊助" @@ -651,6 +654,7 @@ description = "設定外部驗證提供者,如 OAuth2 與 SAML。" disconnect = "中斷連線" disconnected = "已成功中斷提供者的連線" disconnectError = "無法中斷提供者的連線" +documentation = "檢視文件" imageResolutionFull = "完整(原始尺寸)" imageResolutionReduced = "縮減(最長 1200px)" linkedServices = "已連結的服務" @@ -964,6 +968,18 @@ label = "預設語系" description = "最大檔案上傳大小(例如:100MB、1GB)" label = "檔案上傳限制" +[admin.settings.general.hideDisabledTools] +description = "在介面中隱藏已停用的工具" +label = "隱藏已停用的工具" + +[admin.settings.general.hideDisabledTools.googleDrive] +description = "未啟用時隱藏 Google Drive 按鈕" +label = "隱藏 Google Drive" + +[admin.settings.general.hideDisabledTools.mobileScanner] +description = "未啟用時隱藏行動 QR 掃描器按鈕" +label = "隱藏行動掃描器" + [admin.settings.general.frontendUrl] description = "前端的基礎 URL(例如:https://pdf.example.com)。用於電子郵件邀請連結與行動 QR 碼上傳。留空則使用後端 URL。" label = "前端 URL" @@ -1148,6 +1164,8 @@ title = "安全性" [admin.settings.security.audit] label = "稽核記錄" +showDetails = "顯示稽核層級詳細資訊" +hideDetails = "隱藏稽核層級詳細資訊" [admin.settings.security.audit.enabled] description = "追蹤使用者操作與系統事件以利合規與安全監控" @@ -1157,10 +1175,32 @@ label = "啟用稽核記錄" description = "0=關閉,1=基本,2=標準,3=詳細" label = "稽核等級" +[admin.settings.security.audit.levelDetails] +off = "不記錄稽核(重大安全事件除外)" +basic = "PDF 檔案操作(壓縮、分割、合併等)與設定變更。擷取:操作狀態(成功/失敗)、方法參數、時間。最小記錄量。" +standard = "在 BASIC 事件基礎上,另包含:使用者登入/登出、帳戶變更、一般 GET 請求。為降低記錄雜訊,排除連續輪詢呼叫(/auth/me、/app-config、/health 等)。適用於多數部署。" +verbose = "在 STANDARD 事件基礎上,另包含:連續輪詢呼叫、所有 GET 請求、詳細時間資訊。警告:記錄量高且可能影響效能。" + [admin.settings.security.audit.retentionDays] description = "稽核記錄的保留天數" label = "稽核保留(天)" +[admin.settings.security.audit.advancedOptions] +title = "進階選項" +description = "下列選項會增加處理時間與記憶體使用量。僅在確有需要時啟用。" + +[admin.settings.security.audit.captureFileHash] +description = "擷取上傳 PDF 檔案的 SHA-256 雜湊以進行完整性驗證。與稽核層級無關。" +label = "擷取檔案雜湊(SHA-256)" + +[admin.settings.security.audit.capturePdfAuthor] +description = "處理期間自 PDF 文件擷取作者欄位。需要解析 PDF,會增加延遲。與稽核層級無關。" +label = "擷取 PDF 作者中繼資料" + +[admin.settings.security.audit.captureOperationResults] +description = "擷取方法的回傳值。不建議:會大幅增加記錄量與磁碟使用。" +label = "擷取操作結果" + [admin.settings.security.csrfDisabled] description = "停用跨站請求偽造保護(不建議)" label = "停用 CSRF 保護" @@ -1536,72 +1576,152 @@ tags = "嵌入,附件,檔案,附加,附件管理" title = "新增附件" [audit] +configureAudit = "設定稽核記錄" +configureAuditMessage = "請在「安全性與驗證」區段調整稽核記錄層級、保留期間及其他設定。" disabled = "已停用稽核記錄" disabledMessage = "請在應用程式設定中啟用稽核記錄以追蹤系統事件。" enterpriseRequired = "需要企業版授權" enterpriseRequiredMessage = "稽核記錄系統是企業版功能。請升級至企業版授權以存取稽核記錄與分析。" +goToSettings = "前往稽核設定" notAvailable = "稽核系統不可用" notAvailableMessage = "稽核系統未設定或不可用。" -[audit.charts] -byType = "依類型分類的事件" -byUser = "依使用者分類的事件" -day = "日" -error = "載入圖表時發生錯誤" -month = "月" -overTime = "事件隨時間變化" -title = "稽核總覽" -week = "週" - [audit.error] title = "載入稽核系統時發生錯誤" -[audit.events] -actions = "操作" -clearFilters = "清除" -details = "詳細資料" -endDate = "結束日期" -error = "載入事件時發生錯誤" -eventDetails = "事件詳細資訊" -filterByType = "依類型篩選" -filterByUser = "依使用者篩選" -ipAddress = "IP 位址" -noEvents = "找不到任何事件" -startDate = "開始日期" -timestamp = "時間戳記" -title = "稽核事件" -type = "類型" -user = "使用者" -viewDetails = "檢視詳細資訊" - [audit.export] clearFilters = "清除" description = "將稽核事件匯出為 CSV 或 JSON 格式。使用篩選器限制匯出資料。" endDate = "結束日期" error = "匯出資料失敗" exportButton = "匯出資料" +fieldAuthor = "作者(來自 PDF)" +fieldDate = "日期" +fieldDocumentName = "文件名稱" +fieldFileHash = "檔案雜湊(SHA-256)" +fieldIpAddress = "IP 位址" +fieldOperationResults = "操作結果" +fieldOutcome = "結果(成功/失敗)" +fieldTool = "工具" +fieldUsername = "使用者名稱" filterByType = "依類型篩選" filterByUser = "依使用者篩選" filters = "篩選(選填)" format = "匯出格式" +selectFields = "選取要包含的欄位" startDate = "開始日期" title = "匯出稽核資料" +verboseRequired = "需要 VERBOSE 稽核層級" [audit.systemStatus] +autoRefresh = "自動重新整理" +autoRefreshLabel = "每 30 秒自動重新整理" +captureBySettings = "請在設定中啟用" +capturedFields = "擷取的欄位" +date = "日期" days = "天" disabled = "已停用" +documentName = "文件名稱" enabled = "已啟用" +fileHash = "檔案雜湊" level = "稽核等級" +pdfAuthor = "PDF 作者" retention = "保留期間" status = "稽核記錄" title = "系統狀態" +tool = "工具" totalEvents = "事件總數" +username = "使用者名稱" +verboseOnly = "僅限 VERBOSE" + +[audit.stats] +activeUsers = "活躍使用者" +attention = "需要留意" +avgLatency = "平均延遲" +error = "載入統計時發生錯誤" +errorLoadingStats = "無法載入統計" +excellent = "極佳" +good = "良好" +noData = "無" +successRate = "成功率" +title = "摘要" +totalEvents = "事件總數" +vsLastPeriod = "較上期" + +[audit.charts] +byTool = "最常使用的工具" +byType = "依類型分類的事件" +byUser = "依使用者分類的事件" +day = "日" +error = "載入圖表時發生錯誤" +hourlyActivity = "每小時活動" +month = "月" +noData = "此期間沒有資料" +overTime = "事件隨時間變化" +title = "稽核總覽" +week = "週" + +[audit.events] +actions = "操作" +author = "作者" +clearFilters = "清除" +details = "詳細資料" +documentName = "文件" +endDate = "結束日期" +error = "載入事件時發生錯誤" +eventDetails = "事件詳細資訊" +failure = "失敗" +fileHash = "檔案雜湊" +filterByType = "依類型篩選" +filterByUser = "依使用者篩選" +ipAddress = "IP 位址" +noEvents = "找不到任何事件" +outcome = "狀態" +sortAsc = "遞增排序" +sortDesc = "遞減排序" +startDate = "開始日期" +success = "成功" +timestamp = "時間戳記" +title = "稽核事件" +type = "類型" +user = "使用者" +viewDetails = "檢視詳細資訊" + +[audit.filters] +allOutcomes = "全部" +failureOnly = "僅失敗" +last7Days = "最近 7 天" +last30Days = "最近 30 天" +outcomeFilter = "結果" +quickPresets = "快速篩選" +successOnly = "僅成功" +thisMonth = "本月" +today = "今天" [audit.tabs] +clearData = "清除資料" dashboard = "總覽" events = "稽核事件" export = "匯出" +[audit.clearData] +cancel = "取消" +codeDoesNotMatch = "代碼不相符" +codePlaceholder = "在此輸入代碼" +confirmationCode = "確認代碼" +confirmationRequired = "刪除所有稽核資料" +confirmMessage = "這將永久移除所有稽核記錄。請在下方輸入確認代碼以繼續。" +confirmTitle = "請確認您要刪除" +deleteButton = "刪除" +enterCode = "確認代碼" +enterCodeBelow = "請完整輸入上方代碼(區分大小寫)" +initiateDelete = "刪除所有資料" +irreversible = "無法還原" +success = "成功" +successMessage = "已成功清除所有稽核資料" +warning1 = "此動作無法復原" +warning2 = "刪除稽核資料會永久從資料庫中移除所有歷史稽核記錄,包括安全事件、使用者活動與檔案操作。" + [auth] accessDenied = "拒絕存取" insufficientPermissions = "您沒有執行此操作的權限。" @@ -2254,9 +2374,11 @@ copy = "複製" done = "完成" error = "錯誤" expand = "展開" +learnMore = "了解更多" lines = "行" loading = "正在載入..." next = "下一步" +operation = "此操作" preview = "預覽" previous = "上一步" refresh = "重新整理" @@ -2920,6 +3042,7 @@ copyStack = "複製堆疊追蹤" discordSubmit = "Discord - 發表支援文章" dismissAllErrors = "關閉所有錯誤" encryptedPdfMustRemovePassword = "此 PDF 已加密或受密碼保護。請先解除鎖定再轉換為 PDF/A。" +generic = "發生錯誤" github = "在 GitHub 上回報問題" githubSubmit = "GitHub - 回報問題" incorrectPasswordProvided = "PDF 密碼不正確或未提供。" @@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "你的訂閱已成功升級。既有授權金鑰已更 upgradeSuccess = "付款成功!你的訂閱已升級。伺服器上的授權已更新。你將很快收到確認 Email。" upgradeTitle = "升級至 {{planName}}" yearly = "年繳" +checkoutOpened = "已在瀏覽器開啟結帳" +checkoutInstructions = "請在剛剛開啟的瀏覽器視窗中完成購買。付款完成後,返回此處並點擊下方按鈕以重新整理您的帳務資訊。" +refreshBilling = "我已完成付款 - 重新整理帳務" +closeLater = "稍後再說" [payment.emailStage] continue = "繼續" @@ -4679,6 +4806,13 @@ prompt = "選擇要提取表格的頁面" submit = "提取" title = "PDF 轉換為 CSV" +[PDFToXLSX] +header = "PDF 轉 Excel" +prompt = "選擇要擷取表格的頁面" +submit = "轉換" +title = "PDF 轉 Excel(XLSX)" +tags = "spreadsheet,excel,xlsx,table,extract,convert" + [PDFToHTML] credit = "此服務使用 pdftohtml 進行檔案轉換。" header = "PDF 轉 HTML" @@ -4835,6 +4969,7 @@ customPricing = "自訂" featureComparison = "功能比較" from = "起" hideComparison = "隱藏功能比較" +included = "已包含" includedInCurrent = "已包含於你的方案" licensedSeats = "已授權:{{count}} 席" manage = "管理" @@ -4852,9 +4987,11 @@ title = "使用中方案" [plan.availablePlans] subtitle = "選擇符合您需求的方案" +loadError = "無法載入方案價格。已使用預設值。" title = "可用方案" [plan.enterprise] +siteLicense = "站台授權" highlight1 = "自訂價格" highlight2 = "專屬支援" highlight3 = "最新功能" @@ -4928,6 +5065,81 @@ keyDescription = "貼上電子郵件中的授權金鑰" success = "授權已啟用!" successMessage = "您的授權已成功啟用。您現在可以關閉此視窗。" +[plan.team] +name = "Team" +siteLicense = "站台授權" + +[credits] +enableOverageBilling = "啟用超量計費" +maybeLater = "稍後再說" +upgrade = "升級" + +[credits.modal] +advancedMonitoring = "進階監控" +allInOneWorkspace = "一體化 PDF 工作空間(檢視器、工具與代理)" +apiSandbox = "API 沙箱" +contactSales = "聯絡業務" +creditsRemaining = "剩餘 {{current}} / {{total}}" +creditsThisMonth = "每月點數" +current = "目前方案" +customPricing = "自訂" +customSmartFolders = "自訂智慧資料夾" +dedicatedSupportSlas = "專屬支援與 SLA" +enterpriseSubscription = "企業版" +everythingInCredits = "包含 Credits 的所有內容,另加:" +everythingInFree = "包含 Free 的所有內容,另加:" +fasterThroughput = "10 倍更快的處理速度" +forRegularWork = "適用於日常 PDF 工作:" +freeTier = "免費方案" +fullyPrivateFiles = "完全私密的檔案" +largeFileProcessing = "大型檔案處理" +managedMemberMessage = "您可透過團隊無限使用點數。如需協助,請聯絡您的團隊領導者。" +managedMemberTitle = "無限點數" +meteringBillingNote = "超量點數將與您的 Team 訂閱一併於每月計費。您可隨時在帳戶設定中追蹤用量。" +meteringExplanation = "您的 Team 方案每月包含 {{credits}} 點。用完後,超量計費會自動提供額外點數,讓您不必中斷工作。" +meteringIncluded = "Team 方案每月含 {{credits}} 點" +meteringNoCommitment = "無綁約,隨時可取消" +meteringNeverRunOut = "永不耗盡點數" +meteringPayAsYouGo = "按用量付費" +meteringPrice = "額外點數 {{price}}/點" +meteringTitle = "用多少付多少的超量計費" +monthlyCredits = "每月點數" +orgWideAccess = "組織層級的存取控制" +overage = "超量" +perMonth = "/月" +popular = "熱門" +premiumAiModels = "進階 AI 模型" +prioritySupport = "優先支援" +privateDocCloud = "私人文件雲" +ragFineTuning = "RAG + 微調" +secureApiAccess = "安全的 API 存取" +selfHostLink = "查看文件與方案" +selfHostPrompt = "想自行架設嗎?" +standardThroughput = "標準吞吐量" +subtitle = "升級至 Team 可獲得 10 倍點數與更快的處理。" +subtitlePro = "啟用自動超量計費,永不耗盡點數。" +teamLeaderOnly = "僅團隊領導者可啟用超量計費" +teamSubscription = "Team" +titleExhausted = "您已用完免費點數" +titleExhaustedPro = "您的點數已用罄" +unlimitedApiAccess = "無限 API 存取" +unlimitedMonthlyCredits = "站台授權" +unlimitedSeats = "不限人數" + +[credits.modal.features] +everythingInCredits = "包含 Credits 的所有內容,另加:" +everythingInFree = "包含 Free 的所有內容,另加:" +forRegularWork = "適用於日常 PDF 工作:" + +[credits.insufficient] +brief = "點數不足。您需要 {{required}} 點,但目前只有 {{current}} 點。" +freeTier = "升級至 Team 以獲得 10 倍點數並啟用無上限的超量計費。" +managedMember = "請聯絡您的團隊領導者以取得協助。" +message = "您的點數不足,無法執行 {{tool}}。您目前有 {{current}} 點。" +messageWithAmount = "執行 {{tool}} 需要 {{required}} 點,但您僅有 {{current}} 點。" +teamMember = "啟用超量計費,永不耗盡點數。" +title = "點數不足" + [printFile] header = "使用印表機印出檔案" submit = "列印" @@ -5565,6 +5777,70 @@ user = "已登入身分" saas = "Stirling Cloud" selfhosted = "自託管" +[settings.planBilling] +currentPlan = "目前方案" +loading = "正在載入帳務資訊..." +notAvailable = "僅在連線至 Stirling Cloud(SaaS 模式)時可使用「方案與計費」。" +title = "方案與計費" + +[settings.planBilling.billing] +manageBilling = "管理計費" +nextBillingDate = "下次計費日期" +overageCost = "目前超量費用:{{amount}}({{credits}} 點)" + +[settings.planBilling.credits] +estimatedCost = "預估費用:{{amount}}" +freeTierInfo = "免費方案每月包含 {{freeCredits}} 點。升級至 Team 可獲得每月 {{teamCredits}} 點與按用量付費的超量計費。" +included = "每月 {{count}} 點(已包含)" +noOverage = "本月無超量收費。您正在使用包含的 {{count}} 點。" +overage = "+ {{count}} 超量" +overageInfo = "超量點數每點 {{price}} 計費。您只需支付超出每月額度的用量。" +title = "點數用量" + +[settings.planBilling.errors] +fetchFailed = "無法取得帳務資料" +retry = "重試" + +[settings.planBilling.status] +active = "啟用" +canceled = "已取消" +pastDue = "逾期" +trial = "試用" + +[settings.planBilling.tier] +enterprise = "企業版" +enterpriseDescription = "自訂企業功能與支援" +free = "免費" +freeDescription = "每月 50 點" +team = "Team" +teamBadge = "Team" +teamDescription = "每月包含 500 點,自動超量計費以確保持續服務" +teamTooltipCredits = "Team 方案每月包含 {{credits}} 點。" +teamTooltipFineprint = "僅需支付超出包含點數的用量。" +teamTooltipOverage = "自動以 {{price}}/點進行超量計費,確保持續服務。" + +[settings.planBilling.team] +managedByTeam = "由團隊管理" +memberCount = "{{count}} 位團隊成員" + +[settings.planBilling.trial] +daysRemaining = "剩餘 {{days}} 天" +daysRemainingFull = "您的試用將在 {{days}} 天後結束" +endDate = "到期日:{{date}}" +endsOn = "試用結束" +title = "免費試用啟用中" + +[settings.planBilling.upgrade] +cta = "升級至 Team" +featureApi = "用於自動化的 API 存取" +featureCredits = "每月 {{teamCredits}} 點(免費方案為 {{freeCredits}} 點)" +featureMembers = "不限團隊人數" +featureSupport = "優先支援" +featureThroughput = "更快的處理吞吐量" +opensInBrowser = "將在瀏覽器中開啟以完成升級" +subtitle = "升級至 Team 可獲得:" +title = "升級您的方案" + [settings.developer] apiKeys = "API 金鑰" title = "開發者" @@ -5689,6 +5965,9 @@ people = "成員" teams = "團隊" title = "工作空間" +[settings.team] +title = "團隊" + [setup] description = "開始選擇你要如何使用 Stirling PDF" welcome = "歡迎使用 Stirling PDF" @@ -6011,6 +6290,11 @@ desc = "使用分隔頁自動分割" name = "分隔頁" tooltip = "在掃描時於文件間放置帶有 QR 碼的分隔頁" +[split.methods.byPoster] +name = "可列印分塊" +desc = "將大型頁面分割為可列印大小" +tooltip = "將過大頁面分割成適合在標準紙張(A4、Letter 等)上列印的較小區塊" + [split.methods.byPages] desc = "擷取特定頁面(1,3,5-10)" name = "頁碼" @@ -6029,6 +6313,7 @@ tooltip = "指定最大檔案大小(例如 10MB、500KB)" [split.methods.prefix] splitAt = "在" splitBy = "依" +splitInto = "分割成" [split.methodSelection.tooltip] bullet1 = "點擊方法卡片以選擇" @@ -6048,6 +6333,21 @@ selectMethodFirst = "請先選擇分割方法" chooseMethod = "選擇方法" settings = "設定" +[split.poster] +rightToLeft = "由右至左分割" + +[split.poster.pageSize] +label = "目標頁面尺寸" +description = "用於列印的輸出頁面大小" + +[split.poster.xFactor] +label = "水平切分數" +description = "每頁要分成的欄數" + +[split.poster.yFactor] +label = "垂直切分數" +description = "每頁要分成的列數" + [split.tooltip.byChapters] bullet1 = "書籤層級:要在第幾層分割(1=最上層)" bullet2 = "包含中繼資料:保留文件屬性" @@ -6085,6 +6385,14 @@ bullet5 = "若掃描分隔頁雙面,請啟用雙面模式" text = "使用含 QR 碼的實體分隔頁自動分割掃描文件。非常適合同時處理多份一起掃描的文件。" title = "依分隔頁分割" +[split.tooltip.byPoster] +bullet1 = "目標頁面尺寸:選擇輸出紙張尺寸(A4、Letter 等)" +bullet2 = "水平/垂直切分數:用於分割的網格大小" +bullet3 = "由右至左:為 RTL 版面反轉欄順序" +bullet4 = "列印並組裝各部分以製作您的海報" +text = "將大型 PDF 頁面分割為適合標準紙張尺寸列印的較小區塊。非常適合將超大頁面製作成海報列印。" +title = "海報列印分割" + [split.tooltip.byPages] bullet1 = "單一分割點:3,7(在第 3 與第 7 頁之後分割)" bullet2 = "範圍分割點:3-8(在第 3 頁之前與第 8 頁之後分割)" @@ -6364,9 +6672,13 @@ tags = "網頁捕獲,儲存頁面,網頁轉文件,存檔" title = "URL 轉 PDF" [usage] +aboutUsageAnalytics = "關於使用分析" +configureSettings = "設定分析選項" error = "載入使用統計時發生錯誤" noData = "無可用資料" noDataMessage = "目前沒有可用的使用統計。" +usageAnalyticsExplanation = "使用分析會追蹤端點請求與工具使用模式。搭配稽核記錄儀表板,可完整掌握系統活動、效能與安全事件。" +viewAuditLogs = "檢視稽核記錄" [usage.chart] title = "端點使用圖表" @@ -6947,3 +7259,278 @@ cancel = "取消" confirm = "解壓縮" message = "此 ZIP 包含 {{count}} 個檔案。仍要解壓縮嗎?" title = "大型 ZIP 檔案" + +[cloudBadge] +tooltip = "此操作會使用您的雲端點數" + +[team] +cancelInviteError = "取消邀請失敗" +confirmCancelInvite = "確定要取消此邀請嗎?" +confirmLeave = "確定要離開此團隊嗎?" +confirmLeaveLeader = "身為團隊領導者,離開後您將被移出團隊。確定要繼續嗎?" +confirmRemove = "確定要移除此成員嗎?" +editName = "編輯團隊名稱" +inviteCancelled = "已取消邀請" +inviteError = "邀請寄送失敗" +inviteSent = "已成功寄出邀請" +leader = "領導者" +leaveButton = "離開團隊" +leaveError = "離開團隊失敗" +leaveSuccess = "已成功離開團隊" +loading = "正在載入團隊資訊..." +memberCount = "{{count}} 位成員" +memberRemoved = "已成功移除成員" +namePlaceholder = "輸入團隊名稱" +personal = "個人" +removeError = "移除成員失敗" +renameError = "重新命名團隊失敗" +renameSuccess = "已成功重新命名團隊" + +[team.invitationBanner] +message = "已邀請您加入" +acceptButton = "接受" +rejectButton = "拒絕" + +[team.features] +badge = "團隊功能" +subtitle = "與您的團隊協作" +title = "團隊協作" +viewPlans = "查看方案" + +[team.features.billing] +description = "管理計費與訂閱" +title = "計費管理" + +[team.features.credits] +description = "所有成員共享點數池" +title = "共享點數" + +[team.features.dashboard] +description = "檢視團隊活動與使用情況" +title = "團隊儀表板" + +[team.features.invite] +description = "將成員加入您的團隊" +title = "邀請成員" + +[team.invite] +cancelLabel = "取消" +invalidEmail = "電子郵件地址無效" +placeholder = "輸入電子郵件地址" +sendButton = "傳送邀請" +title = "邀請團隊成員" + +[team.members] +emailColumn = "電子郵件" +empty = "尚無團隊成員" +nameColumn = "名稱" +pending = "待處理" +remove = "移除" +roleColumn = "角色" +title = "團隊成員" + +[team.upgrade] +button = "升級至 Team" +description = "解鎖團隊協作功能" +title = "升級至 Team 方案" + +[provider.oauth2.google] +scope = "登入驗證" + +[provider.oauth2.google.clientId] +label = "用戶端 ID" +description = "來自 Google Cloud Console 的 OAuth2 用戶端 ID" + +[provider.oauth2.google.clientSecret] +label = "用戶端密鑰" +description = "來自 Google Cloud Console 的 OAuth2 用戶端密鑰" + +[provider.oauth2.google.scopes] +label = "Scopes" +description = "以逗號分隔的 OAuth2 scopes" + +[provider.oauth2.google.useAsUsername] +label = "作為使用者名稱" +description = "用來作為使用者名稱的欄位(email、name、given_name、family_name)" + +[provider.oauth2.github] +scope = "登入驗證" + +[provider.oauth2.github.clientId] +label = "用戶端 ID" +description = "來自 GitHub Developer Settings 的 OAuth2 用戶端 ID" + +[provider.oauth2.github.clientSecret] +label = "用戶端密鑰" +description = "來自 GitHub Developer Settings 的 OAuth2 用戶端密鑰" + +[provider.oauth2.github.scopes] +label = "Scopes" +description = "以逗號分隔的 OAuth2 scopes" + +[provider.oauth2.github.useAsUsername] +label = "作為使用者名稱" +description = "用來作為使用者名稱的欄位(email、login、name)" + +[provider.oauth2.keycloak] +scope = "SSO" + +[provider.oauth2.keycloak.issuer] +label = "簽發者 URL" +description = "Keycloak realm 的 OpenID Connect Discovery 端點 URL" + +[provider.oauth2.keycloak.clientId] +label = "用戶端 ID" +description = "來自 Keycloak 的 OAuth2 用戶端 ID" + +[provider.oauth2.keycloak.clientSecret] +label = "用戶端密鑰" +description = "來自 Keycloak 的 OAuth2 用戶端密鑰" + +[provider.oauth2.keycloak.scopes] +label = "Scopes" +description = "以逗號分隔的 OAuth2 scopes" + +[provider.oauth2.keycloak.useAsUsername] +label = "作為使用者名稱" +description = "用來作為使用者名稱的欄位(email、name、given_name、family_name、preferred_username)" + +[provider.oauth2.generic] +name = "通用 OAuth2" +scope = "SSO" + +[provider.oauth2.generic.enabled] +label = "啟用通用 OAuth2" +description = "使用自訂 OAuth2 提供者啟用驗證" + +[provider.oauth2.generic.provider] +label = "提供者名稱" +description = "您的 OAuth2 提供者名稱(如 Azure AD、Okta)" + +[provider.oauth2.generic.issuer] +label = "簽發者 URL" +description = "支援 OpenID Connect Discovery(/.well-known/openid-configuration)的提供者" + +[provider.oauth2.generic.clientId] +label = "用戶端 ID" +description = "來自您的提供者的 OAuth2 用戶端 ID" + +[provider.oauth2.generic.clientSecret] +label = "用戶端密鑰" +description = "來自您的提供者的 OAuth2 用戶端密鑰" + +[provider.oauth2.generic.scopes] +label = "Scopes" +description = "以逗號分隔的 OAuth2 scopes" + +[provider.oauth2.generic.useAsUsername] +label = "作為使用者名稱" +description = "用來作為使用者名稱的欄位" + +[provider.oauth2.generic.autoCreateUser] +label = "自動建立使用者" +description = "首次使用 OAuth2 登入時自動建立使用者帳戶" + +[provider.oauth2.generic.blockRegistration] +label = "封鎖註冊" +description = "防止透過 OAuth2 註冊新使用者" + +[provider.smtp] +name = "SMTP 郵件" +scope = "電子郵件通知" + +[provider.smtp.enabled] +label = "啟用郵件" +description = "啟用電子郵件通知與 SMTP 功能" + +[provider.smtp.host] +label = "SMTP 主機" +description = "您的 SMTP 伺服器主機名稱或 IP 位址" + +[provider.smtp.port] +label = "SMTP 埠" +description = "SMTP 連線埠號(通常為 25、465 或 587)" + +[provider.smtp.username] +label = "SMTP 使用者名稱" +description = "SMTP 驗證用的使用者名稱" + +[provider.smtp.password] +label = "SMTP 密碼" +description = "SMTP 驗證用的密碼" + +[provider.smtp.from] +label = "寄件地址" +description = "用作寄件者的電子郵件地址" + +[provider.saml2] +name = "SAML2" +scope = "SSO(SAML)" + +[provider.saml2.enabled] +label = "啟用 SAML2" +description = "啟用 SAML2 驗證(僅限企業版)" + +[provider.saml2.provider] +label = "提供者名稱" +description = "您的 SAML2 提供者名稱" + +[provider.saml2.registrationId] +label = "註冊 ID" +description = "您的 Service Provider(SP)應用程式名稱" + +[provider.saml2.idpMetadataUri] +label = "IDP 中繼資料 URI" +description = "您的提供者中繼資料的 URI" + +[provider.saml2.idpSingleLoginUrl] +label = "IDP 單一登入 URL" +description = "用於啟動 SSO 的 URL" + +[provider.saml2.idpSingleLogoutUrl] +label = "IDP 單一登出 URL" +description = "用於啟動 SLO 的 URL" + +[provider.saml2.idpIssuer] +label = "IDP Issuer" +description = "您的提供者 ID" + +[provider.saml2.idpCert] +label = "IDP 憑證" +description = "憑證路徑(例如:classpath:okta.cert)" + +[provider.saml2.privateKey] +label = "私鑰" +description = "您的私鑰路徑" + +[provider.saml2.spCert] +label = "SP 憑證" +description = "您的簽章憑證路徑" + +[provider.saml2.autoCreateUser] +label = "自動建立使用者" +description = "首次使用 SAML2 登入時自動建立使用者帳戶" + +[provider.saml2.blockRegistration] +label = "封鎖註冊" +description = "防止透過 SAML2 註冊新使用者" + +[provider.googledrive] +name = "Google Drive" +scope = "檔案匯入" + +[provider.googledrive.enabled] +label = "啟用 Google Drive 檔案選擇器" +description = "允許使用者直接從 Google Drive 匯入檔案" + +[provider.googledrive.clientId] +label = "用戶端 ID" +description = "來自 Google Cloud Console 的 Google OAuth 2.0 用戶端 ID" + +[provider.googledrive.apiKey] +label = "API 金鑰" +description = "Google API 金鑰,供 Google Picker API 使用(來自 Google Cloud Console)" + +[provider.googledrive.appId] +label = "應用程式 ID" +description = "來自 Google Cloud Console 的 Google Drive 應用程式 ID"