diff options
-rw-r--r-- | app/Api/File.php | 2 | ||||
-rw-r--r-- | app/Locales/th_TH/translation.php | 925 | ||||
-rw-r--r-- | app/Template/notification/comment_create.php (renamed from app/Template/notification/comment_creation.php) | 0 | ||||
-rw-r--r-- | app/Template/notification/file_create.php (renamed from app/Template/notification/file_creation.php) | 0 | ||||
-rw-r--r-- | app/Template/notification/subtask_create.php (renamed from app/Template/notification/subtask_creation.php) | 0 | ||||
-rw-r--r-- | app/Template/notification/task_create.php (renamed from app/Template/notification/task_creation.php) | 6 | ||||
-rw-r--r-- | tests/units/NotificationTest.php | 33 | ||||
-rw-r--r-- | tests/units/TaskDuplicationTest.php | 4 |
8 files changed, 963 insertions, 7 deletions
diff --git a/app/Api/File.php b/app/Api/File.php index 11c48404..65dff729 100644 --- a/app/Api/File.php +++ b/app/Api/File.php @@ -36,7 +36,7 @@ class File extends Base return ''; } - public function createFile($project_id, $task_id, $filename, $is_image, &$blob) + public function createFile($project_id, $task_id, $filename, $is_image, $blob) { return $this->file->uploadContent($project_id, $task_id, $filename, $is_image, $blob); } diff --git a/app/Locales/th_TH/translation.php b/app/Locales/th_TH/translation.php new file mode 100644 index 00000000..d09f63cd --- /dev/null +++ b/app/Locales/th_TH/translation.php @@ -0,0 +1,925 @@ +<?php + +return array( + // 'number.decimals_separator' => '', + // 'number.thousands_separator' => '', + 'None' => 'ไม่มี', + 'edit' => 'แก้ไข', + 'Edit' => 'แก้ไข', + 'remove' => 'ลบ', + 'Remove' => 'ลบ', + 'Update' => 'ปรับปรุง', + 'Yes' => 'ใช่', + 'No' => 'ไม่', + 'cancel' => 'ยกเลิก', + 'or' => 'หรือ', + 'Yellow' => 'สีเหลือง', + 'Blue' => 'สีน้ำเงิน', + 'Green' => 'สีเขียว', + 'Purple' => 'สีม่วง', + 'Red' => 'สีแดง', + 'Orange' => 'สีส้ม', + 'Grey' => 'สีเทา', + 'Save' => 'บันทึก', + 'Login' => 'เข้าสู่ระบบ', + 'Official website:' => 'เวบไซต์อย่างเป็นทางการ:', + 'Unassigned' => 'ไม่กำหนด', + 'View this task' => 'รายละเอียดงานนี้', + 'Remove user' => 'เอาผู้ใช้ออก', + 'Do you really want to remove this user: "%s"?' => 'คุณต้องการเอาผู้ใช้ « %s » ออกใช่หรือไม่?', + 'New user' => 'ผู้ใช้ใหม่', + 'All users' => 'ผู้ใช้ทั้งหมด', + 'Username' => 'ชื่อผู้ใช้', + 'Password' => 'รหัสผ่าน', + 'Default project' => 'โปรเจคเริ่มต้น', + 'Administrator' => 'ผู้ดูแลระบบ', + 'Sign in' => 'เข้าสู่ระบบ', + 'Users' => 'ผู้ใช้', + 'No user' => 'ไม่มีผู้ใช้', + 'Forbidden' => 'ไม่อนุญาติ', + 'Access Forbidden' => 'ไม่อนุญาติให้เข้า', + 'Only administrators can access to this page.' => 'หน้าสำหรับผู้ดูแลระบบเท่านั้น', + 'Edit user' => 'แก้ไขผู้ใช้', + 'Logout' => 'ออกจากระบบ', + 'Bad username or password' => 'ชื่อผู้ใช่หรือรหัสผ่านผิด', + 'users' => 'ผู้ใช้', + 'projects' => 'โปรเจค', + 'Edit project' => 'แก้ไขโปรเจค', + 'Name' => 'ชื่อ', + 'Activated' => 'เปิดใช้งาน', + 'Projects' => 'โปรเจค', + 'No project' => 'ไม่มีโปรเจค', + 'Project' => 'โปรเจค', + 'Status' => 'สถานะ', + 'Tasks' => 'งาน', + 'Board' => 'บอร์ด', + 'Actions' => 'การกระทำ', + 'Inactive' => 'ไม่เปิดใช้งาน', + 'Active' => 'เปิดใช้งาน', + 'Column %d' => 'คอลัมน์ %d', + 'Add this column' => 'เพิ่มคอลัมน์', + '%d tasks on the board' => '%d งานบนบอร์ด', + '%d tasks in total' => '%d งานทั้งหมด', + 'Unable to update this board.' => 'ไม่สามารถปรับปรุงบอร์ดได้.', + 'Edit board' => 'แก้ไขบอร์ด', + 'Disable' => 'ปิด', + 'Enable' => 'เปิด', + 'New project' => 'โปรเจคใหม่', + 'Do you really want to remove this project: "%s"?' => 'คุณต้องการเอาโปรเจค « %s » ออกใช่หรือไม่?', + 'Remove project' => 'ลบโปรเจค', + 'Boards' => 'บอร์ด', + 'Edit the board for "%s"' => 'แก้ไขบอร์ดสำหรับ « %s »', + 'All projects' => 'โปรเจคทั้งหมด', + 'Change columns' => 'เปลี่ยนคอลัมน์', + 'Add a new column' => 'เพิ่มคอลัมน์ใหม่', + 'Title' => 'หัวเรื่อง', + 'Add Column' => 'เพิ่มคอลัมน์', + 'Project "%s"' => 'โปรเจค « %s »', + 'Nobody assigned' => 'ไม่กำหนดใคร', + 'Assigned to %s' => 'กำหนดให้ %s', + 'Remove a column' => 'ลบคอลัมน์', + 'Remove a column from a board' => 'ลบคอลัมน์ออกจากบอร์ด', + 'Unable to remove this column.' => 'ไม่สามารถลบคอลัมน์นี้', + 'Do you really want to remove this column: "%s"?' => 'คุณต้องการลบคอลัมน์ « %s » ออกใช่หรือไม่?', + 'This action will REMOVE ALL TASKS associated to this column!' => 'การกระทำนี้จะลบงานที่เกี่ยวข้องกับคอลัมน์นี้', + 'Settings' => 'ตั้งค่า', + 'Application settings' => 'ตั้งค่าการทำงาน', + 'Language' => 'ภาษา', + // 'Webhook token:' => '', + 'API token:' => 'API token:', + 'More information' => 'ข้อมูลเพิ่มเติม', + 'Database size:' => 'ขนาดฐานข้อมูล:', + 'Download the database' => 'ดาวน์โหลดฐานข้อมูล', + 'Optimize the database' => 'ปรับปรุงฐานข้อมูล', + '(VACUUM command)' => '(VACUUM command)', + '(Gzip compressed Sqlite file)' => '(Gzip compressed Sqlite file)', + 'User settings' => 'ตั้งค่าผู้ใช้', + 'My default project:' => 'โปรเจคเริ่มต้นของฉัน:', + 'Close a task' => 'ปิดงาน', + 'Do you really want to close this task: "%s"?' => 'คุณต้องการปิดงาน « %s » ใช่หรือไม่?', + 'Edit a task' => 'แก้ไขงาน', + 'Column' => 'คอลัมน์', + 'Color' => 'สี', + 'Assignee' => 'กำหนดให้', + 'Create another task' => 'สร้างงานอื่น', + 'New task' => 'งานใหม่', + 'Open a task' => 'เปิดงาน', + 'Do you really want to open this task: "%s"?' => 'คุณต้องการเปิดงาน: « %s » ใช่หรือไม่?', + 'Back to the board' => 'กลับไปที่บอร์ด', + 'Created on %B %e, %Y at %k:%M %p' => 'สร้างวันที่ %d/%m/%Y เวลา %H:%M', + 'There is nobody assigned' => 'ไม่มีใครถูกกำหนด', + 'Column on the board:' => 'คอลัมน์บนบอร์ด:', + 'Status is open' => 'สถานะเปิด', + 'Status is closed' => 'สถานะปิด', + 'Close this task' => 'ปิดงานนี้', + 'Open this task' => 'เปิดงานนี้', + 'There is no description.' => 'ไม่มีคำอธิบาย', + 'Add a new task' => 'เพิ่มงานใหม่', + 'The username is required' => 'ต้องการชื่อผู้ใช้', + 'The maximum length is %d characters' => 'จำนวนตัวอักษรสูงสุด %d ตัวอักษร', + 'The minimum length is %d characters' => 'จำนวนตัวอักษรน้อยสุด %d ตัวอักษร', + 'The password is required' => 'ต้องการรหัสผ่าน', + 'This value must be an integer' => 'ต้องเป็นตัวเลข', + 'The username must be unique' => 'ชื่อผู้ใช้ต้องไม่ซ้ำ', + 'The username must be alphanumeric' => 'ชื่อผู้ใช้ต้องเป็นตัวอักษรหรือตัวเลข', + 'The user id is required' => 'ต้องการไอดีผู้ใช้', + 'Passwords don\'t match' => 'รหัสผ่านไม่ถูกต้อง', + 'The confirmation is required' => 'ต้องการการยืนยัน', + 'The column is required' => 'ต้องการคอลัมน์', + 'The project is required' => 'ต้องการโปรเจค', + 'The color is required' => 'ต้องการสี', + 'The id is required' => 'ต้องการไอดี', + 'The project id is required' => 'ต้องการไอดีโปรเจค', + 'The project name is required' => 'ต้องการชื่อโปรเจค', + 'This project must be unique' => 'ชื่อโปรเจคต้องไม่ซ้ำ', + 'The title is required' => 'ต้องการหัวเรื่อง', + 'The language is required' => 'ต้องการภาษา', + 'There is no active project, the first step is to create a new project.' => 'ไม่มีโปรเจคที่ทำงานอยู่, ต้องการสร้างโปรเจคใหม่', + 'Settings saved successfully.' => 'บันทึกการตั้งค่าเรียบร้อยแล้ว', + 'Unable to save your settings.' => 'ไม่สามารถบันทึกการตั้งค่าได้', + 'Database optimization done.' => 'ปรับปรุงฐานข้อมูลเรียบร้อยแล้ว', + 'Your project have been created successfully.' => 'สร้างโปรเจคเรียบร้อยแล้ว', + 'Unable to create your project.' => 'ไม่สามารถสร้างโปรเจคได้', + 'Project updated successfully.' => 'ปรับปรุงโปรเจคเรียบร้อยแล้ว', + 'Unable to update this project.' => 'ไม่สามารถปรับปรุงโปรเจคได้', + 'Unable to remove this project.' => 'ไม่สามารถลบโปรเจคได้', + 'Project removed successfully.' => 'ลบโปรเจคเรียบร้อยแล้ว', + 'Project activated successfully.' => 'เปิดใช้งานโปรเจคเรียบร้อยแล้ว', + 'Unable to activate this project.' => 'ไม่สามารถเปิดใช้งานโปรเจคได้', + 'Project disabled successfully.' => 'ปิดโปรเจคเรียบร้อยแล้ว', + 'Unable to disable this project.' => 'ไม่สามารถปิดโปรเจคได้', + 'Unable to open this task.' => 'ไม่สามารถเปิดงานนี้', + 'Task opened successfully.' => 'เปิดงานเรียบร้อยแล้ว', + 'Unable to close this task.' => 'ไม่สามารถปิดงานนี้', + 'Task closed successfully.' => 'ปิดงานเรียบร้อยแล้ว', + 'Unable to update your task.' => 'ไม่สามารถปรับปรุงงานได้', + 'Task updated successfully.' => 'ปรับปรุงงานเรียบร้อยแล้ว', + 'Unable to create your task.' => 'ไม่สามารถสร้างงานได้', + 'Task created successfully.' => 'สร้างงานเรียบร้อยแล้ว', + 'User created successfully.' => 'สร้างผู้ใช้เรียบร้อยแล้ว', + 'Unable to create your user.' => 'ไม่สามารถสร้างผู้ใช้ได้', + 'User updated successfully.' => 'ปรับปรุงผู้ใช้เรียบร้อยแล้ว', + 'Unable to update your user.' => 'ไม่สามารถปรับปรุงผู้ใช้ได้', + 'User removed successfully.' => 'ลบผู้ใช้เรียบร้อยแล้ว', + 'Unable to remove this user.' => 'ไม่สามารถลบผู้ใช้ได้', + 'Board updated successfully.' => 'ปรับปรุงบอร์ดเรียบร้อยแล้ว', + 'Ready' => 'พร้อม', + 'Backlog' => 'งานค้าง', + 'Work in progress' => 'กำลังทำ', + 'Done' => 'เสร็จ', + 'Application version:' => 'แอพเวอร์ชัน:', + 'Completed on %B %e, %Y at %k:%M %p' => 'เรียบร้อยวันที่ %d/%m/%Y เวลา %H:%M', + '%B %e, %Y at %k:%M %p' => '%d/%m/%Y เวลา %H:%M', + 'Date created' => 'สร้างวันที่', + 'Date completed' => 'เรียบร้อยวันที่', + 'Id' => 'ไอดี', + 'No task' => 'ไม่มีงาน', + 'Completed tasks' => 'งานที่เสร็จแล้ว', + 'List of projects' => 'รายชื่อโปรเจค', + 'Completed tasks for "%s"' => 'งานที่เสร็จแล้วสำหรับ « %s »', + '%d closed tasks' => '%d งานที่ปิด', + 'No task for this project' => 'ไม่มีงานสำหรับโปรเจคนี้', + 'Public link' => 'ลิงค์สาธารณะ', + 'There is no column in your project!' => 'ไม่มีคอลัมน์ในโปรเจคของคุณ', + 'Change assignee' => 'เปลี่ยนการกำหนด', + 'Change assignee for the task "%s"' => 'เปลี่ยนการกำหนดสำหรับงาน « %s »', + 'Timezone' => 'เขตเวลา', + 'Sorry, I didn\'t find this information in my database!' => 'เสียใจด้วย ไม่สามารถหาข้อมูลในฐานข้อมูลได้', + 'Page not found' => 'ไม่พบหน้า', + 'Complexity' => 'ความซับซ้อน', + 'limit' => 'จำกัด', + 'Task limit' => 'จำกัดงาน', + 'Task count' => 'นับงาน', + 'This value must be greater than %d' => 'ค่าต้องมากกว่า %d', + 'Edit project access list' => 'แก้ไขการเข้าถึงรายชื่อโปรเจค', + 'Edit users access' => 'แก้ไขการเข้าถึงผู้ใช้', + 'Allow this user' => 'อนุญาตผู้ใช้นี้', + 'Only those users have access to this project:' => 'ผู้ใช้ที่สามารถเข้าถึงโปรเจคนี้:', + 'Don\'t forget that administrators have access to everything.' => 'อย่าลืมผู้ดูแลระบบสามารถเข้าถึงได้ทุกอย่าง', + 'Revoke' => 'ยกเลิก', + 'List of authorized users' => 'รายชื่อผู้ใช้ที่ได้รับการยืนยัน', + 'User' => 'ผู้ใช้', + // 'Nobody have access to this project.' => '', + 'You are not allowed to access to this project.' => 'คุณไม่ได้รับอนุญาตให้เข้าถึงโปรเจคนี้', + 'Comments' => 'ความคิดเห็น', + 'Post comment' => 'แสดงความคิดเห็น', + 'Write your text in Markdown' => 'เขียนข้อความในรูปแบบ Markdown', + 'Leave a comment' => 'ออกความคิดเห็น', + 'Comment is required' => 'ต้องการความคิดเห็น', + 'Leave a description' => 'แสดงคำอธิบาย', + 'Comment added successfully.' => 'เพิ่มความคิดเห็นเรียบร้อยแล้ว', + 'Unable to create your comment.' => 'ไม่สามารถสร้างความคิดเห็น', + 'The description is required' => 'ต้องการคำอธิบาย', + 'Edit this task' => 'แก้ไขงาน', + 'Due Date' => 'วันที่ครบกำหนด', + 'Invalid date' => 'วันที่ผิด', + 'Must be done before %B %e, %Y' => 'ต้องทำให้เสร็จก่อน %d/%m/%Y', + '%B %e, %Y' => '%d/%m/%Y', + // '%b %e, %Y' => '', + 'Automatic actions' => 'การกระทำอัตโนมัติ', + 'Your automatic action have been created successfully.' => 'การกระทำอัตโนมัติสร้างเรียบร้อยแล้ว', + 'Unable to create your automatic action.' => 'ไม่สามารถสร้างการกระทำอัตโนมัติได้', + 'Remove an action' => 'ลบการกระทำ', + 'Unable to remove this action.' => 'ไม่สามารถลบการกระทำ', + 'Action removed successfully.' => 'ลบการกระทำเรียบร้อยแล้ว', + 'Automatic actions for the project "%s"' => 'การกระทำอัตโนมัติสำหรับโปรเจค « %s »', + 'Defined actions' => 'กำหนดการกระทำ', + 'Add an action' => 'เพิ่มการกระทำ', + 'Event name' => 'ชื่อเหตุกาณ์', + 'Action name' => 'ชื่อการกระทำ', + 'Action parameters' => 'พารามิเตอร์ของการกระทำ', + 'Action' => 'การกระทำ', + 'Event' => 'เหตุการณ์', + 'When the selected event occurs execute the corresponding action.' => 'เหตุการ์ที่เลือกจะเกิดขึ้นเมื่อมีการกระทำที่สอดคล้องกัน', + 'Next step' => 'ขั้นตอนต่อไป', + 'Define action parameters' => 'กำหนดพารามิเตอร์ของการกระทำ', + 'Save this action' => 'บันทึกการกระทำนี้', + 'Do you really want to remove this action: "%s"?' => 'คุณต้องการลบการกระทำ « %s » ใช่หรือไม่?', + 'Remove an automatic action' => 'ลบการกระทำอัตโนมัติ', + 'Close the task' => 'ปิดงาน', + 'Assign the task to a specific user' => 'กำหนดงานให้ผู้ใช้แบบเจาะจง', + 'Assign the task to the person who does the action' => 'กำหนดงานให้ผู้ใช้งานปัจจุบัน', + 'Duplicate the task to another project' => 'ทำซ้ำงานนี้ในโปรเจคอื่น', + 'Move a task to another column' => 'ย้ายงานไปคอลัมน์อื่น', + 'Move a task to another position in the same column' => 'ย้ายงานไปตำแหน่งอื่นในคอลัมน์เดียวกัน', + 'Task modification' => 'แก้ไขงาน', + 'Task creation' => 'สร้างงาน', + 'Open a closed task' => 'เปิดงานที่ปิดอยู่', + 'Closing a task' => 'กำลังปิดงาน', + 'Assign a color to a specific user' => 'กำหนดสีให้ผู้ใช้แบบเจาะจง', + 'Column title' => 'หัวเรื่องคอลัมน์', + 'Position' => 'ตำแหน่ง', + 'Move Up' => 'ย้ายขึ้น', + 'Move Down' => 'ย้ายลง', + 'Duplicate to another project' => 'ทำซ้ำในโปรเจคอื่น', + 'Duplicate' => 'ทำซ้ำ', + 'link' => 'ลิงค์', + 'Update this comment' => 'ปรับปรุงความคิดเห็นนี้', + 'Comment updated successfully.' => 'ปรับปรุงความคิดเห็นเรียบร้อยแล้ว', + 'Unable to update your comment.' => 'ไม่สามารถปรับปรุงความคิดเห็นได้', + 'Remove a comment' => 'ลบความคิดเห็น', + 'Comment removed successfully.' => 'ลบความคิดเห็นเรียบร้อยแล้ว', + 'Unable to remove this comment.' => 'ไม่สามารถลบความคิดเห็นได้', + 'Do you really want to remove this comment?' => 'คุณต้องการลบความคิดเห็น', + 'Only administrators or the creator of the comment can access to this page.' => 'เฉพาะผู้ดูแลระบบหรือผู้สร้างความคิดเห็นเข้าถึงหน้านี้', + 'Details' => 'รายละเอียด', + 'Current password for the user "%s"' => 'รหัสผ่านปัจจุบันของผู้ใช้ « %s »', + 'The current password is required' => 'ต้องการรหัสผ่านปัจจุบัน', + 'Wrong password' => 'รหัสผ่านผิด', + 'Reset all tokens' => 'รีเซตโทเคนทั้งหมด ', + 'All tokens have been regenerated.' => 'โทเคนทั้งหมดทำการสร้างใหม่', + 'Unknown' => 'ไม่ทราบ', + 'Last logins' => 'เข้าใช้ล่าสุด', + 'Login date' => 'วันที่เข้าใข้', + 'Authentication method' => 'วิธีการยืนยันตัวตน', + 'IP address' => 'ไอพี แอดเดรส', + 'User agent' => 'User agent', + 'Persistent connections' => 'Persistent connections', + 'No session.' => 'No session.', + 'Expiration date' => 'หมดอายุวันที่', + 'Remember Me' => 'จดจำฉัน', + 'Creation date' => 'สร้างวันที่', + 'Filter by user' => 'กรองตามผู้ใช้', + 'Filter by due date' => 'กรองตามวันครบกำหนด', + 'Everybody' => 'ทุกคน', + 'Open' => 'เปิด', + 'Closed' => 'ปิด', + 'Search' => 'ค้นหา', + 'Nothing found.' => 'ค้นหาไม่พบ.', + 'Search in the project "%s"' => 'ค้นหาในโปรเจค "%s"', + 'Due date' => 'วันที่ครบกำหนด', + 'Others formats accepted: %s and %s' => 'รูปแบบอื่นที่ได้รับการยอมรับ: %s และ %s', + 'Description' => 'คำอธิบาย', + '%d comments' => '%d ความคิดเห็น', + '%d comment' => '%d ความคิดเห็น', + 'Email address invalid' => 'อีเมลผิด', + 'Your Google Account is not linked anymore to your profile.' => 'กูเกิลแอคเคาท์ไม่ได้เชื่อมต่อกับประวัติของคุณ', + 'Unable to unlink your Google Account.' => 'ไม่สามารถยกเลิกการเชื่อมต่อกับกูเกิลแอคเคาท์', + 'Google authentication failed' => 'การยืนยันกับกูเกิลผิดพลาด', + 'Unable to link your Google Account.' => 'ไม่สามารถเชื่อมต่อกับกูเกิลแอคเคาท์', + 'Your Google Account is linked to your profile successfully.' => 'กูเกลิแอคเคาท์เชื่อมต่อกับประวัติของคุณเรียบร้อยแล้ว', + 'Email' => 'อีเมล', + 'Link my Google Account' => 'เชื่อมต่อกับกูเกิลแอคเคาท์', + 'Unlink my Google Account' => 'ไม่เชื่อมต่อกับกูเกิลแอคเคาท์', + 'Login with my Google Account' => 'เข้าใช้ด้วยกูเกิลแอคเคาท์', + 'Project not found.' => 'หาโปรเจคไม่พบ', + 'Task #%d' => 'งานที่ %d', + 'Task removed successfully.' => 'ลบงานเรียบร้อยแล้ว', + 'Unable to remove this task.' => 'ไม่สามารถลบงานนี้', + 'Remove a task' => 'ลบงาาน', + 'Do you really want to remove this task: "%s"?' => 'คุณต้องการลบงาน "%s" ออกใช่หรือไม่?', + 'Assign automatically a color based on a category' => 'กำหนดสีอัตโนมัติขึ้นอยู่กับกลุ่ม', + 'Assign automatically a category based on a color' => 'กำหนดกลุ่มอัตโนมัติขึ้นอยู่กับสี', + 'Task creation or modification' => 'สร้างหรือแก้ไขงาน', + 'Category' => 'กลุ่ม', + 'Category:' => 'กลุ่ม:', + 'Categories' => 'กลุ่ม', + 'Category not found.' => 'ไม่พบกลุ่ม.', + 'Your category have been created successfully.' => 'สร้างกลุ่มเรียบร้อยแล้ว', + 'Unable to create your category.' => 'ไม่สามารถสร้างกลุ่มได้', + 'Your category have been updated successfully.' => 'ปรับปรุงกลุ่มเรียบร้อยแล้ว', + 'Unable to update your category.' => 'ไม่สามารถปรับปรุงกลุ่มได้', + 'Remove a category' => 'ลบกลุ่ม', + 'Category removed successfully.' => 'ลบกลุ่มเรียบร้อยแล้ว', + 'Unable to remove this category.' => 'ไม่สามารถลบกลุ่มได้', + 'Category modification for the project "%s"' => 'แก้ไขกลุ่มสำหรับโปรเจค "%s"', + 'Category Name' => 'ชื่อกลุ่ม', + 'Categories for the project "%s"' => 'กลุ่มสำหรับโปรเจค "%s"', + 'Add a new category' => 'เพิ่มกลุ่มใหม่', + 'Do you really want to remove this category: "%s"?' => 'คุณต้องการลบกลุ่ม "%s" ใช่หรือไม่?', + 'Filter by category' => 'กรองตามกลุ่ม', + 'All categories' => 'กลุ่มทั้งหมด', + 'No category' => 'ไม่มีกลุ่ม', + 'The name is required' => 'ต้องการชื่อ', + 'Remove a file' => 'ลบไฟล์', + 'Unable to remove this file.' => 'ไม่สามารถลบไฟล์ได้', + 'File removed successfully.' => 'ลบไฟล์เรียบร้อยแล้ว', + 'Attach a document' => 'แนบเอกสาร', + 'Do you really want to remove this file: "%s"?' => 'คุณต้องการลบไฟล์ "%s" ใช่หรือไม่?', + 'open' => 'เปิด', + 'Attachments' => 'แนบ', + 'Edit the task' => 'แก้ไขงาน', + 'Edit the description' => 'แก้ไขคำอธิบาย', + 'Add a comment' => 'เพิ่มความคิดเห็น', + 'Edit a comment' => 'แก้ไขความคิดเห็น', + 'Summary' => 'สรุป', + 'Time tracking' => 'การติดตามเวลา', + 'Estimate:' => 'ประมาณ:', + 'Spent:' => 'ใช้:', + 'Do you really want to remove this sub-task?' => 'คุณต้องการลบงานย่อยใช่หรือไม่?', + 'Remaining:' => 'เหลือ:', + 'hours' => 'ชั่วโมง', + 'spent' => 'ใช้', + 'estimated' => 'ประมาณ', + 'Sub-Tasks' => 'งานย่อย', + 'Add a sub-task' => 'เพิ่มงานย่อย', + // 'Original estimate' => '', + 'Create another sub-task' => 'สร้างงานย่อยอื่น', + 'Time spent' => 'ใช้เวลา', + 'Edit a sub-task' => 'แก้ไขงานย่อย', + 'Remove a sub-task' => 'ลบงานย่อย', + 'The time must be a numeric value' => 'เวลาที่ต้องเป็นตัวเลข', + 'Todo' => 'สิ่งที่ต้องทำ', + 'In progress' => 'กำลังดำเนินการ', + 'Sub-task removed successfully.' => 'ลบงานย่อยเรียบร้อยแล้ว', + 'Unable to remove this sub-task.' => 'ไม่สามารถลบงานย่อยได้', + 'Sub-task updated successfully.' => 'ปรับปรุงงานย่อย่่เรียบร้อยแล้ว', + 'Unable to update your sub-task.' => 'ไม่สามารถปรับปรุงานย่อยได้', + 'Unable to create your sub-task.' => 'ไม่สามารถสร้างงานย่อยได้', + 'Sub-task added successfully.' => 'เพิ่มงานย่อยเรียบร้อยแล้ว', + 'Maximum size: ' => 'ขนาดสูงสุด:', + 'Unable to upload the file.' => 'ไม่สามารถอัพโหลดไฟล์ได้', + 'Display another project' => 'แสดงโปรเจคอื่น', + 'Your GitHub account was successfully linked to your profile.' => 'กิทฮับแอคเคาท์เชื่อมต่อกับประวัติเรียบร้อยแล้ว', + 'Unable to link your GitHub Account.' => 'ไม่สามารถเชื่อมต่อกับกิทฮับแอคเคาท์ได้', + 'GitHub authentication failed' => 'การยืนยันกิทฮับผิดพลาด', + 'Your GitHub account is no longer linked to your profile.' => 'กิทฮับแอคเคาท์ไม่ได้มีการเชื่อมโยงไปยังโปรไฟล์ของคุณ', + 'Unable to unlink your GitHub Account.' => 'ไม่สามารถยกเลิกการเชื่อมต่อกิทฮับแอคเคาท์ได้', + 'Login with my GitHub Account' => 'เข้าใช้ด้วยกิทฮับแอคเคาท์', + 'Link my GitHub Account' => 'เชื่อมกับกิทฮับแอคเคาท์', + 'Unlink my GitHub Account' => 'ยกเลิกการเชื่อมกับกิทอับแอคเคาท์', + 'Created by %s' => 'สร้างโดย %s', + 'Last modified on %B %e, %Y at %k:%M %p' => 'แก้ไขล่าสุดวันที่ %B %e, %Y เวลา %k:%M %p', + 'Tasks Export' => 'ส่งออกงาน', + 'Tasks exportation for "%s"' => 'ส่งออกงานสำหรับ "%s"', + 'Start Date' => 'เริ่มวันที่', + 'End Date' => 'สิ้นสุดวันที่', + 'Execute' => 'ประมวลผล', + 'Task Id' => 'งาน ไอดี', + 'Creator' => 'ผู้สร้าง', + 'Modification date' => 'วันที่แก้ไข', + 'Completion date' => 'วันที่เสร็จสิ้น', + 'Clone' => 'เลียนแบบ', + 'Clone Project' => 'เลียนแบบโปรเจค', + 'Project cloned successfully.' => 'เลียนแบบโปรเจคเรียบร้อยแล้ว', + 'Unable to clone this project.' => 'ไม่สามารถเลียบแบบโปรเจคได้', + 'Email notifications' => 'อีเมลแจ้งเตือน', + 'Enable email notifications' => 'เปิดอีเมลแจ้งเตือน', + 'Task position:' => 'ตำแหน่งงาน', + 'The task #%d have been opened.' => 'งานที่ #%d ถุกเปิด', + 'The task #%d have been closed.' => 'งานที่ #%d ถูกปิด', + 'Sub-task updated' => 'ปรับปรุงงานย่อย', + 'Title:' => 'หัวเรื่อง:', + 'Status:' => 'สถานะ:', + 'Assignee:' => 'กำหนดให้:', + 'Time tracking:' => 'การติดตามเวลา:', + 'New sub-task' => 'งานย่อยใหม่', + 'New attachment added "%s"' => 'เพิ่มการแนบใหม่ "%s"', + 'Comment updated' => 'ปรับปรุงความคิดเห็น', + 'New comment posted by %s' => 'ความคิดเห็นใหม่จาก %s', + 'List of due tasks for the project "%s"' => 'รายการงานสำหรับโปรเจค "%s"', + 'New attachment' => 'การแนบใหม่', + 'New comment' => 'ความคิดเห็นใหม่', + 'New subtask' => 'งานย่อยใหม่', + 'Subtask updated' => 'ปรับปรุงงานย่อยแล้ว', + 'Task updated' => 'ปรับปรุงงานแล้ว', + 'Task closed' => 'ปิดงาน', + 'Task opened' => 'เปิดงาน', + '[%s][Due tasks]' => '[%s][งานปัจจุบัน]', + '[Kanboard] Notification' => '[Kanboard] แจ้งเตือน', + 'I want to receive notifications only for those projects:' => 'ฉันต้องการรับการแจ้งเตือนสำหรับโปรเจค:', + 'view the task on Kanboard' => 'แสดงงานบน Kanboard', + 'Public access' => 'การเข้าถึงสาธารณะ', + 'Category management' => 'การจัดการกลุ่ม', + 'User management' => 'การจัดการผู้ใช้', + 'Active tasks' => 'งานที่กำลังใช้งาน', + 'Disable public access' => 'ปิดการเข้าถึงสาธารณะ', + 'Enable public access' => 'เปิดการเข้าถึงสาธารณะ', + 'Active projects' => 'เปิดโปรเจค', + 'Inactive projects' => 'ปิดโปรเจค', + 'Public access disabled' => 'การเข้าถึงสาธารณะถูกปิด', + 'Do you really want to disable this project: "%s"?' => 'คุณต้องการปิดการใช้งานโปรเจคนี้: "%s" ใช่หรือไม่?', + 'Do you really want to duplicate this project: "%s"?' => 'คุณต้องการทำซ้ำโปรเจคนี้ "%s" ใช่หรือไม่?', + 'Do you really want to enable this project: "%s"?' => 'คุณต้องการเปิดการใช้งานโปรเจคนี้: "%s" ใช่หรือไม่?', + 'Project activation' => 'การ เปิด/ปิด ใช้งานโปรเจค', + 'Move the task to another project' => 'ย้ายงานไปโปรเจคอื่น', + 'Move to another project' => 'ย้ายไปโปรเจคอื่น', + 'Do you really want to duplicate this task?' => 'คุณต้องการทำซ้ำงานนี้ใช่หรือไม่?', + 'Duplicate a task' => 'ทำซ้ำงาน', + 'External accounts' => 'บัญชีภายนอก', + 'Account type' => 'ประเภทบัญชี', + 'Local' => 'ท้องถิ่น', + 'Remote' => 'รีโมท', + 'Enabled' => 'เปิดการใช้', + 'Disabled' => 'ปิดการใช้', + 'Google account linked' => 'เชื่อมกับกูเกิลแอคเคาท์', + 'Github account linked' => 'เชื่อมกับกิทฮับแอคเคาท์', + 'Username:' => 'ชื่อผู้ใช้:', + 'Name:' => 'ชื่อ:', + 'Email:' => 'อีเมล:', + 'Default project:' => 'โปรเจคเริ่มต้น:', + 'Notifications:' => 'แจ้งเตือน:', + 'Notifications' => 'การแจ้งเตือน', + 'Group:' => 'กลุ่ม:', + 'Regular user' => 'ผู้ใช้ปกติ:', + 'Account type:' => 'ชนิดบัญชี:', + 'Edit profile' => 'แก้ไขประวัติ', + 'Change password' => 'เปลี่ยนรหัสผ่าน', + 'Password modification' => 'แก้ไขรหัสผ่าน', + 'External authentications' => 'การยืนยันภายนอก', + 'Google Account' => 'กูเกิลแอคเคาท์', + 'Github Account' => 'กิทฮับแอคเคาท์', + 'Never connected.' => 'ไม่เชื่อมต่อ', + 'No account linked.' => 'แอคเคาท์ไม่มีการเชื่อม', + 'Account linked.' => 'แอคเคาท์เชื่อมต่อแล้ว', + 'No external authentication enabled.' => 'ไม่เปิดการใช้งานการยืนยันภายนอก', + 'Password modified successfully.' => 'แก้ไขรหัสผ่านเรียบร้อยแล้ว', + 'Unable to change the password.' => 'ไม่สามารถเปลี่ยนรหัสผ่านได้', + 'Change category for the task "%s"' => 'เปลี่ยนกลุ่มสำหรับงาน "%s"', + 'Change category' => 'เปลี่ยนกลุ่ม', + '%s updated the task %s' => '%s ปรับปรุงงานแล้ว %s', + '%s opened the task %s' => '%s เปิดงานแล้ว %s', + '%s moved the task %s to the position #%d in the column "%s"' => '%s ย้ายงานแล้ว %s ไปตำแหน่ง #%d ในคอลัมน์ "%s"', + '%s moved the task %s to the column "%s"' => '%s ย้ายงานแล้ว %s ไปคอลัมน์ "%s"', + '%s created the task %s' => '%s สร้างงานแล้ว %s', + '%s closed the task %s' => '%s ปิดงานแล้ว %s', + '%s created a subtask for the task %s' => '%s สร้างงานย่อยสำหรับงานแล้ว %s', + '%s updated a subtask for the task %s' => '%s ปรับปรุงงานย่อยสำหรับงานแล้ว %s', + 'Assigned to %s with an estimate of %s/%sh' => 'กำหนดให้ %s โดยประมาณแล้ว %s/%sh', + 'Not assigned, estimate of %sh' => 'ไม่กำหนดแล้ว, ประมาณเวลาที่ใช้ %s ชั่วโมง', + '%s updated a comment on the task %s' => '%s ปรับปรุงความคิดเห็นในงานแล้ว %s', + '%s commented the task %s' => '%s แสดงความคิดเห็นของงานแล้ว %s', + '%s\'s activity' => 'กิจกรรม %s', + 'No activity.' => 'ไม่มีกิจกรรม', + 'RSS feed' => 'RSS feed', + '%s updated a comment on the task #%d' => '%s ปรับปรุงความคิดเห็นบนงานแล้ว #%d', + '%s commented on the task #%d' => '%s แสดงความคิดเห็นบนงานแล้ว #%d', + '%s updated a subtask for the task #%d' => '%s ปรับปรุงงานย่อยสำหรับงานแล้ว #%d', + '%s created a subtask for the task #%d' => '%s สร้างงานย่อยสำหรับงานแล้ว #%d', + '%s updated the task #%d' => '%s ปรับปรุงงานแล้ว #%d', + '%s created the task #%d' => '%s สร้างงานแล้ว #%d', + '%s closed the task #%d' => '%s ปิดงานแล้ว #%d', + '%s open the task #%d' => '%s เปิดงานแล้ว #%d', + '%s moved the task #%d to the column "%s"' => '%s ย้ายงานแล้ว #%d ไปที่คอลัมน์ "%s"', + '%s moved the task #%d to the position %d in the column "%s"' => '%s ย้ายงานแล้ว #%d ไปตำแหน่ง %d ในคอลัมน์ที่ "%s"', + 'Activity' => 'กิจกรรม', + 'Default values are "%s"' => 'ค่าเริ่มต้น "%s"', + 'Default columns for new projects (Comma-separated)' => 'คอลัมน์เริ่มต้นสำหรับโปรเจคใหม่ (Comma-separated)', + 'Task assignee change' => 'เปลี่ยนการกำหนดบุคคลของงาน', + // '%s change the assignee of the task #%d to %s' => '', + // '%s changed the assignee of the task %s to %s' => '', + 'Column Change' => 'เปลี่ยนคอลัมน์', + 'Position Change' => 'เปลี่ยนตำแหน่ง', + 'Assignee Change' => 'เปลิ่ยนการกำหนด', + 'New password for the user "%s"' => 'รหัสผ่านใหม่สำหรับผู้ใช้ "%s"', + 'Choose an event' => 'เลือกเหตุการณ์', + // 'Github commit received' => '', + // 'Github issue opened' => '', + // 'Github issue closed' => '', + // 'Github issue reopened' => '', + // 'Github issue assignee change' => '', + // 'Github issue label change' => '', + // 'Create a task from an external provider' => '', + // 'Change the assignee based on an external username' => '', + // 'Change the category based on an external label' => '', + // 'Reference' => '', + // 'Reference: %s' => '', + 'Label' => 'ป้ายชื่อ', + 'Database' => 'ฐานข้อมูล', + 'About' => 'เกี่ยวกับ', + 'Database driver:' => 'เครื่องมือฐานขข้อมูล', + 'Board settings' => 'ตั้งค่าบอร์ด', + // 'URL and token' => '', + // 'Webhook settings' => '', + // 'URL for task creation:' => '', + // 'Reset token' => '', + // 'API endpoint:' => '', + 'Refresh interval for private board' => 'ระยะรีเฟรชบอร์ดส่วนตัว', + 'Refresh interval for public board' => 'ระยะรีเฟรชบอร์ดสาธารณะ', + 'Task highlight period' => 'ช่วงเวลาไฮไลต์งาน', + 'Period (in second) to consider a task was modified recently (0 to disable, 2 days by default)' => 'ช่วงเวลา (เป็นวินาที) ใช้ในการตัดสินใจว่าเป็นการแก้ไขเร็วๆ นี้ (0 ไม่ใช้งาน, ค่าเริ่มต้น 2 วัน)', + 'Frequency in second (60 seconds by default)' => 'ความถี่ (ค่าเริ่มต้นทุก 60 วินาที) ', + 'Frequency in second (0 to disable this feature, 10 seconds by default)' => 'ความถี่ (0 ไม่ใช้คุณลักษณะนี้, ค่าเริ่มต้นทุก 10 วินาที)', + // 'Application URL' => '', + 'Example: http://example.kanboard.net/ (used by email notifications)' => 'ตัวอย่าง: http://example.kanboard.net/ (ถูกใช้ในการแจ้งเตือนทางอีเมล์)', + // 'Token regenerated.' => '', + 'Date format' => 'รูปแบบวันที่', + // 'ISO format is always accepted, example: "%s" and "%s"' => '', + 'New private project' => 'เพิ่มโปรเจคส่วนตัวใหม่', + 'This project is private' => 'โปรเจคนี้เป็นโปรเจคส่วนตัว', + // 'Type here to create a new sub-task' => '', + 'Add' => 'เพิ่ม', + 'Estimated time: %s hours' => 'เวลาเฉลี่ย: %s ชั่วโมง', + 'Time spent: %s hours' => 'ใช้เวลาไป %s ชม.', + 'Started on %B %e, %Y' => 'เริ่ม %B %e, %Y', + 'Start date' => 'เริ่มวันที่', + 'Time estimated' => 'เวลาโดยประมาณ', + 'There is nothing assigned to you.' => 'ไม่มีอะไรกำหนดให้คุณ', + 'My tasks' => 'งานของฉัน', + 'Activity stream' => 'กิจกรรมที่เกิดขึ้น', + 'Dashboard' => 'แดชบอร์ด', + 'Confirmation' => 'ยืนยันรหัสผ่าน', + 'Allow everybody to access to this project' => 'อนุญาตให้ทุกคนเข้าถึงโปรเจคนี้', + 'Everybody have access to this project.' => 'ทุกคนสามารถเข้าถึงโปรเจคนี้', + // 'Webhooks' => '', + // 'API' => '', + 'Integration' => 'การใช้งานร่วมกัน', + // 'Github webhooks' => '', + // 'Help on Github webhooks' => '', + // 'Create a comment from an external provider' => '', + // 'Github issue comment created' => '', + 'Configure' => 'การตั้งค่า', + 'Project management' => 'การจัดการโปรเจค', + 'My projects' => 'โปรเจคของฉัน', + 'Columns' => 'คอลัมน์', + 'Task' => 'งาน', + 'Your are not member of any project.' => 'คุณไม่ได้เป็นสมาชิกของโปรเจค', + 'Percentage' => 'เปอร์เซ็นต์', + 'Number of tasks' => 'จำนวนงาน', + 'Task distribution' => 'การกระจายงาน', + 'Reportings' => 'รายงาน', + // 'Task repartition for "%s"' => '', + 'Analytics' => 'การวิเคราะห์', + 'Subtask' => 'งานย่อย', + 'My subtasks' => 'งานย่อยของฉัน', + 'User repartition' => 'การแบ่งงานของผู้ใช้', + 'User repartition for "%s"' => 'การแบ่งงานของผู้ใช้ "%s"', + 'Clone this project' => 'เลียนแบบโปรเจคนี้', + 'Column removed successfully.' => 'ลบคอลัมน์สำเร็จ', + 'Edit Project' => 'แก้ไขโปรเจค', + // 'Github Issue' => '', + 'Not enough data to show the graph.' => 'ไม่มีข้อมูลแสดงเป็นกราฟ', + 'Previous' => 'ก่อนหน้า', + 'The id must be an integer' => 'ไอดีต้องเป็นตัวเลขจำนวนเต็ม', + 'The project id must be an integer' => 'ไอดีโปรเจคต้องเป็นตัวเลข', + 'The status must be an integer' => 'สถานะต้องเป็นตัวเลข', + 'The subtask id is required' => 'ต้องการงานย่อย', + 'The subtask id must be an integer' => 'ไอดีงานย่อยต้องเป็นตัวเลข', + 'The task id is required' => 'ต้องการไอดีงาน', + 'The task id must be an integer' => 'ไอดีงานต้องเป็นตัวเลข', + 'The user id must be an integer' => 'ไอดีผู้ใช้ต้องเป็นตัวเลข', + 'This value is required' => 'ต้องการค่านี้', + 'This value must be numeric' => 'ค่านี้ต้องเป็นตัวเลข', + 'Unable to create this task.' => 'ไม่สามารถสร้างงานนี้', + 'Cumulative flow diagram' => 'แผนภาพงานสะสม', + 'Cumulative flow diagram for "%s"' => 'แผนภาพงานสะสม "%s"', + 'Daily project summary' => 'สรุปโปรเจครายวัน', + 'Daily project summary export' => 'ส่งออกสรุปโปรเจครายวัน', + 'Daily project summary export for "%s"' => 'ส่งออกสรุปโปรเจครายวันสำหรับ "%s"', + 'Exports' => 'ส่งออก', + 'This export contains the number of tasks per column grouped per day.' => 'การส่งออกนี้เป็นการนับจำนวนงานในแต่ละคอลัมน์ในแต่ละวัน', + 'Nothing to preview...' => 'ไม่มีพรีวิว...', + 'Preview' => 'พรีวิว', + 'Write' => 'เขียน', + 'Active swimlanes' => 'สวิมเลนพร้อมใช้งาน', + 'Add a new swimlane' => 'เพิ่มสวิมเลนใหม่', + 'Change default swimlane' => 'เปลี่ยนสวิมเลนเริ่มต้น', + 'Default swimlane' => 'สวิมเลนเริ่มต้น', + 'Do you really want to remove this swimlane: "%s"?' => 'คุณต้องการลบสวิมเลนนี้ : "%s"?', + 'Inactive swimlanes' => 'สวิมเลนไม่ทำงาน', + 'Set project manager' => 'กำหนดผู้จัดการโปรเจค', + 'Set project member' => 'กำหนดสมาชิกโปรเจค', + 'Remove a swimlane' => 'ลบสวิมเลน', + 'Rename' => 'เปลี่ยนชื่อ', + 'Show default swimlane' => 'แสดงสวิมเลนเริ่มต้น', + 'Swimlane modification for the project "%s"' => 'แก้ไขสวิมเลนสำหรับโปรเจค "%s"', + 'Swimlane not found.' => 'หาสวิมเลนไม่พบ', + 'Swimlane removed successfully.' => 'ลบสวิมเลนเรียบร้อยแล้ว', + 'Swimlanes' => 'สวิมเลน', + 'Swimlane updated successfully.' => 'ปรับปรุงสวิมเลนเรียบร้อยแล้ว', + 'The default swimlane have been updated successfully.' => 'สวิมเลนเริ่มต้นปรับปรุงเรียบร้อยแล้ว', + 'Unable to create your swimlane.' => 'ไม่สามารถสร้างสวิมเลนของคุณได้', + 'Unable to remove this swimlane.' => 'ไม่สามารถลบสวิมเลนนี้', + 'Unable to update this swimlane.' => 'ไม่สามารถปรับปรุงสวิมเลนนี้', + 'Your swimlane have been created successfully.' => 'สวิมเลนของคุณถูกสร้างเรียบร้อยแล้ว', + 'Example: "Bug, Feature Request, Improvement"' => 'ตัวอย่าง: "Bug, Feature Request, Improvement"', + 'Default categories for new projects (Comma-separated)' => 'ค่าเริ่มต้นกลุ่มสำหรับโปรเจคใหม่ (Comma-separated)', + // 'Gitlab commit received' => '', + // 'Gitlab issue opened' => '', + // 'Gitlab issue closed' => '', + // 'Gitlab webhooks' => '', + // 'Help on Gitlab webhooks' => '', + 'Integrations' => 'การใช้ร่วมกัน', + 'Integration with third-party services' => 'การใช้งานร่วมกับบริการ third-party', + // 'Role for this project' => '', + 'Project manager' => 'ผู้จัดการโปรเจค', + 'Project member' => 'สมาชิกโปรเจค', + 'A project manager can change the settings of the project and have more privileges than a standard user.' => 'ผู้จัดการโปรเจคสามารถตั้งค่าของโปรเจคและมีสิทธิ์มากกว่าผู้ใช้ทั่วไป', + // 'Gitlab Issue' => '', + 'Subtask Id' => 'รหัสงานย่อย', + 'Subtasks' => 'งานย่อย', + 'Subtasks Export' => 'ส่งออก งานย่อย', + 'Subtasks exportation for "%s"' => 'ส่งออกงานย่อยสำหรับ "%s"', + 'Task Title' => 'ชื่องาน', + 'Untitled' => 'ไม่มีชื่อ', + 'Application default' => 'แอพพลิเคชันเริ่มต้น', + 'Language:' => 'ภาษา:', + 'Timezone:' => 'เขตเวลา:', + 'All columns' => 'คอลัมน์ทั้งหมด', + 'Calendar for "%s"' => 'ปฏิทินสำหรับ "%s"', + 'Filter by column' => 'กรองโดยคอลัมน์', + 'Filter by status' => 'กรองโดยสถานะ', + 'Calendar' => 'ปฏิทิน', + 'Next' => 'ต่อไป', + // '#%d' => '', + 'Filter by color' => 'กรองโดยสี', + 'Filter by swimlane' => 'กรองโดยสวิมเลน', + 'All swimlanes' => 'สวิมเลนทั้งหมด', + 'All colors' => 'สีทั้งหมด', + 'All status' => 'สถานะทั้งหมด', + 'Add a comment logging moving the task between columns' => 'เพิ่มความคิดเห็นที่เป็น log เมื่อเปลี่ยนคอลัมน์', + 'Moved to column %s' => 'เคลื่อนไปคอลัมน์ %s', + 'Change description' => 'เปลี่ยนคำอธิบาย', + 'User dashboard' => 'ผู้ใช้แดชบอร์ด', + 'Allow only one subtask in progress at the same time for a user' => 'อนุญาตให้ทำงานย่อยได้เพียงงานเดียวต่อหนึ่งคนในเวลาเดียวกัน', + 'Edit column "%s"' => 'แก้ไขคอลัมน์ "%s"', + 'Enable time tracking for subtasks' => 'สามารถติดตามเวลาของงานย่อย', + 'Select the new status of the subtask: "%s"' => 'เลือกสถานะใหม่ของงานย่อย', + 'Subtask timesheet' => 'เวลางานย่อย', + 'There is nothing to show.' => 'ไม่มีที่ต้องแสดง', + 'Time Tracking' => 'ติดตามเวลา', + 'You already have one subtask in progress' => 'คุณมีหนึ่งงานย่อยที่กำลังทำงาน', + // 'Which parts of the project do you want to duplicate?' => '', + 'Change dashboard view' => 'เปลี่ยนมุมมองแดชบอร์ด', + 'Show/hide activities' => 'แสดง/ซ่อน กิจกรรม', + 'Show/hide projects' => 'แสดง/ซ่อน โปรเจค', + 'Show/hide subtasks' => 'แสดง/ซ่อน งานย่อย', + 'Show/hide tasks' => 'แสดง/ซ่อน งาน', + //'Disable login form' => '', + 'Show/hide calendar' => 'แสดง/ซ่อน ปฎิทิน', + 'User calendar' => 'ปฏิทินผู้ใช้', + // 'Bitbucket commit received' => '', + // 'Bitbucket webhooks' => '', + // 'Help on Bitbucket webhooks' => '', + 'Start' => 'เริ่ม', + 'End' => 'จบ', + 'Task age in days' => 'อายุงาน', + 'Days in this column' => 'วันในคอลัมน์นี้', + // '%dd' => '', + 'Add a link' => 'เพิ่มลิงค์', + 'Add a new link' => 'เพิ่มลิงค์ใหม่', + 'Do you really want to remove this link: "%s"?' => 'คุณต้องการลบลิงค์นี้: "%s"?', + //'Do you really want to remove this link with task #%d?' => '', + 'Field required' => 'ต้องใส่', + 'Link added successfully.' => 'เพิ่มลิงค์เรียบร้อยแล้ว', + 'Link updated successfully.' => 'ปรับปรุงลิงค์เรียบร้อยแล้ว', + 'Link removed successfully.' => 'ลบลิงค์เรียบร้อยแล้ว', + 'Link labels' => 'ป้ายลิงค์', + 'Link modification' => 'แก้ไขลิงค์', + 'Links' => 'ลิงค์', + 'Link settings' => 'ตั้งค่าลิงค์', + 'Opposite label' => 'ป้ายชื่อตรงข้าม', + 'Remove a link' => 'ลบลิงค์', + 'Task\'s links' => 'ลิงค', + 'The labels must be different' => 'ป้ายชื่อต้องต่างกัน', + 'There is no link.' => 'ไม่มีลิงค์', + 'This label must be unique' => 'ป้ายชื่อต้องไม่ซ้ำกัน', + 'Unable to create your link.' => 'ไม่สามารถสร้างลิงค์ของคุณ', + 'Unable to update your link.' => 'ไม่สามารถปรับปรุงลิงค์ของคุณ', + 'Unable to remove this link.' => 'ไม่สามารถลบลิงค์นี้', + 'relates to' => 'เกี่ยวข้องกับ', + 'blocks' => 'ห้าม', + 'is blocked by' => 'ถูกห้ามด้วย', + 'duplicates' => 'ซ้ำกัน', + 'is duplicated by' => 'ถูกทำซ้ำโดย', + 'is a child of' => 'เป็นลูกของ', + 'is a parent of' => 'เป็นพ่อแม่ของ', + 'targets milestone' => 'เป้าหมาย', + 'is a milestone of' => 'เป็นเป้าหมายของ', + 'fixes' => 'เจาะจง', + 'is fixed by' => 'ถูกเจาะจงด้วย', + 'This task' => 'งานนี้', + // '<1h' => '', + // '%dh' => '', + // '%b %e' => '', + 'Expand tasks' => 'ขยายงาน', + 'Collapse tasks' => 'ย่องาน', + 'Expand/collapse tasks' => 'ขยาย/ย่อ งาน', + 'Close dialog box' => 'ปิดกล่องข้อความ', + 'Submit a form' => 'ยอมรับฟอร์ม', + 'Board view' => 'มุมมองบอร์ด', + 'Keyboard shortcuts' => 'คีย์ลัด', + 'Open board switcher' => 'เปิดการสลับบอร์ด', + 'Application' => 'แอพพลิเคชัน', + 'Filter recently updated' => 'ตัวกรองที่ปรับปรุงเร็วๆ นี้', + 'since %B %e, %Y at %k:%M %p' => 'เริ่ม %B %e, %Y เวลา %k:%M %p', + 'More filters' => 'ตัวกรองเพิ่มเติม', + 'Compact view' => 'มุมมองพอดี', + 'Horizontal scrolling' => 'เลื่อนตามแนวนอน', + 'Compact/wide view' => 'พอดี/กว้าง มุมมอง', + 'No results match:' => 'ไม่มีผลลัพท์ที่ตรง', + 'Remove hourly rate' => 'ลบอัตรารายชั่วโมง', + 'Do you really want to remove this hourly rate?' => 'คุณต้องการลบอัตรารายชั่วโมง?', + 'Hourly rates' => 'อัตรารายชั่วโมง', + 'Hourly rate' => 'อัตรารายชั่วโมง', + 'Currency' => 'สกุลเงิน', + 'Effective date' => 'วันที่จ่าย', + 'Add new rate' => 'เพิ่มอัตราใหม่', + 'Rate removed successfully.' => 'ลบอัตราเรียบร้อยแล้ว', + 'Unable to remove this rate.' => 'ไม่สามารถลบอัตรานี้ได้', + 'Unable to save the hourly rate.' => 'ไม่สามารถบันทึกอัตรารายชั่วโมง', + 'Hourly rate created successfully.' => 'อัตรารายชั่วโมงสร้างเรียบร้อยแล้ว', + 'Start time' => 'เวลาเริ่มต้น', + 'End time' => 'เวลาจบ', + 'Comment' => 'ความคิดเห็น', + 'All day' => 'ทั้งวัน', + 'Day' => 'วัน', + 'Manage timetable' => 'จัดการตารางเวลา', + 'Overtime timetable' => 'ตารางเวลาโอที', + 'Time off timetable' => 'ตารางเวลาวันหยุด', + 'Timetable' => 'ตารางเวลา', + 'Work timetable' => 'ตารางเวลางาน', + 'Week timetable' => 'ตารางเวลาสัปดาห์', + 'Day timetable' => 'ตารางเวลาวัน', + 'From' => 'จาก', + 'To' => 'ถึง', + 'Time slot created successfully.' => 'สร้างช่วงเวลาเรียบร้อยแล้ว', + 'Unable to save this time slot.' => 'ไม่สามารถบันทึกช่วงเวลานี้', + 'Time slot removed successfully.' => 'ลบช่วงเวลาเรียบร้อยแล้ว', + 'Unable to remove this time slot.' => 'ไม่สามารถลบช่วงเวลาได้', + 'Do you really want to remove this time slot?' => 'คุณต้องการลบช่วงเวลานี้?', + 'Remove time slot' => 'ลบช่วงเวลา', + 'Add new time slot' => 'เพิ่มช่วงเวลาใหม่', + // 'This timetable is used when the checkbox "all day" is checked for scheduled time off and overtime.' => '', + 'Files' => 'ไฟล์', + 'Images' => 'รูปภาพ', + 'Private project' => 'โปรเจคส่วนตัว', + 'Amount' => 'จำนวนเงิน', + // 'AUD - Australian Dollar' => '', + 'Budget' => 'งบประมาณ', + 'Budget line' => 'วงเงินงบประมาณ', + 'Budget line removed successfully.' => 'ลบวงเงินประมาณเรียบร้อยแล้ว', + 'Budget lines' => 'วงเงินงบประมาณ', + // 'CAD - Canadian Dollar' => '', + // 'CHF - Swiss Francs' => '', + 'Cost' => 'มูลค่า', + 'Cost breakdown' => 'รายละเอียดค่าใช้จ่าย', + // 'Custom Stylesheet' => '', + 'download' => 'ดาวน์โหลด', + 'Do you really want to remove this budget line?' => 'คุณต้องการลบวงเงินงบประมาณนี้?', + // 'EUR - Euro' => '', + 'Expenses' => 'รายจ่าย', + // 'GBP - British Pound' => '', + // 'INR - Indian Rupee' => '', + // 'JPY - Japanese Yen' => '', + 'New budget line' => 'วงเงินงบประมาณใหม่', + // 'NZD - New Zealand Dollar' => '', + 'Remove a budget line' => 'ลบวงเงินประมาณ', + 'Remove budget line' => 'ลบวงเงินประมาณ', + // 'RSD - Serbian dinar' => '', + 'The budget line have been created successfully.' => 'สร้างวงเงินงบประมาณเรียบร้อยแล้ว', + 'Unable to create the budget line.' => 'ไม่สามารถสร้างวงเงินงบประมาณได้', + 'Unable to remove this budget line.' => 'ไม่สามารถลบวงเงินงบประมาณนี้', + // 'USD - US Dollar' => '', + 'Remaining' => 'เหลืออยู่', + 'Destination column' => 'คอลัมน์เป้าหมาย', + 'Move the task to another column when assigned to a user' => 'ย้ายงานไปคอลัมน์อื่นเมื่อกำหนดบุคคลรับผิดชอบ', + 'Move the task to another column when assignee is cleared' => 'ย้ายงานไปคอลัมน์อื่นเมื่อไม่กำหนดบุคคลรับผิดชอบ', + 'Source column' => 'คอลัมน์ต้นทาง', + // 'Show subtask estimates (forecast of future work)' => '', + 'Transitions' => 'การเปลี่ยนคอลัมน์', + 'Executer' => 'ผู้ประมวลผล', + 'Time spent in the column' => 'เวลาที่ใช้ในคอลัมน์', + 'Task transitions' => 'การเปลี่ยนคอลัมน์งาน', + 'Task transitions export' => 'ส่งออกการเปลี่ยนคอลัมน์งาน', + // 'This report contains all column moves for each task with the date, the user and the time spent for each transition.' => '', + 'Currency rates' => 'อัตราแลกเปลี่ยน', + 'Rate' => 'อัตรา', + // 'Change reference currency' => '', + 'Add a new currency rate' => 'เพิ่มอัตราแลกเปลี่ยนเงินตราใหม่', + 'Currency rates are used to calculate project budget.' => 'อัตราแลกเปลี่ยนเงินตราถูกใช้ในการคำนวณงบประมาณของโปรเจค', + // 'Reference currency' => '', + // 'The currency rate have been added successfully.' => '', + // 'Unable to add this currency rate.' => '', + 'Send notifications to a Slack channel' => 'ส่งการแจ้งเตือนไปทาง Slack channel', + // 'Webhook URL' => '', + // 'Help on Slack integration' => '', + // '%s remove the assignee of the task %s' => '', + // 'Send notifications to Hipchat' => '', + // 'API URL' => '', + // 'Room API ID or name' => '', + // 'Room notification token' => '', + // 'Help on Hipchat integration' => '', + 'Enable Gravatar images' => 'สามารถใช้งานภาพ Gravatar', + 'Information' => 'ข้อมูลสารสนเทศ', + // 'Check two factor authentication code' => '', + // 'The two factor authentication code is not valid.' => '', + // 'The two factor authentication code is valid.' => '', + 'Code' => 'รหัส', + // 'Two factor authentication' => '', + 'Enable/disable two factor authentication' => 'เปิด/ปิด การยืนยันตัวตนสองชั้น', + // 'This QR code contains the key URI: ' => '', + // 'Save the secret key in your TOTP software (by example Google Authenticator or FreeOTP).' => '', + 'Check my code' => 'ตรวจสอบรหัสของฉัน', + 'Secret key: ' => 'กุญแจลับ', + 'Test your device' => 'ทดสอบอุปกรณ์ของคุณ', + 'Assign a color when the task is moved to a specific column' => 'กำหนดสีเมื่องานถูกย้ายไปคอลัมน์ที่กำหนดไว้', + // '%s via Kanboard' => '', + // 'uploaded by: %s' => '', + // 'uploaded on: %s' => '', + 'size: %s' => 'ขนาด: %s', + 'Burndown chart for "%s"' => 'แผนภูมิงานกับเวลา "%s"', + 'Burndown chart' => 'แผนภูมิงานกับเวลา', + // 'This chart show the task complexity over the time (Work Remaining).' => '', + // 'Screenshot taken %s' => '', + 'Add a screenshot' => 'เพิ่ม screenshot', + // 'Take a screenshot and press CTRL+V or ⌘+V to paste here.' => '', + 'Screenshot uploaded successfully.' => 'อัพโหลด screenshot เรียบร้อยแล้ว', + // 'SEK - Swedish Krona' => '', + // 'The project identifier is an optional alphanumeric code used to identify your project.' => '', + // 'Identifier' => '', + // 'Postmark (incoming emails)' => '', + // 'Help on Postmark integration' => '', + // 'Mailgun (incoming emails)' => '', + // 'Help on Mailgun integration' => '', + // 'Sendgrid (incoming emails)' => '', + // 'Help on Sendgrid integration' => '', + // 'Disable two factor authentication' => '', + // 'Do you really want to disable the two factor authentication for this user: "%s"?' => '', + 'Edit link' => 'แก้ไขลิงค์', + 'Start to type task title...' => 'พิมพ์ชื่องาน', + 'A task cannot be linked to itself' => 'งานไม่สามารถลิงค์ตัวเอง', + // 'The exact same link already exists' => '', + 'Recurrent task is scheduled to be generated' => 'งานแบบวนลูปถูกสร้างตามที่กำหนดไว้', + 'Recurring information' => 'รายละเอียดการวนลูป', + 'Score' => 'คะแนน', + // 'The identifier must be unique' => '', + // 'This linked task id doesn\'t exists' => '', + 'This value must be alphanumeric' => 'ค่านี้ต้องเป็นตัวอักษร', + 'Edit recurrence' => 'แก้ไขการวนลูป', + 'Generate recurrent task' => 'สร้างงานที่เป็นวนลูป', + 'Trigger to generate recurrent task' => 'จะสร้างงานแบบวนลูป', + // 'Factor to calculate new due date' => '', + // 'Timeframe to calculate new due date' => '', + // 'Base date to calculate new due date' => '', + // 'Action date' => '', + // 'Base date to calculate new due date: ' => '', + 'This task has created this child task: ' => 'งานนี้สร้างงานลูกคือ', + 'Day(s)' => 'วัน', + // 'Existing due date' => '', + // 'Factor to calculate new due date: ' => '', + 'Month(s)' => 'เดือน', + 'Recurrence' => 'วนลูป', + 'This task has been created by: ' => 'งานนี้ถูกสร้างโดย', + 'Recurrent task has been generated:' => 'งานแบบวนลูปถูกสร้าง', + // 'Timeframe to calculate new due date: ' => '', + 'Trigger to generate recurrent task: ' => 'จะสร้างงานแบบวนลูป', + 'When task is closed' => 'เมื่อปิดงาน', + 'When task is moved from first column' => 'เมื่องานถูกย้ายจากคอลัมน์แรก', + 'When task is moved to last column' => 'เมื่องานถูกย้ายไปคอลัมน์สุดท้าย', + 'Year(s)' => 'ปี', + // 'Jabber (XMPP)' => '', + // 'Send notifications to Jabber' => '', + // 'XMPP server address' => '', + // 'Jabber domain' => '', + // 'Jabber nickname' => '', + // 'Multi-user chat room' => '', + // 'Help on Jabber integration' => '', + // 'The server address must use this format: "tcp://hostname:5222"' => '', + 'Calendar settings' => 'ตั้งค่าปฏิทิน', + 'Project calendar view' => 'มุมมองปฏิทินของโปรเจค', + 'Project settings' => 'ตั้งค่าโปรเจค', + 'Show subtasks based on the time tracking' => 'แสดงงานย่อยในการติดตามเวลา', + 'Show tasks based on the creation date' => 'แสดงงานจากวันที่สร้าง', + 'Show tasks based on the start date' => 'แสดงงานจากวันที่เริ่ม', + 'Subtasks time tracking' => 'การติดตามเวลางานย่อย', + 'User calendar view' => 'มุมมองปฏิทินของผู้ใช้', + 'Automatically update the start date' => 'ปรับปรุงวันที่เริ่มอัตโนมมัติ', + // 'iCal feed' => '', + // 'Preferences' => '', + 'Security' => 'ความปลอดภัย', + // 'Two factor authentication disabled' => '', + // 'Two factor authentication enabled' => '', + 'Unable to update this user.' => 'ไม่สามารถปรับปรุงผู้ใช้นี้', + 'There is no user management for private projects.' => 'ไม่มีการจัดการผู้ใช้สำหรับโปรเจคส่วนตัว', +); diff --git a/app/Template/notification/comment_creation.php b/app/Template/notification/comment_create.php index 747c4f43..747c4f43 100644 --- a/app/Template/notification/comment_creation.php +++ b/app/Template/notification/comment_create.php diff --git a/app/Template/notification/file_creation.php b/app/Template/notification/file_create.php index 63f7d1b8..63f7d1b8 100644 --- a/app/Template/notification/file_creation.php +++ b/app/Template/notification/file_create.php diff --git a/app/Template/notification/subtask_creation.php b/app/Template/notification/subtask_create.php index e1c62b73..e1c62b73 100644 --- a/app/Template/notification/subtask_creation.php +++ b/app/Template/notification/subtask_create.php diff --git a/app/Template/notification/task_creation.php b/app/Template/notification/task_create.php index 0905d3f5..1d834d44 100644 --- a/app/Template/notification/task_creation.php +++ b/app/Template/notification/task_create.php @@ -9,14 +9,14 @@ <strong><?= dt('Must be done before %B %e, %Y', $task['date_due']) ?></strong> </li> <?php endif ?> - <?php if ($task['creator_username']): ?> + <?php if (! empty($task['creator_username'])): ?> <li> <?= t('Created by %s', $task['creator_name'] ?: $task['creator_username']) ?> </li> <?php endif ?> <li> <strong> - <?php if ($task['assignee_username']): ?> + <?php if (! empty($task['assignee_username'])): ?> <?= t('Assigned to %s', $task['assignee_name'] ?: $task['assignee_username']) ?> <?php else: ?> <?= t('There is nobody assigned') ?> @@ -28,7 +28,7 @@ <strong><?= $this->e($task['column_title']) ?></strong> </li> <li><?= t('Task position:').' '.$this->e($task['position']) ?></li> - <?php if ($task['category_name']): ?> + <?php if (! empty($task['category_name'])): ?> <li> <?= t('Category:') ?> <strong><?= $this->e($task['category_name']) ?></strong> </li> diff --git a/tests/units/NotificationTest.php b/tests/units/NotificationTest.php index 4421fd47..5a7a782c 100644 --- a/tests/units/NotificationTest.php +++ b/tests/units/NotificationTest.php @@ -2,10 +2,16 @@ require_once __DIR__.'/Base.php'; +use Model\TaskFinder; +use Model\TaskCreation; +use Model\Subtask; +use Model\Comment; use Model\User; +use Model\File; use Model\Project; use Model\ProjectPermission; use Model\Notification; +use Subscriber\NotificationSubscriber; class NotificationTest extends Base { @@ -230,7 +236,32 @@ class NotificationTest extends Base public function testGetMailContent() { $n = new Notification($this->container); - $this->assertNotEmpty($n->getMailContent('task.open', array('task' => array('id' => 2, 'title' => 'blah')))); + $p = new Project($this->container); + $tf = new TaskFinder($this->container); + $tc = new TaskCreation($this->container); + $s = new Subtask($this->container); + $c = new Comment($this->container); + $f = new File($this->container); + + $this->assertEquals(1, $p->create(array('name' => 'test'))); + $this->assertEquals(1, $tc->create(array('title' => 'test', 'project_id' => 1))); + $this->assertEquals(1, $s->create(array('title' => 'test', 'task_id' => 1))); + $this->assertEquals(1, $c->create(array('comment' => 'test', 'task_id' => 1, 'user_id' => 1))); + $this->assertEquals(1, $f->create(1, 'test', 'blah', false, 123)); + + $task = $tf->getDetails(1); + $subtask = $s->getById(1, true); + $comment = $c->getById(1); + $file = $c->getById(1); + + $this->assertNotEmpty($task); + $this->assertNotEmpty($subtask); + $this->assertNotEmpty($comment); + $this->assertNotEmpty($file); + + foreach (Subscriber\NotificationSubscriber::getSubscribedEvents() as $event => $values) { + $this->assertNotEmpty($n->getMailContent($event, array('task' => $task, 'comment' => $comment, 'subtask' => $subtask, 'file' => $file))); + } } public function testGetEmailSubject() diff --git a/tests/units/TaskDuplicationTest.php b/tests/units/TaskDuplicationTest.php index f991efd6..cd791312 100644 --- a/tests/units/TaskDuplicationTest.php +++ b/tests/units/TaskDuplicationTest.php @@ -548,7 +548,7 @@ class TaskDuplicationTest extends Base $this->assertNotEmpty($task); $this->assertEquals(Task::RECURRING_STATUS_PROCESSED, $task['recurrence_status']); $this->assertEquals(2, $task['recurrence_child']); - $this->assertEquals(1436561776, $task['date_due']); + $this->assertEquals(1436561776, $task['date_due'], '', 2); $task = $tf->getById(2); $this->assertNotEmpty($task); @@ -558,6 +558,6 @@ class TaskDuplicationTest extends Base $this->assertEquals(Task::RECURRING_BASEDATE_TRIGGERDATE, $task['recurrence_basedate']); $this->assertEquals(1, $task['recurrence_parent']); $this->assertEquals(2, $task['recurrence_factor']); - $this->assertEquals(strtotime('+2 days'), $task['date_due']); + $this->assertEquals(strtotime('+2 days'), $task['date_due'], '', 2); } } |