diff --git a/nginx.conf b/nginx.conf index 2d63cd7..09b37bd 100644 --- a/nginx.conf +++ b/nginx.conf @@ -27,7 +27,7 @@ http { index index.html; absolute_redirect off; - location ~ ^/(en|ar|be|da|de|es|fr|id|it|nl|pt|ru|tr|vi|zh|zh-TW)(/.*)?$ { + location ~ ^/(en|ar|be|da|de|es|fr|id|it|ko|nl|pt|ru|sv|tr|vi|zh|zh-TW)(/.*)?$ { try_files $uri $uri/ $uri.html /$1/index.html /index.html; expires 5m; add_header Cache-Control "public, must-revalidate"; @@ -35,7 +35,7 @@ http { add_header Cross-Origin-Opener-Policy "same-origin" always; } - location ~ ^/(.+?)/(en|ar|be|da|de|es|fr|id|it|nl|pt|ru|tr|vi|zh|zh-TW)(/.*)?$ { + location ~ ^/(.+?)/(en|ar|be|da|de|es|fr|id|it|ko|nl|pt|ru|sv|tr|vi|zh|zh-TW)(/.*)?$ { try_files $uri $uri/ $uri.html /$1/$2/index.html /$1/index.html /index.html; expires 5m; add_header Cache-Control "public, must-revalidate"; diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index 694b780..54e05f5 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -182,7 +182,7 @@ }, "areFilesSecure": { "question": "Мои файлы в безопасности? Где они обрабатываются?", - "answer": "Your files are as secure as possible because they never leave your computer. All processing happens directly in your web browser (client-side). We never upload your files to a server, so you maintain complete privacy and control over your documents." + "answer": "Ваши файлы максимально защищены, потому что они никогда не покидают ваш компьютер. Вся обработка происходит прямо в вашем браузере (на стороне клиента). Мы никогда не загружаем ваши файлы на сервер, поэтому вы полностью сохраняете конфиденциальность и контроль над своими документами." }, "platforms": { "question": "BentoPDF работает на Mac, Windows, и на смартфонах?", @@ -289,7 +289,7 @@ }, "free": { "title": "Полностью бесплатный", - "description": "Никаких пробных периодов, никаких подписок, никаких скрытых платежей и никаких \"премиум\"-функций, за которые надо доплатить. Мы верим, что мощные инструменты для работы с PDFдолжны быть достоянием общественности, а не центром генерации выручки." + "description": "Никаких пробных периодов, никаких подписок, никаких скрытых платежей и никаких \"премиум\"-функций, за которые надо доплатить. Мы верим, что мощные инструменты для работы с PDF должны быть достоянием общественности, а не центром генерации выручки." }, "noAccount": { "title": "Не нужна учетная запись", @@ -297,7 +297,7 @@ }, "openSource": { "title": "Дух открытого кода", - "description": "Создано попринципам прозрачности. Мы опираемся на замечательные библиотеки с открытым исходным кодом, такие как PDF-lib и PDF.js, и верим в то, что, действуя сообща, мы можем создать мощнве инструменты, доступные всем." + "description": "Создано по принципам прозрачности. Мы опираемся на замечательные библиотеки с открытым исходным кодом, такие как PDF-lib и PDF.js, и верим в то, что, действуя сообща, мы можем создать мощные инструменты, доступные всем." } }, "cta": { diff --git a/public/locales/ru/tools.json b/public/locales/ru/tools.json index 25471a5..cd3b731 100644 --- a/public/locales/ru/tools.json +++ b/public/locales/ru/tools.json @@ -23,7 +23,7 @@ "compressPdf": { "name": "Сжатие PDF", "subtitle": "Уменьшить размер PDF-файла.", - "algorithmLabel": "Алгорим сжатия", + "algorithmLabel": "Алгоритм сжатия", "condense": "Condense (рекомендуется)", "photon": "Photon (для PDF с большим числом изображений)", "condenseInfo": "Condense использует усовершенствованное сжатие: удаляет лишнее, оптимизирует изображения и шрифты. Лучший выбор для большинства PDF.", @@ -153,7 +153,7 @@ "subtitle": "Заполнить форму прямо в браузере. Поддерживает формы XFA." }, "createPdfForm": { - "name": "Сохдание PDF-форм", + "name": "Создание PDF-форм", "subtitle": "Создать заполняемую PDF-форму с перетаскиваемыми текстовыми полями." }, "removeBlankPages": { @@ -397,7 +397,7 @@ "subtitle": "Переупорядочить страницы для двухсторонней печати разворотов. Сложите распечатанные листы и прошейте, чтобы сделать буклет.", "howItWorks": "Как это работает:", "step1": "Загрузите PDF-файл.", - "step2": "Страницы буду переупорядочены для печати в формате буклета.", + "step2": "Страницы будут переупорядочены для печати в формате буклета.", "step3": "Распечатайте с двух сторон, сложите и прошейте.", "paperSize": "Размер бумаги", "orientation": "Ориентация", @@ -515,7 +515,7 @@ "subtitle": "Извлечь таблицы из документа в формате Excel (XLSX)." }, "pdfToText": { - "name": "PDF в Text", + "name": "PDF в текст", "subtitle": "Извлечь текст из документа в текстовом формате (.txt). Поддерживает несколько файлов.", "note": "Данный инструмент работает ТОЛЬКО с PDF-файлами, созданными электронно. Для отсканированных документов или PDF-файлов, основывающихся на изображениях, используйте инструмент «Распознавание текста в PDF».", "convertButton": "Извлечь текст" @@ -528,7 +528,7 @@ "uploadCert": "Загрузить сертификат (.pfx, .p12)", "certPassword": "Пароль от сертификата", "certPasswordPlaceholder": "Введите Пароль от сертификата", - "certInfo": "Сведениф о сертификате", + "certInfo": "Сведения о сертификате", "certSubject": "Субъект", "certIssuer": "Издатель", "certValidity": "Срок действия", diff --git a/src/js/i18n/i18n.ts b/src/js/i18n/i18n.ts index 47bd559..63a96c8 100644 --- a/src/js/i18n/i18n.ts +++ b/src/js/i18n/i18n.ts @@ -58,7 +58,7 @@ export const getLanguageFromUrl = (): SupportedLanguage => { } const langMatch = path.match( - /^\/(en|ar|fr|es|de|zh|zh-TW|vi|tr|id|it|pt|nl|be|da|ko|ru)(?:\/|$)/ + /^\/(en|ar|fr|es|de|zh|zh-TW|vi|tr|id|it|pt|nl|be|da|ko|sv|ru)(?:\/|$)/ ); if ( langMatch && @@ -134,7 +134,7 @@ export const changeLanguage = (lang: SupportedLanguage): void => { let pagePathWithoutLang = relativePath; const langPrefixMatch = relativePath.match( - /^\/(en|ar|fr|es|de|zh|zh-TW|vi|tr|id|it|pt|nl|be|da|ko|ru)(\/.*)?$/ + /^\/(en|ar|fr|es|de|zh|zh-TW|vi|tr|id|it|pt|nl|be|da|ko|sv|ru)(\/.*)?$/ ); if (langPrefixMatch) { pagePathWithoutLang = langPrefixMatch[2] || '/'; @@ -227,7 +227,7 @@ export const rewriteLinks = (): void => { } const langPrefixRegex = new RegExp( - `^(${basePath.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')})?/?(en|ar|fr|es|de|zh|zh-TW|vi|tr|id|it|pt|nl|be|da|ko|ru)(/|$)` + `^(${basePath.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')})?/?(en|ar|fr|es|de|zh|zh-TW|vi|tr|id|it|pt|nl|be|da|ko|sv|ru)(/|$)` ); if (langPrefixRegex.test(href)) { return;