diff --git a/CHANGELOG.md b/CHANGELOG.md index 02c3950..d8ac2cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ * **1.4.1 (not yet released)** * ADDED: script for data storage backend migrations (#1012) - * ADDED: Translations for Turkish, Slovak and Greek + * ADDED: Translations for Turkish, Slovak, Greek and Thai * ADDED: S3 Storage backend (#994) * CHANGED: Switched to Jdenticons as the default for comment icons (#793) * CHANGED: Avoid `SUPER` privilege for setting the `sql_mode` for MariaDB/MySQL (#919) diff --git a/CREDITS.md b/CREDITS.md index eb5f152..7a19c5f 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -62,3 +62,4 @@ * Emir Ensar Rahmanlar - Turkish * Stevo984 - Slovak * Christos Karamolegkos - Greek +* jaideejung007 - Thai diff --git a/i18n/th.json b/i18n/th.json new file mode 100644 index 0000000..d3c955d --- /dev/null +++ b/i18n/th.json @@ -0,0 +1,193 @@ +{ + "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 เป็น pastebin ออนไลน์แบบโอเพ่นซอร์สที่มีสไตล์แบบมินิมัลลิสท์ เซิร์ฟเวอร์ไม่สามารถรู้ได้ว่าข้อมูลโค้ดที่มาฝากนั้นเป็นข้อมูลอะไร โดยจะถูก %sเข้ารหัส/ถอดรหัส%s ด้วยกระบวนการ AES จำนวน 256 บิตผ่านเบราว์เซอร์", + "More information on the project page.": "ข้อมูลเพิ่มเติม ดูได้ที่หน้าโครงการ", + "Because ignorance is bliss": "ไม่รู้ไม่ชี้ดีที่สุด", + "en": "th", + "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 วินาที", + "กรุณาเว้นระยะเวลาการส่งข้อมูลอย่างน้อย %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.": "จำเป็นต้องใช้ JavaScript เพื่อให้ %s สามารถทำงานได้ ขออภัยในความไม่สะดวก", + "%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 วินาที" + ], + "%d minutes": [ + "%d นาที", + "%d นาที", + "%d นาที", + "%d นาที" + ], + "%d hours": [ + "%d ชั่วโมง", + "%d ชั่วโมง", + "%d ชั่วโมง", + "%d ชั่วโมง" + ], + "%d days": [ + "%d วัน", + "%d วัน", + "%d วัน", + "%d วัน" + ], + "%d weeks": [ + "%d สัปดาห์", + "%d สัปดาห์", + "%d สัปดาห์", + "%d สัปดาห์" + ], + "%d months": [ + "%d เดือน", + "%d เดือน", + "%d เดือน", + "%d เดือน" + ], + "%d years": [ + "%d ปี", + "%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 วินาที", + "เอกสารนี้จะหมดอายุใน %d วินาที" + ], + "This document will expire in %d minutes.": [ + "เอกสารนี้จะหมดอายุใน %d นาที", + "เอกสารนี้จะหมดอายุใน %d นาที", + "เอกสารนี้จะหมดอายุใน %d นาที", + "เอกสารนี้จะหมดอายุใน %d นาที" + ], + "This document will expire in %d hours.": [ + "เอกสารนี้จะหมดอายุใน %d ชั่วโมง", + "เอกสารนี้จะหมดอายุใน %d ชั่วโมง", + "เอกสารนี้จะหมดอายุใน %d ชั่วโมง", + "เอกสารนี้จะหมดอายุใน %d ชั่วโมง" + ], + "This document will expire in %d days.": [ + "เอกสารนี้จะหมดอายุใน %d วัน", + "เอกสารนี้จะหมดอายุใน %d วัน", + "เอกสารนี้จะหมดอายุใน %d วัน", + "เอกสารนี้จะหมดอายุใน %d วัน" + ], + "This document will expire in %d months.": [ + "เอกสารนี้จะหมดอายุใน %d เดือน", + "เอกสารนี้จะหมดอายุใน %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": "อวาตารสร้างมาจากไอพี", + "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?)": "ไม่สามารถถอดรหัสข้อมูลการฝากโค้ดได้: คีย์ถอดรหัสที่อยู่ใน URL หายไป (คุณได้ใช้ตัวเปลี่ยนเส้นทางหรือตัวย่อ URL ที่มีการตัดส่วนของ URL ออกหรือไม่)", + "B": "B", + "KiB": "KiB", + "MiB": "MiB", + "GiB": "GiB", + "TiB": "TiB", + "PiB": "PiB", + "EiB": "EiB", + "ZiB": "ZiB", + "YiB": "YiB", + "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.": "%s กำหนดให้ PATH ลงท้ายด้วย \"%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.": "ในกรณีที่ข้อความนี้ยังปรากฎให้เห็นอยู่ กรุณาดูคำถามที่พบบ่อยนี้เพื่อใช้แก้ไขปัญหา", + "+++ no paste text +++": "+++ ไม่มีข้อความการฝากโค้ด +++", + "Could not get paste data: %s": "ไม่สามารถดึงข้อมูลการฝากโค้ดได้: %s", + "QR code": "คิวอาร์โค้ด", + "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 เพื่อสนับสนุน API แบบ WebCrypto ลองเปลี่ยนเป็น HTTPS", + "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "เบราว์เซอร์ของคุณไม่สนับสนุน WebAssembly ที่ทำหน้าที่ในการบีบอัดข้อมูลในรูปแบบ zlib คุณยังสามารถสร้างเอกสารที่ไม่บีบอัด แต่จะไม่สามารถอ่านเอกสารที่บีบอัดได้", + "waiting on user to provide a password": "กำลังรอผู้ใช้กรอกรหัสผ่าน", + "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "ไม่สามารถถอดรหัสข้อมูลได้ คุณกรอกรหัสผ่านผิดหรือเปล่า กดปุ่มลองอีกครั้งด้านบน", + "Retry": "ลองอีกครั้ง", + "Showing raw text…": "กำลังแสดงข้อความล้วน…", + "Notice:": "โปรดทราบ:", + "This link will expire after %s.": "ลิงก์นี้จะหมดอายุหลังจาก %s", + "This link can only be accessed once, do not use back or refresh button in your browser.": "ลิงก์นี้สามารถเข้าถึงได้เพียงครั้งเดียวเท่านั้น ไม่ควรใช้ปุ่มย้อนกลับหรือรีเฟรชหน้าเว็บบนเบราว์เซอร์ของคุณ", + "Link:": "ลิงก์:", + "Recipient may become aware of your timezone, convert time to UTC?": "ผู้รับอีเมลอาจทราบโซนเวลาของคุณได้ คุณต้องการแปลงโซนเวลาเป็น UTC หรือไม่", + "Use Current Timezone": "ใช้โซนเวลาปัจจุบัน", + "Convert To UTC": "แปลงเป็น UTC", + "Close": "ปิด", + "Encrypted note on %s": "เขารหัสบันทึกย่อบน %s", + "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 ได้", + "Save paste": "ดาวน์โหลดข้อมูลการฝากโค้ด", + "Your IP is not authorized to create pastes.": "IP ของคุณไม่ได้รับอนุญาตให้สร้างการฝากโค้ด", + "Trying to shorten a URL that isn't pointing at our instance.": "กำลังพยายามใช้เครื่องมือสร้างลิงก์ย่อ ที่ไม่ได้ชี้ไปที่อินสแตนซ์ของเรา", + "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "เกิดข้อผิดพลาดในการเรียก YOURLS อาจเป็นปัญหามาจากการกำหนดค่า เช่น \"apiurl\" หรือ \"signature\" ไม่ถูกต้องหรือขาดหายไป", + "Error parsing YOURLS response.": "เกิดข้อผิดพลาดในการแยกวิเคราะห์การตอบสนองของ YOURLS" +} diff --git a/js/privatebin.js b/js/privatebin.js index fe326b4..5171477 100644 --- a/js/privatebin.js +++ b/js/privatebin.js @@ -627,7 +627,7 @@ jQuery.PrivateBin = (function($, RawDeflate) { * @prop {string[]} * @readonly */ - const supportedLanguages = ['bg', 'ca', 'co', 'cs', 'de', 'el', 'es', 'et', 'fi', 'fr', 'he', 'hu', 'id', 'it', 'jbo', 'lt', 'no', 'nl', 'pl', 'pt', 'oc', 'ru', 'sk', 'sl', 'tr', 'uk', 'zh']; + const supportedLanguages = ['bg', 'ca', 'co', 'cs', 'de', 'el', 'es', 'et', 'fi', 'fr', 'he', 'hu', 'id', 'it', 'jbo', 'lt', 'no', 'nl', 'pl', 'pt', 'oc', 'ru', 'sk', 'sl', 'th', 'tr', 'uk', 'zh']; /** * built in language @@ -815,6 +815,7 @@ jQuery.PrivateBin = (function($, RawDeflate) { return n === 1 ? 0 : (n === 2 ? 1 : ((n < 0 || n > 10) && (n % 10 === 0) ? 2 : 3)); case 'id': case 'jbo': + case 'th': return 0; case 'lt': return n % 10 === 1 && n % 100 !== 11 ? 0 : ((n % 10 >= 2 && n % 100 < 10 || n % 100 >= 20) ? 1 : 2); diff --git a/lib/I18n.php b/lib/I18n.php index c3c635f..5c46938 100644 --- a/lib/I18n.php +++ b/lib/I18n.php @@ -328,6 +328,7 @@ class I18n return $n === 1 ? 0 : ($n === 2 ? 1 : (($n < 0 || $n > 10) && ($n % 10 === 0) ? 2 : 3)); case 'id': case 'jbo': + case 'th': return 0; case 'lt': return $n % 10 === 1 && $n % 100 !== 11 ? 0 : (($n % 10 >= 2 && $n % 100 < 10 || $n % 100 >= 20) ? 1 : 2); diff --git a/tpl/bootstrap.php b/tpl/bootstrap.php index 3dd4913..b3441a7 100644 --- a/tpl/bootstrap.php +++ b/tpl/bootstrap.php @@ -73,7 +73,7 @@ endif; ?> - + diff --git a/tpl/page.php b/tpl/page.php index f91cb7d..42380ab 100644 --- a/tpl/page.php +++ b/tpl/page.php @@ -51,7 +51,7 @@ endif; ?> - +