Merge PR #1772: i18n: add Vietnamese interface translations

Conflicts:
- crates/ui-egui/src/i18n.rs: language registration lines kept from both sides (Language::ALL has 16 entries).
- docs/localization-parity.md: both revision rows kept.
This commit is contained in:
aiongg
2026-10-22 02:38:09 +00:00
3 changed files with 433 additions and 3 deletions
+15 -2
View File
@@ -21,6 +21,7 @@ mod pl;
mod pt;
mod ru;
mod sr;
mod vi;
mod zh;
mod uk;
@@ -44,11 +45,12 @@ pub enum Language {
Pl,
It,
Uk,
Vi,
}
impl Language {
pub const ALL: [Self; 15] = [
Self::En, Self::Es, Self::El, Self::Zh, Self::Ja, Self::Ko, Self::Ru, Self::PtBr, Self::De, Self::Cs, Self::Fr, Self::Sr, Self::Pl, Self::It, Self::Uk,
pub const ALL: [Self; 16] = [
Self::En, Self::Es, Self::El, Self::Zh, Self::Ja, Self::Ko, Self::Ru, Self::PtBr, Self::De, Self::Cs, Self::Fr, Self::Sr, Self::Pl, Self::It, Self::Uk, Self::Vi,
];
/// The language's own name, shown in the switcher.
@@ -69,6 +71,7 @@ impl Language {
Self::Pl => "Polski",
Self::It => "Italiano",
Self::Uk => "Українська",
Self::Vi => "Tiếng Việt",
}
}
@@ -90,6 +93,7 @@ impl Language {
Self::Pl => "pl",
Self::It => "it",
Self::Uk => "uk",
Self::Vi => "vi",
}
}
@@ -114,6 +118,7 @@ impl Language {
"pl" => Some(Self::Pl),
"it" => Some(Self::It),
"uk" => Some(Self::Uk),
"vi" => Some(Self::Vi),
_ => None,
}
}
@@ -156,6 +161,7 @@ impl Language {
Self::Pl => pl::translate(text),
Self::It => it::translate(text),
Self::Uk => uk::translate(text),
Self::Vi => vi::translate(text),
};
translated.unwrap_or_else(|| text.rsplit_once('|').map_or(text, |(_, label)| label))
}
@@ -225,6 +231,7 @@ mod tests {
assert!(pl::translate(english).is_some_and(|text| !text.is_empty()), "missing Polish: {english}");
assert!(it::translate(english).is_some_and(|text| !text.is_empty()), "missing Italian: {english}");
assert!(uk::translate(english).is_some_and(|text| !text.is_empty()), "missing Ukrainian: {english}");
assert!(vi::translate(english).is_some_and(|text| !text.is_empty()), "missing Vietnamese: {english}");
}
assert_eq!(Language::Ja.tr("Data"), "データ");
assert_eq!(Language::Zh.tr("Data"), "数据");
@@ -272,6 +279,10 @@ mod tests {
assert_eq!(Language::It.tr("Orientation"), "Orientamento");
assert_eq!(Language::Uk.tr("Data"), "Дані");
assert_eq!(Language::Uk.tr("Sheet1!A1"), "Sheet1!A1");
assert_eq!(Language::Vi.tr("Data"), "Dữ liệu");
assert_eq!(Language::Vi.tr("Sheet1!A1"), "Sheet1!A1");
assert_eq!(Language::Vi.tr("Page Layout|Orientation"), "Hướng giấy");
assert_eq!(Language::Vi.tr("Orientation"), "Hướng chữ");
assert_eq!(Language::parse("xx"), None);
}
@@ -409,6 +420,8 @@ mod tests {
assert_eq!(Language::parse("it"), Some(Language::It));
assert_eq!(Language::from_tag("uk-XX"), Some(Language::Uk));
assert_eq!(Language::parse("uk"), Some(Language::Uk));
assert_eq!(Language::from_tag("vi-VN"), Some(Language::Vi));
assert_eq!(Language::parse("vi"), Some(Language::Vi));
}
#[test]
+416
View File
@@ -0,0 +1,416 @@
//! Vietnamese translations for the interface strings in i18n.rs. Labels follow the wording
//! Vietnamese spreadsheet users know; anything absent falls back to English.
pub(super) fn translate(text: &str) -> Option<&'static str> {
Some(match text {
"Paste" => "Dán",
"Paste Values" => "Dán giá trị",
"Paste Formulas" => "Dán công thức",
"Paste Formatting" => "Dán định dạng",
"Transpose" => "Chuyển vị",
"Paste Link" => "Dán liên kết",
"Paste Special…" => "Dán đặc biệt…",
"Insert Copied Cells" => "Chèn ô đã sao chép",
"Insert Copied Cells…" => "Chèn ô đã sao chép…",
"Insert Cut Cells" => "Chèn ô đã cắt",
"Insert Paste" => "Chèn và dán",
"Cut (⌘X)" => "Cắt (⌘X)",
"Copy (⌘C)" => "Sao chép (⌘C)",
"Format Painter (double-click to keep it on)" => "Sao định dạng (bấm đúp để giữ)",
"Bold (⌘B)" => "Đậm (⌘B)",
"Italic (⌘I)" => "Nghiêng (⌘I)",
"Underline (⌘U)" => "Gạch chân (⌘U)",
"Double Underline" => "Gạch chân đôi",
"Strikethrough" => "Gạch ngang",
"Underline" => "Gạch chân",
"Increase Font Size" => "Tăng cỡ chữ",
"Decrease Font Size" => "Giảm cỡ chữ",
"Wrap Text" => "Xuống dòng tự động",
"Merge & Center" => "Hợp nhất và căn giữa",
"Merge Cells" => "Hợp nhất ô",
"Merge Across" => "Hợp nhất theo hàng",
"Unmerge Cells" => "Bỏ hợp nhất ô",
"Fill Color" => "Màu tô",
"Font Color" => "Màu chữ",
"Borders" => "Viền",
"Top\nAlign" => "Căn\ntrên",
"Middle\nAlign" => "Căn\ngiữa dọc",
"Bottom\nAlign" => "Căn\ndưới",
"Left" => "Trái",
"Right" => "Phải",
"Center" => "Giữa",
"Horizontal" => "Ngang",
"Vertical Text" => "Chữ dọc",
"Decrease Indent" => "Giảm thụt lề",
"Increase Indent" => "Tăng thụt lề",
"Orientation" => "Hướng chữ",
"Page Layout|Orientation" => "Hướng giấy",
"Angle Counterclockwise" => "Xoay ngược chiều kim đồng hồ",
"Angle Clockwise" => "Xoay theo chiều kim đồng hồ",
"Rotate Text Up" => "Xoay chữ lên",
"Rotate Text Down" => "Xoay chữ xuống",
"Accounting Number Format" => "Định dạng số kế toán",
"Percent Style" => "Kiểu phần trăm",
"Comma Style" => "Kiểu dấu phân cách",
"Increase Decimal" => "Tăng số thập phân",
"Decrease Decimal" => "Giảm số thập phân",
"More Accounting Formats…" => "Định dạng kế toán khác…",
"Conditional\nFormatting" => "Định dạng\ncó điều kiện",
"Conditional Formatting" => "Định dạng có điều kiện",
"Format\nas Table" => "Định dạng\nthành bảng",
"Cell\nStyles" => "Kiểu\nô",
"Format Cells…" => "Định dạng ô…",
"Format Cell Alignment…" => "Căn chỉnh ô…",
"Format\nPane" => "Ngăn\nđịnh dạng",
"Format" => "Định dạng",
"Insert" => "Chèn",
"Insert Cells…" => "Chèn ô…",
"Delete" => "Xóa",
"Delete Cells…" => "Xóa ô…",
"Insert Sheet Rows" => "Chèn hàng trang tính",
"Insert Sheet Columns" => "Chèn cột trang tính",
"Delete Sheet Rows" => "Xóa hàng trang tính",
"Delete Sheet Columns" => "Xóa cột trang tính",
"Row Height…" => "Chiều cao hàng…",
"AutoFit Row Height" => "Tự động khớp chiều cao hàng",
"Column Width…" => "Độ rộng cột…",
"AutoFit Column Width" => "Tự động khớp độ rộng cột",
"Default Width…" => "Độ rộng mặc định…",
"Hide Rows" => "Ẩn hàng",
"Unhide Rows" => "Bỏ ẩn hàng",
"Hide Columns" => "Ẩn cột",
"Unhide Columns" => "Bỏ ẩn cột",
"Lock Cell" => "Khóa ô",
"Clear" => "Xóa",
"Clear All" => "Xóa tất cả",
"Clear Formats" => "Xóa định dạng",
"Clear Contents" => "Xóa nội dung",
"Clear Comments and Notes" => "Xóa chú thích và ghi chú",
"Clear Hyperlinks" => "Xóa siêu liên kết",
"AutoSum" => "Tự động tính tổng",
"AutoSum (⌘⇧T)" => "Tự động tính tổng (⌘⇧T)",
"Flash\nFill" => "Điền\nnhanh",
"Flash Fill" => "Điền nhanh",
"Fill" => "Điền",
"Clear Print Area" => "Xóa vùng in",
"Find &\nSelect" => "Tìm &\nChọn",
"Find…" => "Tìm…",
"Replace…" => "Thay thế…",
"Go To…" => "Đi tới…",
"Go To Special…" => "Đi tới đặc biệt…",
"PivotTable" => "PivotTable",
"Recommended\nCharts" => "Biểu đồ\nđề xuất",
"Table" => "Bảng",
"Pictures" => "Ảnh",
"Shapes" => "Hình",
"Icons" => "Biểu tượng",
"Text\nBox" => "Hộp\nvăn bản",
"Comment" => "Chú thích",
"New\nComment" => "Chú thích\nmới",
"New Note" => "Ghi chú mới",
"Show/Hide Note" => "Hiện/ẩn ghi chú",
"Header &\nFooter" => "Đầu trang &\nChân trang",
"Text to\nColumns" => "Tách\ncột",
"Link" => "Liên kết",
"Symbol" => "Ký hiệu",
"Sparklines" => "Biểu đồ thu nhỏ",
"Checkbox" => "Hộp kiểm",
"Insert checkboxes in the selected cells" => "Chèn hộp kiểm vào các ô đã chọn",
"Header & Footer" => "Đầu trang & Chân trang",
"Draw with ink" => "Vẽ bằng mực",
"Eraser" => "Tẩy",
"Ink to\nShape" => "Mực thành\nhình",
"Select\nObjects" => "Chọn\nđối tượng",
"Themes" => "Chủ đề",
"Margins" => "Lề",
"Left Margin" => "Lề trái",
"Right Margin" => "Lề phải",
"Top Margin" => "Lề trên",
"Bottom Margin" => "Lề dưới",
"Header Margin" => "Lề đầu trang",
"Footer Margin" => "Lề chân trang",
"Size" => "Khổ giấy",
"Print\nArea" => "Vùng\nin",
"Set Print Area" => "Đặt vùng in",
"Breaks" => "Ngắt trang",
"Insert Page Break" => "Chèn ngắt trang",
"Remove Page Break" => "Bỏ ngắt trang",
"Reset All Page Breaks" => "Đặt lại tất cả ngắt trang",
"Print\nTitles" => "In\ntiêu đề",
"Sheet\nRight-to-Left" => "Trang tính\nphải sang trái",
"Sheet Right-to-Left" => "Trang tính phải sang trái",
"Narrow" => "Hẹp",
"Wide" => "Rộng",
"Normal" => "Bình thường",
"Portrait" => "Dọc",
"Landscape" => "Ngang",
"Custom Margins…" => "Lề tùy chỉnh…",
"Insert\nFunction" => "Chèn\nhàm",
"Name\nManager" => "Trình quản lý\ntên",
"Define Name" => "Xác định tên",
"Use in Formula" => "Dùng trong công thức",
"Create from Selection" => "Tạo từ vùng chọn",
"Trace Precedents" => "Truy tìm ô tham chiếu",
"Trace Dependents" => "Truy tìm ô phụ thuộc",
"Remove Arrows" => "Bỏ mũi tên",
"Show Formulas" => "Hiện công thức",
"Error Checking" => "Kiểm tra lỗi",
"Evaluate Formula" => "Đánh giá công thức",
"Watch Window" => "Cửa sổ theo dõi",
"Calculation\nOptions" => "Tùy chọn\ntính toán",
"Calculate Now" => "Tính ngay",
"Calculate Sheet" => "Tính trang tính",
"Automatic" => "Tự động",
"Automatic Except for Data Tables" => "Tự động trừ bảng dữ liệu",
"Manual" => "Thủ công",
"Sort &\nFilter" => "Sắp xếp &\nLọc",
"Sort" => "Sắp xếp",
"Sort A to Z" => "Sắp xếp từ A đến Z",
"Sort Z to A" => "Sắp xếp từ Z đến A",
"Custom Sort…" => "Sắp xếp tùy chỉnh…",
"Filter" => "Lọc",
"Reapply" => "Áp dụng lại",
"Get Data\n(Text/CSV)" => "Lấy dữ liệu\n(Văn bản/CSV)",
"Remove\nDuplicates" => "Loại bỏ\ntrùng lặp",
"Data\nValidation" => "Xác thực\ndữ liệu",
"Data Validation" => "Xác thực dữ liệu",
"Data Validation…" => "Xác thực dữ liệu…",
"Circle Invalid Data" => "Khoanh dữ liệu không hợp lệ",
"Clear Validation" => "Xóa xác thực",
"Group" => "Nhóm",
"Ungroup" => "Bỏ nhóm",
"Show Detail" => "Hiện chi tiết",
"Hide Detail" => "Ẩn chi tiết",
"Subtotal" => "Tổng phụ",
"Data\nAnalysis" => "Phân tích\ndữ liệu",
"Data Analysis" => "Phân tích dữ liệu",
"Solver" => "Solver",
"What-If\nAnalysis" => "Phân tích\nWhat-If",
"Data Table…" => "Bảng dữ liệu…",
"Scenario Manager…" => "Trình quản lý kịch bản…",
"Goal Seek…" => "Tìm mục tiêu…",
"Forecast\nSheet" => "Trang tính\ndự báo",
"Spelling" => "Chính tả",
"Check\nAccessibility" => "Kiểm tra\ntrợ năng",
"Threaded Comments" => "Chú thích dạng chuỗi",
"Show\nComments" => "Hiện\nchú thích",
"Previous" => "Trước",
"Next" => "Tiếp",
"Previous Comment" => "Chú thích trước",
"Next Comment" => "Chú thích tiếp theo",
"Show All Notes" => "Hiện tất cả ghi chú",
"Convert to Comments" => "Chuyển thành chú thích",
"Protect\nWorkbook" => "Bảo vệ\nsổ làm việc",
"Allow Edit\nRanges" => "Cho phép sửa\nphạm vi",
"Allow Edit Ranges" => "Cho phép sửa phạm vi",
"Unprotect\nSheet" => "Bỏ bảo vệ\ntrang tính",
"Protect Sheet…" => "Bảo vệ trang tính…",
"Comments" => "Chú thích",
"Notes" => "Ghi chú",
"Page Break\nPreview" => "Xem trước\nngắt trang",
"Page\nLayout" => "Bố trí\ntrang",
"Formula Bar" => "Thanh công thức",
"Gridlines" => "Đường lưới",
"Headings" => "Tiêu đề hàng/cột",
"Zoom" => "Thu phóng",
"100%" => "100%",
"Zoom to\nSelection" => "Phóng to\nvùng chọn",
"Freeze\nPanes" => "Cố định\nngăn",
"Freeze Panes" => "Cố định ngăn",
"Freeze Top Row" => "Cố định hàng trên cùng",
"Freeze First Column" => "Cố định cột đầu tiên",
"Unfreeze Panes" => "Bỏ cố định ngăn",
"Dark Mode" => "Chế độ tối",
"Display theme" => "Chủ đề hiển thị",
"Animations" => "Hiệu ứng động",
"Glide the selection outline to the cell you move to instead of jumping there" => {
"Trượt khung vùng chọn tới ô bạn di chuyển đến thay vì nhảy ngay tới đó"
}
"System" => "Hệ thống",
"Light" => "Sáng",
"Dark" => "Tối",
"Interface language" => "Ngôn ngữ giao diện",
"Interface size" => "Kích thước giao diện",
"Auto" => "Tự động",
"Drag to freeze columns" => "Kéo để cố định cột",
"Drag to freeze rows" => "Kéo để cố định hàng",
"Command\nPalette" => "Bảng\nlệnh",
"Agent\nControl" => "Điều khiển\nagent",
"Action\nJournal" => "Nhật ký\nthao tác",
"About\nGridCraft" => "Giới thiệu\nGridCraft",
"Share" => "Chia sẻ",
"Add Chart\nElement" => "Thêm thành phần\nbiểu đồ",
"Change\nChart Type" => "Đổi kiểu\nbiểu đồ",
"Switch\nRow/Column" => "Đổi\nhàng/cột",
"Select\nData" => "Chọn\ndữ liệu",
"Data Labels: None" => "Nhãn dữ liệu: Không",
"Data Labels: Show" => "Nhãn dữ liệu: Hiện",
"Legend: None" => "Chú giải: Không",
"Legend: Bottom" => "Chú giải: Dưới",
"Legend: Top" => "Chú giải: Trên",
"Legend: Right" => "Chú giải: Phải",
"Gridlines: None" => "Đường lưới: Không",
"Gridlines: Show" => "Đường lưới: Hiện",
"Chart\nTitle" => "Tiêu đề\nbiểu đồ",
"Delete\nChart" => "Xóa\nbiểu đồ",
"Convert\nto Range" => "Chuyển thành\nphạm vi",
"Table\nStyles" => "Kiểu\nbảng",
"Top 10 Items" => "10 mục đầu",
"Top 10%" => "10% đầu",
"Bottom 10 Items" => "10 mục cuối",
"Bottom 10%" => "10% cuối",
"Above Average" => "Trên trung bình",
"Below Average" => "Dưới trung bình",
"Clear Rules from Entire Sheet" => "Xóa quy tắc khỏi toàn bộ trang tính",
"Clear Rules from Selected Cells" => "Xóa quy tắc khỏi các ô đã chọn",
"Constants" => "Hằng số",
"Data Bars" => "Thanh dữ liệu",
"Color Scales" => "Thang màu",
"Icon Sets" => "Bộ biểu tượng",
"Home" => "Trang đầu",
"Draw" => "Vẽ",
"Page Layout" => "Bố trí trang",
"Formulas" => "Công thức",
"Data" => "Dữ liệu",
"Review" => "Xem lại",
"View" => "Xem",
"Automate" => "Tự động hóa",
"Table Design" => "Thiết kế bảng",
"Chart Design" => "Thiết kế biểu đồ",
"Ready" => "Sẵn sàng",
"Enter" => "Nhập",
"Edit" => "Sửa",
"Point" => "Trỏ",
"Calculate" => "Tính toán",
"Select destination and press Enter or choose Paste" => "Chọn vị trí đích rồi nhấn Enter hoặc chọn Dán",
"General" => "Chung",
"Number" => "Số",
"Currency" => "Tiền tệ",
"Accounting" => "Kế toán",
"Date" => "Ngày",
"Time" => "Giờ",
"Percentage" => "Phần trăm",
"Fraction" => "Phân số",
"Scientific" => "Khoa học",
"Text" => "Văn bản",
"Special" => "Đặc biệt",
"Custom" => "Tùy chỉnh",
"Short Date" => "Ngày dạng ngắn",
"Long Date" => "Ngày dạng dài",
"More Number Formats…" => "Định dạng số khác…",
"Financial" => "Tài chính",
"Logical" => "Logic",
"Date &\nTime" => "Ngày &\nGiờ",
"Lookup &\nReference" => "Tra cứu &\nTham chiếu",
"Math &\nTrig" => "Toán &\nLượng giác",
"More\nFunctions" => "Hàm\nkhác",
"Sheet Options|View" => "Xem",
"Print" => "In",
// Page Layout view and the Header & Footer tab.
"Click to add data" => "Bấm để thêm dữ liệu",
"Add header" => "Thêm đầu trang",
"Add footer" => "Thêm chân trang",
"(none)" => "(không có)",
"Header" => "Đầu trang",
"Footer" => "Chân trang",
"Page\nNumber" => "Số\ntrang",
"Number\nof Pages" => "Tổng\nsố trang",
"Current\nDate" => "Ngày\nhiện tại",
"Current\nTime" => "Giờ\nhiện tại",
"File\nPath" => "Đường dẫn\ntệp",
"File\nName" => "Tên\ntệp",
"Sheet\nName" => "Tên\ntrang tính",
"Go to\nHeader" => "Đi tới\nđầu trang",
"Go to\nFooter" => "Đi tới\nchân trang",
"Page Number" => "Số trang",
"Number of Pages" => "Tổng số trang",
"Current Date" => "Ngày hiện tại",
"Current Time" => "Giờ hiện tại",
"File Path" => "Đường dẫn tệp",
"File Name" => "Tên tệp",
"Sheet Name" => "Tên trang tính",
"Go to Header" => "Đi tới đầu trang",
"Different First Page" => "Trang đầu khác",
"Different Odd & Even Pages" => "Trang chẵn lẻ khác nhau",
"Go to Footer" => "Đi tới chân trang",
"Ruler" => "Thước",
// File › Backstage view.
"File" => "Tệp",
"Back" => "Quay lại",
"New" => "Mới",
"Open" => "Mở",
"Info" => "Thông tin",
"Save" => "Lưu",
"Save As" => "Lưu thành",
"Export" => "Xuất",
"Close" => "Đóng",
"Options" => "Tùy chọn",
"Blank workbook" => "Sổ làm việc trống",
"Recent" => "Gần đây",
"No recent workbooks yet." => "Chưa có sổ làm việc gần đây.",
"More workbooks" => "Sổ làm việc khác",
"Modified" => "Đã sửa đổi",
"Not available" => "Không khả dụng",
"Just now" => "Vừa xong",
"Yesterday" => "Hôm qua",
"{n} min ago" => "{n} phút trước",
"{n} h ago" => "{n} giờ trước",
"{n} days ago" => "{n} ngày trước",
"{n} weeks ago" => "{n} tuần trước",
"{n} months ago" => "{n} tháng trước",
"{n} years ago" => "{n} năm trước",
"Browse…" => "Duyệt…",
"Not saved yet" => "Chưa lưu",
"Location" => "Vị trí",
"Sheets" => "Trang tính",
"Protect Workbook" => "Bảo vệ sổ làm việc",
"Sheet structure is locked: sheets can't be added, moved, renamed or deleted." => {
"Cấu trúc trang tính đã bị khóa: không thể thêm, di chuyển, đổi tên hoặc xóa trang tính."
}
"Lock the sheet structure so sheets can't be added, moved, renamed or deleted." => {
"Khóa cấu trúc trang tính để không thể thêm, di chuyển, đổi tên hoặc xóa trang tính."
}
"Properties" => "Thuộc tính",
"Title" => "Tiêu đề",
"Subject" => "Chủ đề",
"Author" => "Tác giả",
"Company" => "Công ty",
"Keywords" => "Từ khóa",
"Description" => "Mô tả",
"No workbook is open." => "Chưa mở sổ làm việc nào.",
"Save as type" => "Lưu dưới dạng",
"Excel Workbook (*.xlsx)" => "Sổ làm việc Excel (*.xlsx)",
"CSV UTF-8 (Comma delimited) (*.csv)" => "CSV UTF-8 (phân cách bằng dấu phẩy) (*.csv)",
"Web Page (*.html)" => "Trang web (*.html)",
"PDF (*.pdf)" => "PDF (*.pdf)",
"Download" => "Tải xuống",
"A CSV file, web page or PDF is a copy: the workbook keeps its own file." => {
"Tệp CSV, trang web hoặc PDF chỉ là bản sao: sổ làm việc vẫn giữ tệp gốc."
}
"Save the workbook under another name or in another folder." => "Lưu sổ làm việc với tên khác hoặc vào thư mục khác.",
"Print Active Sheets" => "In các trang tính hiện hoạt",
"Print Entire Workbook" => "In toàn bộ sổ làm việc",
"Fit Sheet on One Page" => "Vừa trang tính trên một trang",
"Page Setup…" => "Thiết lập trang…",
"Page {page} of {pages}" => "Trang {page} / {pages}",
"Nothing to print." => "Không có gì để in.",
"Previous page" => "Trang trước",
"Next page" => "Trang sau",
"Create PDF" => "Tạo PDF",
"Save the sheet as a PDF document that keeps its page layout." => "Lưu trang tính thành tài liệu PDF, giữ nguyên bố trí trang.",
"Change File Type" => "Đổi kiểu tệp",
"CSV (Comma delimited)" => "CSV (phân cách bằng dấu phẩy)",
"Save the active sheet as comma-separated text." => "Lưu trang tính hiện hoạt thành văn bản phân cách bằng dấu phẩy.",
"Web Page (.html)" => "Trang web (.html)",
"Save the workbook as a web page." => "Lưu sổ làm việc thành trang web.",
"Options|General" => "Chung",
"Options|Save" => "Lưu",
"Show formula bar" => "Hiện thanh công thức",
"Enable AutoComplete for cell values" => "Bật tự động hoàn thành giá trị ô",
"Save .xlsx workbooks automatically after every change" => "Tự động lưu sổ làm việc .xlsx sau mỗi thay đổi",
"Workbook calculation" => "Tính toán sổ làm việc",
"Enable iterative calculation" => "Bật tính toán lặp",
"Calculation settings are saved with the workbook." => "Thiết lập tính toán được lưu cùng sổ làm việc.",
_ => return None,
})
}
+2 -1
View File
@@ -61,7 +61,7 @@ separators, number/date formats, machine translation with agent review, and scri
| German | de | 266 (~12%) | no | Latin: yes | no | menus only | 4–8 h |
| Italian | it | 971 (~44%) | dialogs, tooltips, pivot pane | Latin: yes | no | menus, File view, dialogs, pivot pane | 3–5 h |
| Korean | ko | 266 (~12%) | no | Hangul via the CJK fallback; IME unverified | no | menus only | 6–10 h |
| Vietnamese | vi | 0 (0%) | no | Latin with stacked diacritics: unverified | no | none | 6–10 h |
| Vietnamese | vi | 398 (~18%) | no | Latin with stacked diacritics: unverified | no | menus, File view | 5–9 h |
Other shipped languages: Russian (ru) and German (de), 266 labels each (~12%), menus only.
@@ -93,6 +93,7 @@ language (none so far) and of localized function names.
| 2026-10-19 | trivial | Text boxes and shapes keep right-to-left paragraph direction (`a:pPr rtl`) on XLSX save, so Excel-authored Arabic and Hebrew text boxes reopen right to left |
| 2026-10-19 | minor | Save as Web Page and copied HTML mark right-to-left sheets `dir="rtl"`, let General-aligned Arabic and Hebrew text align by its own direction (`dir="auto"`), and keep numbers on right-to-left sheets left to right and on the left |
| 2026-10-19 | minor | French and Serbian kept the context in three `context\|label` translations ("Options\|Général", "Opcije\|Opšte" for `Options\|General`; also `Options\|Save`, `Sheet Options\|View`). `tr` shows a found translation as it is, so File › Options headings and the Sheet Options "View" checkboxes showed the prefix. Fixed; a test checks that no catalog shows a `\|` |
| 2026-10-17 | minor | Vietnamese catalog (`i18n/vi.rs`, every key in the master table); `vi` locale tags resolve to Vietnamese |
| 2026-10-12 | minor | Format Cells looks up its tabs, labels, options and note through `Language::tr` (Fill tab keyed `Format Cells\|Fill`); dialog titles and OK/Cancel too. Labels already in a table (Number, Currency, Fill…) show translated; the rest fall back to English until the tables add them |
| 2026-10-12 | minor | Brazilian Portuguese catalog (`i18n/pt.rs`) grows from 377 to 923 entries: every key the other catalogs translate, including the dialog strings #669 starts looking up (~42%) |
| 2026-10-11 | minor | German ribbon catalog (`i18n/de.rs`, 266 labels, ~12%); `de` locale tags (de-DE, de-AT, de-CH…) resolve to German. PR #163 (localized German formulas/numbers) still open |