From 3ef571da3c1a4daa94719d8d9309fbbd42ffb1e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?QuangTr=E1=BB=8DngOnline?= Date: Wed, 25 Apr 2018 00:41:01 +0700 Subject: [PATCH] Added Vietnamese translation (#3514) Credit to @quangtrongonline. --- modules/backend/lang/vn/lang.php | 588 +++++++++++++++++++++++ modules/backend/models/Preference.php | 1 + modules/cms/lang/vn/lang.php | 293 +++++++++++ modules/system/assets/js/lang/lang.vn.js | 9 + modules/system/lang/en/lang.php | 3 +- modules/system/lang/et/lang.php | 3 +- modules/system/lang/lt/lang.php | 3 +- modules/system/lang/nl/lang.php | 3 +- modules/system/lang/pt-pt/lang.php | 3 +- modules/system/lang/vn/client.php | 99 ++++ modules/system/lang/vn/lang.php | 434 +++++++++++++++++ modules/system/lang/vn/validation.php | 117 +++++ 12 files changed, 1551 insertions(+), 5 deletions(-) create mode 100644 modules/backend/lang/vn/lang.php create mode 100644 modules/cms/lang/vn/lang.php create mode 100644 modules/system/assets/js/lang/lang.vn.js create mode 100644 modules/system/lang/vn/client.php create mode 100644 modules/system/lang/vn/lang.php create mode 100644 modules/system/lang/vn/validation.php diff --git a/modules/backend/lang/vn/lang.php b/modules/backend/lang/vn/lang.php new file mode 100644 index 000000000..5b31171b4 --- /dev/null +++ b/modules/backend/lang/vn/lang.php @@ -0,0 +1,588 @@ + [ + 'title' => 'Khu vực quản trị' + ], + 'field' => [ + 'invalid_type' => 'Loại Field không hợp lệ :type.', + 'options_method_invalid_model' => "Thuộc tính ':field' không đưa ra được model hợp lệ. Hãy thử chỉ định phương pháp tùy chọn cho model :model một cách rõ ràng.", + 'options_method_not_exists' => "Model class :model phải khai báo :method() trả về tùy chọn cho trường ':field'." + ], + 'widget' => [ + 'not_registered' => "Tên của widget class ':name' chưa được đăng ký", + 'not_bound' => "Widget với tên class ':name' đã không bị ràng buộc với controller" + ], + 'page' => [ + 'untitled' => 'Không có tiêu đề', + 'access_denied' => [ + 'label' => 'Truy cập bị chặn', + 'help' => "Bạn không đủ quyền để xem trang này.", + 'cms_link' => 'Quay lại trang quản trị' + ], + 'no_database' => [ + 'label' => 'Không tìm thấy Database', + 'help' => "Bắt buộc phải có 1 database để truy cập vào trang quản trị. Kiểm tra lại cấu hình database và migrated trước khi thử lại.", + 'cms_link' => 'Quay lại trang chủ' + ], + 'invalid_token' => [ + 'label' => 'Security token không hợp lệ' + ] + ], + 'partial' => [ + 'not_found_name' => "Không tìm thấy partial ':name'." + ], + 'account' => [ + 'signed_in_as' => 'Đã đăng nhập với :full_name', + 'sign_out' => 'Đăng xuất', + 'login' => 'Đăng nhập', + 'reset' => 'Reset', + 'restore' => 'Khôi phục', + 'login_placeholder' => 'đăng nhập', + 'password_placeholder' => 'mật khẩu', + 'remember_me' => 'Giữ trạng thái đăng nhập', + 'forgot_password' => 'Quên mật khẩu?', + 'enter_email' => 'Nhập email của bạn', + 'enter_login' => 'Tên đăng nhập', + 'email_placeholder' => 'email', + 'enter_new_password' => 'Nhập mật khẩu mới', + 'password_reset' => 'Lấy lại mật khẩu', + 'restore_success' => 'Một tin nhắn đã được gửi vào email của bạn. Vui lòng làm theo hướng dẫn', + 'restore_error' => "Không tìm thấy người dùng có tên ':login'", + 'reset_success' => 'Đã đặt lại mật khẩu. Bạn có thể đăng nhập ngay bây giờ', + 'reset_error' => 'Dữ liệu khôi phục mật khẩu không hợp lệ. Vui lòng thử lại!', + 'reset_fail' => 'Không thể đặt lại mật khẩu của bạn!', + 'apply' => 'Áp dụng', + 'cancel' => 'Bỏ qua', + 'delete' => 'Xóa', + 'ok' => 'OK' + ], + 'dashboard' => [ + 'menu_label' => 'Bảng điều khiển chính', + 'widget_label' => 'Widget', + 'widget_width' => 'chiều rộng', + 'full_width' => 'rộng toàn màn hình', + 'manage_widgets' => 'Quản lý widgets', + 'add_widget' => 'Thêm mới widget', + 'widget_inspector_title' => 'Cấu hình widget', + 'widget_inspector_description' => 'Cấu hình widget', + 'widget_columns_label' => 'Độ rộng :columns', + 'widget_columns_description' => 'Độ rộng của widget, là một số nguyên trong khoảng 1 đến 10.', + 'widget_columns_error' => 'Vui lòng nhập vào độ rộng của widget là một số nguyên trong khoảng 1 đến 10.', + 'columns' => '{1} cột|[2,Inf] cột', + 'widget_new_row_label' => 'Một hàng mới', + 'widget_new_row_description' => 'Đẩy widget thành 1 hàng mới', + 'widget_title_label' => 'Tên Widget', + 'widget_title_error' => 'Tên của widget là bắt buộc', + 'reset_layout' => 'Reset layout', + 'reset_layout_confirm' => 'Reset layout về mặc định?', + 'reset_layout_success' => 'Layout đã được reset', + 'make_default' => 'Đặt thành mặc định', + 'make_default_confirm' => 'Đặt layout hiện tại thành mặc định?', + 'make_default_success' => 'Layout hiện tại đã trở thành layout mặc định', + 'collapse_all' => 'Thu gọn tất cả', + 'expand_all' => 'Mở rộng tất cả', + 'status' => [ + 'widget_title_default' => 'Tình trạng hệ thống', + 'update_available' => '{0} cập nhật có sãn!|{1} cập nhật có sẵn!|[2,Inf] cập nhật có sẵn!', + 'updates_pending' => 'Đang chờ cập nhật phần mềm', + 'updates_nil' => 'Phần mềm đã được cập nhật', + 'updates_link' => 'Cập nhật', + 'warnings_pending' => 'Một số vấn đề cần chú ý', + 'warnings_nil' => 'Không có cảnh báo nào', + 'warnings_link' => 'Chi tiết', + 'core_build' => 'Phiên bản hệ thống', + 'event_log' => 'Nhật ký các sự kiện', + 'request_log' => 'Nhật ký các request thất bại', + 'app_birthday' => 'Lần đăng nhập gần nhất', + ], + 'welcome' => [ + 'widget_title_default' => 'Xin chào', + 'welcome_back_name' => 'Chào mừng :name quay trở lại :app.', + 'welcome_to_name' => 'Chào mừng :name đến với :app.', + 'first_sign_in' => 'Đây là lần đầu tiên bạn đang nhập vào hệ thống.', + 'last_sign_in' => 'Lần cuối bạn đăng nhập vào lúc', + 'view_access_logs' => 'Xem nhật ký các lần đăng nhập', + 'nice_message' => 'Chúc bạn một ngày vui vẻ!', + ] + ], + 'user' => [ + 'name' => 'Administrator', + 'menu_label' => 'Administrators', + 'menu_description' => 'Quản lý các administrator, nhóm quản trị và quyền truy cập.', + 'list_title' => 'Quản lý Administrators', + 'new' => 'Thêm mới Administrator', + 'login' => 'Tên đăng nhập', + 'first_name' => 'Họ', + 'last_name' => 'Tên', + 'full_name' => 'Tên đầy đủ', + 'email' => 'Email', + 'role_field' => 'Role', + 'role_comment' => 'Các Role định nghĩa sẵn một số quyền của người dùng, nó có thể bị ghi đè bởi cấp độ của người dùng trong tab quyền hạn', + 'groups' => 'Nhóm quản trị', + 'groups_comment' => 'Chỉ định nhóm quản trị cho người dùng', + 'avatar' => 'Avatar', + 'password' => 'Mật khẩu', + 'password_confirmation' => 'Nhập lại mật khẩu', + 'permissions' => 'Các quyền truy cập', + 'account' => 'Tài khoản', + 'superuser' => 'Super User', + 'superuser_comment' => 'Super User có thể truy cập không giới hạn vào tất cả mọi nơi của hệ thống. Super User có thể quản lý, thêm mới các user khác ', + 'send_invite' => 'Gửi email chào mừng đến user', + 'send_invite_comment' => 'Gửi một tin nhắn chào mừng đến user với thông tin đăng nhập và mật khẩu', + 'delete_confirm' => 'Xóa administrator này?', + 'return' => 'Quay lại danh sách admin', + 'allow' => 'Cho phép', + 'inherit' => 'Inherit', + 'deny' => 'Không cho phép', + 'activated' => 'Đã active', + 'last_login' => 'Lần cuối đăng nhập', + 'created_at' => 'Tạo lúc', + 'updated_at' => 'Chỉnh sửa vào lúc', + 'group' => [ + 'name' => 'Nhóm quản trị', + 'name_field' => 'Tên', + 'name_comment' => 'Tên được hiển thị trong danh sách nhóm', + 'description_field' => 'Mô tả', + 'is_new_user_default_field_label' => 'Nhóm mặc định', + 'is_new_user_default_field_comment' => 'Khi thêm mới administrators mặc định sẽ vào nhóm này', + 'code_field' => 'Code', + 'code_comment' => 'Nhập mã code không được trùng lặp nếu bạn muốn truy cập group objectuop bằng API', + 'menu_label' => 'Quản lý các nhóm', + 'list_title' => 'Quản lý các nhóm', + 'new' => 'Nhóm mới', + 'delete_confirm' => 'Xóa nhóm này?', + 'return' => 'Quay lại danh sách nhóm', + 'users_count' => 'Số user' + ], + 'role' => [ + 'name' => 'Role', + 'name_field' => 'Tên Role', + 'name_comment' => 'Tên hiển thị trong danh sách Role.', + 'description_field' => 'Mô tả', + 'code_field' => 'Code', + 'code_comment' => 'Nhập mã code không được trùng lặp nếu bạn muốn truy cập group objectuop bằng API.', + 'menu_label' => 'Quản lý các Role', + 'list_title' => 'Quản lý các Role', + 'new' => 'Thêm mới Role', + 'delete_confirm' => 'Xóa role này?', + 'return' => 'Quay lại trang danh sách role', + 'users_count' => 'Số user' + ], + 'preferences' => [ + 'not_authenticated' => 'Người dùng không xác định.' + ] + ], + 'list' => [ + 'default_title' => 'Trang danh sách các bản ghi', + 'search_prompt' => 'Tìm kiếm...', + 'no_records' => 'Không có bản ghi nào.', + 'missing_model' => 'List behavior sử dụng trong :class không được định nghĩa trong model nào.', + 'missing_column' => 'Column chưa được định nghĩa :columns.', + 'missing_columns' => 'List đã dử dụng trong :class chưa được định nghĩa (list columns).', + 'missing_definition' => "List behavior không chứa cột ':field'.", + 'missing_parent_definition' => "List behavior không có định nghĩa cho ':definition'.", + 'behavior_not_ready' => 'List behavior chưa được khởi tạo,kiểm tra lại xem bạn đã gọi makeLists() trong controller chưa.', + 'invalid_column_datetime' => "Giá trị Column ':column' không phải là DateTime object, bạn đã thiếu \$dates trong model?", + 'pagination' => 'Hiển thị bản ghi: :from-:to của :total', + 'first_page' => 'Trang đầu tiên', + 'last_page' => 'Trang cuối cùng', + 'prev_page' => 'Trang trước', + 'next_page' => 'Trang tiếp theo', + 'refresh' => 'Làm mới', + 'updating' => 'Đang cập nhật...', + 'loading' => 'Đang tải...', + 'setup_title' => 'Cài đặt trang danh sách', + 'setup_help' => 'Chọn các cột bạn muốn hiển thị ở trang danh sách các bản ghi. Bạn có thể thay đổi vị trí của chúng bằng các kéo lên hoặc xuống.', + 'records_per_page' => 'Số bản ghi trên một trang', + 'records_per_page_help' => 'Điền vào số bản ghi bạn muốn hiển thị trên một trang. Chú ý quá nhiều bản ghi trên một trang sẽ khiến trang tải chậm', + 'check' => 'Kiểm tra', + 'delete_selected' => 'Xóa các mục đã chọn', + 'delete_selected_empty' => 'Không có bản ghi nào được chọn', + 'delete_selected_confirm' => 'Xóa các bản ghi đã chọn?', + 'delete_selected_success' => 'Xóa thành công các bản ghi.', + 'column_switch_true' => 'Có', + 'column_switch_false' => 'Không' + ], + 'fileupload' => [ + 'attachment' => 'Tệp đính kèm', + 'help' => 'Tên và mô tả cho tệp.', + 'title_label' => 'Tên', + 'description_label' => 'Mô tả', + 'default_prompt' => 'Bấm vào %s hoặc kéo thả file vào đây để upload', + 'attachment_url' => 'URL file', + 'upload_file' => 'Upload file', + 'upload_error' => 'Lỗi upload', + 'remove_confirm' => 'Bạn có chắc chắn muốn xóa?', + 'remove_file' => 'Xóa file' + ], + 'form' => [ + 'create_title' => 'Thêm mới :name', + 'update_title' => 'Chỉnh sửa :name', + 'preview_title' => 'Xem trước :name', + 'create_success' => ':name đã được tạo', + 'update_success' => 'Cập nhật thành công :name', + 'delete_success' => 'Xóa thành công :name', + 'reset_success' => 'Reset thành công', + 'missing_id' => 'Không xác định được ID của bản ghi.', + 'missing_model' => 'Form behavior sử dụng trong :class không có trong model nào.', + 'missing_definition' => "Form behavior không chứa ':field'.", + 'not_found' => 'Không tìm thấy bản ghi có id: :id.', + 'action_confirm' => 'Bạn chắc chắn không?', + 'create' => 'Thêm mới', + 'create_and_close' => 'Thêm và đóng lại', + 'creating' => 'Đang tạo...', + 'creating_name' => 'Đang tạo :name...', + 'save' => 'Lưu lại', + 'save_and_close' => 'Lưu và đóng', + 'saving' => 'Đang lưu...', + 'saving_name' => 'Đang lưu :name...', + 'delete' => 'Xóa', + 'deleting' => 'Đang xóa...', + 'confirm_delete' => 'Xóa bản ghi này?', + 'confirm_delete_multiple' => 'Xóa bản ghi đã chọn?', + 'deleting_name' => 'Đang xóa :name...', + 'reset_default' => 'Đặt về mặc định', + 'resetting' => 'Đang đặt lại', + 'resetting_name' => 'Đang đặt lại :name', + 'undefined_tab' => 'Misc', + 'field_off' => 'Tắt', + 'field_on' => 'Bật', + 'add' => 'Thêm', + 'apply' => 'Áp dụng', + 'cancel' => 'Bỏ qua', + 'close' => 'Đóng', + 'confirm' => 'Xác nhận', + 'reload' => 'Tại lại', + 'complete' => 'Hoàn thành', + 'ok' => 'OK', + 'or' => 'or', + 'confirm_tab_close' => 'Đóng tab? Các thay đổi của bạn sẽ không được lưu.', + 'behavior_not_ready' => 'Form behavior chưa được khởi tạo, kiểm tra lại đã gọi initForm() trong controller cửa bạn chưa.', + 'preview_no_files_message' => 'Chưa có file nào được upload lên.', + 'preview_no_media_message' => 'Không có file media nào được chọn.', + 'preview_no_record_message' => 'Không có bản ghi nào được chọn.', + 'select' => 'Select', + 'select_all' => 'Tất cả', + 'select_none' => 'none', + 'select_placeholder' => 'Vui lòng lựa chọn', + 'insert_row' => 'Thêm mới Row', + 'insert_row_below' => 'Thêm Row dưới đây', + 'delete_row' => 'Xóa Row', + 'concurrency_file_changed_title' => 'File đã được thay đổi', + 'concurrency_file_changed_description' => "File bạn đang chỉnh sửa đã bị thay đổi bởi người khác. Bạn có thể tải lại và các thay đổi của bạn không được lưu hoặc ghi đè lên file đó", + 'return_to_list' => 'Quay lại trang danh sách' + ], + 'recordfinder' => [ + 'find_record' => 'Tìm kiếm bản ghi', + 'cancel' => 'Cancel', + ], + 'pagelist' => [ + 'page_link' => 'Page link', + 'select_page' => 'Lựa chọn một trang...' + ], + 'relation' => [ + 'missing_config' => "Relation behavior không được cấu hình cho ':config'.", + 'missing_definition' => "Relation behavior không có định nghĩa cho ':field'.", + 'missing_model' => 'Relation behavior đã sử dụng trong :class chưa được định nghĩa trong model nào.', + 'invalid_action_single' => 'Hành động này không thể thực hiện trên một singular relationship.', + 'invalid_action_multi' => 'Hành động này không thể thực hiện trên một multiple relationship.', + 'help' => 'Bấm vào 1 item để thêm mới', + 'related_data' => 'Dữ liệu quan đến :name', + 'add' => 'Thêm mới', + 'add_selected' => 'Thêm các mục đã chọn', + 'add_a_new' => 'Thêm mới :name', + 'link_selected' => 'Link đã chọn', + 'link_a_new' => 'Link mới :name', + 'cancel' => 'Cancel', + 'close' => 'Đóng lại', + 'add_name' => 'Thêm :name', + 'create' => 'Thêm mới', + 'create_name' => 'Thêm mới :name', + 'update' => 'Cập nhật', + 'update_name' => 'Cập nhật :name', + 'preview' => 'Xem trước', + 'preview_name' => 'Xem trước :name', + 'remove' => 'Xóa', + 'remove_name' => 'Xóa :name', + 'delete' => 'Xóa', + 'delete_name' => 'Xóa :name', + 'delete_confirm' => 'Bạn có chắc muốn xóa?', + 'link' => 'Link', + 'link_name' => 'Link :name', + 'unlink' => 'Unlink', + 'unlink_name' => 'Unlink :name', + 'unlink_confirm' => 'Bạn có chắc muốn xóa?' + ], + 'reorder' => [ + 'default_title' => 'Xắp xếp các bản ghi', + 'no_records' => 'Không có bản ghi nào để sắp xếp.' + ], + 'model' => [ + 'name' => 'Model', + 'not_found' => "Không tìm thấy Model ':class' với id :id", + 'missing_id' => 'Không xác định được ID tìm kiếm.', + 'missing_relation' => "Model ':class' không được định nghĩa cho ':relation'.", + 'missing_method' => "Model ':class' không có phương thức ':method'.", + 'invalid_class' => "Model :model sử dụng trong :class không hợp lệ, nó phải được kế thừa từ \Model class.", + 'mass_assignment_failed' => "Có lỗi của Model attribute ':attribute'." + ], + 'warnings' => [ + 'tips' => 'Hướng dẫn cấu hình hệ thống', + 'tips_description' => 'Một số điều bạn cần chú ý để cấu hình hệ thống đúng cách.', + 'permissions' => 'PHP không có quyền ghi trong thư mục :name hoặc các thư mục con của nó. Vui lòng kiểm tra lại quyền ghi cho thư mục này.', + 'extension' => 'PHP extension :name chưa được cài đặt. Vui lòng cài đặt extension này từ thư viện và kích hoạt nó.', + 'plugin_missing' => 'Plugin :name cần phải cài đặt. Vui lòng cài đặt plugin này.', + ], + 'editor' => [ + 'menu_label' => 'Cài đặt trình biên tập (Code editor)', + 'menu_description' => 'Tùy chỉnh trình biên tập (Code editor) cho toàn trang, ví dụ kích thước chữ,màu nền cho trình biên tập.', + 'font_size' => 'Kích thước chữ', + 'tab_size' => 'Kích thước Tab', + 'use_hard_tabs' => 'Sử dụng tabs để lùi dòng', + 'code_folding' => 'Thu gọn code', + 'code_folding_begin' => 'Đánh dấu điểm bắt đầu', + 'code_folding_begin_end' => 'Đánh dấu điểm bắt đầu và kết thúc', + 'autocompletion' => 'Autocompletion', + 'word_wrap' => 'Không bị xuống dòng(word wrap)', + 'highlight_active_line' => 'Hiện nổi bật dòng đang trỏ chuột', + 'auto_closing' => 'Tự động đóng thẻ', + 'show_invisibles' => 'Hiển thị các ký tự ẩn', + 'show_gutter' => 'Hiện lề bên trong', + 'basic_autocompletion'=> 'Basic Autocompletion (Ctrl + Space)', + 'live_autocompletion'=> 'Live Autocompletion', + 'enable_snippets'=> 'Kích hoạt snippets (Tab)', + 'display_indent_guides'=> 'Hiển thị hướng dẫn căn lề', + 'show_print_margin'=> 'Hiện lề in', + 'mode_off' => 'Off', + 'mode_fluid' => 'Fluid', + '40_characters' => '40 ký tự', + '80_characters' => '80 ký tự', + 'theme' => 'Color scheme', + 'markup_styles' => 'Markup Styles', + 'custom_styles' => 'Stylesheet tùy chỉnh', + 'custom styles_comment' => 'Styles tùy chỉnh được thêm vào HTML editor.', + 'markup_classes' => 'Markup Classes', + 'paragraph' => 'Paragraph', + 'link' => 'Link', + 'table' => 'Table', + 'table_cell' => 'Table Cell', + 'image' => 'Image', + 'label' => 'Label', + 'class_name' => 'Class name', + 'markup_tags' => 'Markup Tags', + 'allowed_empty_tags' => 'Cho phép tags trống', + 'allowed_empty_tags_comment' => 'Danh sách tag sẽ không bị xóa khi chúng không có nội dung bên trong.', + 'allowed_tags' => 'Các tag được phép sử dụng', + 'allowed_tags_comment' => 'Danh sách tag được phép sử dụng trong Markup.', + 'no_wrap' => 'Không thu gọn tag', + 'no_wrap_comment' => 'Danh sách các tag sẽ không bị thu gọn nội dung bên trong block tags.', + 'remove_tags' => 'Xóa các tag', + 'remove_tags_comment' => 'Danh sách tag bị xóa kể cả nội dung của chúng.', + 'toolbar_buttons' => 'Các nút trên thanh công cụ', + 'toolbar_buttons_comment' => 'Các nút mặc định ở trên thanh công cụ của Rich Editor. [fullscreen, bold, italic, underline, strikeThrough, subscript, superscript, fontFamily, fontSize, |, color, emoticons, inlineStyle, paragraphStyle, |, paragraphFormat, align, formatOL, formatUL, outdent, indent, quote, insertHR, -, insertLink, insertImage, insertVideo, insertAudio, insertFile, insertTable, undo, redo, clearFormatting, selectAll, html]', + ], + 'tooltips' => [ + 'preview_website' => 'Xem trước website' + ], + 'mysettings' => [ + 'menu_label' => 'Những cài đặt của tôi', + 'menu_description' => 'Những cài đặt liên quan đến tài khoản quản trị của bạn' + ], + 'myaccount' => [ + 'menu_label' => 'Tài khoản của tôi', + 'menu_description' => 'Cập nhật thông tin tài khoản của bạn ví dụ như tên, email hoặc mật khẩu.', + 'menu_keywords' => 'bảo mật đăng nhập' + ], + 'branding' => [ + 'menu_label' => 'Tùy chỉnh trang quản trị', + 'menu_description' => 'Tùy chỉnh trang quản trị, ví dụ như chỉnh sửa tên,màu sắc, logo.', + 'brand' => 'Nhãn', + 'logo' => 'Logo', + 'logo_description' => 'Tải lên logo sử dụng cho trang quản trị.', + 'app_name' => 'Tên ứng dụng', + 'app_name_description' => 'Tên này sẽ được làm tiêu đề cho trang quản trị.', + 'app_tagline' => 'App Tagline', + 'app_tagline_description' => 'Mục này hiển thị ở màn hình đăng nhập trang quản trị.', + 'colors' => 'Màu sắc', + 'primary_color' => 'Màu chủ đạo', + 'secondary_color' => 'Màu thứ hai', + 'accent_color' => 'Màu tạo các điểm nhấn', + 'styles' => 'Styles', + 'custom_stylesheet' => 'Stylesheet tùy chỉnh', + 'navigation' => 'Thanh menu', + 'menu_mode' => 'Kiểu menu', + 'menu_mode_inline' => 'Icon và tiêu đề cùng một dòng', + 'menu_mode_tile' => 'Icon và tiêu đề khác dòng', + 'menu_mode_collapsed' => 'Thu gọn icon và tiêu đề' + ], + 'backend_preferences' => [ + 'menu_label' => 'Tùy chỉnh cá nhân', + 'menu_description' => 'Cá nhân hóa trang quản trị với tài khoản của bạn, ví dụ chọn ngôn ngữ.', + 'region' => 'Khu vực', + 'code_editor' => 'Code editor', + 'timezone' => 'Múi giờ', + 'timezone_comment' => 'Điều chỉnh thời gian hiển thị cho múi giờ này.', + 'locale' => 'Ngôn ngữ địa phương', + 'locale_comment' => 'Chọn khu vực của bạn để sử dụng đúng ngôn ngữ.' + ], + 'access_log' => [ + 'hint' => 'Nhật ký những lần đăng nhập thành công của administrators. Số bản ghi được lưu trữ trong :days ngày.', + 'menu_label' => 'Nhật ký truy cập', + 'menu_description' => 'Danh sách các lần người quản trị đăng nhập thành công.', + 'created_at' => 'Thời gian', + 'login' => 'Tên đăng nhập', + 'ip_address' => 'Địa chỉ IP', + 'first_name' => 'First name', + 'last_name' => 'Last name', + 'email' => 'Email' + ], + 'filter' => [ + 'all' => 'tất cả', + 'options_method_not_exists' => "Model class :model cần phải khai báo method :method() trả về các tùy chọn lọc ':filter'.", + 'date_all' => 'tất cả', + 'number_all' => 'tất cả', + ], + 'import_export' => [ + 'upload_csv_file' => '1. Tải lên tệp CSV', + 'import_file' => 'Import file', + 'first_row_contains_titles' => 'Dòng đầu tiên là tiêu đề cột', + 'first_row_contains_titles_desc' => 'Bỏ check nếu dòng đầu tiên trong file CSV là tiêu đề của cột.', + 'match_columns' => '2. Các cột dữ liệu trùng với các cột dữ liệu của database', + 'file_columns' => 'Các cột của tệp CSV', + 'database_fields' => 'Các cột của database', + 'set_import_options' => '3. Set import options', + 'export_output_format' => '1. Định dạng dữ liệu xuất ra', + 'file_format' => 'Định dang file', + 'standard_format' => 'Định dạng chuẩn', + 'custom_format' => 'Định dạng khác', + 'delimiter_char' => 'Delimiter character', + 'enclosure_char' => 'Enclosure character', + 'escape_char' => 'Escape character', + 'select_columns' => '2. Chọn cột để xuất ra', + 'column' => 'Column', + 'columns' => 'Columns', + 'set_export_options' => '3. Các tùy chọn xuất file', + 'show_ignored_columns' => 'Hiển thị các cột bị bỏ qua', + 'auto_match_columns' => 'Tự động khớp các cột', + 'created' => 'Đã tạo', + 'updated' => 'Đã cập nhật', + 'skipped' => 'Đã bỏ qua', + 'warnings' => 'Cảnh báo', + 'errors' => 'Lỗi', + 'skipped_rows' => 'Các dòng đã bỏ qua', + 'import_progress' => 'Tiến độ nhập file', + 'processing' => 'Đang xử lý', + 'import_error' => 'Lỗi nhập file', + 'upload_valid_csv' => 'Vui lòng tải lên tệp CSV hợp lệ', + 'drop_column_here' => 'Kéo cột vào đây...', + 'ignore_this_column' => 'Bỏ qua cột này', + 'processing_successful_line1' => 'Xuất file thành công!', + 'processing_successful_line2' => 'Bạn sẽ được chuyển đến nơi tải file về ngay bây giờ.', + 'export_progress' => 'Tiến độ xuất file', + 'export_error' => 'Lỗi xuất file', + 'column_preview' => 'Xem trước cột', + 'file_not_found_error' => 'Không tìm thấy file', + 'empty_error' => 'Không có dữ liệu để xuất ra', + 'empty_import_columns_error' => 'Vui lòng chọn một số cột để nhập vào.', + 'match_some_column_error' => 'Các cột chưa khớp nhau.', + 'required_match_column_error' => 'Trường bắt buộc sau đây chưa khớp :label.', + 'empty_export_columns_error' => 'Vui lòng chọn các cột để xuất ra.', + 'behavior_missing_uselist_error' => 'Bạn cần phải implement cái controller behavior ListCotroller với tùy chọn "useList" được chọn', + 'missing_model_class_error' => 'Ghi rõ thuộc tính modelClass cho :type', + 'missing_column_id_error' => 'Không xác định được cột', + 'unknown_column_error' => 'Cột không xác định', + 'encoding_not_supported_error' => 'Kiểu mã hóa(encoding) của tập tin sai. Vui lòng chọn lại kiểu mã hóa phù hợp để import', + 'encoding_format' => 'Kiểu mã hóa(encoding)', + 'encodings' => [ + 'utf_8' => 'UTF-8', + 'us_ascii' => 'US-ASCII', + 'iso_8859_1' => 'ISO-8859-1 (Latin-1, Western European)', + 'iso_8859_2' => 'ISO-8859-2 (Latin-2, Central European)', + 'iso_8859_3' => 'ISO-8859-3 (Latin-3, South European)', + 'iso_8859_4' => 'ISO-8859-4 (Latin-4, North European)', + 'iso_8859_5' => 'ISO-8859-5 (Latin, Cyrillic)', + 'iso_8859_6' => 'ISO-8859-6 (Latin, Arabic)', + 'iso_8859_7' => 'ISO-8859-7 (Latin, Greek)', + 'iso_8859_8' => 'ISO-8859-8 (Latin, Hebrew)', + 'iso_8859_0' => 'ISO-8859-9 (Latin-5, Turkish)', + 'iso_8859_10' => 'ISO-8859-10 (Latin-6, Nordic)', + 'iso_8859_11' => 'ISO-8859-11 (Latin, Thai)', + 'iso_8859_13' => 'ISO-8859-13 (Latin-7, Baltic Rim)', + 'iso_8859_14' => 'ISO-8859-14 (Latin-8, Celtic)', + 'iso_8859_15' => 'ISO-8859-15 (Latin-9, Western European revision with euro sign)', + 'windows_1251' => 'Windows-1251 (CP1251)', + 'windows_1252' => 'Windows-1252 (CP1252)' + ] + ], + 'permissions' => [ + 'manage_media' => 'Tải lên và quản lý các tập tin đa phương tiện - images, videos, sounds, documents' + ], + 'mediafinder' => [ + 'label' => 'Media Finder', + 'default_prompt' => 'Bấm vào nút %s để tìm kiếm medai file' + ], + 'media' => [ + 'menu_label' => 'Media', + 'upload' => 'Tải lên', + 'move' => 'Di chuyển', + 'delete' => 'Xóa', + 'add_folder' => 'Thêm folder', + 'search' => 'Tìm kiếm', + 'display' => 'Hiển thị', + 'filter_everything' => 'Mọi thứ', + 'filter_images' => 'Images', + 'filter_video' => 'Video', + 'filter_audio' => 'Audio', + 'filter_documents' => 'Documents', + 'library' => 'Thư viện', + 'size' => 'Kích thước', + 'title' => 'Tên ảnh', + 'last_modified' => 'Lần cuối chỉnh sửa', + 'public_url' => 'URL', + 'click_here' => 'Bấm vào đây', + 'thumbnail_error' => 'Lỗi tạo thumbnail.', + 'return_to_parent' => 'Trả về thư mục cha', + 'return_to_parent_label' => 'Lên trên ..', + 'nothing_selected' => 'Chưa chọn mục nào.', + 'multiple_selected' => 'Đã chọn nhiều mục.', + 'uploading_file_num' => 'Đang tải lên :number file...', + 'uploading_complete' => 'Tải lên hoàn tất', + 'uploading_error' => 'Lỗi tải lên', + 'type_blocked' => 'Loại file này bị khóa vì lý do bảo mật.', + 'order_by' => 'Xắp xếp theo', + 'direction' => 'Theo hướng', + 'direction_asc' => 'Tăng dần', + 'direction_desc' => 'Giảm dần', + 'folder' => 'Thư mục', + 'no_files_found' => 'Không tìm thấy file bạn yêu cầu.', + 'delete_empty' => 'Vui lòng chọn các mục để xóa.', + 'delete_confirm' => 'Xác nhận xóa các mục đã chọn?', + 'error_renaming_file' => 'Lỗi đổi tên file.', + 'new_folder_title' => 'Thư mục mới', + 'folder_name' => 'Tên thư mục', + 'error_creating_folder' => 'Lỗi khi tạo thư mục mới', + 'folder_or_file_exist' => 'Tên file hoặc thư mục đã tồn tại.', + 'move_empty' => 'Chọn một mục để di chuyển.', + 'move_popup_title' => 'Di chuyển file hoặc thư mục', + 'move_destination' => 'Chọn nơi đến', + 'please_select_move_dest' => 'Chọn nơi mà file hoặc thư mục cần chuyển đến.', + 'move_dest_src_match' => 'Chọn thư mục khác.', + 'empty_library' => 'Thư mục trống.Vui lòng tải tệp tin lên hoặc tạo thư mục mới để bắt đầu.', + 'insert' => 'Chàn vào', + 'crop_and_insert' => 'Cắt & Chèn vào', + 'select_single_image' => 'vui lòng chọn một hình ảnh.', + 'selection_not_image' => 'Mục đã chọn không phải là hình ảnh.', + 'restore' => 'Hoàn lại tất cả các thay đổi', + 'resize' => 'Đổi kích thước...', + 'selection_mode_normal' => 'Bình thường', + 'selection_mode_fixed_ratio' => 'Tỉ lệ cố định', + 'selection_mode_fixed_size' => 'Kích thước cố định', + 'height' => 'Chiều cao', + 'width' => 'Chiều rộng', + 'selection_mode' => 'Lựa chọn chế độ', + 'resize_image' => 'Đổi kích thước ảnh', + 'image_size' => 'Kích thước ảnh:', + 'selected_size' => 'Đã chọn:' + ], +]; diff --git a/modules/backend/models/Preference.php b/modules/backend/models/Preference.php index 94c016b58..084c0b0b4 100644 --- a/modules/backend/models/Preference.php +++ b/modules/backend/models/Preference.php @@ -216,6 +216,7 @@ class Preference extends Model 'zh-tw' => [Lang::get('system::lang.locale.zh-tw'), 'flag-tw'], 'nb-no' => [Lang::get('system::lang.locale.nb-no'), 'flag-no'], 'el' => [Lang::get('system::lang.locale.el'), 'flag-gr'], + 'vn' => [Lang::get('system::lang.locale.vn'), 'flag-vn'], ]; $locales = Config::get('app.localeOptions', $localeOptions); diff --git a/modules/cms/lang/vn/lang.php b/modules/cms/lang/vn/lang.php new file mode 100644 index 000000000..b6745bac3 --- /dev/null +++ b/modules/cms/lang/vn/lang.php @@ -0,0 +1,293 @@ + [ + 'invalid_file' => 'Tên tệp không hợp lệ :name. Tên tệp có thể chứa chỉ các ký tự chữ và số, dấu gạch dưới, dấu gạch ngang và dấu chấm. Ví dụ: page.htm, page, subdirectory/page', + 'invalid_property' => "Khổng thể cài thuộc tính ':name'", + 'file_already_exists' => "Tệp tin ':name' đã tồn tại.", + 'error_saving' => "Lỗi lưu file ':name'. Vui lòng kiểm tra write permission.", + 'error_creating_directory' => 'Không thể tạo thư mục :name. Vui lòng kiểm tra write permission.', + 'invalid_file_extension' => 'Extension không hợp lệ: :invalid. Extensions hợp lệ: :allowed.', + 'error_deleting' => "Không thể xóa template file ':name'. Vui lòng kiểm tra write permission.", + 'delete_success' => 'Đã xóa template: :count.', + 'file_name_required' => 'Tên file là bắt buộc.', + 'safe_mode_enabled' => 'Safe mode đã được bật.' + ], + 'dashboard' => [ + 'active_theme' => [ + 'widget_title_default' => 'Giao diện web', + 'online' => 'Trực tuyến', + 'maintenance' => 'Đang bảo trì', + 'manage_themes' => 'Quản lý giao diện', + 'customize_theme' => 'Tùy chỉnh giao diện' + ] + ], + 'theme' => [ + 'not_found_name' => "Giao diện ':name' không tồn tại", + 'by_author' => 'Tạo bởi :name', + 'active' => [ + 'not_set' => 'Giao diện đang kích hoạt chưa được cài đặt.', + 'not_found' => 'Không tìm thấy giao diện đang kích hoạt.' + ], + 'edit' => [ + 'not_set' => 'Giao diện chưa được cài đặt.', + 'not_found' => 'Không tìm thấy giao diện.', + 'not_match' => "Giao diện này đang trong chế độ chỉnh sửa. Vui lòng tải lại trang" + ], + 'settings_menu' => 'Giao diện website', + 'settings_menu_description' => 'Cấu hình giao diện website và các tùy chỉnh', + 'default_tab' => 'Các thuộc tính', + 'name_label' => 'Tên', + 'name_create_placeholder' => 'Tên giao diện', + 'author_label' => 'Tác giả', + 'author_placeholder' => 'Tên cá nhân hoặc công ty', + 'description_label' => 'Mô tả', + 'description_placeholder' => 'Mô tả giao diện', + 'homepage_label' => 'Trang chủ', + 'homepage_placeholder' => 'Đường dẫn trang chủ tác giả', + 'code_label' => 'Code', + 'code_placeholder' => 'Tạo mã code duy nhất để phân phối giao diện của bạn', + 'preview_image_label' => 'Hình ảnh xem trước giao diện', + 'preview_image_placeholder' => 'Đường dẫn hình ảnh xem trước của giao diện.', + 'dir_name_label' => 'Tên đường dẫn', + 'dir_name_create_label' => 'Đường dẫn chứa giao diện', + 'theme_label' => 'Giao diện', + 'theme_title' => 'Themes', + 'activate_button' => 'Kích hoạt', + 'active_button' => 'Kích hoạt', + 'customize_theme' => 'Tùy chỉnh giao diện', + 'customize_button' => 'Tùy chỉnh', + 'duplicate_button' => 'Nhân đôi', + 'duplicate_title' => 'Nhân đôi giao diện', + 'duplicate_theme_success' => 'Nhân đôi giao diện thành công!', + 'manage_button' => 'Quản lý', + 'manage_title' => 'Quản lý giao diện', + 'edit_properties_title' => 'giao diện', + 'edit_properties_button' => 'Chỉnh sửa các thuộc tính', + 'save_properties' => 'Lưu lại thuộc tính', + 'import_button' => 'Import', + 'import_title' => 'Import giao diện', + 'import_theme_success' => 'Nhập thành công giao diện!', + 'import_uploaded_file' => 'Tệp tin giao diện', + 'import_overwrite_label' => 'Ghi đè file', + 'import_overwrite_comment' => 'Bỏ check để chỉ nhập tệp mới ( không ghi đè)', + 'import_folders_label' => 'Các thư mục', + 'import_folders_comment' => 'Vuui lòng chọn các thư mục bạn muốn import', + 'export_button' => 'Export', + 'export_title' => 'Xuất giao diện', + 'export_folders_label' => 'Các thư mục', + 'export_folders_comment' => 'Vui lòng chọn các mục bạn muốn export', + 'delete_button' => 'Xóa', + 'delete_confirm' => 'Xóa giao diện. Sau khi xóa không thể khôi phục lại', + 'delete_active_theme_failed' => 'Không thể xóa giao diện đang được kích hoạt. Vui lòng kích hoạt 1 giao diện khác và thử lại', + 'delete_theme_success' => 'Xóa thành công!', + 'create_title' => 'Tạo theme mới', + 'create_button' => 'Tạo mới', + 'create_new_blank_theme' => 'Tạo một giao diện trống', + 'create_theme_success' => 'Giao diện đã được tạo!', + 'create_theme_required_name' => 'Vui lòng điền tên gaio diện', + 'new_directory_name_label' => 'Đường dẫn của giao diện', + 'new_directory_name_comment' => 'Nhập vào đường dẫn cho giao diện mới.', + 'dir_name_invalid' => 'Tên chỉ có thể chứa chữ số, chữ cái Latinh và các ký hiệu sau: _-', + 'dir_name_taken' => 'Đường dẫn này đã tồn tại.', + 'find_more_themes' => 'Tìm kiếm giao diện', + 'saving' => 'Đang lưu giao diện...', + 'return' => 'Quay lại trang quản lý giao diện' + ], + 'maintenance' => [ + 'settings_menu' => 'Chế độ bảo trì', + 'settings_menu_description' => 'Bật chế độ bảo trì và chỉ định trang sẽ hiển thị ở chế độ bảo trì.', + 'is_enabled' => 'Bật chế độ bảo trì', + 'is_enabled_comment' => 'Chọn trang sẽ hiển thị ở chế độ bảo trì.', + 'hint' => 'Chế độ bảo trì sẽ hiển thị trang bảo trì đối với khách truy cập trang' + ], + 'page' => [ + 'not_found_name' => "Trang ':name' không tồn tại", + 'not_found' => [ + 'label' => 'Trang không tồn tại', + 'help' => 'Không tìm thấy trang bạn yêu cầu.' + ], + 'custom_error' => [ + 'label' => 'Lỗi trang', + 'help' => "Có lỗi xảy ra khiến trang này không thể hiển thị" + ], + 'menu_label' => 'Danh sách trang', + 'unsaved_label' => 'Trang chưa được lưu', + 'no_list_records' => 'Không tìm thấy trang', + 'new' => 'Trang mới', + 'invalid_url' => 'Định dạng URL không hợp lệ. URL phải bắt đầu bằng biểu tượng dấu gạch chéo và có thể chứa chữ số, chữ cái Latinh và ký hiệu sau đây: ._-[]:?|/+*^$', + 'delete_confirm_multiple' => 'Xóa các trang đang chọn?', + 'delete_confirm_single' => 'Xóa trang này?', + 'no_layout' => '-- Không chọn --', + 'cms_page' => 'CMS page', + 'title' => 'Tiêu đề trang', + 'url' => 'URL trang', + 'file_name' => 'Tên file của trang' + ], + 'layout' => [ + 'not_found_name' => "Mẫu giao diện ':name' không tìm thấy", + 'menu_label' => 'Các mẫu', + 'unsaved_label' => 'Mẫu giao diện chưa được lưu', + 'no_list_records' => 'Không tìm thấy mẫu giao diện nào', + 'new' => 'Mẫu giao diện mới', + 'delete_confirm_multiple' => 'Xóa các mẫu giao diện đã chọn?', + 'delete_confirm_single' => 'Xóa mẫu giao diện này?' + ], + 'partial' => [ + 'not_found_name' => "Không tìm thấy partial ':name'.", + 'invalid_name' => 'Partial không hợp lệ: :name.', + 'menu_label' => 'Partials', + 'unsaved_label' => 'Chưa lưu partial(s)', + 'no_list_records' => 'Không tìm thấy partial nào', + 'delete_confirm_multiple' => 'Xóa các Partital đã chọn?', + 'delete_confirm_single' => 'Xóa partial này?', + 'new' => 'Partital mới' + ], + 'content' => [ + 'not_found_name' => "Không tìm thấy tệp tin nội dung ':name'.", + 'menu_label' => 'Nội dung', + 'unsaved_label' => 'Chưa lưu nội dung', + 'no_list_records' => 'Không tìm thấy tệp tin nội dung nào', + 'delete_confirm_multiple' => 'Xóa các tệp tin nội dung hoặc đường dẫn đã chọn?', + 'delete_confirm_single' => 'Xóa tệp tin nội dung này?', + 'new' => 'Tẹo tệp mới' + ], + 'ajax_handler' => [ + 'invalid_name' => 'Tên AJAX handler không hợp lệ: :name.', + 'not_found' => "Không tìm thấy AJAX handler ':name'" + ], + 'cms' => [ + 'menu_label' => 'CMS' + ], + 'sidebar' => [ + 'add' => 'Thêm mới', + 'search' => 'Tìm kiếm...' + ], + 'editor' => [ + 'settings' => 'Cài đặt', + 'title' => 'Tiêu đề', + 'new_title' => 'Tiêu đề trang', + 'url' => 'URL', + 'filename' => 'Tên file', + 'layout' => 'Giao diện mẫu', + 'description' => 'Mô tả', + 'preview' => 'Xem trước', + 'meta' => 'Meta', + 'meta_title' => 'Meta Title', + 'meta_description' => 'Meta Description', + 'markup' => 'Markup', + 'code' => 'Code', + 'content' => 'Nội dung', + 'hidden' => 'Ẩn', + 'hidden_comment' => 'Ẩn trang này, và chỉ hiển thị đối với những người đã đăng nhập trang quản trị', + 'enter_fullscreen' => 'Toàn màn hình', + 'exit_fullscreen' => 'Thoát toàn màn hình', + 'open_searchbox' => 'Mở hộp tìm kiếm', + 'close_searchbox' => 'Đóng hộp tìm kiếm', + 'open_replacebox' => 'Mở hộp Replace', + 'close_replacebox' => 'Đóng hộp Replace' + ], + 'asset' => [ + 'menu_label' => 'Assets', + 'unsaved_label' => 'Chưa lưu asset(s)', + 'drop_down_add_title' => 'Thêm mới...', + 'drop_down_operation_title' => 'Hành động...', + 'upload_files' => 'Upload file(s)', + 'create_file' => 'Tạo mới file', + 'create_directory' => 'Tạo mới thư mục', + 'directory_popup_title' => 'Thư mục mới', + 'directory_name' => 'Tên thư mục', + 'rename' => 'Đổi tên', + 'delete' => 'Xóa', + 'move' => 'Di chuyển ra chỗ khác', + 'select' => 'Lựa chọn', + 'new' => 'Tệp mới', + 'rename_popup_title' => 'Đổi tên', + 'rename_new_name' => 'Tên mới', + 'invalid_path' => 'Đường dẫn chỉ có thể chứa chữ số, chữ cái Latinh, dấu cách và các ký hiệu sau đây: ._-/', + 'error_deleting_file' => 'Lỗi xóa tệp tin :name.', + 'error_deleting_dir_not_empty' => 'Lỗi xóa thư mục :name. Thư mục phải trống mới xóa được.', + 'error_deleting_dir' => 'Lỗi xóa thư mục :name.', + 'invalid_name' => 'Tên chỉ có thể chứa chữ số, chữ cái Latinh, dấu cách và các ký hiệu sau đây: ._-', + 'original_not_found' => 'Tệp gốc hoặc đường dẫn không tồn tại', + 'already_exists' => 'Tên tệp tin hoặc đường dẫn đã tồn tại', + 'error_renaming' => 'Lỗi sửa tên tệp tin hoặc thư mục', + 'name_cant_be_empty' => 'Tên không được để trống', + 'too_large' => 'Kích thước tệp tin quá lớn. Kích thước tệp tin không được vượt quá :max_size', + 'type_not_allowed' => 'Chỉ chấp nhận các loại tệp tin sau: :allowed_types', + 'file_not_valid' => 'File không hợp lệ', + 'error_uploading_file' => "Lỗi upload tệp tin ':name': :error", + 'move_please_select' => 'Vui lòng chọn', + 'move_destination' => 'Thư mục cần chuyển đến', + 'move_popup_title' => 'Di chuyển assets', + 'move_button' => 'Di chuyển', + 'selected_files_not_found' => 'Không tìm thấy tệp tin đã chọn', + 'select_destination_dir' => 'Vui lòng chọn thư mục cần di chuyển đến', + 'destination_not_found' => 'Thư mục cần chuyển đến không tồn tại', + 'error_moving_file' => 'Lỗi di chuyển tệp tin :file', + 'error_moving_directory' => 'Lỗi di chuyển thư mục :dir', + 'error_deleting_directory' => 'Lỗi xóa thư mục gốc :dir', + 'no_list_records' => 'Không tìm thấy tệp tin nào', + 'delete_confirm' => 'Xóa các tệp tin hoặc thư mục đã chọn?', + 'path' => 'Path' + ], + 'component' => [ + 'menu_label' => 'Components', + 'unnamed' => 'Không có tên', + 'no_description' => 'Không có mô tả', + 'alias' => 'Alias', + 'alias_description' => 'Chọn 1 mã duy nhất để phân biệt các component khi được dùng ở front-end.', + 'validation_message' => 'Component aliases là bắt buộc và chỉ có thể chứa các ký hiệu Latin, chữ số và dấu gạch dưới. Các bí danh nên bắt đầu bằng một biểu tượng Latin.', + 'invalid_request' => 'Không thể lưu template vì chứa component không hợp lệ.', + 'no_records' => 'Không tìm thấy components nào', + 'not_found' => "Component ':name' không tồn tại.", + 'method_not_found' => "Component ':name' không có method ':method'." + ], + 'template' => [ + 'invalid_type' => 'Không xác định được định dạng template.', + 'not_found' => 'Không tìm thấy Template.', + 'saved' => 'Đã lưu template.', + 'no_list_records' => 'Không có kết quả', + 'delete_confirm' => 'Xóa các template đã chọn?', + 'order_by' => 'Order by' + ], + 'permissions' => [ + 'name' => 'CMS', + 'manage_content' => 'Quản lý các tệp content của website', + 'manage_assets' => 'Quản lý các thư mục và tệp assets - images, JavaScript files, CSS', + 'manage_pages' => 'Tạo mới, chỉnh sửa và xóa các trang của website', + 'manage_layouts' => 'Tạo mới, chỉnh sửa và xóa các CMS layout', + 'manage_partials' => 'Tạo mới, chỉnh sửa và xóa các CMS partial', + 'manage_themes' => 'Kích hoạt, bỏ kích hoạt và cấu hình CMS theme', + 'manage_theme_options' => 'Lựa chọn các cấu hình tùy chỉnh cho theme đang được kích hoạt', + ], + 'theme_log' => [ + 'hint' => 'Bản ghi những thay đổi của giao diện được thực hiện trong trang quản trị', + 'menu_label' => 'Nhật ký giao diện', + 'menu_description' => 'Xem những thay đổi của giao diện đang được kích hoạt.', + 'empty_link' => 'Xóa hết nhật ký về thay đổi giao diện', + 'empty_loading' => 'Đang xóa nhật ký giao diện...', + 'empty_success' => 'Đã xóa hết nhật ký', + 'return_link' => 'Quay lại trang nhật ký giao diện', + 'id' => 'ID', + 'id_label' => 'Log ID', + 'created_at' => 'Thời gian', + 'user' => 'Người dùng', + 'type' => 'Loại', + 'type_create' => 'Ngày tạo', + 'type_update' => 'Ngày cập nhật', + 'type_delete' => 'Ngày xóa', + 'theme_name' => 'Giao diện', + 'theme_code' => 'Mã giao diện', + 'old_template' => 'Giao diện mẫu (Cũ)', + 'new_template' => 'Giao diện mẫu (Mới)', + 'template' => 'Giao diện mẫu', + 'diff' => 'Thay đổi', + 'old_value' => 'Giá trị cũ', + 'new_value' => 'Giá trị mới', + 'preview_title' => 'Thay đổi giao diện mẫu', + 'template_updated' => 'Giao diện mẫu đã được cập nhật', + 'template_created' => 'Giao diện mẫu đã được tạo', + 'template_deleted' => 'Giao diện mẫu đã xóa', + ], +]; diff --git a/modules/system/assets/js/lang/lang.vn.js b/modules/system/assets/js/lang/lang.vn.js new file mode 100644 index 000000000..53f6063e5 --- /dev/null +++ b/modules/system/assets/js/lang/lang.vn.js @@ -0,0 +1,9 @@ +/* + * This file has been compiled from: /modules/system/lang/vn/client.php + */ +if ($.oc === undefined) $.oc = {} +if ($.oc.langMessages === undefined) $.oc.langMessages = {} +$.oc.langMessages['vn'] = $.extend( + $.oc.langMessages['vn'] || {}, + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"To\u00e0n m\u00e0n h\u00ecnh","preview":"Xem tr\u01b0\u1edbc"},"mediamanager":{"insert_link":"Ch\u00e8n Media Link","insert_image":"Ch\u00e8n Media Image","insert_video":"Ch\u00e8n Media Video","insert_audio":"Ch\u00e8n Media Audio","invalid_file_empty_insert":"Vui l\u00f2ng ch\u1ecdn file \u0111\u1ec3 ch\u00e8n v\u00e0o link.","invalid_file_single_insert":"Ch\u1ecdn m\u1ed9t file duy nh\u1ea5t.","invalid_image_empty_insert":"Ch\u1ecdn m\u1ed9t ho\u1eb7c nhi\u1ec1u \u1ea3nh \u0111\u1ec3 ch\u00e8n v\u00e0o.","invalid_video_empty_insert":"Ch\u1ecdn video \u0111\u1ec3 ch\u00e8n v\u00e0o.","invalid_audio_empty_insert":"Ch\u1ecdn t\u1ec7p tin audio \u0111\u1ec3 ch\u00e8n v\u00e0o."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel","widget_remove_confirm":"\u0110\u1ed3ng \u00fd x\u00f3a widget n\u00e0y?"},"datepicker":{"previousMonth":"Th\u00e1ng tr\u01b0\u1edbc","nextMonth":"Th\u00e1ng ti\u1ebfp theo","months":["Th\u00e1ng gi\u00eang","Th\u00e1ng 2","Th\u00e1ng 3","Th\u00e1ng 4","Th\u00e1ng 5","Th\u00e1ng 6","Th\u00e1ng 7","Th\u00e1ng 8","Th\u00e1ng 9","Th\u00e1ng 10","Th\u00e1ng 11","Th\u00e1ng 12"],"weekdays":["Ch\u1ee7 nh\u1eadt","Th\u1ee9 2","Th\u1ee9 3","Th\u1ee9 4","Th\u1ee9 5","Th\u1ee9 6","Th\u1ee9 7"],"weekdaysShort":["CN","T2","T3","T4","T5","T6","T7"]},"colorpicker":{"choose":"Ok"},"filter":{"group":{"all":"t\u1ea5t c\u1ea3"},"dates":{"all":"t\u1ea5t c\u1ea3","filter_button_text":"L\u1ecdc","reset_button_text":"Reset","date_placeholder":"Ng\u00e0y","after_placeholder":"Sau ng\u00e0y","before_placeholder":"Tr\u01b0\u1edbc ng\u00e0y"},"numbers":{"all":"all","filter_button_text":"L\u1ecdc","reset_button_text":"Reset","min_placeholder":"Nh\u1ecf nh\u1ea5t","max_placeholder":"L\u1edbn nh\u1ea5t"}},"eventlog":{"show_stacktrace":"Show the stacktrace","hide_stacktrace":"Hide the stacktrace","tabs":{"formatted":"\u0110\u00e3 \u0111\u1ecbnh d\u1ea1ng","raw":"Raw"},"editor":{"title":"Source code editor","description":"Your operating system should be configured to listen to one of these URL schemes.","openWith":"M\u1edf b\u1eb1ng","remember_choice":"Nh\u1edb l\u1ef1a ch\u1ecdn n\u00e0y cho c\u00e1c l\u1ea7n ti\u1ebfp theo","open":"Open","cancel":"Cancel"}}} +); \ No newline at end of file diff --git a/modules/system/lang/en/lang.php b/modules/system/lang/en/lang.php index 1092dc4aa..6239c9d72 100644 --- a/modules/system/lang/en/lang.php +++ b/modules/system/lang/en/lang.php @@ -43,7 +43,8 @@ return [ 'tr' => 'Türkçe', 'uk' => 'Українська мова', 'zh-cn' => '简体中文', - 'zh-tw' => '繁體中文' + 'zh-tw' => '繁體中文', + 'vn' => 'Tiếng việt' ], 'directory' => [ 'create_fail' => 'Cannot create directory: :name' diff --git a/modules/system/lang/et/lang.php b/modules/system/lang/et/lang.php index 9dde159b1..1114ac175 100644 --- a/modules/system/lang/et/lang.php +++ b/modules/system/lang/et/lang.php @@ -38,7 +38,8 @@ return [ 'sk' => 'Slovenský', 'tr' => 'Türkçe', 'zh-cn' => '简体中文', - 'zh-tw' => '繁體中文' + 'zh-tw' => '繁體中文', + 'vn' => 'Tiếng việt' ], 'directory' => [ 'create_fail' => 'Kataloogi :name ei õnnestunud luua' diff --git a/modules/system/lang/lt/lang.php b/modules/system/lang/lt/lang.php index 019ab2d4b..2ef7707e9 100644 --- a/modules/system/lang/lt/lang.php +++ b/modules/system/lang/lt/lang.php @@ -37,7 +37,8 @@ return [ 'sk' => 'Slovenský', 'tr' => 'Türk', 'zh-cn' => '简体中文', - 'zh-tw' => '繁體中文' + 'zh-tw' => '繁體中文', + 'vn' => 'Tiếng việt' ], 'directory' => [ 'create_fail' => 'Negalime sukurti direktorijos: :name' diff --git a/modules/system/lang/nl/lang.php b/modules/system/lang/nl/lang.php index 5bf572fe6..b94698991 100644 --- a/modules/system/lang/nl/lang.php +++ b/modules/system/lang/nl/lang.php @@ -40,7 +40,8 @@ return [ 'tr' => 'Türkçe', 'uk' => 'Українська мова', 'zh-cn' => '简体中文', - 'zh-tw' => '繁體中文' + 'zh-tw' => '繁體中文', + 'vn' => 'Tiếng việt' ], 'directory' => [ 'create_fail' => 'Map aanmaken mislukt: :name', diff --git a/modules/system/lang/pt-pt/lang.php b/modules/system/lang/pt-pt/lang.php index 743a4c244..38844dc19 100644 --- a/modules/system/lang/pt-pt/lang.php +++ b/modules/system/lang/pt-pt/lang.php @@ -37,7 +37,8 @@ return [ 'sk' => 'Esloveno', 'tr' => 'Turco', 'zh-cn' => 'Chinês', - 'zh-tw' => 'Tailandês' + 'zh-tw' => 'Tailandês', + 'vn' => 'Tiếng việt' ], 'directory' => [ 'create_fail' => 'Não é possível criar a diretoria: :name', diff --git a/modules/system/lang/vn/client.php b/modules/system/lang/vn/client.php new file mode 100644 index 000000000..77d6a05b7 --- /dev/null +++ b/modules/system/lang/vn/client.php @@ -0,0 +1,99 @@ + [ + 'formatting' => 'Định dạng', + 'quote' => 'Đoạn trích dẫn', + 'code' => 'Code', + 'header1' => 'Tiêu đề 1', + 'header2' => 'Tiêu đề 2', + 'header3' => 'Tiêu đề 3', + 'header4' => 'Tiêu đề 4', + 'header5' => 'Tiêu đề 5', + 'header6' => 'Tiêu đề 6', + 'bold' => 'Chữ đậm', + 'italic' => 'Chữ nghiêng', + 'unorderedlist' => 'Danh sách không thứ tự', + 'orderedlist' => 'Danh sách có thứ tự', + 'video' => 'Video', + 'image' => 'Hình ảnh', + 'link' => 'Link', + 'horizontalrule' => 'Chèn dòng kẻ ngang', + 'fullscreen' => 'Toàn màn hình', + 'preview' => 'Xem trước', + ], + 'mediamanager' => [ + 'insert_link' => 'Chèn Link', + 'insert_image' => 'Chèn hình ảnh', + 'insert_video' => 'Chèn Video', + 'insert_audio' => 'Chèn tệp âm thanh', + 'invalid_file_empty_insert' => 'Vui lòng chọn file để chèn vào link.', + 'invalid_file_single_insert' => 'Chọn một file duy nhất.', + 'invalid_image_empty_insert' => 'Chọn một hoặc nhiều ảnh để chèn vào.', + 'invalid_video_empty_insert' => 'Chọn video để chèn vào.', + 'invalid_audio_empty_insert' => 'Chọn tệp tin audio để chèn vào.', + ], + 'alert' => [ + 'confirm_button_text' => 'Đồng ý', + 'cancel_button_text' => 'Bỏ qua', + 'widget_remove_confirm' => 'Đồng ý xóa widget này?' + ], + 'datepicker' => [ + 'previousMonth' => 'Tháng trước', + 'nextMonth' => 'Tháng tiếp theo', + 'months' => ['Tháng giêng', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6', 'Tháng 7', 'Tháng 8', 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12'], + 'weekdays' => ['Chủ nhật', 'Thứ 2', 'Thứ 3', 'Thứ 4', 'Thứ 5', 'Thứ 6', 'Thứ 7'], + 'weekdaysShort' => ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'] + ], + 'colorpicker' => [ + 'choose' => 'Chọn', + ], + 'filter' => [ + 'group' => [ + 'all' => 'tất cả' + ], + 'dates' => [ + 'all' => 'tất cả', + 'filter_button_text' => 'Lọc', + 'reset_button_text' => 'Reset', + 'date_placeholder' => 'Ngày', + 'after_placeholder' => 'Sau ngày', + 'before_placeholder' => 'Trước ngày' + ], + 'numbers' => [ + 'all' => 'all', + 'filter_button_text' => 'Lọc', + 'reset_button_text' => 'Reset', + 'min_placeholder' => 'Nhỏ nhất', + 'max_placeholder' => 'Lớn nhất' + ] + + ], + 'eventlog' => [ + 'show_stacktrace' => 'Hiển thị ngăn xếp', + 'hide_stacktrace' => 'Ẩn ngăn xếp', + 'tabs' => [ + 'formatted' => 'Đã định dạng', + 'raw' => 'Raw', + ], + 'editor' => [ + 'title' => 'Trình soạn thảo code', + 'description' => 'Hệ thống của bạn cần được cấu hình để hiểu được một trong những cấu trúc URL này', + 'openWith' => 'Mở bằng', + 'remember_choice' => 'Nhớ lựa chọn này cho các lần tiếp theo', + 'open' => 'Mở ra', + 'cancel' => 'Bỏ qua' + ] + ] +]; diff --git a/modules/system/lang/vn/lang.php b/modules/system/lang/vn/lang.php new file mode 100644 index 000000000..6a8da2b78 --- /dev/null +++ b/modules/system/lang/vn/lang.php @@ -0,0 +1,434 @@ + [ + 'name' => 'OctoberCMS', + 'tagline' => 'Getting back to basics' + ], + 'locale' => [ + 'be' => 'Беларуская', + 'bg' => 'Български', + 'cs' => 'Čeština', + 'da' => 'Dansk', + 'en' => 'English (United States)', + 'en-au' => 'English (Australia)', + 'en-ca' => 'English (Canada)', + 'en-gb' => 'English (United Kingdom)', + 'et' => 'Eesti', + 'de' => 'Deutsch', + 'el' => 'Ελληνικά', + 'es' => 'Español', + 'es-ar' => 'Español (Argentina)', + 'fa' => 'فارسی', + 'fr' => 'Français', + 'fr-ca' => 'Français (Canada)', + 'hu' => 'Magyar', + 'id' => 'Bahasa Indonesia', + 'it' => 'Italiano', + 'ja' => '日本語', + 'kr' => '한국어', + 'lt' => 'Lietuvių', + 'lv' => 'Latviešu', + 'nb-no' => 'Norsk (Bokmål)', + 'nl' => 'Nederlands', + 'pl' => 'Polskie', + 'pt-br' => 'Português (Brasil)', + 'pt-pt' => 'Português (Portugal)', + 'ro' => 'Română', + 'ru' => 'Русский', + 'fi' => 'Suomi', + 'sv' => 'Svenska', + 'sk' => 'Slovenský', + 'tr' => 'Türkçe', + 'uk' => 'Українська мова', + 'zh-cn' => '简体中文', + 'zh-tw' => '繁體中文', + 'vn' => 'Tiếng việt' + ], + 'directory' => [ + 'create_fail' => 'Không thể tạo danh mục: :name' + ], + 'file' => [ + 'create_fail' => 'Không thể tạo file: :name' + ], + 'combiner' => [ + 'not_found' => "Không tìm thấy combiner file ':name'." + ], + 'system' => [ + 'name' => 'Hệ thống', + 'menu_label' => 'Hệ thống', + 'categories' => [ + 'cms' => 'CMS', + 'misc' => 'Misc', + 'logs' => 'Các bản ghi', + 'mail' => 'Mail', + 'shop' => 'Cửa hàng', + 'team' => 'Team', + 'users' => 'Người dùng', + 'system' => 'Hệ thống', + 'social' => 'Mạng xã hội', + 'backend' => 'Trang quản trị', + 'events' => 'Sự kiện', + 'customers' => 'Khách hàng', + 'my_settings' => 'Cài đặt của tôi', + 'notifications' => 'Thông báo' + ] + ], + 'theme' => [ + 'label' => 'Theme', + 'unnamed' => 'Theme chưa được đặt tên', + 'name' => [ + 'label' => 'Tên theme', + 'help' => 'Tên của theme không được trùng lặp. Ví dụ RainLab.Vanilla' + ], + ], + 'themes' => [ + 'install' => 'Cài đặt themes', + 'search' => 'Tìm kiếm theme để cài đặt...', + 'installed' => 'Các theme đã cài đặt', + 'no_themes' => 'Không có theme nào được cài đặt từ chợ theme.', + 'recommended' => 'Được khuyến khích cài đặt', + 'remove_confirm' => 'Bạn có chắc chắn muốn xóa theme này?' + ], + 'plugin' => [ + 'label' => 'Plugin', + 'unnamed' => 'Plugin chưa được đặt tên', + 'name' => [ + 'label' => 'Tên plugin', + 'help' => 'Tên của plugin không được trùng lặp. For example, RainLab.Blog' + ] + ], + 'plugins' => [ + 'manage' => 'Quản lý các plugin', + 'enable_or_disable' => 'Bật hoặc tắt', + 'enable_or_disable_title' => 'Bật hoặc tắt plugin', + 'install' => 'Cài đặt plugin', + 'install_products' => 'Các sản phẩm để cài đặt', + 'search' => 'Tìm kiếm plugin để cài đặt...', + 'installed' => 'Các plugin đã cài đặt', + 'no_plugins' => 'Không có plugin nào được cài đặt từ chợ plugin', + 'recommended' => 'Được khuyến khích cài đặt', + 'remove' => 'Xóa', + 'refresh' => 'Làm mới', + 'disabled_label' => 'Đã tắt', + 'disabled_help' => 'Các plugin đã tắt và không được sử dụng bới ứng dụng', + 'frozen_label' => 'Tắt cập nhật', + 'frozen_help' => 'Những plugin tắt cập nhật sẽ không được sử lý cập nhật tự động.', + 'selected_amount' => 'Số plugin đã được chọn: :amount', + 'remove_confirm' => 'Xác nhận xóa plugin này?', + 'remove_success' => 'Đã xóa các plugin ra khỏi hệ thống.', + 'refresh_confirm' => 'Xác nhận?', + 'refresh_success' => 'Đã làm mới các plugin.', + 'disable_confirm' => 'Xác nhận tắt?', + 'disable_success' => 'Đã tắt các plugin.', + 'enable_success' => 'Đã bật các plugin.', + 'unknown_plugin' => 'Đã xóa các file của plugin ra khỏi hệ thống.' + ], + 'project' => [ + 'name' => 'Dự án', + 'owner_label' => 'Người sở hữu', + 'attach' => 'Chèn Dự án', + 'detach' => 'Gỡ bỏ Dự án', + 'none' => 'Trống', + 'id' => [ + 'label' => 'ID Dự án', + 'help' => 'Cách để xem ID Dự án', + 'missing' => 'Điền vào ID Dự án để sử dụng.' + ], + 'detach_confirm' => 'Xác nhận gỡ Dự án?', + 'unbind_success' => 'Dự án đã được gỡ ra.' + ], + 'settings' => [ + 'menu_label' => 'Cài đặt', + 'not_found' => 'Không tìm thấy các cấu hình được chỉ định.', + 'missing_model' => 'Không có Model cho trang cài đặt.', + 'update_success' => 'Cấu hình cho :name thành công', + 'return' => 'Trở lại trang cài đặt', + 'search' => 'Tìm kiếm' + ], + 'mail' => [ + 'log_file' => 'Log file', + 'menu_label' => 'Cấu hình mail', + 'menu_description' => 'Quản lý các cấu hình mail.', + 'general' => 'Cấu hình chung', + 'method' => 'Phương thức gửi mail', + 'sender_name' => 'Tên người gửi', + 'sender_email' => 'Email người gửi', + 'php_mail' => 'PHP mail', + 'smtp' => 'SMTP', + 'smtp_address' => 'Địa chỉ SMTP', + 'smtp_authorization' => 'Yêu cầu cấp quyền', + 'smtp_authorization_comment' => 'Chọn mụ này nếu SMTP sever của bạn yêu cầu cấp quyền truy cập(requires authorization).', + 'smtp_username' => 'Tên đăng nhập', + 'smtp_password' => 'Mật khẩu', + 'smtp_port' => 'SMTP port', + 'smtp_ssl' => 'Yêu cầu sử dụng SSL', + 'smtp_encryption' => 'Giao thức mã hóa SMTP', + 'smtp_encryption_none' => 'Không mã hóa', + 'smtp_encryption_tls' => 'TLS', + 'smtp_encryption_ssl' => 'SSL', + 'sendmail' => 'Gửi mail', + 'sendmail_path' => 'Đường dẫn gửi mail', + 'sendmail_path_comment' => 'Please specify the path of the sendmail program.', + 'mailgun' => 'Mailgun', + 'mailgun_domain' => 'Tên miền trên Mailgun', + 'mailgun_domain_comment' => 'Điền tên miền trên Mailgun', + 'mailgun_secret' => 'Mã bí mật trên Mailgun(secret key)', + 'mailgun_secret_comment' => 'Điền vào mã Mailgun API của bạn', + 'mandrill' => 'Mandrill', + 'mandrill_secret' => 'Mã bí mật trên Mandrill (secret key)', + 'mandrill_secret_comment' => 'Điền vào mã Mandrill API của bạn.', + 'ses' => 'SES', + 'ses_key' => 'Mã SES', + 'ses_key_comment' => 'Điền vào mã SES API của bạn', + 'ses_secret' => 'Mã bí mật trên SES (secret key)', + 'ses_secret_comment' => 'Điền vào mã bí mật trên SES API của bạn (secret key)', + 'ses_region' => 'Ku vực SES', + 'ses_region_comment' => 'Điền vào khu vực SES (ví dụ us-east-1)', + 'drivers_hint_header' => 'Trình điều khiển chưa được cài đặt', + 'drivers_hint_content' => 'Phương thức gửi mail này cần phải cài ":plugin" plugin, bạn cần phải cài đặt nó trước mới gửi được mail' + ], + 'mail_templates' => [ + 'menu_label' => 'Các mẫu mail', + 'menu_description' => 'Quản lý các mẫu mail sẽ được gửi cho user và administrators.', + 'new_template' => 'Thêm mẫu mới', + 'new_layout' => 'Thêm mẫu mới', + 'new_partial' => 'Thêm Partial', + 'template' => 'Giao diện mẫu', + 'templates' => 'Các giao diện mẫu', + 'partial' => 'Partial', + 'partials' => 'Partials', + 'menu_layouts_label' => 'Giao diện mail mẫu', + 'menu_partials_label' => 'Mail Partials', + 'layout' => 'Giao diễn mẫu', + 'layouts' => 'Các giao diễn mẫu', + 'no_layout' => '-- Không sử dụng mẫu --', + 'name' => 'Tên', + 'name_comment' => 'Tên của giao diễn mẫu không được trùng nhau.', + 'code' => 'Code', + 'code_comment' => 'Nhập một mã không được trùng với các mẫu giao diện khác', + 'subject' => 'Tiêu đề mail', + 'subject_comment' => 'Tiêu đề của mail', + 'description' => 'Mô tả', + 'content_html' => 'HTML', + 'content_css' => 'CSS', + 'content_text' => 'Văn bản thô', + 'test_send' => 'Gửi mail test', + 'test_success' => 'Đã gửi mail test.', + 'test_confirm' => 'Gửi mail test đến :email. Tiếp tục?', + 'creating' => 'Đang tạo mẫu...', + 'creating_layout' => 'Đang tạo Layout...', + 'saving' => 'Đang lưu mẫu...', + 'saving_layout' => 'Đang lưu Layout...', + 'delete_confirm' => 'Xác nhận xóa template này?', + 'delete_layout_confirm' => 'Xác nhận xóa layout này?', + 'deleting' => 'Đang xóa mẫu...', + 'deleting_layout' => 'Đang xóa Layout...', + 'sending' => 'Đang gửi mail test...', + 'return' => 'Quay lại trang danh sách mail mẫu' + ], + 'mail_brand' => [ + 'menu_label' => 'Giao diện Mail', + 'menu_description' => 'Chỉnh sửa màu sắc, giao diện của mẫu mail.', + 'page_title' => 'Tùy chỉnh giao diện của mẫu mail', + 'sample_template' => [ + 'heading' => 'Tiêu đề', + 'paragraph' => 'Đây là đoạn văn mẫu.... This is a paragraph filled with Lorem Ipsum and a link. Cumque dicta doloremque eaque, enim error laboriosam pariatur possimus tenetur veritatis voluptas.', + 'table' => [ + 'item' => 'Danh sách các mục', + 'description' => 'Mô tả', + 'price' => 'Giá', + 'centered' => 'Căn giữa', + 'right_aligned' => 'Căn phải' + ], + 'buttons' => [ + 'primary' => 'Nút bấm chính', + 'positive' => 'Nút nổi bật', + 'negative' => 'Nút chú ý', + ], + 'panel' => 'Mẫu giao diện này thật tuyện vời!', + 'more' => 'Mô tả thêm', + 'promotion' => 'Mã ưu đãi: OCTOBER', + 'subcopy' => 'Thông tin thêm', + 'thanks' => 'Lời cám ơn' + ], + 'fields' => [ + '_section_background' => 'Màu nền', + 'body_bg' => 'Màu nền chính', + 'content_bg' => 'Màu nền nội dung', + 'content_inner_bg' => 'Màu nền bên trong nội dung', + '_section_buttons' => 'Màu nền của các nút bấm', + 'button_text_color' => 'Màu chữ của nút bấm', + 'button_primary_bg' => 'Màu của nút bấm chính', + 'button_positive_bg' => 'Màu của nút bấm nổi bật', + 'button_negative_bg' => 'Màu của nút bấm chú ý', + '_section_type' => 'Màu của chữ', + 'header_color' => 'Màu của tiêu đề', + 'heading_color' => 'Màu của tiêu đề', + 'text_color' => 'Màu chữ bình thường', + 'link_color' => 'Màu đường dẫn', + 'footer_color' => 'Màu chữ chân trang', + '_section_borders' => 'Đường viền', + 'body_border_color' => 'Màu của đường viền toàn trang', + 'subcopy_border_color' => 'Màu đường viền phần mô tả thêm', + 'table_border_color' => 'Màu của đường viền bảng', + '_section_components' => 'Thành phần khác', + 'panel_bg' => 'Nền của bảng điều khiển', + 'promotion_bg' => 'Nền mục khuyến mãi', + 'promotion_border_color' => 'Viền của mục khuyến mãi', + ] + ], + 'install' => [ + 'project_label' => 'Chèn Project', + 'plugin_label' => 'Cài đặt Plugin', + 'theme_label' => 'Cài đặt Theme', + 'missing_plugin_name' => 'Điền vào tên Plugin để cài đặt.', + 'missing_theme_name' => 'Điền vào tên Theme để cài đặt.', + 'install_completing' => 'Hoàn tất cài đặt', + 'install_success' => 'Plugin đã được cài thành công' + ], + 'updates' => [ + 'title' => 'Quản lý các cập nhật', + 'name' => 'Cập nhật hệ thống', + 'menu_label' => 'Những cập nhật & Plugins', + 'menu_description' => 'Cập nhật hệ thống, quản lý và cài đặt plugins, themes.', + 'return_link' => 'Quay lại trang cập nhật hệ thống', + 'check_label' => 'Kiểm tra cập nhật', + 'retry_label' => 'Thử lại', + 'plugin_name' => 'Tên Plugin', + 'plugin_code' => 'Code', + 'plugin_description' => 'Mô tả', + 'plugin_version' => 'Phiên bản', + 'plugin_author' => 'Tác giả', + 'plugin_not_found' => 'Không tìm thấy Plugin', + 'core_current_build' => 'Current build', + 'core_build' => 'Build :build', + 'core_build_help' => 'Phiên bản build gần nhất.', + 'core_downloading' => 'Đang tải file ứng dụng', + 'core_extracting' => 'Đang giải nén', + 'core_set_build' => 'Cài đặt build number', + 'plugins' => 'Plugins', + 'themes' => 'Themes', + 'disabled' => 'Đã tắt', + 'plugin_downloading' => 'Đang tải plugin: :name', + 'plugin_extracting' => 'Đang giải nén plugin: :name', + 'plugin_version_none' => 'Tạo mới plugin', + 'plugin_current_version' => 'Phiên bản hiện tại version', + 'theme_new_install' => 'Cài đặt theme mới.', + 'theme_downloading' => 'Đang tải theme: :name', + 'theme_extracting' => 'Đang giải nén theme: :name', + 'update_label' => 'cập nhật hệ thống', + 'update_completing' => 'Cập nhật hoàn tất', + 'update_loading' => 'Đang kiểm tra các cập nhật có sẵn...', + 'update_success' => 'Cập nhật hoàn tất', + 'update_failed_label' => 'Lỗi cập nhật', + 'force_label' => 'Bắt buộc cập nhật', + 'found' => [ + 'label' => 'Có cập nhật mới!', + 'help' => 'Bấm cập nhật hệ thống để bắt đầu cập nhật.' + ], + 'none' => [ + 'label' => 'Không có cập nhật', + 'help' => 'Không tìm thấy bản cập nhật nào.' + ], + 'important_action' => [ + 'empty' => 'Chọn hành động', + 'confirm' => 'Xác nhận cập nhật', + 'skip' => 'Bỏ qua bản cập nhật này (Chỉ lần này)', + 'ignore' => 'Bỏ qua bản cập nhật này (luôn luôn bỏ qua)' + ], + 'important_action_required' => 'Hành động này là bắt buộc', + 'important_view_guide' => 'Xem hướng dẫn nâng cấp', + 'important_view_release_notes' => 'Xem ghi chú', + 'important_alert_text' => 'Một số cập nhật cần phải chú ý.', + 'details_title' => 'Chi tiết Plugin', + 'details_view_homepage' => 'Đến trang chủ', + 'details_readme' => 'Tài liệu hướng dẫn', + 'details_readme_missing' => 'Không có tài liệu được cung cấp.', + 'details_changelog' => 'Các lần thay đổi', + 'details_changelog_missing' => 'Không có bản ghi các lần thay đổi.', + 'details_upgrades' => 'Hướng dẫn nâng cấp', + 'details_upgrades_missing' => 'Không có hướng dẫn nâng cấp nào được cung cấp.', + 'details_licence' => 'Giấy phép', + 'details_licence_missing' => 'Không có giấy phép nào được cung cấp.', + 'details_current_version' => 'Phiên bản hiện tại', + 'details_author' => 'Tác giả' + ], + 'server' => [ + 'connect_error' => 'Lỗi kết nối đến máy chủ.', + 'response_not_found' => 'Không tìm thấy máy chủ cập nhật.', + 'response_invalid' => 'Phản hồi không hợp lệ từ máy chủ.', + 'response_empty' => 'Phản hồi trống từ máy chủ.', + 'file_error' => 'Lỗi máy chủ không thể gửi về các package.', + 'file_corrupt' => 'File trên máy chủ bị hỏng.' + ], + 'behavior' => [ + 'missing_property' => 'Class :class cần phải khai báo thuộc tính $:property được sử dụng bởi :behavior behavior.' + ], + 'config' => [ + 'not_found' => 'Không tìm thấy tệp tin cấu hình :file được khai báo cho :location.', + 'required' => "Cấu hình được sử dụng cho :location cần phải có giá trị ':property'." + ], + 'zip' => [ + 'extract_failed' => "Không thể giải nén tệp tin ':file'." + ], + 'event_log' => [ + 'hint' => 'Bản ghi các lỗi có thể sảy ra trong ứng dụng, ví dụ exceptions và thông tin debug.', + 'menu_label' => 'Bản ghi các sự kiện', + 'menu_description' => 'Xem nhật ký hệ thống với thông tin thời gian cụ thể.', + 'empty_link' => 'Xóa hết các bản ghi', + 'empty_loading' => 'Đang xóa các bản ghi...', + 'empty_success' => 'Đã xóa các bản ghi sự kiện', + 'return_link' => 'Quay lại trang các bản ghi sự kiện', + 'id' => 'ID', + 'id_label' => 'Event ID', + 'created_at' => 'Ngày giờ', + 'message' => 'Nội dung', + 'level' => 'Cấp độ', + 'preview_title' => 'Event' + ], + 'request_log' => [ + 'hint' => 'Bản ghi các request lỗi của trình duyệt. Ví dụ, nếu có khách truy cập vào một trang nội dung mà hệ thống không tìm thấy trang đó, một bản ghi sẽ được tạo ra với mã trạng thái 404.', + 'menu_label' => 'Bản ghi các Request', + 'menu_description' => 'Xem các request lỗi hoặc bị chuyển hướng, ví dụ như Không tìm thấy trang (404).', + 'empty_link' => 'Xóa hết các request log', + 'empty_loading' => 'Đang xóa request log...', + 'empty_success' => 'Đã xóa hết request log', + 'return_link' => 'Quay lại trang request log', + 'id' => 'ID', + 'id_label' => 'Log ID', + 'count' => 'Số lần', + 'referer' => 'Người giới thiệu', + 'url' => 'URL', + 'status_code' => 'Trạng thái', + 'preview_title' => 'Request' + ], + 'permissions' => [ + 'name' => 'Hệ thống', + 'manage_system_settings' => 'Quản lý các cài đặt của hệ thống', + 'manage_software_updates' => 'Quản lý các cập nhật của hệ thống', + 'access_logs' => 'Xem các bản ghi hệ thống', + 'manage_mail_templates' => 'Quản lý các mẫu mail', + 'manage_mail_settings' => 'Quản lý các cài đặt mail', + 'manage_other_administrators' => 'Quản lý các administrator khác', + 'manage_preferences' => 'Cá nhân hóa trang quản trị', + 'manage_editor' => 'Cá nhân hóa trình biên tập(code editor)', + 'view_the_dashboard' => 'Xem bảng điều khiển', + 'manage_branding' => 'Tùy chỉnh trang quản trị' + ], + 'log' => [ + 'menu_label' => 'Cài đặt log', + 'menu_description' => 'Cấu hình những mục sẽ được ghi log.', + 'default_tab' => 'Những lần đăng nhập', + 'log_events' => 'Ghi các sự kiện của hệ thống', + 'log_events_comment' => 'Lưu các sự kiện của hệ thống vào database dựa trên file log', + 'log_requests' => 'Bản ghi các lỗi request', + 'log_requests_comment' => 'Các lỗi request của trình duyệt, ví dụ lỗi 404.', + 'log_theme' => 'Bản ghi các thay đổi của theme', + 'log_theme_comment' => 'Khi thay đổi theme thông qua giao diện quản trị.', + ], + 'media' => [ + 'invalid_path' => "Đường dẫn không hợp lệ: ':path'.", + 'folder_size_items' => 'item(s)', + ], +]; diff --git a/modules/system/lang/vn/validation.php b/modules/system/lang/vn/validation.php new file mode 100644 index 000000000..944fc9dd3 --- /dev/null +++ b/modules/system/lang/vn/validation.php @@ -0,0 +1,117 @@ + ':attribute phải được chấp nhận.', + 'active_url' => ':attribute không phải là URL hợp lệ.', + 'after' => ':attribute phải là ngày sau :date.', + 'after_or_equal' => ':attribute phải là một ngày sau hoặc bằng ngày :date.', + 'alpha' => ':attribute phải là chữ cái.', + 'alpha_dash' => ':attribute phải là chữ cái, số hoặc dấu gạch ngang.', + 'alpha_num' => ':attribute phải là chữ cái hoặc số.', + 'array' => ':attribute phải là mảng.', + 'before' => ':attribute phải là ngày trước ngày :date.', + 'before_or_equal' => ':attribute phải là một ngày trước hoặc bằng với ngày :date.', + 'between' => [ + 'numeric' => ':attribute phải lớn hơn :min và nhỏ hơn :max.', + 'file' => ':attribute phải lớn hơn :min và nhỏ hơn :max kilobytes.', + 'string' => ':attribute phải lớn hơn :min và nhỏ hơn :max kí tự.', + 'array' => ':attribute phải lớn hơn :min và nhỏ hơn :max items.', + ], + 'boolean' => 'Trường :attribute phải là giá trị đúng hoặc sai.', + 'confirmed' => ':attribute không chính xác.', + 'date' => ':attribute không phải là ngày.', + 'date_format' => ':attribute không đúng định dạng với :format.', + 'different' => ':attribute phải khác :other.', + 'digits' => ':attribute phải có :digits chữ số.', + 'digits_between' => ':attribute phải lớn hơn :min và nhỏ hơn :max chữ số.', + 'dimensions' => ':attribute kích thước không hợp lệ.', + 'distinct' => 'Trường :attribute bị trùng giá trị.', + 'email' => ':attribute phải là một email hợp lệ.', + 'exists' => 'Mục đã chọn :attribute không hợp lệ.', + 'file' => ':attribute phải là tệp tin.', + 'filled' => 'Trường :attribute không được để trống.', + 'image' => ':attribute phải là hình ảnh.', + 'in' => 'Mục đã chọn :attribute không hợp lệ.', + 'in_array' => 'Trường :attribute không tồn tại trong :other.', + 'integer' => ':attribute phải là một số nguyên.', + 'ip' => ':attribute phải là một địa chỉ IP hợp lệ.', + 'ipv4' => ':attribute phải là địa chỉ IPv4 hợp lệ.', + 'ipv6' => ':attribute phải là địa chỉ IPv6 hợp lệ.', + 'json' => ':attribute phải là chuỗi JSON hợp lệ.', + 'max' => [ + 'numeric' => ':attribute không được lơn hơn :max.', + 'file' => ':attribute không được lơn hơn :max kilobytes.', + 'string' => ':attribute không được lơn hơn :max kí tự.', + 'array' => ':attribute không được lơn hơn :max items.', + ], + 'mimes' => 'Loại file của :attribute phải là: :values.', + 'mimetypes' => 'Loại file của :attribute phải là: :values.', + 'min' => [ + 'numeric' => ':attribute phải lớn hơn :min.', + 'file' => ':attribute phải lớn hơn :min kilobytes.', + 'string' => ':attribute phải nhiều hơn :min kí tự.', + 'array' => ':attribute phải có nhiều hơn :min item.', + ], + 'not_in' => 'Mục đã chọn :attribute không hợp lệ.', + 'numeric' => ':attribute phải là số.', + 'present' => 'Phải có trường :attribute.', + 'regex' => 'Định dạng của :attribute không hợp lệ.', + 'required' => 'Trường :attribute là bắt buộc.', + 'required_if' => 'Trường :attribute là bắt buộc khi :other là :value.', + 'required_unless' => 'Trường :attribute là bắt buộc trừ khi :other là :values.', + 'required_with' => 'Trường :attribute là bắt buộc khi có :values.', + 'required_with_all' => 'Trường :attribute là bắt buộc khi có :values.', + 'required_without' => 'Trường :attribute là bắt buộc khi không có :values.', + 'required_without_all' => 'Trường :attribute là bắt buộc khi không có :values.', + 'same' => ':attribute phải trùng khớp với :other.', + 'size' => [ + 'numeric' => ':attribute phải có kích thước :size.', + 'file' => ':attribute phải có kích thước :size kilobytes.', + 'string' => ':attribute phải có :size kí tự.', + 'array' => ':attribute phải có :size items.', + ], + 'string' => ':attribute phải là chuỗi.', + 'timezone' => ':attribute phải là múi là hợp lệ.', + 'unique' => ':attribute đã tồn tại.', + 'uploaded' => ':attribute bị lỗi khi tải lên.', + 'url' => ':attribute sai định dạng.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + +];