From 5a030d554af786de75e75050500ad7e506b62d00 Mon Sep 17 00:00:00 2001 From: Stephen Cheng Date: Wed, 15 Jan 2025 11:42:59 +0700 Subject: [PATCH] Add Vietnamese translation --- README.md | 1 + locales/vi-VN.json | 240 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 241 insertions(+) create mode 100644 locales/vi-VN.json diff --git a/README.md b/README.md index 921153cb..11eeb215 100644 --- a/README.md +++ b/README.md @@ -134,6 +134,7 @@ This extension itself supports i18n as well. It will be auto-matched to the disp | Turkish (Türkçe) | | [@eri](https://github.com/eri), [@dilekerkut](https://github.com/dilekerkut) | | Korean (한국어) | | [@moka-ayumu](https://github.com/moka-ayumu) | | Hungarian (Magyar) | [@Cs4K1Sr4C](https://github.com/Cs4K1Sr4C) | [@Cs4K1Sr4C](https://github.com/Cs4K1Sr4C) | +| Vietnamese (Tiếng Việt) | [@zintaen](https://github.com/zintaen) | [@zintaen](https://github.com/zintaen) | [**Help Translate**](https://github.com/lokalise/i18n-ally/wiki/Contribute#working-on-translations) diff --git a/locales/vi-VN.json b/locales/vi-VN.json new file mode 100644 index 00000000..68a5f62b --- /dev/null +++ b/locales/vi-VN.json @@ -0,0 +1,240 @@ +{ + "command.config_display_language": "Thay đổi ngôn ngữ hiển thị", + "command.config_locales": "Cấu hình thủ công đường dẫn thư mục locales", + "command.config_locales_auto": "Tự động phát hiện đường dẫn thư mục locales", + "command.config_source_language": "Thay đổi ngôn ngữ nguồn", + "command.copy_key": "Sao chép khóa i18n", + "command.deepl_usage": "Sử dụng API DeepL", + "command.delete_key": "Xóa khóa", + "command.duplicate_key": "Nhân bản khóa", + "command.edit_key": "Chỉnh sửa bản dịch", + "command.extract.disable-auto-detect": "Tắt tự động phát hiện chuỗi mã cứng", + "command.extract.enable-auto-detect": "Bật tự động phát hiện chuỗi mã cứng", + "command.fulfill_keys": "Hoàn thiện các khóa còn trống", + "command.go_to_next_usage": "Đi đến lần sử dụng tiếp theo", + "command.go_to_prev_usage": "Quay lại lần sử dụng trước đó", + "command.go_to_range": "Đi đến phạm vi", + "command.insert_key": "Chèn khóa", + "command.locale_visibility_hide": "Ẩn locale", + "command.locale_visibility_show": "Hiện locale", + "command.mark_key_as_in_use": "Đánh dấu khóa này là \"đang sử dụng\"", + "command.new_key": "Tạo khóa mới", + "command.open_editor": "Mở trình chỉnh sửa", + "command.open_in_editor": "Mở trong trình chỉnh sửa", + "command.open_key": "Đi đến định nghĩa", + "command.open_review": "Mở phần đánh giá", + "command.open_url": "Mở URL", + "command.possible_hard_string": "Chuỗi mã cứng có thể xảy ra", + "command.refresh_usage": "Làm mới báo cáo sử dụng", + "command.rename_key": "Đổi tên khóa", + "command.set_display_language": "Đặt làm ngôn ngữ hiển thị", + "command.set_source_language": "Đặt làm ngôn ngữ nguồn", + "command.show_docs": "Hiển thị tài liệu", + "command.translate_key": "Dịch", + "command.translate_key_from": "Dịch từ \"{0}\"", + "config.annotation_delimiter": "Ký tự phân cách cho chú thích", + "config.annotation_in_place": "Hiển thị chú thích tại chỗ thay vì thêm vào cuối", + "config.annotation_max_length": "Số ký tự tối đa hiển thị trong chú thích nội tuyến. Ký tự dư sẽ hiển thị dưới dạng dấu chấm lửng (...)", + "config.annotations": "Bật chú thích nội tuyến.", + "config.auto_detection": "Bật tự động phát hiện locales cho dự án", + "config.baidu_app_secret": "APP Secret để sử dụng Baidu dịch", + "config.baidu_appid": "APP ID để sử dụng Baidu dịch", + "config.deepl_api_key": "API key để sử dụng DeepL dịch", + "config.deepl_log": "Hiển thị nhật ký gỡ lỗi của DeepL", + "config.deepl_use_free_api_entry": "Sử dụng DeepL Free API entry point", + "config.default_namespace": "Namespace mặc định toàn cầu", + "config.deprecated": "Không dùng nữa. Sử dụng tiền tố \"i18n-ally.\" thay thế.", + "config.derived_keys": "Quy tắc đánh dấu các khóa được dẫn xuất trong báo cáo sử dụng", + "config.dir_structure": "Cấu trúc thư mục ưa thích để tổ chức tệp locale", + "config.disable_path_parsing": "Tắt phân tích đường dẫn", + "config.disabled": "Tắt i18n Ally cho dự án", + "config.display_language": "Ngôn ngữ hiển thị", + "config.editor_prefer_editor": "Ưu tiên sử dụng trình chỉnh sửa webview cho chỉnh sửa locale.", + "config.enabled_frameworks": "Chỉ định framework(s) hỗ trợ để bật. Nếu không có giá trị nào, extension sẽ tự động phát hiện frameworks.", + "config.enabled_parsers": "Bộ phân tích định dạng tệp locale. Theo mặc định, nó sẽ được xử lý bởi frameworks được kích hoạt", + "config.encoding": "Mã hóa tệp để đọc và ghi tệp locale", + "config.full_reload_on_changed": "Thực hiện tải lại toàn bộ khi tệp locale thay đổi. (cho import động .js/.ts)", + "config.google_api_key": "API key cho Google Translate (Tùy chọn)", + "config.ignore_files": "Tệp locale cần bỏ qua khi tải. Chấp nhận mảng glob.", + "config.ignored_locales": "Mã locale cần bỏ qua", + "config.include_subfolders": "Tìm kiếm đệ quy trong thư mục locale", + "config.indent": "Kích thước khoảng cách thụt đầu dòng cho tệp locale", + "config.keep_fulfill": "Luôn giữ tất cả các khóa được hoàn thiện với chuỗi rỗng", + "config.key_max_length": "Nếu được chỉ định, khóa được tạo khi trích xuất sẽ bị cắt ngắn đến số ký tự này (không bao gồm keyPrefix). Mặc định là không giới hạn.", + "config.key_prefix": "Chuỗi thêm vào đầu khóa trích xuất. Bạn có thể sử dụng {fileName} cho tên tệp và {fileNameWithoutExt} cho phần tên tệp trước dấu chấm đầu tiên.", + "config.keygen_strategy": "Chiến lược tạo khóa.", + "config.keygen_style": "Phong cách tạo khóa.", + "config.keys_in_use": "Các khóa được đánh dấu là đang sử dụng mặc dù không xuất hiện trong mã", + "config.keystyle": "Phong cách khóa locale", + "config.language_tag_system": "Hệ thống thẻ ngôn ngữ đang sử dụng.", + "config.libretranslate_api_root": "URL gốc API LibreTranslate", + "config.locale_country_map": "Một đối tượng để ánh xạ mã locale hai ký tự sang mã quốc gia", + "config.locales_paths": "Đường dẫn đến thư mục locales (tương đối từ thư mục gốc dự án). Mẫu glob cũng được chấp nhận.", + "config.namespace": "Bật namespace. Xem tài liệu để biết thêm chi tiết.", + "config.openai_api_key": "API key của OpenAI", + "config.openai_api_model": "Mô hình chatgpt của OpenAI", + "config.openai_api_root": "URL gốc API OpenAI", + "config.path_matcher": "Khớp đường dẫn cho locale/namespace tùy chỉnh. Xem tài liệu để biết thêm chi tiết.", + "config.preferred_delimiter": "Ký tự phân cách ưa thích của keypath ghép, mặc định là \"-\" (dấu gạch ngang)", + "config.prompt_translating_source": "Nhắc chọn ngôn ngữ nguồn khi dịch mỗi lần. Nếu đặt false, ngôn ngữ nguồn trong cấu hình sẽ được sử dụng.", + "config.readonly": "Chế độ chỉ đọc", + "config.refactor_templates": "Mảng chuỗi mẫu. Sử dụng `{key}` làm chỗ dành cho keypaths.", + "config.regex_key": "Chuỗi RegEx để khớp keypath", + "config.regex_usage_match": "Mảng chuỗi RegEx để khớp các lần sử dụng khóa trong mã. Nó sẽ ghi đè Regex do frameworks cung cấp.", + "config.regex_usage_match_append": "Mảng chuỗi RegEx để khớp các lần sử dụng khóa trong mã. Không giống \"regex.usageMatch\", nó sẽ thêm vào danh sách Regex thay vì thay thế.", + "config.review_email": "Email để xem xét, cũng được sử dụng làm Gravatar cho ảnh hồ sơ.", + "config.review_enabled": "Bật hệ thống đánh giá", + "config.review_gutters": "Hiển thị bảng đánh giá trên gutters", + "config.review_remove_on_resolved": "Xóa nhận xét thay vì đánh dấu đã giải quyết.", + "config.review_username": "Tên người dùng để đánh giá", + "config.show_flags": "Hiển thị cờ cùng với mã locale", + "config.sort_keys": "Sắp xếp khóa khi lưu thành JSON/YAML", + "config.sort_compare": "Chiến lược sắp xếp khóa.", + "config.sort_locale": "Locale sử dụng nếu sắp xếp locale (sẽ sử dụng locale của tệp nếu không được chỉ định)", + "config.source_language": "Ngôn ngữ nguồn cho dịch máy", + "config.tab_style": "Phong cách tab cho tệp locale", + "config.target_picking_strategy": "Chiến lược xử lý khi tìm thấy nhiều hơn một tệp locale.", + "config.target_picking_strategy.file-previous": "Trích xuất văn bản vào tệp locale được chọn trước đó của tệp hiện tại", + "config.target_picking_strategy.global-previous": "Trích xuất văn bản vào tệp locale được chọn trước đó (của tệp hiện tại hoặc tệp khác)", + "config.target_picking_strategy.most-similar": "Tự động trích xuất văn bản vào tệp có đường dẫn giống nhất với đường dẫn của tệp hiện tại", + "config.target_picking_strategy.most-similar-by-key": "Tự động điền bản sao đã trích xuất vào tệp ngôn ngữ phù hợp nhất với khóa i18n hiện tại", + "config.target_picking_strategy.none": "Người dùng tự chọn tệp để trích xuất văn bản", + "config.translate.engines": "Dịch vụ dịch.", + "config.translate.fallbackToKey": "Sử dụng chính khóa để dịch khi không có bản dịch nguồn cho khóa đó.", + "config.translate.parallels": "Số lượng tối đa các tác vụ dịch song song cùng một lúc.", + "config.translate_override_existing": "Ghi đè các thông báo hiện có khi dịch", + "config.translate_save_as_candidates": "Lưu kết quả dịch vào \"Ứng cử viên dịch\" thay vì ghi vào tệp locale.", + "config.usage.scanning_ignore": "Bỏ qua mẫu glob cho việc quét sử dụng khóa", + "editor.add_description": "Thêm mô tả...", + "editor.empty": "(trống)", + "editor.title": "Trình chỉnh sửa i18n Ally", + "editor.translate": "Dịch", + "editor.translate_all_missing": "Dịch tất cả còn thiếu", + "errors.keystyle_not_set": "Keystyle chưa được chỉ định, thao tác bị hủy.", + "errors.translating_empty_source_value": "Bản dịch nguồn của \"{0}\" không được tìm thấy. Dịch bị hủy.", + "errors.translating_same_locale": "Dịch sang cùng locale không được phép.", + "errors.translating_unknown_error": "Xảy ra lỗi không xác định khi dịch.", + "errors.unsupported_file_type": "Loại tệp không được hỗ trợ: \"{0}\"", + "errors.write_in_readonly_mode": "Ghi trong chế độ chỉ đọc bị tắt.", + "extname": "i18n Ally", + "feedback.document": "Đọc tài liệu", + "feedback.github": "Star trên GitHub", + "feedback.report_issues": "Báo cáo vấn đề", + "feedback.support": "Hỗ trợ chúng tôi", + "feedback.twitter_feedback": "Cung cấp phản hồi", + "misc.missing_key": "{0}: Khóa i18n \"{1}\" không tồn tại", + "misc.missing_translation": "{0}: Bản dịch của \"{1}\" còn thiếu", + "notification.migrate": "Di chuyển", + "notification.v2-update": "i18n Ally đã được cập nhật lên phiên bản 2.0!\nVui lòng kiểm tra hướng dẫn di chuyển.", + "prompt.applying_suggestion": "Áp dụng gợi ý sau cho khóa \"{0}\"?\n\n{1}", + "prompt.applying_translation_candidate": "Áp dụng bản dịch sau cho khóa \"{0}\"?\n\n{1}", + "prompt.applying_translation_candidate_multiple": "Bạn có chắc chắn muốn áp dụng tất cả {0} bản dịch?", + "prompt.button_apply": "Áp dụng", + "prompt.button_cancel": "Hủy", + "prompt.button_discard": "Bỏ qua", + "prompt.button_edit_end_apply": "Chỉnh sửa", + "prompt.button_override": "Ghi đè", + "prompt.button_reenter": "Nhập lại", + "prompt.button_skip": "Tiếp tục mà không ghi đè", + "prompt.button_yes": "Có", + "prompt.choice_key_to_insert": "Chọn một khóa để chèn", + "prompt.choice_key_to_open": "Chọn một khóa để mở trong trình chỉnh sửa...", + "prompt.choice_locale": "Chọn một locale", + "prompt.config_locales_auto_success": "Đường dẫn locales tự động được đặt thành \"{0}\".", + "prompt.config_locales_button": "Cấu hình ngay", + "prompt.config_locales_info": "Cấu hình thư mục locales cho dự án của bạn", + "prompt.config_locales_success": "Đường dẫn locales được cấu hình thành công.", + "prompt.create_new_path": "Tạo một đường dẫn mới", + "prompt.deepl_api_key_required": "Cần có API Key của DeepL", + "prompt.deepl_error_get_usage": "Lỗi khi lấy dữ liệu sử dụng", + "prompt.deepl_usage": "Sử dụng API DeepL {0} trên {1} ký tự dịch", + "prompt.delete_key": "Bạn có chắc chắn muốn xóa khóa \"{0}\" khỏi tất cả các locales?\n\nHành động này KHÔNG thể hoàn tác.", + "prompt.delete_keys_not_in_use": "Bạn có chắc chắn muốn xóa {0} khóa không được sử dụng?\n\nHành động này KHÔNG thể hoàn tác.", + "prompt.donate": "Quyên góp", + "prompt.edit_key_in_locale": "{1} | Chỉnh sửa khóa \"{0}\"", + "prompt.enter_file_path_to_store_key": "Nhập đường dẫn tệp để lưu khóa \"{0}\"", + "prompt.enter_key_path": "Nhập keypath cho \"{0}\"", + "prompt.enter_new_keypath": "Nhập keypath mới", + "prompt.error_on_parse_custom_regex": "Không phân tích được chuỗi RegEx {0}. Vui lòng kiểm tra cấu hình của bạn", + "prompt.existing_translation": "Bản dịch hiện tại", + "prompt.extraction_canceled": "Trích xuất đã bị hủy", + "prompt.failed_to_locate_key": "Không thể định vị khóa \"{0}\".", + "prompt.frameworks_not_found": "Không tìm thấy framework(s) sau. Vui lòng kiểm tra cài đặt của bạn.\n{0}", + "prompt.fullfill_missing_all_confirm": "Bạn có chắc chắn muốn điền tất cả các khóa còn thiếu với chuỗi rỗng trong tất cả các locales?\n\nHành động này không thể hoàn tác!", + "prompt.fullfill_missing_confirm": "Bạn có chắc chắn muốn điền {0} khóa còn thiếu với chuỗi rỗng trong {1}?\n\nHành động này không thể hoàn tác!", + "prompt.invalid_keypath": "Keypath không hợp lệ!", + "prompt.key_already_exists": "Khóa đã tồn tại. Bạn có muốn ghi đè giá trị hiện tại hoặc nhập lại đường dẫn?", + "prompt.key_copied": "Khóa đã được sao chép.", + "prompt.keys_removed": "{0} khóa đã bị xóa", + "prompt.keystyle_flat": "Phong cách phẳng", + "prompt.keystyle_flat_example": "ví dụ: { \"a.b.c\": \"...\" }", + "prompt.keystyle_nested": "Phong cách lồng nhau", + "prompt.keystyle_nested_example": "ví dụ: { \"a\": { \"b\": { \"c\": \"...\" } } }", + "prompt.keystyle_select": "Bạn sử dụng kiểu tổ chức khóa nào cho locales?", + "prompt.locales_dir_not_found": "Không tìm thấy thư mục locales. i18n Ally bị tắt.", + "prompt.new_key_path": "Nhập keypath cho khóa mới", + "prompt.no_locale_loaded": "Không có tệp locale nào được tải. Có thể cấu hình dự án của bạn gặp vấn đề.", + "prompt.replace_text_as": "Thay thế văn bản thành:", + "prompt.select_display_locale": "Chọn ngôn ngữ hiển thị ({0})", + "prompt.select_file_to_open": "Chọn tệp để mở", + "prompt.select_file_to_store_key": "Chọn tệp để lưu khóa \"{0}\"", + "prompt.select_source_language_for_translating": "Chọn ngôn ngữ nguồn để dịch ({0})", + "prompt.select_source_locale": "Chọn ngôn ngữ nguồn ({0})", + "prompt.show_error_log": "Hiển thị nhật ký lỗi", + "prompt.star_on_github": "Star trên GitHub", + "prompt.support": "i18n Ally được cung cấp miễn phí cho mọi người. Nếu bạn thấy hữu ích, hãy cân nhắc ủng hộ. Cảm ơn bạn! ❤", + "prompt.translate_cancelled_multiple": "Đã hủy dịch {0} khóa.", + "prompt.translate_done_multiple": "{0} khóa đã được dịch.", + "prompt.translate_done_single": "Dịch \"{0}\" hoàn tất.", + "prompt.translate_edit_translated": "Chỉnh sửa kết quả", + "prompt.translate_failed_multiple": "{0} khóa không thể dịch.", + "prompt.translate_failed_single": "\"{0}\" không thể dịch sang \"{1}\"", + "prompt.translate_in_progress": "Đang dịch", + "prompt.translate_multiple_confirm": "Bạn có chắc chắn muốn dịch {0} khóa?", + "prompt.translate_no_jobs": "Không cần dịch.", + "prompt.writing_js": "Viết vào các tệp js/ts không được hỗ trợ.", + "refactor.extract_ignore": "Bỏ qua phát hiện \"{0}\" toàn cầu", + "refactor.extract_ignore_by_file": "Bỏ qua phát hiện \"{0}\" cho tệp hiện tại", + "refactor.extract_text": "🌍 Trích xuất văn bản thành các thông báo i18n", + "refactor.extracting_not_support_for_lang": "Trích xuất cho ngôn ngữ \"{0}\" hiện chưa được hỗ trợ", + "refactor.replace_with": "Thay thế văn bản bằng bản dịch hiện có: \"{0}\"", + "review.accept_suggestion": "Chấp nhận gợi ý", + "review.apply_suggestion": "Áp dụng gợi ý", + "review.apply_translation_candidate": "Áp dụng ứng cử viên dịch", + "review.approve": "Phê duyệt", + "review.comment": "Nhận xét", + "review.edit": "Chỉnh sửa", + "review.leave_comment": "Để lại nhận xét", + "review.optional": "(Tùy chọn)", + "review.placeholder.approve": "Đã phê duyệt", + "review.placeholder.comment": "Không nói gì", + "review.placeholder.request_change": "Yêu cầu thay đổi", + "review.request_change": "Yêu cầu thay đổi", + "review.request_change_messages": "Thay đổi đã yêu cầu", + "review.resolve": "Giải quyết", + "review.resolve_all": "Giải quyết tất cả", + "review.review": "Đánh giá", + "review.suggestion": "Gợi ý", + "review.suggestions": "Các gợi ý", + "review.title": "Đánh giá i18n Ally", + "review.translation_candidates": "Ứng cử viên dịch", + "review.unknown_user": "Không xác định", + "view.current_file": "Tệp hiện tại", + "view.current_file_hard_strings": "Chuỗi mã cứng [beta]", + "view.current_file_hard_strings_expand_to_detect": "(Mở rộng để phát hiện)", + "view.current_file_hard_strings_not_supported": "\"{0}\" hiện chưa được hỗ trợ", + "view.current_file_keys_in_use": "Các khóa đang được sử dụng", + "view.current_file_keys_not_found": "Không tìm thấy khóa", + "view.help_feedback": "Hỗ trợ & Phản hồi", + "view.i18n_keys": "i18n Ally", + "view.progress": "Tiến trình", + "view.progress_submenu.empty_keys": "Trống", + "view.progress_submenu.missing_keys": "Chưa có bản dịch", + "view.progress_submenu.translated_keys": "Đã dịch", + "view.tree": "Cây thư mục", + "view.usage": "Báo cáo sử dụng", + "view.usage_keys_in_use": "{0} khóa đang được sử dụng", + "view.usage_keys_missing": "{0} khóa còn thiếu", + "view.usage_keys_not_in_use": "{0} khóa KHÔNG được sử dụng", + "view.usage_report_none": "Nhấn làm mới để bắt đầu phân tích sử dụng khóa" +}