diff --git a/CHANGELOG.md b/CHANGELOG.md index 6682cc0..1f120a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ # PrivateBin version history - * **1.3 (not yet released)** + * **1.4 (not yet released)** + * ADDED: Translation for Bulgarian (#455) + * **1.3 (2019-07-09)** * ADDED: Translation for Czech (#424) * ADDED: Threat modeled the application (#177) * ADDED: Made compression configurable (#38) diff --git a/CREDITS.md b/CREDITS.md index 0f1b45f..03f2a77 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -41,4 +41,5 @@ Sébastien Sauvage - original idea and main developer * Tulio Leao - Portuguese * Michael van Schaik - Dutch * Péter Tabajdi - Hungarian -* info-path - Czech \ No newline at end of file +* info-path - Czech +* BigWax - Bulgarian \ No newline at end of file diff --git a/i18n/bg.json b/i18n/bg.json new file mode 100644 index 0000000..c51ab0f --- /dev/null +++ b/i18n/bg.json @@ -0,0 +1,165 @@ +{ + "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 е изчистен и изцяло достъпен като отворен код, онлайн \"paste\" услуга, където сървъра не знае подадената информация. Тя се шифрова/дешифрова във браузъра използвайки 256 битов AES алгоритъм. Повече информация може да намерите на страницата на проекта (Английски)", + "Because ignorance is bliss": + "Невежеството е блаженство", + "en": "bg", + "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 секунди между всяка публикация.", + "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.": + "Невалиден идентификационен код.", + "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 се нуждае от съвременен браузър за да работи.", + "Still using Internet Explorer? Do yourself a favor, switch to a modern browser:": + "Все още използваш Internet Explorer? Направи си услуга и го смени с модерен браузър:", + "New": + "Създаване", + "Send": + "Изпрати", + "Clone": + "Дублирай", + "Raw text": + "Чист текст", + "Expires": + "Изтича", + "Burn after reading": + "Унищожи след преглед", + "Open discussion": + "Отворена дискусия", + "Password (recommended)": + "Парола (препоръчва се)", + "Discussion": + "Коментари", + "Toggle navigation": + "Включи или Изключи навигацията", + "%d seconds": ["%d секунди", "%d секунда"], + "%d minutes": ["%d минути", "%d минута"], + "%d hours": ["%d часа", "%d час"], + "%d days": ["%d дни", "%d ден"], + "%d weeks": ["%d седмици", "%d седмица"], + "%d months": ["%d месеци", "%d месец"], + "%d years": ["%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 секунди."], + "This document will expire in %d minutes.": + ["Този документ изтича след една минута.", "Този документ изтича след %d минути."], + "This document will expire in %d hours.": + ["Този документ изтича след един час.", "Този документ изтича след %d часа."], + "This document will expire in %d days.": + ["Този документ изтича след един ден.", "Този документ изтича след %d дни."], + "This document will expire in %d months.": + ["Този документ изтича след една година.", "Този документ изтича след %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?)": + "Дешифроването на информацията беше неуспешно: Ключа за декриптиране липсва във връзката (Да не сте използвали услуга за пренасочване или скъсяване на връзката, което би изрязало части от нея?)", + "Format": "Format", + "Plain Text": "Чист текст", + "Source Code": "Изходен код", + "Markdown": "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 код", + "I love you too, bot…": "И аз те обичам, бот…", + "This website is using an insecure HTTP connection! Please use it only for testing.": + "Този сайт използва несигурна HTTP връзка. Моля използвайте само за проби.", + "For more information see this FAQ entry.": + "Вижте тази страница за повече информация.", + "Your browser may require an HTTPS connection to support the WebCrypto API. Try switching to HTTPS.": + "Браузъра ви може да се нуждае от HTTPS връзка за да използва WebCrypto API. Пробвай да минеш на HTTPS." +} diff --git a/js/privatebin.js b/js/privatebin.js index 1720933..1669d7b 100644 --- a/js/privatebin.js +++ b/js/privatebin.js @@ -420,7 +420,7 @@ jQuery.PrivateBin = (function($, RawDeflate) { * @prop {string[]} * @readonly */ - const supportedLanguages = ['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', 'zh']; /** * built in language @@ -583,7 +583,7 @@ jQuery.PrivateBin = (function($, RawDeflate) { 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)); - // de, en, es, hu, it, nl, no, pt + // bg, de, en, es, hu, it, nl, no, pt default: return n !== 1 ? 1 : 0; } diff --git a/lib/I18n.php b/lib/I18n.php index 8346ea5..29aa6b1 100644 --- a/lib/I18n.php +++ b/lib/I18n.php @@ -306,7 +306,7 @@ class I18n 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)); - // de, en, es, hu, it, nl, no, pt + // bg, de, en, es, hu, it, nl, no, pt default: return $n != 1 ? 1 : 0; } diff --git a/tpl/bootstrap.php b/tpl/bootstrap.php index f19aa61..924b5a3 100644 --- a/tpl/bootstrap.php +++ b/tpl/bootstrap.php @@ -71,7 +71,7 @@ if ($MARKDOWN): endif; ?> - + diff --git a/tpl/page.php b/tpl/page.php index 5e889af..c330720 100644 --- a/tpl/page.php +++ b/tpl/page.php @@ -49,7 +49,7 @@ if ($MARKDOWN): endif; ?> - +