From 92571512bf9fee4b3d4e927cafc966181dc0daf1 Mon Sep 17 00:00:00 2001 From: Andriy Zhuk Date: Thu, 17 Oct 2019 15:24:33 +0300 Subject: [PATCH 1/6] Added ukrainian localization --- i18n/uk.json | 174 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100644 i18n/uk.json diff --git a/i18n/uk.json b/i18n/uk.json new file mode 100644 index 00000000..207b0207 --- /dev/null +++ b/i18n/uk.json @@ -0,0 +1,174 @@ +{ + "PrivateBin": "PrivateBin", + "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted in the browser using 256 bits AES. More information on the project page.": + "%s це мінімалістичний Open Source проєкт для створення нотаток, де сервер не знає нічого про дані, що зберігаються. Дані шифруються/розшифровуються у переглядачі з використанням 256-бітного шифрувания AES. Подробиці можна дізнатися на сайті проєкту.", + "Because ignorance is bliss": + "Бо незнання - благо", + "en": "uk", + "Paste does not exist, has expired or has been deleted.": + "Допис не існує, протермінований чи був видалений.", + "%s requires php %s or above to work. Sorry.": + "Для роботи %s потрібен php %s и вище. Вибачте.", + "%s requires configuration section [%s] to be present in configuration file.": + "%s потрібна секція [%s] в конфігураційному файлі.", + "Please wait %d seconds between each post.": + ["Будь ласка, зачекайте %d секунду між дописами.", "Будь ласка, зачекайте %d секунди між дописами.", "Будь ласка, зачекайте %d секунд між дописами."], + "Paste is limited to %s of encrypted data.": + "Розмір допису обмежений %s зашифрованих даних.", + "Invalid data.": + "Неправильні дані.", + "You are unlucky. Try again.": + "Вам не пощастило. Спробуйте ще раз.", + "Error saving comment. Sorry.": + "Помилка при збереженні коментаря. Вибачте.", + "Error saving paste. Sorry.": + "Помилка при збереженні допису. Вибачте.", + "Invalid paste ID.": + "Неправильний ID допису.", + "Paste is not of burn-after-reading type.": + "Тип допису не \"Знищити після прочитання\".", + "Wrong deletion token. Paste was not deleted.": + "Неправильний ключ вилучення допису. Допис не вилучено.", + "Paste was properly deleted.": + "Допис був вилучений повністю.", + "JavaScript is required for %s to work.
Sorry for the inconvenience.": + "Для роботи %s потрібен увімкнутий JavaScript.
Вибачте.", + "%s requires a modern browser to work.": + "Для роботи %s потрібен більш сучасний переглядач.", + "New": + "Новий допис", + "Send": + "Відправити", + "Clone": + "Дублювати", + "Raw text": + "Початковий текст", + "Expires": + "Вилучити через", + "Burn after reading": + "Знищити після прочитання", + "Open discussion": + "Відкрити обговорення", + "Password (recommended)": + "Пароль (рекомендується)", + "Discussion": + "Обговорення", + "Toggle navigation": + "Перемкнути навігацію", + "%d seconds": ["%d секунду", "%d секунди", "%d секунд"], + "%d minutes": ["%d хвилину", "%d хвилини", "%d хвилин"], + "%d hours": ["%d годину", "%d години", "%d годин"], + "%d days": ["%d день", "%d дні", "%d днів"], + "%d weeks": ["%d тиждень", "%d тижні", "%d тижнів"], + "%d months": ["%d місяць", "%d місяці", "%d місяців"], + "%d years": ["%d рік", "%d роки", "%d років"], + "Never": + "Ніколи", + "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": + "Примітка: Це тестовий сервіс: Дані можуть бути вилучені в будь який момент. Кошенята помруть, якщо ви будете зловживати сервісом.", + "This document will expire in %d seconds.": + ["Документ буде вилучений через %d секунду.", "Документ буде вилучений через %d секунди.", "Документ буде вилучений через %d секунд."], + "This document will expire in %d minutes.": + ["Документ буде вилучений через %d хвилину.", "Документ буде вилучений через %d хвилини.", "Документ буде вилучений через %d хвилин."], + "This document will expire in %d hours.": + ["Документ буде вилучений через %d годину.", "Документ буде вилучений через %d години.", "Документ буде вилучений через %d годин."], + "This document will expire in %d days.": + ["Документ буде вилучений через %d день.", "Документ буде вилучений через %d дні.", "Документ буде вилучений через %d днів."], + "This document will expire in %d months.": + ["Документ буде вилучений через %d місяць.", "Документ буде вилучений через %d місяці.", "Документ буде вилучений через %d місяців."], + "Please enter the password for this paste:": + "Будь ласка, введіть пароль від допису:", + "Could not decrypt data (Wrong key?)": + "Неможливо розшифрувати дані (Неправильний ключ?)", + "Could not delete the paste, it was not stored in burn after reading mode.": + "Неможливо вилучити допис, він не був збережений в режимі знищити після прочитання.", + "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": + "ЛИШЕ ДЛЯ ВАШИХ ОЧЕЙ. Не закривайте це вікно, це повідомлення не може бути показано знову.", + "Could not decrypt comment; Wrong key?": + "Неможливо розшифрувати коментар; Неправильний ключ?", + "Reply": + "Відповісти", + "Anonymous": + "Анонім", + "Avatar generated from IP address": + "Аватар зґенерований з IP-адреси", + "Add comment": + "Додати коментар", + "Optional nickname…": + "Необов’язкове прізвисько...", + "Post comment": + "Відправити коментар", + "Sending comment…": + "Відправка коментаря...", + "Comment posted.": + "Коментар опублікований.", + "Could not refresh display: %s": + "Не вдалося оновити екран: %s", + "unknown status": + "невідома причина", + "server error or not responding": + "помилка на сервері чи немає відповіді", + "Could not post comment: %s": + "Не вдалося опублікувати коментар: %s", + "Sending paste…": + "Відправка допису...", + "Your paste is %s (Hit [Ctrl]+[c] to copy)": + "Посилання на допис %s (Тисніть [Ctrl]+[c], щоб скопіювати посилання)", + "Delete data": + "Видалити допис", + "Could not create paste: %s": + "Не вдалося опублікувати запис: %s", + "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": + "Неможливо розшифрувати запис: Ключ дешифрування відсутній в посиланні (Можливо, ви використовуєте скорочувач посилань, що видаляє частину посилання?)", + "B": "байт", + "KiB": "Кбайт", + "MiB": "Мбайт", + "GiB": "Гбайт", + "TiB": "Тбайт", + "PiB": "Пбайт", + "EiB": "Ебайт", + "ZiB": "Збайт", + "YiB": "Йбайт", + "Format": "Формат", + "Plain Text": "Звичайний текст", + "Source Code": "Джерельний код", + "Markdown": "Мова розмітки", + "Download attachment": "Звантажити прикріплений файл", + "Cloned: '%s'": "Дубльовано: '%s'", + "The cloned file '%s' was attached to this paste.": + "Дублікат файлу '%s' був прикріплений до цього запису.", + "Attach a file": "Прикріпити файл", + "alternatively drag & drop a file or paste an image from the clipboard": "також можна перенести файл у вікно переглядача чи вставити зображення з буфера", + "File too large, to display a preview. Please download the attachment.": "Файл завеликий для відображення передогляду. Будь ласка, звантажте прикріплений файл.", + "Remove attachment": "Видалити вкладення", + "Your browser does not support uploading encrypted files. Please use a newer browser.": + "Ваш переглядач не підтримує відправлення зашифрованих файлів. Використовуйте більш новий переглядач.", + "Invalid attachment.": "Невідоме вкладення.", + "Options": "Опції", + "Shorten URL": "Коротке посилання", + "Editor": "Редактор", + "Preview": "Передогляд", + "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": + "Змінна PATH необхідна %s в конці \"%s\". Будь ласка, оновіть змінну PATH у вашому index.php.", + "Decrypt": + "Розшифрувати", + "Enter password": + "Введіть пароль", + "Loading…": "Завантження...", + "Decrypting paste…": "Розшифровування допису...", + "Preparing new paste…": "Приготування нового допису...", + "In case this message never disappears please have a look at this FAQ for information to troubleshoot.": + "Якщо це повідомлення не зникатиме тривалий час, подивіться цей FAQ з інформацією про можливе вирішення проблеми.", + "+++ no paste text +++": "+++ у дописі немає тексту +++", + "Could not get paste data: %s": + "Не вдалося отримати дані допису: %s", + "QR code": "QR код", + "This website is using an insecure HTTP connection! Please use it only for testing.": + "Цей сайт використовує незахищене HTTP підключення! Будь ласка, використовуйте його лише для тестування.", + "For more information see this FAQ entry.": + "Для подробиць дивіться інформацію в FAQ.", + "Your browser may require an HTTPS connection to support the WebCrypto API. Try switching to HTTPS.": + "Ваш переглядач вимагає підключення HTTPS для підтримки WebCrypto API. Спробуйте перемкнутися на HTTPS.", + "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": + "Ваш перелядач не підтримує WebAssembly, що використовується для стиснення zlib. Ви можете створювати нестиснені документи, але не зможете читати стиснені." +} From 8fc85bc39c53f5280194b9dab08d16fe7967e94f Mon Sep 17 00:00:00 2001 From: Andriy Zhuk Date: Thu, 17 Oct 2019 15:33:12 +0300 Subject: [PATCH 2/6] Added line --- i18n/uk.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/i18n/uk.json b/i18n/uk.json index 207b0207..80eedb0d 100644 --- a/i18n/uk.json +++ b/i18n/uk.json @@ -165,6 +165,8 @@ "QR code": "QR код", "This website is using an insecure HTTP connection! Please use it only for testing.": "Цей сайт використовує незахищене HTTP підключення! Будь ласка, використовуйте його лише для тестування.", + "This website is using an insecure connection! Please only use it for testing.": + "Цей сайт використовує незахищене підключення! Будь ласка, використовуйте його лише для тестування.", "For more information see this FAQ entry.": "Для подробиць дивіться інформацію в FAQ.", "Your browser may require an HTTPS connection to support the WebCrypto API. Try switching to HTTPS.": From 2b3b47c59dfc65e5cb9cafb7d75a568dc20c3b33 Mon Sep 17 00:00:00 2001 From: Andriy Zhuk Date: Thu, 17 Oct 2019 16:03:37 +0300 Subject: [PATCH 3/6] Removed line --- i18n/uk.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/i18n/uk.json b/i18n/uk.json index 80eedb0d..207b0207 100644 --- a/i18n/uk.json +++ b/i18n/uk.json @@ -165,8 +165,6 @@ "QR code": "QR код", "This website is using an insecure HTTP connection! Please use it only for testing.": "Цей сайт використовує незахищене HTTP підключення! Будь ласка, використовуйте його лише для тестування.", - "This website is using an insecure connection! Please only use it for testing.": - "Цей сайт використовує незахищене підключення! Будь ласка, використовуйте його лише для тестування.", "For more information see this FAQ entry.": "Для подробиць дивіться інформацію в FAQ.", "Your browser may require an HTTPS connection to support the WebCrypto API. Try switching to HTTPS.": From 7e9e3155a843cb0ab1d1a7857f41bcedc9128f0e Mon Sep 17 00:00:00 2001 From: Andriy Zhuk Date: Thu, 17 Oct 2019 17:20:00 +0300 Subject: [PATCH 4/6] Fixed few typos --- i18n/uk.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/i18n/uk.json b/i18n/uk.json index 207b0207..60d7b0ed 100644 --- a/i18n/uk.json +++ b/i18n/uk.json @@ -142,7 +142,7 @@ "File too large, to display a preview. Please download the attachment.": "Файл завеликий для відображення передогляду. Будь ласка, звантажте прикріплений файл.", "Remove attachment": "Видалити вкладення", "Your browser does not support uploading encrypted files. Please use a newer browser.": - "Ваш переглядач не підтримує відправлення зашифрованих файлів. Використовуйте більш новий переглядач.", + "Ваш переглядач не підтримує відправлення зашифрованих файлів. Використовуйте сучасніший переглядач.", "Invalid attachment.": "Невідоме вкладення.", "Options": "Опції", "Shorten URL": "Коротке посилання", @@ -154,7 +154,7 @@ "Розшифрувати", "Enter password": "Введіть пароль", - "Loading…": "Завантження...", + "Loading…": "Завантаження...", "Decrypting paste…": "Розшифровування допису...", "Preparing new paste…": "Приготування нового допису...", "In case this message never disappears please have a look at this FAQ for information to troubleshoot.": @@ -170,5 +170,5 @@ "Your browser may require an HTTPS connection to support the WebCrypto API. Try switching to HTTPS.": "Ваш переглядач вимагає підключення HTTPS для підтримки WebCrypto API. Спробуйте перемкнутися на HTTPS.", "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": - "Ваш перелядач не підтримує WebAssembly, що використовується для стиснення zlib. Ви можете створювати нестиснені документи, але не зможете читати стиснені." + "Ваш переглядач не підтримує WebAssembly, що використовується для стиснення zlib. Ви можете створювати нестиснені документи, але не зможете читати стиснені." } From 03138bcde5fc8629d19ba901277f6e149089243c Mon Sep 17 00:00:00 2001 From: Andriy Zhuk Date: Fri, 18 Oct 2019 12:27:40 +0300 Subject: [PATCH 5/6] =?UTF-8?q?Fixed=20...=20with=20=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- i18n/uk.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/i18n/uk.json b/i18n/uk.json index 60d7b0ed..384237a4 100644 --- a/i18n/uk.json +++ b/i18n/uk.json @@ -95,11 +95,11 @@ "Add comment": "Додати коментар", "Optional nickname…": - "Необов’язкове прізвисько...", + "Необов’язкове прізвисько…", "Post comment": "Відправити коментар", "Sending comment…": - "Відправка коментаря...", + "Відправка коментаря…", "Comment posted.": "Коментар опублікований.", "Could not refresh display: %s": @@ -111,13 +111,13 @@ "Could not post comment: %s": "Не вдалося опублікувати коментар: %s", "Sending paste…": - "Відправка допису...", + "Відправка допису…", "Your paste is %s (Hit [Ctrl]+[c] to copy)": "Посилання на допис %s (Тисніть [Ctrl]+[c], щоб скопіювати посилання)", "Delete data": "Видалити допис", "Could not create paste: %s": - "Не вдалося опублікувати запис: %s", + "Не вдалося опублікувати допис: %s", "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Неможливо розшифрувати запис: Ключ дешифрування відсутній в посиланні (Можливо, ви використовуєте скорочувач посилань, що видаляє частину посилання?)", "B": "байт", @@ -154,9 +154,9 @@ "Розшифрувати", "Enter password": "Введіть пароль", - "Loading…": "Завантаження...", - "Decrypting paste…": "Розшифровування допису...", - "Preparing new paste…": "Приготування нового допису...", + "Loading…": "Завантаження…", + "Decrypting paste…": "Розшифровування допису…", + "Preparing new paste…": "Приготування нового допису…", "In case this message never disappears please have a look at this FAQ for information to troubleshoot.": "Якщо це повідомлення не зникатиме тривалий час, подивіться цей FAQ з інформацією про можливе вирішення проблеми.", "+++ no paste text +++": "+++ у дописі немає тексту +++", From 65b70777561cb62743655483a16e64626ef21c1a Mon Sep 17 00:00:00 2001 From: Andriy Zhuk Date: Fri, 18 Oct 2019 12:31:40 +0300 Subject: [PATCH 6/6] Added plural rules for ukrainian --- js/privatebin.js | 4 +++- lib/I18n.php | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/js/privatebin.js b/js/privatebin.js index d411ebbe..218bafd4 100644 --- a/js/privatebin.js +++ b/js/privatebin.js @@ -433,7 +433,7 @@ jQuery.PrivateBin = (function($, RawDeflate) { * @prop {string[]} * @readonly */ - const supportedLanguages = ['bg', 'cs', 'de', 'es', 'fr', 'it', 'hu', 'no', 'nl', 'pl', 'pt', 'oc', 'ru', 'sl', 'zh']; + const supportedLanguages = ['bg', 'cs', 'de', 'es', 'fr', 'it', 'hu', 'no', 'nl', 'pl', 'pt', 'oc', 'ru', 'sl', 'uk', 'zh']; /** * built in language @@ -591,6 +591,8 @@ jQuery.PrivateBin = (function($, RawDeflate) { return n === 1 ? 0 : (n % 10 >= 2 && n %10 <=4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); case 'ru': return n % 10 === 1 && n % 100 !== 11 ? 0 : (n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); + case 'uk': + return n % 10 === 1 && n % 100 !== 11 ? 0 : (n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); case 'sl': return n % 100 === 1 ? 1 : (n % 100 === 2 ? 2 : (n % 100 === 3 || n % 100 === 4 ? 3 : 0)); // bg, de, en, es, hu, it, nl, no, pt diff --git a/lib/I18n.php b/lib/I18n.php index e7dbfcea..7bc674b2 100644 --- a/lib/I18n.php +++ b/lib/I18n.php @@ -304,6 +304,8 @@ class I18n return $n == 1 ? 0 : ($n % 10 >= 2 && $n % 10 <= 4 && ($n % 100 < 10 || $n % 100 >= 20) ? 1 : 2); case 'ru': return $n % 10 == 1 && $n % 100 != 11 ? 0 : ($n % 10 >= 2 && $n % 10 <= 4 && ($n % 100 < 10 || $n % 100 >= 20) ? 1 : 2); + case 'uk': + return $n % 10 == 1 && $n % 100 != 11 ? 0 : ($n % 10 >= 2 && $n % 10 <= 4 && ($n % 100 < 10 || $n % 100 >= 20) ? 1 : 2); case 'sl': return $n % 100 == 1 ? 1 : ($n % 100 == 2 ? 2 : ($n % 100 == 3 || $n % 100 == 4 ? 3 : 0)); // bg, de, en, es, hu, it, nl, no, pt