diff --git a/CHANGELOG.md b/CHANGELOG.md index 201fb81..a67fdc1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # PrivateBin version history * **1.4 (not yet released)** + * ADDED: Translation for Estonian * **1.3.5 (2021-04-05)** * ADDED: Translation for Hebrew, Lithuanian, Indonesian and Catalan * ADDED: Make the project info configurable (#681) diff --git a/CREDITS.md b/CREDITS.md index 8b24f16..1aabf6f 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -50,3 +50,4 @@ Sébastien Sauvage - original idea and main developer * Moo - Lithuanian * whenwesober - Indonesian * retiolus - Catalan +* sarnane - Estonian diff --git a/i18n/et.json b/i18n/et.json new file mode 100644 index 0000000..877c732 --- /dev/null +++ b/i18n/et.json @@ -0,0 +1,188 @@ +{ + "PrivateBin": "PrivateBin", + "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s on minimalistlik, avatud lähtekoodiga online pastebin, kus serveril pole kleebitud andmete kohta teadmist. Andmed krüpteeritakse/dekrüpteeritakse %sbrauseris%s kasutades 256-bitist AES-i.", + "More information on the project page.": "Lisateave projekti lehel.", + "Because ignorance is bliss": "Kuna teadmatus on õndsus", + "en": "et", + "Paste does not exist, has expired or has been deleted.": "Kleebet ei eksisteeri, on aegunud või on kustutatud.", + "%s requires php %s or above to work. Sorry.": "%s vajab, et oleks php %s või kõrgem, et töötada. Vabandame.", + "%s requires configuration section [%s] to be present in configuration file.": "%s vajab, et [%s] seadistamise jaotis oleks olemas konfiguratsioonifailis.", + "Please wait %d seconds between each post.": [ + "Palun oota %d sekund iga postituse vahel.", + "Palun oota %d sekundit iga postituse vahel.", + "Palun oota %d sekundit iga postituse vahel.", + "Palun oota %d sekundit iga postituse vahel." + ], + "Paste is limited to %s of encrypted data.": "Kleepe limiit on %s krüpteeritud andmeid.", + "Invalid data.": "Valed andmed.", + "You are unlucky. Try again.": "Sul ei vea. Proovi uuesti.", + "Error saving comment. Sorry.": "Viga kommentaari salvestamisel. Vabandame.", + "Error saving paste. Sorry.": "Viga kleepe salvestamisel. Vabandame.", + "Invalid paste ID.": "Vale kleepe ID.", + "Paste is not of burn-after-reading type.": "Kleebe ei ole põleta-pärast-lugemist tüüpi.", + "Wrong deletion token. Paste was not deleted.": "Vale kustutamiskood. Kleebet ei kustutatud.", + "Paste was properly deleted.": "Kleebe kustutati korralikult.", + "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript on vajalik %s'i töötamiseks. Vabandame ebamugavuste pärast.", + "%s requires a modern browser to work.": "%s vajab töötamiseks kaasaegset brauserit.", + "New": "Uus", + "Send": "Saada", + "Clone": "Klooni", + "Raw text": "Lähtetekst", + "Expires": "Aegub", + "Burn after reading": "Põleta pärast lugemist", + "Open discussion": "Avatud arutelu", + "Password (recommended)": "Parool (soovitatav)", + "Discussion": "Arutelu", + "Toggle navigation": "Näita menüüd", + "%d seconds": [ + "%d sekund", + "%d sekundit", + "%d sekundit", + "%d sekundit" + ], + "%d minutes": [ + "%d minut", + "%d minutit", + "%d minutit", + "%d minutit" + ], + "%d hours": [ + "%d tund", + "%d tundi", + "%d tundi", + "%d tundi" + ], + "%d days": [ + "%d päev", + "%d päeva", + "%d päeva", + "%d päeva" + ], + "%d weeks": [ + "%d nädal", + "%d nädalat", + "%d nädalat", + "%d nädalat" + ], + "%d months": [ + "%d kuu", + "%d kuud", + "%d kuud", + "%d kuud" + ], + "%d years": [ + "%d aasta", + "%d aastat", + "%d aastat", + "%d aastat" + ], + "Never": "Mitte kunagi", + "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Märge: See on testimisteenus: Andmeid võidakse igal ajal kustutada. Kiisupojad hukuvad, kui seda teenust kuritarvitad.", + "This document will expire in %d seconds.": [ + "See dokument aegub %d sekundi pärast.", + "See dokument aegub %d sekundi pärast.", + "See dokument aegub %d sekundi pärast.", + "See dokument aegub %d sekundi pärast." + ], + "This document will expire in %d minutes.": [ + "See dokument aegub %d minuti pärast.", + "See dokument aegub %d minuti pärast.", + "See dokument aegub %d minuti pärast.", + "See dokument aegub %d minuti pärast." + ], + "This document will expire in %d hours.": [ + "See dokument aegub %d tunni pärast.", + "See dokument aegub %d tunni pärast.", + "See dokument aegub %d tunni pärast.", + "See dokument aegub %d tunni pärast." + ], + "This document will expire in %d days.": [ + "See dokument aegub %d päeva pärast.", + "See dokument aegub %d päeva pärast.", + "See dokument aegub %d päeva pärast.", + "See dokument aegub %d päeva pärast." + ], + "This document will expire in %d months.": [ + "See dokument aegub %d kuu pärast.", + "See dokument aegub %d kuu pärast.", + "See dokument aegub %d kuu pärast.", + "See dokument aegub %d kuu pärast." + ], + "Please enter the password for this paste:": "Palun sisesta selle kleepe parool:", + "Could not decrypt data (Wrong key?)": "Ei suutnud andmeid dekrüpteerida (Vale võti?)", + "Could not delete the paste, it was not stored in burn after reading mode.": "Ei suutnud kleebet kustutada, seda ei salvestatud põleta pärast lugemist režiimis.", + "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "AINULT SINU SILMADELE. Ära sulge seda akent, seda sõnumit ei saa enam kuvada.", + "Could not decrypt comment; Wrong key?": "Ei suutnud kommentaari dekrüpteerida; Vale võti?", + "Reply": "Vasta", + "Anonymous": "Anonüümne", + "Avatar generated from IP address": "Avatar genereeritud IP aadressi põhjal", + "Add comment": "Lisa kommentaar", + "Optional nickname…": "Valikuline hüüdnimi…", + "Post comment": "Postita kommentaar", + "Sending comment…": "Kommentaari saatmine…", + "Comment posted.": "Kommentaar postitatud.", + "Could not refresh display: %s": "Ei suutnud kuva värskendada: %s", + "unknown status": "tundmatu staatus", + "server error or not responding": "serveri viga või ei vasta", + "Could not post comment: %s": "Ei suutnud kommentaari postitada: %s", + "Sending paste…": "Kleepe saatmine…", + "Your paste is %s (Hit [Ctrl]+[c] to copy)": "Sinu kleebe on %s (Kopeerimiseks vajuta [Ctrl]+[c])", + "Delete data": "Kustuta andmed", + "Could not create paste: %s": "Ei suutnud kleebet luua: %s", + "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Ei suutnud kleebet dekrüpteerida: Dekrüpteerimisvõti on URL-ist puudu (Kas kasutasid ümbersuunajat või URL-i lühendajat, mis eemaldab osa URL-ist?)", + "B": "B", + "KiB": "KiB", + "MiB": "MiB", + "GiB": "GiB", + "TiB": "TiB", + "PiB": "PiB", + "EiB": "EiB", + "ZiB": "ZiB", + "YiB": "YiB", + "Format": "Formaat", + "Plain Text": "Lihttekst", + "Source Code": "Lähtekood", + "Markdown": "Markdown", + "Download attachment": "Laadi manus alla", + "Cloned: '%s'": "Kloonitud: '%s'", + "The cloned file '%s' was attached to this paste.": "Kloonitud fail '%s' manustati sellele kleepele.", + "Attach a file": "Manusta fail", + "alternatively drag & drop a file or paste an image from the clipboard": "teise võimalusena lohista fail või kleebi pilt lõikelaualt", + "File too large, to display a preview. Please download the attachment.": "Fail on eelvaate kuvamiseks liiga suur. Palun laadi manus alla.", + "Remove attachment": "Eemalda manus", + "Your browser does not support uploading encrypted files. Please use a newer browser.": "Sinu brauser ei toeta krüpteeritud failide üleslaadimist. Palun kasuta uuemat brauserit.", + "Invalid attachment.": "Sobimatu manus.", + "Options": "Valikud", + "Shorten URL": "Lühenda URL", + "Editor": "Toimetaja", + "Preview": "Eelvaade", + "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s vajab, et PATH lõppeks järgmisega: \"%s\". Palun uuenda PATH-i oma index.php failis.", + "Decrypt": "Dekrüpteeri", + "Enter password": "Sisesta parool", + "Loading…": "Laadimine…", + "Decrypting paste…": "Kleepe dekrüpteerimine…", + "Preparing new paste…": "Uue kleepe ettevalmistamine…", + "In case this message never disappears please have a look at this FAQ for information to troubleshoot.": "Kui see sõnum ei kao, palun vaata seda KKK-d, et saada tõrkeotsinguks teavet..", + "+++ no paste text +++": "+++ kleepe tekst puudub +++", + "Could not get paste data: %s": "Ei suutnud saada kleepe andmeid: %s", + "QR code": "QR kood", + "This website is using an insecure HTTP connection! Please use it only for testing.": "See veebisait kasutab ebaturvalist HTTP ühendust! Palun kasuta seda ainult katsetamiseks.", + "For more information see this FAQ entry.": "Lisateabe saamiseks vaata seda KKK sissekannet.", + "Your browser may require an HTTPS connection to support the WebCrypto API. Try switching to HTTPS.": "Sinu brauser võib vajada HTTPS ühendust, et toetada WebCrypto API-d. Proovi üle minna HTTPS-ile.", + "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Sinu brauser ei toeta WebAssembly't, mida kasutatakse zlib tihendamiseks. Sa saad luua tihendamata dokumente, kuid ei saa lugeda tihendatuid.", + "waiting on user to provide a password": "ootan parooli sisestamist kasutajalt", + "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Ei suutnud andmeid dekrüpteerida. Kas sisestasid vale parooli? Proovi uuesti üleval asuva nupuga.", + "Retry": "Proovi uuesti", + "Showing raw text…": "Lähteteksti näitamine…", + "Notice:": "Teade:", + "This link will expire after %s.": "See link aegub: %s.", + "This link can only be accessed once, do not use back or refresh button in your browser.": "Sellele lingile saab vaid üks kord ligi pääseda, ära kasuta tagasi või värskenda nuppe sinu brauseris.", + "Link:": "Link:", + "Recipient may become aware of your timezone, convert time to UTC?": "Saaja võib saada teada sinu ajavööndi, kas teisendada aeg UTC-ks?", + "Use Current Timezone": "Kasuta praegust ajavööndit", + "Convert To UTC": "Teisenda UTC-ks", + "Close": "Sulge", + "Encrypted note on PrivateBin": "Krüpteeritud kiri PrivateBin-is", + "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Kirja nägemiseks külasta seda linki. Teistele URL-i andmine lubab ka neil ligi pääseda kirjale.", + "URL shortener may expose your decrypt key in URL.": "URL-i lühendaja võib paljastada sinu dekrüpteerimisvõtme URL-is." +} diff --git a/i18n/lt.json b/i18n/lt.json index f973f4f..7ef45bf 100644 --- a/i18n/lt.json +++ b/i18n/lt.json @@ -1,7 +1,7 @@ { "PrivateBin": "PrivateBin", "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s yra minimalistinis, atvirojo kodo internetinis įdėjimų dėklas, kurį naudojant, serveris nieko nenutuokia apie įdėtus duomenis. Duomenys yra šifruojami/iššifruojami %snaršyklėje%s naudojant 256 bitų AES.", - "More information on the project page.": "Daugiau informacijos rasite projeketo puslapyje.", + "More information on the project page.": "Daugiau informacijos rasite projekto puslapyje.", "Because ignorance is bliss": "Nes nežinojimas yra palaima", "en": "lt", "Paste does not exist, has expired or has been deleted.": "Įdėjimo nėra, jis nebegalioja arba buvo ištrintas.", @@ -184,5 +184,5 @@ "Close": "Užverti", "Encrypted note on PrivateBin": "Šifruoti užrašai ties PrivateBin", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Norėdami matyti užrašus, aplankykite šį tinklalapį. Pasidalinus šiuo URL adresu su kitais žmonėmis, jiems taip pat bus leidžiama prieiga prie šių užrašų.", - "URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL." + "URL shortener may expose your decrypt key in URL.": "URL trumpinimo įrankis gali atskleisti URL adrese jūsų iššifravimo raktą." } diff --git a/i18n/zh.json b/i18n/zh.json index 67a456f..2e1dc12 100644 --- a/i18n/zh.json +++ b/i18n/zh.json @@ -111,7 +111,7 @@ "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.": "注意啦!!!不要关闭窗口,否则你再也见不到这条消息了。", + "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "看!仔!细!了!不要关闭窗口,否则你再也见不到这条消息了。", "Could not decrypt comment; Wrong key?": "无法解密评论; 密钥错误?", "Reply": "回复", "Anonymous": "匿名", @@ -162,7 +162,7 @@ "Loading…": "载入中…", "Decrypting paste…": "正在解密", "Preparing new paste…": "正在准备新的粘贴内容", - "In case this message never disappears please have a look at this FAQ for information to troubleshoot.": "如果这个消息一直存在,请参考 这里的 参考文档(英文版)进行故障排除。", + "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": "二维码", @@ -184,5 +184,5 @@ "Close": "关闭", "Encrypted note on PrivateBin": "PrivateBin上的加密笔记", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "访问这个链接来查看该笔记。 将这个URL发送给任何人即可允许其访问该笔记。", - "URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL." + "URL shortener may expose your decrypt key in URL.": "URL 缩短可能会暴露您在 URL 中的解密密钥。" } diff --git a/js/privatebin.js b/js/privatebin.js index 42cdd96..e549dd6 100644 --- a/js/privatebin.js +++ b/js/privatebin.js @@ -601,7 +601,7 @@ jQuery.PrivateBin = (function($, RawDeflate) { * @prop {string[]} * @readonly */ - const supportedLanguages = ['bg', 'cs', 'de', 'es', 'fr', 'he', 'hu', 'it', 'lt', 'no', 'nl', 'pl', 'pt', 'oc', 'ru', 'sl', 'uk', 'zh']; + const supportedLanguages = ['bg', 'ca', 'cs', 'de', 'es', 'et', 'fr', 'he', 'hu', 'id', 'it', 'lt', 'no', 'nl', 'pl', 'pt', 'oc', 'ru', 'sl', 'uk', 'zh']; /** * built in language @@ -767,7 +767,7 @@ jQuery.PrivateBin = (function($, RawDeflate) { /** * per language functions to use to determine the plural form * - * @see {@link http://localization-guide.readthedocs.org/en/latest/l10n/pluralforms.html} + * @see {@link https://localization-guide.readthedocs.org/en/latest/l10n/pluralforms.html} * @name I18n.getPluralForm * @function * @param {int} n @@ -795,7 +795,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)); - // bg, ca, de, en, es, hu, it, nl, no, pt + // bg, ca, de, en, es, et, hu, it, nl, no, pt default: return n !== 1 ? 1 : 0; } diff --git a/lib/I18n.php b/lib/I18n.php index ea7d07f..50bf0cc 100644 --- a/lib/I18n.php +++ b/lib/I18n.php @@ -305,7 +305,7 @@ class I18n /** * determines the plural form to use based on current language and given number * - * From: http://localization-guide.readthedocs.org/en/latest/l10n/pluralforms.html + * From: https://localization-guide.readthedocs.org/en/latest/l10n/pluralforms.html * * @access protected * @static @@ -334,7 +334,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)); - // bg, ca, de, en, es, hu, it, nl, no, pt + // bg, ca, de, en, es, et, hu, it, nl, no, pt default: return $n != 1 ? 1 : 0; } diff --git a/tpl/bootstrap.php b/tpl/bootstrap.php index a86faf3..ffea872 100644 --- a/tpl/bootstrap.php +++ b/tpl/bootstrap.php @@ -72,7 +72,7 @@ endif; ?> - + diff --git a/tpl/page.php b/tpl/page.php index 6dd4331..e58617d 100644 --- a/tpl/page.php +++ b/tpl/page.php @@ -50,7 +50,7 @@ endif; ?> - +