diff --git a/adminer/include/lang.inc.php b/adminer/include/lang.inc.php
index c14b7b82..4766992e 100644
--- a/adminer/include/lang.inc.php
+++ b/adminer/include/lang.inc.php
@@ -19,6 +19,7 @@ $langs = array(
'ko' => '한국어', // dalli - skcha67@gmail.com
'lt' => 'Lietuvių', // Paulius Leščinskas - http://www.lescinskas.lt
'nl' => 'Nederlands', // Maarten Balliauw - http://blog.maartenballiauw.be
+ 'no' => 'Norsk', // Iver Odin Kvello, mupublishing.com
'pl' => 'Polski', // Radosław Kowalewski - http://srsbiz.pl/
'pt' => 'Português', // André Dias
'pt-br' => 'Português (Brazil)', // Gian Live - gian@live.com, Davi Alexandre davi@davialexandre.com.br, RobertoPC - http://www.robertopc.com.br
@@ -31,10 +32,9 @@ $langs = array(
'th' => 'ภาษาไทย', // Panya Saraphi, elect.tu@gmail.com - http://www.opencart2u.com/
'tr' => 'Türkçe', // Bilgehan Korkmaz - turktron.com
'uk' => 'Українська', // Valerii Kryzhov
+ 'vi' => 'Tiếng Việt', // Giang Manh @ manhgd google mail
'zh' => '简体中文', // Mr. Lodar, vea - urn2.net - vea.urn2@gmail.com
'zh-tw' => '繁體中文', // http://tzangms.com
- 'no' => 'Norsk', // Iver Odin Kvello, mupublishing.com
- 'vi' => 'Tiếng Việt', // Giang Manh @ manhgd google mail
);
/** Get current language
diff --git a/adminer/lang/vi.inc.php b/adminer/lang/vi.inc.php
index d4ffd76b..31c748d6 100644
--- a/adminer/lang/vi.inc.php
+++ b/adminer/lang/vi.inc.php
@@ -11,14 +11,14 @@ $translations = array(
'Logged as: %s' => 'Vào dưới tên: %s',
'Logout successful.' => 'Đã thoát xong.',
'Invalid credentials.' => 'Tài khoản sai.',
- 'Too many unsuccessful logins, try again in %d minute(s).' => array('Bạn gõ sai tài khoản quá nhiều lần, hãy thử lại sau %d phút nữa.', 'Bạn gõ sai tài khoản quá nhiều lần, hãy thử lại sau %d phút nữa.'),
- 'Master password expired. Implement %s method to make it permanent.' => 'Mật khẩu đã hết hạn. Thử cách làm để giữ cố định',
+ 'Too many unsuccessful logins, try again in %d minute(s).' => 'Bạn gõ sai tài khoản quá nhiều lần, hãy thử lại sau %d phút nữa.',
+ 'Master password expired. Implement %s method to make it permanent.' => 'Mật khẩu đã hết hạn. Thử cách làm để giữ cố định.',
'Language' => 'Ngôn ngữ',
- 'Invalid CSRF token. Send the form again.' => 'Mã kiểm tra CSRF sai, hãy nhập lại biểu mẫu',
+ 'Invalid CSRF token. Send the form again.' => 'Mã kiểm tra CSRF sai, hãy nhập lại biểu mẫu.',
'No extension' => 'Không có phần mở rộng',
- 'None of the supported PHP extensions (%s) are available.' => 'Bản cài đặt PHP thiếu hỗ trợ cho %s',
- 'Session support must be enabled.' => 'Cần phải bật session',
- 'Session expired, please login again.' => 'Phiên làm việc đã hết, hãy đăng nhập lại',
+ 'None of the supported PHP extensions (%s) are available.' => 'Bản cài đặt PHP thiếu hỗ trợ cho %s.',
+ 'Session support must be enabled.' => 'Cần phải bật session.',
+ 'Session expired, please login again.' => 'Phiên làm việc đã hết, hãy đăng nhập lại.',
'%s version: %s through PHP extension %s' => 'Phiên bản %s: %s (PHP extension: %s)',
'Refresh' => 'Làm mới',
@@ -27,9 +27,9 @@ $translations = array(
'Privileges' => 'Quyền truy cập',
'Create user' => 'Tạo người dùng',
- 'User has been dropped.' => 'Đã xoá người dùng',
- 'User has been altered.' => 'Đã sửa người dùng',
- 'User has been created.' => 'Đã tạo người dùng',
+ 'User has been dropped.' => 'Đã xoá người dùng.',
+ 'User has been altered.' => 'Đã sửa người dùng.',
+ 'User has been created.' => 'Đã tạo người dùng.',
'Hashed' => 'Mã hoá',
'Column' => 'Cột',
'Routine' => 'Hàm tích hợp',
@@ -37,16 +37,16 @@ $translations = array(
'Revoke' => 'Tước quyền',
'Process list' => 'Danh sách tiến trình',
- '%d process(es) have been killed.' => array('%d tiến trình đã dừng', '%d tiến trình đã dừng'),
+ '%d process(es) have been killed.' => '%d tiến trình đã dừng.',
'Kill' => 'Dừng',
'Variables' => 'Biến',
'Status' => 'Trạng thái',
'SQL command' => 'Câu lệnh SQL',
- '%d query(s) executed OK.' => array('%d câu lệnh đã chạy thành công', '%d câu lệnh đã chạy thành công'),
- 'Query executed OK, %d row(s) affected.' => array('Đã thực hiện xong, ảnh hưởng đến %d dòng', 'Đã thực hiện xong, ảnh hưởng đến %d dòng'),
- 'No commands to execute.' => 'Chẳng có gì để thực hiện!',
+ '%d query(s) executed OK.' => '%d câu lệnh đã chạy thành công.',
+ 'Query executed OK, %d row(s) affected.' => 'Đã thực hiện xong, ảnh hưởng đến %d dòng.',
+ 'No commands to execute.' => 'Chẳng có gì để thực hiện!.',
'Error in query' => 'Có lỗi trong câu lệnh',
'Execute' => 'Thực hiện',
'Stop on error' => 'Dừng khi có lỗi',
@@ -61,12 +61,12 @@ $translations = array(
'From server' => 'Dùng tệp trên máy chủ',
'Webserver file %s' => 'Tệp trên máy chủ',
'Run file' => 'Chạy tệp',
- 'File does not exist.' => 'Tệp không tồn tại',
- 'File uploads are disabled.' => 'Chức năng tải tệp lên đã bị cấm',
- 'Unable to upload a file.' => 'Không thể tải tệp lên',
+ 'File does not exist.' => 'Tệp không tồn tại.',
+ 'File uploads are disabled.' => 'Chức năng tải tệp lên đã bị cấm.',
+ 'Unable to upload a file.' => 'Không thể tải tệp lên.',
'Maximum allowed file size is %sB.' => 'Kích thước tệp tối đa là %sB.',
- 'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Dữ liệu tải lên/POST quá lớn. Hãy giảm kích thước tệp hoặc tăng cấu hình (hiện tại %s).',
- 'You can upload a big SQL file via FTP and import it from server.' => 'Bạn có thể tải tệp lên dùng FTP và nhập vào cơ sở dữ liệu',
+ 'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Dữ liệu tải lên/POST quá lớn. Hãy giảm kích thước tệp hoặc tăng cấu hình (hiện tại %s).',
+ 'You can upload a big SQL file via FTP and import it from server.' => 'Bạn có thể tải tệp lên dùng FTP và nhập vào cơ sở dữ liệu.',
'Export' => 'Xuất',
'Dump' => 'Sao lưu',
@@ -80,13 +80,13 @@ $translations = array(
'database' => 'cơ sở dữ liệu',
'Use' => 'Sử dụng',
'Select database' => 'Chọn CSDL',
- 'Invalid database.' => 'CSDL sai',
+ 'Invalid database.' => 'CSDL sai.',
'Create new database' => 'Tạo CSDL',
- 'Database has been dropped.' => 'CSDL đã bị xoá',
- 'Databases have been dropped.' => 'Các CSDL đã bị xoá',
- 'Database has been created.' => 'Đã tạo CSDL',
- 'Database has been renamed.' => 'Đã đổi tên CSDL',
- 'Database has been altered.' => 'Đã thay đổi CSDL',
+ 'Database has been dropped.' => 'CSDL đã bị xoá.',
+ 'Databases have been dropped.' => 'Các CSDL đã bị xoá.',
+ 'Database has been created.' => 'Đã tạo CSDL.',
+ 'Database has been renamed.' => 'Đã đổi tên CSDL.',
+ 'Database has been altered.' => 'Đã thay đổi CSDL.',
'Alter database' => 'Thay đổi CSDL',
'Create database' => 'Tạo CSDL',
'Database schema' => 'Cấu trúc CSDL',
@@ -110,29 +110,29 @@ $translations = array(
'Check' => 'Kiểm tra',
'Repair' => 'Sửa chữa',
'Truncate' => 'Làm rỗng',
- 'Tables have been truncated.' => 'Bảng đã bị làm rỗng',
+ 'Tables have been truncated.' => 'Bảng đã bị làm rỗng.',
'Move to other database' => 'Chuyển tới cơ sở dữ liệu khác',
'Move' => 'Chuyển đi',
- 'Tables have been moved.' => 'Bảng',
+ 'Tables have been moved.' => 'Bảng.',
'Copy' => 'Sao chép',
- 'Tables have been copied.' => 'Bảng đã được sao chép',
+ 'Tables have been copied.' => 'Bảng đã được sao chép.',
'Routines' => 'Routines',
- 'Routine has been called, %d row(s) affected.' => array('Đã chạy routine, thay đổi %d dòng', 'Đã chạy routine, thay đổi %d dòng'),
+ 'Routine has been called, %d row(s) affected.' => 'Đã chạy routine, thay đổi %d dòng.',
'Call' => 'Gọi',
'Parameter name' => 'Tham số',
'Create procedure' => 'Tạo lệnh',
'Create function' => 'Tạo hàm',
- 'Routine has been dropped.' => 'Đã xoá routine',
- 'Routine has been altered.' => 'Đã thay đổi routine',
- 'Routine has been created.' => 'Đã tạo routine',
+ 'Routine has been dropped.' => 'Đã xoá routine.',
+ 'Routine has been altered.' => 'Đã thay đổi routine.',
+ 'Routine has been created.' => 'Đã tạo routine.',
'Alter function' => 'Thay đổi hàm',
'Alter procedure' => 'Thay đổi thủ tục',
'Return type' => 'Giá trị trả về',
'Events' => 'Sự kiện',
- 'Event has been dropped.' => 'Đã xoá sự kiện',
- 'Event has been altered.' => 'Đã thay đổi sự kiện',
- 'Event has been created.' => 'Đã tạo sự kiện',
+ 'Event has been dropped.' => 'Đã xoá sự kiện.',
+ 'Event has been altered.' => 'Đã thay đổi sự kiện.',
+ 'Event has been created.' => 'Đã tạo sự kiện.',
'Alter event' => 'Sửa sự kiện',
'Create event' => 'Tạo sự kiện',
'At given time' => 'Vào thời gian xác định',
@@ -145,14 +145,14 @@ $translations = array(
'Tables' => 'Các bảng',
'Tables and views' => 'Bảng và khung nhìn',
'Table' => 'Bảng',
- 'No tables.' => 'Không có bảng nào',
+ 'No tables.' => 'Không có bảng nào.',
'Alter table' => 'Sửa bảng',
'Create table' => 'Tạo bảng',
- 'Table has been dropped.' => 'Bảng đã bị xoá',
- 'Tables have been dropped.' => 'Các bảng đã bị xoá',
- 'Tables have been optimized.' => 'Bảng đã được tối ưu',
- 'Table has been altered.' => 'Bảng đã thay đổi',
- 'Table has been created.' => 'Bảng đã được tạo',
+ 'Table has been dropped.' => 'Bảng đã bị xoá.',
+ 'Tables have been dropped.' => 'Các bảng đã bị xoá.',
+ 'Tables have been optimized.' => 'Bảng đã được tối ưu.',
+ 'Table has been altered.' => 'Bảng đã thay đổi.',
+ 'Table has been created.' => 'Bảng đã được tạo.',
'Table name' => 'Tên bảng',
'Show structure' => 'Hiện cấu trúc',
'engine' => 'cơ chế lưu trữ',
@@ -171,7 +171,7 @@ $translations = array(
'Move up' => 'Chuyển lên trên',
'Move down' => 'Chuyển xuống dưới',
'Remove' => 'Xoá',
- 'Maximum number of allowed fields exceeded. Please increase %s.' => 'Thiết lập %s cần tăng thêm. (Đã vượt giới hạnố trường tối đa cho phép trong một biểu mẫu)',
+ 'Maximum number of allowed fields exceeded. Please increase %s.' => 'Thiết lập %s cần tăng thêm. (Đã vượt giới hạnố trường tối đa cho phép trong một biểu mẫu).',
'Partition by' => 'Phân chia bằng',
'Partitions' => 'Phân hoạch',
@@ -179,14 +179,14 @@ $translations = array(
'Values' => 'Giá trị',
'View' => 'Khung nhìn',
- 'View has been dropped.' => 'Khung nhìn đã bị xoá',
- 'View has been altered.' => 'Khung nhìn đã được sửa',
- 'View has been created.' => 'Khung nhìn đã được tạo',
+ 'View has been dropped.' => 'Khung nhìn đã bị xoá.',
+ 'View has been altered.' => 'Khung nhìn đã được sửa.',
+ 'View has been created.' => 'Khung nhìn đã được tạo.',
'Alter view' => 'Sửa khung nhìn',
'Create view' => 'Tạo khung nhìn',
'Indexes' => 'Chỉ mục',
- 'Indexes have been altered.' => 'Chỉ mục đã được sửa',
+ 'Indexes have been altered.' => 'Chỉ mục đã được sửa.',
'Alter indexes' => 'Sửa chỉ mục',
'Add next' => 'Thêm tiếp',
'Index Type' => 'Loại chỉ mục',
@@ -194,9 +194,9 @@ $translations = array(
'Foreign keys' => 'Các khoá ngoại',
'Foreign key' => 'Khoá ngoại',
- 'Foreign key has been dropped.' => 'Khoá ngoại đã bị xoá',
- 'Foreign key has been altered.' => 'Khoá ngoại đã được sửa',
- 'Foreign key has been created.' => 'Khoá ngoại đã được tạo',
+ 'Foreign key has been dropped.' => 'Khoá ngoại đã bị xoá.',
+ 'Foreign key has been altered.' => 'Khoá ngoại đã được sửa.',
+ 'Foreign key has been created.' => 'Khoá ngoại đã được tạo.',
'Target table' => 'Bảng đích',
'Change' => 'Thay đổi',
'Source' => 'Nguồn',
@@ -206,13 +206,13 @@ $translations = array(
'Add foreign key' => 'Thêm khoá ngoại',
'ON DELETE' => 'Khi xoá',
'ON UPDATE' => 'Khi cập nhật',
- 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Cột gốc và cột đích phải cùng kiểu, phải đặt chỉ mục trong cột đích và dữ liệu tham chiếu phải tồn tại',
+ 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Cột gốc và cột đích phải cùng kiểu, phải đặt chỉ mục trong cột đích và dữ liệu tham chiếu phải tồn tại.',
'Triggers' => 'xx',
'Add trigger' => 'xx',
- 'Trigger has been dropped.' => 'Đã xoá phản xạ',
- 'Trigger has been altered.' => 'Đã sửa phản xạ',
- 'Trigger has been created.' => 'Đã tạo phản xạ',
+ 'Trigger has been dropped.' => 'Đã xoá phản xạ.',
+ 'Trigger has been altered.' => 'Đã sửa phản xạ.',
+ 'Trigger has been created.' => 'Đã tạo phản xạ.',
'Alter trigger' => 'Sửa phản xạ',
'Create trigger' => 'Tạo phản xạ',
'Time' => 'Thời gian',
@@ -234,29 +234,29 @@ $translations = array(
'Action' => 'Hành động',
'Full table scan' => 'Quét toàn bộ bảng',
'Unable to select the table' => 'Không thể xem dữ liệu',
- 'No rows.' => 'Không có dòng dữ liệu nào',
- '%d row(s)' => array('%s dòng', '%s dòng'),
+ 'No rows.' => 'Không có dòng dữ liệu nào.',
+ '%d row(s)' => '%s dòng',
'Page' => 'trang',
'last' => 'cuối',
'Load more data' => 'Xem thêm dữ liệu',
'Loading' => 'Đang nạp',
'whole result' => 'toàn bộ kết quả',
- '%d byte(s)' => array('%d byte(s)', '%d byte(s)'),
+ '%d byte(s)' => '%d byte(s)',
'Import' => 'Nhập khẩu',
- '%d row(s) have been imported.' => array('Đã nhập % dòng dữ liệu', 'Đã nhập % dòng dữ liệu'),
- 'File must be in UTF-8 encoding.' => 'Tệp phải mã hoá bằng chuẩn UTF-8',
+ '%d row(s) have been imported.' => 'Đã nhập % dòng dữ liệu.',
+ 'File must be in UTF-8 encoding.' => 'Tệp phải mã hoá bằng chuẩn UTF-8.',
// in-place editing in select
'Modify' => 'Sửa',
- 'Ctrl+click on a value to modify it.' => 'Nhấn Ctrl và bấm vào giá trị để sửa',
- 'Use edit link to modify this value.' => 'Dùng nút sửa để thay đổi giá trị này',
+ 'Ctrl+click on a value to modify it.' => 'Nhấn Ctrl và bấm vào giá trị để sửa.',
+ 'Use edit link to modify this value.' => 'Dùng nút sửa để thay đổi giá trị này.',
// %s can contain auto-increment value
- 'Item%s has been inserted.' => 'Đã thêm %s',
- 'Item has been deleted.' => 'Đã xoá',
- 'Item has been updated.' => 'Đã cập nhật',
- '%d item(s) have been affected.' => array('%d phần đã thay đổi', '%d phần đã thay đổi'),
+ 'Item%s has been inserted.' => 'Đã thêm%s.',
+ 'Item has been deleted.' => 'Đã xoá.',
+ 'Item has been updated.' => 'Đã cập nhật.',
+ '%d item(s) have been affected.' => '%d phần đã thay đổi.',
'New item' => 'Thêm',
'original' => 'bản gốc',
// label for value '' in enum data type
@@ -270,14 +270,14 @@ $translations = array(
'Selected' => 'Chọn',
'Clone' => 'Sao chép',
'Delete' => 'Xoá',
- 'You have no privileges to update this table.' => 'Bạn không có quyền sửa bảng này',
+ 'You have no privileges to update this table.' => 'Bạn không có quyền sửa bảng này.',
'E-mail' => 'Địa chỉ email',
'From' => 'Người gửi',
'Subject' => 'Chủ đề',
'Attachments' => 'Đính kèm',
'Send' => 'Gửi',
- '%d e-mail(s) have been sent.' => array('%d thư đã gửi', '%d thư đã gửi'),
+ '%d e-mail(s) have been sent.' => '%d thư đã gửi.',
// data type descriptions
'Numbers' => 'Số',
@@ -301,30 +301,30 @@ $translations = array(
'no' => 'không',
// general SQLite error in create, drop or rename database
- 'File exists.' => 'Tệp đã có rồi',
- 'Please use one of the extensions %s.' => 'Cần phải dùng một trong các phần mở rộng sau: %s',
+ 'File exists.' => 'Tệp đã có rồi.',
+ 'Please use one of the extensions %s.' => 'Cần phải dùng một trong các phần mở rộng sau: %s.',
// PostgreSQL and MS SQL schema support
'Alter schema' => 'Thay đổi schema',
'Create schema' => 'Tạo schema',
- 'Schema has been dropped.' => 'Đã xoá schema',
- 'Schema has been created.' => 'Đã tạo schema',
- 'Schema has been altered.' => 'Đã thay đổi schema',
+ 'Schema has been dropped.' => 'Đã xoá schema.',
+ 'Schema has been created.' => 'Đã tạo schema.',
+ 'Schema has been altered.' => 'Đã thay đổi schema.',
'Schema' => 'schema',
- 'Invalid schema.' => 'Schema khong hợp lệ',
+ 'Invalid schema.' => 'Schema khong hợp lệ.',
// PostgreSQL sequences support
'Sequences' => 'Dãy số',
'Create sequence' => 'Tạo đãy số',
- 'Sequence has been dropped.' => 'Dãy số đã bị xoá',
- 'Sequence has been created.' => 'Đã tạo dãy số',
- 'Sequence has been altered.' => 'Đã sửa dãy số',
+ 'Sequence has been dropped.' => 'Dãy số đã bị xoá.',
+ 'Sequence has been created.' => 'Đã tạo dãy số.',
+ 'Sequence has been altered.' => 'Đã sửa dãy số.',
'Alter sequence' => 'Thay đổi dãy số',
// PostgreSQL user types support
'User types' => 'Kiểu tự định nghĩa',
'Create type' => 'Tạo kiểu',
- 'Type has been dropped.' => 'Đã xoá kiểu',
- 'Type has been created.' => 'Đã tạo kiểu',
+ 'Type has been dropped.' => 'Đã xoá kiểu.',
+ 'Type has been created.' => 'Đã tạo kiểu.',
'Alter type' => 'Sửa kiểu dữ liệu',
);
diff --git a/changes.txt b/changes.txt
index e68ce840..9b2b9aa1 100644
--- a/changes.txt
+++ b/changes.txt
@@ -16,6 +16,7 @@ SQLite: Support UPDATE OF triggers
SQLite: Display auto-created unique indexes, bug since Adminer 3.5.0
Editor: Fix login() method, bug since Adminer 4.0.0
Translate numbers in ar, bn, fa
+Vietnamese translation
Adminer 4.0.3 (released 2014-02-01)
MongoDB: insert, truncate, indexes