From e3bf9b7270336831f0193e260a8bb0fcabdcfbd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?T=E1=BB=91ng=20Huy=20S=C6=A1n?= Date: Thu, 22 Oct 2026 11:33:34 +0700 Subject: [PATCH] i18n: add Vietnamese (vi) interface localization --- README.md | 2 +- ROADMAP.md | 4 +- crates/engine/src/cmd/view.rs | 2 +- crates/ui-egui/locales/vi.toml | 2367 ++++++++++++++++++++++++++++++ crates/ui-egui/src/cjk.rs | 2 +- crates/ui-egui/src/i18n.rs | 4 +- crates/ui-egui/src/i18n_tests.rs | 8 +- docs/localization-parity.md | 12 +- docs/mcp.md | 2 +- docs/translating.md | 14 +- 10 files changed, 2395 insertions(+), 22 deletions(-) create mode 100644 crates/ui-egui/locales/vi.toml diff --git a/README.md b/README.md index 63bc739b..41bca26d 100644 --- a/README.md +++ b/README.md @@ -230,7 +230,7 @@ The desktop app also offers a loopback-only control channel (`figcraft --control - **Its own renderer:** tiny-skia on every core for the canvas and exports, with layer blending, effects and masks; booleans from linesweeper, geometry from kurbo, text from skrifa and HarfRust. - **Runs in the browser:** the whole engine and UI compile to WebAssembly. - **Accessible:** screen readers get names, roles, values and states for the tools, layer rows, fields, dropdowns, tabs and menus (AccessKit on desktop), F6 moves the keyboard between the toolbar, layers, canvas and properties (Tab within them, Escape back to the canvas), the system's reduce-motion setting is honoured, and panel text meets WCAG AA contrast in both themes. -- **Languages:** English, Russian and Turkish (reviewed by native speakers), and Spanish, French, German, Brazilian Portuguese, Japanese, Korean, Simplified Chinese, Czech, Indonesian and Georgian drafts, picked in Preferences or taken from the system or browser and switched live; adding a language is one catalog file ([`docs/translating.md`](docs/translating.md)). +- **Languages:** English, Russian and Turkish (reviewed by native speakers), and Spanish, French, German, Brazilian Portuguese, Japanese, Korean, Simplified Chinese, Czech, Indonesian, Georgian and Vietnamese drafts, picked in Preferences or taken from the system or browser and switched live; adding a language is one catalog file ([`docs/translating.md`](docs/translating.md)). - **Plugins:** sandboxed WebAssembly plugins (a metered, pure-Rust interpreter with a memory cap and no file or network access, in the browser too) that act through the same commands, each run one undo step, within the permissions their manifest asks for. A Rust SDK and three example plugins are in [`plugins/`](plugins); see [`docs/plugins.md`](docs/plugins.md). - **Live sessions (preview):** share the open file from the app (Share ▸ Start sharing: online through a server, or on your local network), give the others the short join code it shows (or the invite link), and edit it together: everyone's changes sync live, with cursors, selections, avatars and follow, and undo takes back only your own changes. Others join from the desktop app (invite links open it) or from the browser build. See [`docs/collab-protocol.md`](docs/collab-protocol.md). - **A server of your own (preview):** `figcraft-server` keeps a team's files, publishes them from the app (File ▸ Publish to server…, or Share ▸ Online with your server in Preferences) and hands out share links and join codes that let people edit or only view; files survive restarts and apps reconnect where they were. No accounts yet: links are the access. Releases ship it for Linux, and the desktop app joins over `wss://`; [hosting it on a rented Linux server](docs/server.md#deploy-on-a-linux-server) takes a systemd unit and Caddy or nginx (or Docker). See [`docs/server.md`](docs/server.md). diff --git a/ROADMAP.md b/ROADMAP.md index f43cd015..b1ec9215 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -109,11 +109,11 @@ native speakers' reviews of the six language drafts need people. | Japanese | ja | 99% | draft (needs native review) | | German | de | 96% | draft (needs native review) | | Korean | ko | 95% | draft (needs native review) | -| Vietnamese | vi | 0% | none | +| Vietnamese | vi | 100% | draft (needs native review) | Percentages measured 2026-10-17 over 2,272 entries (strings added since a draft show English). Also shipped: Russian (`ru`, 99%, reviewed by VanTan), Swedish (`sv`, 99.6%, command labels since 2026-10-17; native review welcome), Turkish (`tr`, 99%) and Czech (`cs`, 99%, draft). Figma ships English, Japanese, Korean, French, German, Spanish and Portuguese (Brazil); FigCraft has the localization layer, English and Spanish (Spain and Latin America), -French, German, Brazilian Portuguese, Japanese, Korean, Simplified Chinese and Indonesian drafts (Preferences ▸ +French, German, Brazilian Portuguese, Japanese, Korean, Simplified Chinese, Indonesian and Vietnamese drafts (Preferences ▸ Language; Traditional Chinese has no catalog; CJK UI text uses an installed CJK font, loaded only when needed; adding a language: [`docs/translating.md`](docs/translating.md)). Document text in any script (bidi, Arabic shaping, diff --git a/crates/engine/src/cmd/view.rs b/crates/engine/src/cmd/view.rs index 0592046e..b4ce92b9 100644 --- a/crates/engine/src/cmd/view.rs +++ b/crates/engine/src/cmd/view.rs @@ -427,7 +427,7 @@ pub fn specs() -> Vec { spec!( "pref.language", "Interface language", - "{language: system|en|cs|ru|es|es-419|fr|de|pt-BR|ja|ka|ko|zh-Hans|…; else English}", + "{language: system|en|cs|ru|es|es-419|fr|de|pt-BR|ja|ka|ko|vi|zh-Hans|…; else English}", false, |s, p| { let lang = req_string("pref.language", p, "language")?; diff --git a/crates/ui-egui/locales/vi.toml b/crates/ui-egui/locales/vi.toml new file mode 100644 index 00000000..6493508b --- /dev/null +++ b/crates/ui-egui/locales/vi.toml @@ -0,0 +1,2367 @@ +# FigCraft interface strings: Vietnamese. +# +# Draft — needs native review: machine-drafted from the English catalog. Brand names, keyboard +# glyphs and {placeholders} stay as they are. Vietnamese nouns do not inflect for number, so plural +# entries give only `other`. See docs/translating.md. + +[meta] +name = "Tiếng Việt" +status = "draft — needs native review" + +[ui] +"% of all commits" = "% tổng số commit" +"(no longer published)" = "(không còn được xuất bản)" +"({n} warnings: some entries were skipped)" = { other = "({n} cảnh báo: một số mục đã bị bỏ qua)" } +"+ Create variable" = "+ Tạo biến" +".fig (experimental)" = ".fig (thử nghiệm)" +"1…9, 0" = "1…9, 0" +"@{login}: {prs} PRs, {commits} commits, +{added} / −{deleted} lines (Δ {delta}), +{bin_added} / −{bin_deleted} binary assets, {first} – {last}" = "@{login}: {prs} PR, {commits} commit, +{added} / −{deleted} dòng (Δ {delta}), +{bin_added} / −{bin_deleted} tài nguyên nhị phân, {first} – {last}" +"A .figcraft file with this name already exists. Choose its full name to confirm replacement." = "Đã tồn tại tệp .figcraft có tên này. Hãy chọn tên đầy đủ của tệp để xác nhận thay thế." +"A collection of this file with these modes and variables: override their values per mode and add variables of its own" = "Một bộ sưu tập của tệp này với các chế độ và biến sau: ghi đè giá trị theo từng chế độ và thêm các biến riêng" +"A layer on its own aligns to its frame: select more layers, or one in a frame" = "Một lớp riêng lẻ sẽ căn chỉnh theo khung của nó: hãy chọn thêm lớp, hoặc chọn một lớp bên trong khung" +"A responsive product page: hero, features, figures, a quote and a footer" = "Trang sản phẩm đáp ứng: phần mở đầu, tính năng, số liệu, trích dẫn và chân trang" +"A spring plays until it settles: its mass, stiffness and damping set how long" = "Chuyển động lò xo chạy cho đến khi ổn định: khối lượng, độ cứng và độ giảm chấn quyết định thời lượng" +"A title, an agenda, a big figure, a chart and a closing slide" = "Tiêu đề, chương trình, số liệu lớn, biểu đồ và trang kết thúc" +"A to Z" = "A đến Z" +"About" = "Giới thiệu" +"About FigCraft" = "Giới thiệu về FigCraft" +"About this server" = "Giới thiệu về máy chủ này" +"Action" = "Hành động" +"Actions" = "Hành động" +"Actions for {name}" = "Hành động cho {name}" +"Actions…" = "Hành động…" +"Active" = "Đang hoạt động" +"Actual size (100%)" = "Kích thước thực (100%)" +"Add a category" = "Thêm danh mục" +"Add a comment" = "Thêm bình luận" +"Add a description" = "Thêm mô tả" +"Add a frame (F) or a shape (R) to get started" = "Thêm khung (F) hoặc hình dạng (R) để bắt đầu" +"Add a layer or component to tile first" = "Hãy thêm một lớp hoặc thành phần để lặp ô trước" +"Add a note for developers" = "Thêm ghi chú cho nhà phát triển" +"Add action" = "Thêm hành động" +"Add actions for when no condition holds" = "Thêm hành động khi không có điều kiện nào thỏa mãn" +"Add an annotation for developers" = "Thêm chú thích cho nhà phát triển" +"Add another condition" = "Thêm điều kiện khác" +"Add auto layout" = "Thêm bố cục tự động" +"Add background behind overlay" = "Thêm nền phía sau lớp phủ" +"Add content to this slot" = "Thêm nội dung vào ô chứa này" +"Add dev resource" = "Thêm tài nguyên dev" +"Add effect" = "Thêm hiệu ứng" +"Add export setting" = "Thêm thiết lập xuất" +"Add fill" = "Thêm màu tô" +"Add interaction" = "Thêm tương tác" +"Add layout grid" = "Thêm lưới bố cục" +"Add library" = "Thêm thư viện" +"Add library file…" = "Thêm tệp thư viện…" +"Add max height" = "Thêm chiều cao tối đa" +"Add max width" = "Thêm chiều rộng tối đa" +"Add min height" = "Thêm chiều cao tối thiểu" +"Add min width" = "Thêm chiều rộng tối thiểu" +"Add mode" = "Thêm chế độ" +"Add new page" = "Thêm trang mới" +"Add or update collections from a variables JSON" = "Thêm hoặc cập nhật bộ sưu tập từ JSON biến" +"Add properties to make instances configurable" = "Thêm thuộc tính để có thể cấu hình các bản thể" +"Add reaction" = "Thêm biểu cảm" +"Add starting point" = "Thêm điểm bắt đầu" +"Add stroke" = "Thêm nét" +"Add variant" = "Thêm biến thể" +"Add variant with a new value" = "Thêm biến thể với giá trị mới" +"Added" = "Đã thêm" +"Added the library \"{name}\"" = "Đã thêm thư viện \"{name}\"" +"Adding to {name}" = "Đang thêm vào {name}" +"Adjust" = "Điều chỉnh" +"Adjustment presets" = "Thiết lập sẵn điều chỉnh" +"Advanced" = "Nâng cao" +"Advanced stroke" = "Nét nâng cao" +"After delay" = "Sau khoảng trễ" +"After delay {ms}ms" = "Sau khoảng trễ {ms}ms" +"Align" = "Căn chỉnh" +"Align bottom" = "Căn dưới" +"Align center" = "Căn giữa" +"Align horizontal centers" = "Căn tâm ngang" +"Align left" = "Căn trái" +"Align middle" = "Căn giữa dọc" +"Align right" = "Căn phải" +"Align text baselines" = "Căn theo đường cơ sở văn bản" +"Align top" = "Căn trên" +"Align vertical centers" = "Căn tâm dọc" +"Alignment" = "Căn chỉnh" +"All" = "Tất cả" +"All categories" = "Tất cả danh mục" +"All comments" = "Tất cả bình luận" +"All components" = "Tất cả thành phần" +"All fonts" = "Tất cả phông chữ" +"All supported properties" = "Tất cả thuộc tính được hỗ trợ" +"All the fonts this file uses are installed" = "Tất cả phông chữ tệp này sử dụng đều đã được cài đặt" +"All variables" = "Tất cả biến" +"Alpha" = "Alpha" +"Alphabetical" = "Theo bảng chữ cái" +"Alt+drag" = "Alt+kéo" +"An analytics screen on a grid: figures, charts drawn from vectors and a table" = "Màn hình phân tích trên lưới: số liệu, biểu đồ vẽ bằng vector và bảng dữ liệu" +"An invite link that opens FigCraft and joins" = "Liên kết mời giúp mở FigCraft và tham gia ngay" +"Anchor" = "Điểm neo" +"Android" = "Android" +"Angular" = "Góc" +"Animation" = "Hoạt ảnh" +"Annotations" = "Chú thích" +"Annotations shown on the canvas" = "Chú thích hiển thị trên vùng vẽ" +"Another server, or one that needs its key. The usual server is set in Preferences." = "Một máy chủ khác, hoặc máy chủ cần khóa truy cập. Máy chủ thường dùng được đặt trong Tùy chọn." +"Any status" = "Mọi trạng thái" +"Anyone on your network with this code can edit the file, while this app stays open." = "Bất kỳ ai trong mạng của bạn có mã này đều có thể chỉnh sửa tệp trong khi ứng dụng này đang mở." +"Anyone with the edit link can change the file; the view link only lets people look. The links carry their secrets: share them like passwords. `figcraft-server links` makes more and revokes them." = "Bất kỳ ai có liên kết chỉnh sửa đều có thể thay đổi tệp; liên kết xem chỉ cho phép xem. Các liên kết chứa mã bí mật: hãy chia sẻ cẩn thận như mật khẩu. `figcraft-server links` dùng để tạo thêm và thu hồi liên kết." +"Anyone with this code can edit the file." = "Bất kỳ ai có mã này đều có thể chỉnh sửa tệp." +"Anyone with this code can look at the file, not change it." = "Bất kỳ ai có mã này đều có thể xem tệp nhưng không thể chỉnh sửa." +"Appearance" = "Giao diện" +"Apply a component property" = "Áp dụng thuộc tính thành phần" +"Apply variable" = "Áp dụng biến" +"Apply variable to text" = "Áp dụng biến cho văn bản" +"Apply variable to visibility" = "Áp dụng biến cho hiển thị" +"Apps" = "Ứng dụng" +"Apr" = "Thg 4" +"Arc" = "Cung" +"Arc ratio" = "Tỷ lệ cung" +"Arc start" = "Điểm đầu cung" +"Arc sweep" = "Góc quét cung" +"Archive" = "Lưu trữ" +"Archived" = "Đã lưu trữ" +"Arrange" = "Sắp xếp" +"Arrow" = "Mũi tên" +"As typed" = "Như đã nhập" +"Asking the server…" = "Đang hỏi máy chủ…" +"Assets" = "Tài nguyên" +"Aug" = "Thg 8" +"Auto" = "Tự động" +"Auto (space around)" = "Tự động (cách đều xung quanh)" +"Auto (space between)" = "Tự động (cách đều giữa các mục)" +"Auto (space evenly)" = "Tự động (cách đều bằng nhau)" +"Auto ({mode})" = "Tự động ({mode})" +"Auto columns" = "Cột tự động" +"Auto gap" = "Khoảng hở tự động" +"Auto height" = "Chiều cao tự động" +"Auto layout" = "Bố cục tự động" +"Auto rows" = "Hàng tự động" +"Auto width" = "Chiều rộng tự động" +"Back" = "Quay lại" +"Back to Ready for dev" = "Quay lại Sẵn sàng cho dev" +"Back to Ready for dev: the next change compares with how it is now" = "Quay lại Sẵn sàng cho dev: thay đổi tiếp theo sẽ so sánh với trạng thái hiện tại" +"Back to assets" = "Quay lại tài nguyên" +"Back to current" = "Quay lại hiện tại" +"Back to styles" = "Quay lại các kiểu" +"Back to the FigCraft server" = "Quay lại máy chủ FigCraft" +"Back to the canvas from a focused region" = "Quay lại vùng vẽ từ vùng đang giữ tiêu điểm" +"Back to the current version" = "Quay lại phiên bản hiện tại" +"Back to the font's value" = "Quay lại giá trị của phông chữ" +"Back to the values the font style implies" = "Quay lại các giá trị mặc định của kiểu phông chữ" +"Background" = "Nền" +"Background blur" = "Làm mờ nền" +"Basics" = "Cơ bản" +"Before" = "Trước" +"Bend" = "Uốn cong" +"Bevel" = "Vát cạnh" +"Binary assets added" = "Tài nguyên nhị phân đã thêm" +"Binary assets removed" = "Tài nguyên nhị phân đã xóa" +"Black & white" = "Đen trắng" +"Bleed" = "Vùng tràn lề" +"Bleed marks" = "Dấu tràn lề" +"Bleed marks need a bleed" = "Dấu tràn lề cần có vùng tràn lề" +"Blend" = "Hòa trộn" +"Blend mode" = "Chế độ hòa trộn" +"Blue" = "Xanh lam" +"Blur" = "Làm mờ" +"Boolean" = "Boolean" +"Boolean groups" = "Nhóm boolean" +"Both directions" = "Cả hai hướng" +"Bottom" = "Dưới" +"Bottom left radius" = "Bán kính góc dưới trái" +"Bottom padding" = "Đệm dưới" +"Bottom right radius" = "Bán kính góc dưới phải" +"Bound to {name}. Click to detach the variable." = "Đã gắn với {name}. Nhấp để tách biến." +"Branch" = "Nhánh" +"Branch archived" = "Đã lưu trữ nhánh" +"Branch merged" = "Đã hợp nhất nhánh" +"Branch name" = "Tên nhánh" +"Branch of {file}" = "Nhánh của {file}" +"Branch of {file} · merged or archived" = "Nhánh của {file} · đã hợp nhất hoặc lưu trữ" +"Branch updated from main" = "Đã cập nhật nhánh từ nhánh chính" +"Branch {name}" = "Nhánh {name}" +"Branches" = "Các nhánh" +"Bring forward" = "Đưa tiến một lớp" +"Bring the main file's changes into the branch" = "Đưa các thay đổi của tệp chính vào nhánh" +"Bring to front" = "Đưa lên trên cùng" +"Bristle" = "Lông cọ" +"Browse" = "Duyệt" +"Brush" = "Cọ vẽ" +"Brush rotation jitter" = "Độ ngẫu nhiên góc xoay cọ" +"Brush scatter" = "Độ phân tán cọ" +"Brush size jitter" = "Độ ngẫu nhiên cỡ cọ" +"Brush spacing" = "Khoảng cách nét cọ" +"Bulleted list" = "Danh sách dấu đầu dòng" +"C or Shift+C" = "C hoặc Shift+C" +"C or ⇧C" = "C hoặc ⇧C" +"CMYK colour" = "Màu CMYK" +"CSS custom properties…" = "Thuộc tính tùy chỉnh CSS…" +"Can edit" = "Có thể chỉnh sửa" +"Can view" = "Có thể xem" +"Can't read this library: {e}" = "Không thể đọc thư viện này: {e}" +"Cancel" = "Hủy" +"Canvas" = "Vùng vẽ" +"Canvas stacking" = "Thứ tự xếp chồng trên vùng vẽ" +"Cap height to baseline" = "Chiều cao chữ hoa đến đường cơ sở" +"Case" = "Chữ hoa/thường" +"Case-sensitive forms" = "Dạng ký tự theo chữ hoa/thường" +"Categories" = "Danh mục" +"Center" = "Giữa" +"Change alias" = "Đổi bí danh" +"Change resolved" = "Đã giải quyết thay đổi" +"Change style" = "Đổi kiểu" +"Change to" = "Đổi thành" +"Change to needs a layer inside a variant" = "Đổi thành cần một lớp nằm trong biến thể" +"Changed" = "Đã thay đổi" +"Changed on both sides: keep one" = "Đã thay đổi ở cả hai phía: hãy giữ một bên" +"Changes on main" = "Thay đổi trên nhánh chính" +"Changes on the branch" = "Thay đổi trên nhánh" +"Changes unknown" = "Không rõ thay đổi" +"Checking the fonts installed on this computer…" = "Đang kiểm tra các phông chữ cài đặt trên máy tính này…" +"Checking the server…" = "Đang kiểm tra máy chủ…" +"Choose React, Leptos, SwiftUI or Compose above to connect this component to its code." = "Hãy chọn React, Leptos, SwiftUI hoặc Compose ở trên để kết nối thành phần này với mã nguồn." +"Choose another profile to change it." = "Hãy chọn hồ sơ khác để thay đổi." +"Choose collection" = "Chọn bộ sưu tập" +"Choose image" = "Chọn hình ảnh" +"Choose mode" = "Chọn chế độ" +"Choose variable" = "Chọn biến" +"Circle" = "Hình tròn" +"Clear from this list" = "Xóa khỏi danh sách này" +"Clear recent" = "Xóa danh sách gần đây" +"Click + to replace mixed content" = "Nhấp + để thay thế nội dung hỗn hợp" +"Click anywhere on the canvas to leave one." = "Nhấp vào bất kỳ đâu trên vùng vẽ để lại bình luận." +"Click or drag to merge · {alt} removes" = "Nhấp hoặc kéo để hợp nhất · {alt} để xóa" +"Click or drag to remove · {alt} merges" = "Nhấp hoặc kéo để xóa · {alt} để hợp nhất" +"Click to record a key" = "Nhấp để ghi nhận phím" +"Clip content" = "Cắt nội dung tràn khung" +"Clip to shape" = "Cắt theo hình dạng" +"Close" = "Đóng" +"Close overlay" = "Đóng lớp phủ" +"Close preview" = "Đóng xem trước" +"Close tab" = "Đóng thẻ" +"Close version history" = "Đóng lịch sử phiên bản" +"Close when clicking outside" = "Đóng khi nhấp ra ngoài" +"Close without saving" = "Đóng không lưu" +"Code" = "Mã" +"Code or invite link" = "Mã hoặc liên kết mời" +"Code syntax" = "Cú pháp mã" +"Collapse" = "Thu gọn" +"Collapse panel" = "Thu gọn bảng" +"Collection" = "Bộ sưu tập" +"Collections" = "Bộ sưu tập" +"Color" = "Màu" +"Color burn" = "Đốt màu" +"Color dodge" = "Làm sáng màu" +"Color format" = "Định dạng màu" +"Color profile" = "Hồ sơ màu" +"Color profile: {name}" = "Hồ sơ màu: {name}" +"Color styles" = "Kiểu màu" +"Color values in this file are in this color space." = "Các giá trị màu trong tệp này thuộc không gian màu này." +"Color variables" = "Biến màu" +"Colour" = "Màu" +"Colour and text styles, Light and Dark variables, buttons, inputs and cards" = "Kiểu màu và văn bản, biến Sáng và Tối, nút bấm, ô nhập liệu và thẻ" +"Column" = "Cột" +"Column gap" = "Khoảng hở cột" +"Column sizes" = "Kích thước cột" +"Column span" = "Số cột gộp" +"Columns" = "Các cột" +"Columns {count}" = "Cột {count}" +"Comment" = "Bình luận" +"Comments" = "Bình luận" +"Commits" = "Commit" +"Company" = "Công ty" +"Compare changes" = "So sánh thay đổi" +"Compatibility notes" = "Ghi chú tương thích" +"Completed" = "Đã hoàn thành" +"Component" = "Thành phần" +"Component name" = "Tên thành phần" +"Component property" = "Thuộc tính thành phần" +"Component set" = "Bộ thành phần" +"Component sets" = "Các bộ thành phần" +"Components" = "Các thành phần" +"Conditional" = "Điều kiện" +"Confetti" = "Hoa giấy" +"Conflicts" = "Xung đột" +"Connect to code" = "Kết nối với mã" +"Connected" = "Đã kết nối" +"Connected to code: {from}" = "Đã kết nối với mã: {from}" +"Connection lost, reconnecting (attempt {attempt})…" = "Mất kết nối, đang kết nối lại (lần thử {attempt})…" +"Constrain proportions" = "Giữ tỷ lệ" +"Constraints" = "Ràng buộc" +"Content" = "Nội dung" +"Contents hidden" = "Đã ẩn nội dung" +"Contents only" = "Chỉ nội dung" +"Contextual alternates" = "Ký tự thay thế theo ngữ cảnh" +"Contrast" = "Độ tương phản" +"Contributors" = "Người đóng góp" +"Contributors: {people} · Commits: {commits}" = "Người đóng góp: {people} · Commit: {commits}" +"Controller" = "Tay cầm điều khiển" +"Convert to frame" = "Chuyển thành khung" +"Convert to section" = "Chuyển thành phần" +"Cool" = "Lạnh" +"Copied as CSS" = "Đã sao chép dưới dạng CSS" +"Copied as PNG" = "Đã sao chép dưới dạng PNG" +"Copied as SVG" = "Đã sao chép dưới dạng SVG" +"Copied as text" = "Đã sao chép dưới dạng văn bản" +"Copied {value}" = "Đã sao chép {value}" +"Copy" = "Sao chép" +"Copy as" = "Sao chép dưới dạng" +"Copy as CSS" = "Sao chép dưới dạng CSS" +"Copy as PNG" = "Sao chép dưới dạng PNG" +"Copy as SVG" = "Sao chép dưới dạng SVG" +"Copy code" = "Sao chép mã" +"Copy link" = "Sao chép liên kết" +"Copy the {label}" = "Sao chép {label}" +"Copy {value}" = "Sao chép {value}" +"Corner radius" = "Bán kính góc" +"Corner smoothing" = "Làm mượt góc" +"Couldn't download the variables" = "Không thể tải xuống các biến" +"Couldn't reach {server}: showing what this computer remembers." = "Không thể kết nối tới {server}: đang hiển thị dữ liệu máy tính này ghi nhớ." +"Couldn't read {name}." = "Không thể đọc {name}." +"Couldn't save automatically: {error}" = "Không thể tự động lưu: {error}" +"Count" = "Số lượng" +"Create" = "Tạo" +"Create a variable collection first" = "Hãy tạo bộ sưu tập biến trước" +"Create a variable first" = "Hãy tạo biến trước" +"Create alias" = "Tạo bí danh" +"Create branch" = "Tạo nhánh" +"Create collection" = "Tạo bộ sưu tập" +"Create component" = "Tạo thành phần" +"Create component property" = "Tạo thuộc tính thành phần" +"Create components, styles or variables to publish them as a library." = "Hãy tạo các thành phần, kiểu hoặc biến để xuất bản thành thư viện." +"Create property…" = "Tạo thuộc tính…" +"Create style" = "Tạo kiểu" +"Create style from the selected text" = "Tạo kiểu từ văn bản đã chọn" +"Created" = "Đã tạo" +"Crop" = "Cắt xén" +"Crop marks" = "Dấu xén" +"Ctrl+arrows" = "Ctrl+mũi tên" +"Ctrl+click" = "Ctrl+nhấp" +"Ctrl+scroll" = "Ctrl+cuộn" +"Current name" = "Tên hiện tại" +"Current version" = "Phiên bản hiện tại" +"Cursor chat" = "Trò chuyện con trỏ" +"Custom" = "Tùy chỉnh" +"Custom size" = "Kích thước tùy chỉnh" +"Cut" = "Cắt" +"Dark" = "Tối" +"Darken" = "Làm tối" +"Dash" = "Nét đứt" +"Dashboard" = "Bảng điều khiển" +"Date created" = "Ngày tạo" +"Dec" = "Thg 12" +"Decoration" = "Trang trí chữ" +"Decoration style" = "Kiểu trang trí chữ" +"Deep select" = "Chọn sâu" +"Default" = "Mặc định" +"Default content" = "Nội dung mặc định" +"Default value (the top-left variant)" = "Giá trị mặc định (biến thể ở góc trên trái)" +"Delay" = "Độ trễ" +"Delete" = "Xóa" +"Delete category (its annotations stay)" = "Xóa danh mục (các chú thích vẫn được giữ lại)" +"Delete collection" = "Xóa bộ sưu tập" +"Delete group" = "Xóa nhóm" +"Delete mode" = "Xóa chế độ" +"Delete page" = "Xóa trang" +"Delete preset" = "Xóa thiết lập sẵn" +"Delete property" = "Xóa thuộc tính" +"Delete the style (layers keep their values)" = "Xóa kiểu (các lớp vẫn giữ nguyên giá trị)" +"Delete thread" = "Xóa luồng bình luận" +"Delete variable" = "Xóa biến" +"Delete “{name}”? This can't be undone." = "Xóa “{name}”? Thao tác này không thể hoàn tác." +"Density" = "Mật độ" +"Depth" = "Độ sâu" +"Describe how and when to use this component" = "Mô tả cách thức và thời điểm sử dụng thành phần này" +"Describe what changed" = "Mô tả những gì đã thay đổi" +"Description" = "Mô tả" +"Description (optional)" = "Mô tả (tùy chọn)" +"Design" = "Thiết kế" +"Design system starter" = "Bộ khởi đầu hệ thống thiết kế" +"Desktop" = "Máy tính" +"Destination" = "Đích" +"Detach alias" = "Tách bí danh" +"Detach instance" = "Tách bản thể" +"Detach property" = "Tách thuộc tính" +"Detach style" = "Tách kiểu" +"Detach styles" = "Tách các kiểu" +"Detach variable" = "Tách biến" +"Details" = "Chi tiết" +"Dev Mode" = "Dev Mode" +"Dev resources" = "Tài nguyên dev" +"Development" = "Phát triển" +"Device" = "Thiết bị" +"Device at 100%" = "Thiết bị ở mức 100%" +"Diamond" = "Hình thoi" +"Difference" = "Khác biệt" +"Dimensions" = "Kích thước" +"Direction" = "Hướng" +"Disconnect from code" = "Ngắt kết nối mã" +"Dispersion" = "Tán sắc" +"Display name" = "Tên hiển thị" +"Dissolve" = "Hòa tan" +"Distribute and tidy" = "Phân bổ và sắp xếp gọn" +"Distribute horizontal spacing" = "Phân bổ đều khoảng cách ngang" +"Distribute vertical spacing" = "Phân bổ đều khoảng cách dọc" +"Divider" = "Đường phân cách" +"Don't truncate" = "Không cắt bớt" +"Done" = "Xong" +"Done editing" = "Hoàn tất chỉnh sửa" +"Dots" = "Chấm" +"Dotted" = "Chấm tròn" +"Down" = "Xuống" +"Drafts" = "Bản nháp" +"Drag the stroke to add a width point" = "Kéo nét để thêm điểm độ rộng" +"Draw" = "Vẽ" +"Draw a frame" = "Vẽ khung" +"Drawing tools" = "Công cụ vẽ" +"Drop a .figcraft, .fig, .json, .svg or image file." = "Thả tệp .figcraft, .fig, .json, .svg hoặc hình ảnh vào đây." +"Drop shadow" = "Đổ bóng" +"Drop to import" = "Thả để nhập" +"Drop to open" = "Thả để mở" +"Dual-licensed MIT OR Apache-2.0. Made by the ArtCraft team and community." = "Cấp phép kép MIT HOẶC Apache-2.0. Được phát triển bởi đội ngũ và cộng đồng ArtCraft." +"Duo" = "Hai tông" +"Duplicate" = "Nhân bản" +"Duplicate by dragging" = "Nhân bản bằng cách kéo" +"Duplicate mode" = "Nhân bản chế độ" +"Duplicate page" = "Nhân bản trang" +"Edit" = "Chỉnh sửa" +"Edit as an expression" = "Chỉnh sửa dưới dạng biểu thức" +"Edit colour" = "Chỉnh sửa màu" +"Edit comment" = "Chỉnh sửa bình luận" +"Edit dev resource" = "Chỉnh sửa tài nguyên dev" +"Edit link" = "Liên kết chỉnh sửa" +"Edit link copied" = "Đã sao chép liên kết chỉnh sửa" +"Edit style" = "Chỉnh sửa kiểu" +"Edit variable" = "Chỉnh sửa biến" +"Edit with the builder" = "Chỉnh sửa bằng bộ dựng" +"Edited {when}" = "Đã chỉnh sửa {when}" +"Effect settings" = "Thiết lập hiệu ứng" +"Effect styles" = "Kiểu hiệu ứng" +"Effects" = "Hiệu ứng" +"Ellipse" = "Hình elip" +"Ellipses" = "Hình elip" +"Else" = "Ngược lại" +"Else if" = "Hoặc nếu" +"Embedded profile" = "Hồ sơ nhúng sẵn" +"Empty" = "Trống" +"End" = "Cuối" +"End point" = "Điểm cuối" +"Ends the session; everyone keeps their copy" = "Kết thúc phiên; mọi người vẫn giữ bản sao của mình" +"Enter" = "Enter" +"Enter the address of a figcraft-server and press Browse to see the plugins it offers." = "Nhập địa chỉ figcraft-server và nhấn Duyệt để xem các plugin mà máy chủ cung cấp." +"Enter to save · Esc to cancel" = "Enter để lưu · Esc để hủy" +"Eraser" = "Cục tẩy" +"Esc" = "Esc" +"Essential" = "Thiết yếu" +"Every conflict has a choice." = "Mọi xung đột đều đã có lựa chọn." +"Every top-level frame already starts a flow" = "Mọi khung cấp cao nhất đều đã là điểm bắt đầu luồng" +"Exact opacity (4 then 5: 45%)" = "Độ mờ chính xác (nhấn 4 rồi 5: 45%)" +"Exclude" = "Loại trừ" +"Excluded" = "Đã loại trừ" +"Excluded from layout" = "Đã loại trừ khỏi bố cục" +"Excludes" = "Phép loại trừ" +"Exclusion" = "Loại trừ" +"Exit focus view (Esc)" = "Thoát chế độ xem tập trung (Esc)" +"Expand" = "Mở rộng" +"Export" = "Xuất" +"Export all" = "Xuất tất cả" +"Export frames and layers as PNG, JPG, SVG or PDF" = "Xuất các khung và lớp dưới dạng PNG, JPG, SVG hoặc PDF" +"Export page as PNG" = "Xuất trang dưới dạng PNG" +"Export settings" = "Thiết lập xuất" +"Export variables" = "Xuất các biến" +"Export {name}" = "Xuất {name}" +"Export {n} layers" = { other = "Xuất {n} lớp" } +"Exported {file}" = "Đã xuất {file}" +"Exported {name}" = "Đã xuất {name}" +"Exported {name}; {n} kinds of content were left out" = { other = "Đã xuất {name}; {n} loại nội dung đã bị lược bỏ" } +"Exported {n} files" = { other = "Đã xuất {n} tệp" } +"Export…" = "Xuất…" +"Expose properties to instances" = "Hiển thị thuộc tính từ các bản thể lồng nhau" +"Exposure" = "Phơi sáng" +"Expression" = "Biểu thức" +"Extend collection" = "Mở rộng bộ sưu tập" +"Extends \"{name}\": overridden values are marked" = "Mở rộng \"{name}\": các giá trị ghi đè được đánh dấu" +"Eye" = "Mắt" +"F" = "F" +"Fade" = "Mờ dần" +"False" = "Sai" +"Feb" = "Thg 2" +"Fetching from the server…" = "Đang tải từ máy chủ…" +"FigCraft couldn't open its window: {error}" = "FigCraft không thể mở cửa sổ: {error}" +"FigCraft doesn't support every feature of these files yet. The notes list what was left out or changed in the imported copy; the original file is unchanged." = "FigCraft chưa hỗ trợ mọi tính năng của các tệp này. Các ghi chú dưới đây liệt kê những gì đã được lược bỏ hoặc thay đổi trong bản sao đã nhập; tệp gốc không bị thay đổi." +"File" = "Tệp" +"File name" = "Tên tệp" +"File not found" = "Không tìm thấy tệp" +"File published" = "Đã xuất bản tệp" +"Files aren't end-to-end encrypted: the server's operator can read them." = "Các tệp không được mã hóa đầu cuối: người vận hành máy chủ có thể đọc được chúng." +"Files nobody opens for {n} days are deleted." = { other = "Các tệp không ai mở trong {n} ngày sẽ bị xóa." } +"Fill" = "Màu tô" +"Fill (fr)" = "Lấp đầy (fr)" +"Fill container" = "Lấp đầy khung chứa" +"Fill window" = "Lấp đầy cửa sổ" +"Fills" = "Màu tô" +"Fill|sizing" = "Lấp đầy" +"Filter and sort" = "Lọc và sắp xếp" +"Find" = "Tìm" +"Find and replace" = "Tìm và thay thế" +"Find layers" = "Tìm lớp" +"First" = "Đầu tiên" +"First commit" = "Commit đầu tiên" +"First on top" = "Mục đầu ở trên cùng" +"Fit" = "Vừa khít" +"Fit device to window" = "Vừa thiết bị với cửa sổ" +"Fit to contents" = "Vừa khít nội dung" +"Fit to window" = "Vừa khít cửa sổ" +"Fit width" = "Vừa chiều rộng" +"Fixed" = "Cố định" +"Fixed gap" = "Khoảng hở cố định" +"Fixed size" = "Kích thước cố định" +"Flatten" = "Làm phẳng" +"Flip" = "Lật" +"Flip horizontal" = "Lật ngang" +"Flip text to the other side" = "Lật văn bản sang phía bên kia" +"Flip vertical" = "Lật dọc" +"Flip width profile" = "Lật biên dạng độ rộng" +"Flow starting point" = "Điểm bắt đầu luồng" +"Flow starting points" = "Các điểm bắt đầu luồng" +"Flows" = "Các luồng" +"Focus view" = "Chế độ xem tập trung" +"Fold autosaves" = "Gộp các bản tự động lưu" +"Folder: click to collapse" = "Thư mục: nhấp để thu gọn" +"Folder: click to expand" = "Thư mục: nhấp để mở rộng" +"Follow" = "Theo dõi" +"Follow {name}" = "Theo dõi {name}" +"Following" = "Đang theo dõi" +"Following {name} · {key} to stop" = "Đang theo dõi {name} · {key} để dừng" +"Font" = "Phông chữ" +"Font not installed" = "Phông chữ chưa được cài đặt" +"Font size" = "Cỡ chữ" +"Font style" = "Kiểu phông chữ" +"Forget on this computer" = "Quên trên máy tính này" +"Four screens of a trail app with components and a prototype flow" = "Bốn màn hình ứng dụng đường mòn với các thành phần và luồng nguyên mẫu" +"Fractions" = "Phân số" +"Frame" = "Khung" +"Frame selection" = "Đóng khung vùng chọn" +"Frame tools" = "Công cụ khung" +"Frames" = "Các khung" +"From the library \"{name}\": read-only" = "Từ thư viện \"{name}\": chỉ đọc" +"From {name}" = "Từ {name}" +"From {server}" = "Từ {server}" +"Frost" = "Độ mờ sương" +"Gap" = "Khoảng hở" +"Gap between columns" = "Khoảng hở giữa các cột" +"Gap between items" = "Khoảng hở giữa các mục" +"Gap between rows" = "Khoảng hở giữa các hàng" +"Getting started" = "Bắt đầu" +"Give the address of a server open to the public, or a server's address with its key (`figcraft-server key` prints it)." = "Nhập địa chỉ của một máy chủ công khai, hoặc địa chỉ máy chủ kèm theo khóa (`figcraft-server key` sẽ in khóa đó)." +"Glass" = "Kính" +"Go to main component" = "Đi tới thành phần chính" +"Go to {name}" = "Đi tới {name}" +"Grab bag" = "Tổng hợp" +"Gradient" = "Chuyển sắc" +"Gray" = "Xám" +"Green" = "Xanh lá" +"Greyscale components and two example screens to sketch a flow with" = "Các thành phần thang độ xám và hai màn hình mẫu để phác thảo luồng" +"Grid" = "Lưới" +"Grid ({size})" = "Lưới ({size})" +"Grid styles" = "Kiểu lưới" +"Grid {size}" = "Lưới {size}" +"Group" = "Nhóm" +"Group selection" = "Nhóm vùng chọn" +"Groups" = "Các nhóm" +"Gutter" = "Rãnh cột" +"Hand tool" = "Công cụ bàn tay" +"Hanging list" = "Danh sách nhô đầu dòng" +"Hanging punctuation" = "Dấu câu treo ngoài lề" +"Hard light" = "Ánh sáng gắt" +"Height" = "Chiều cao" +"Help" = "Trợ giúp" +"Help and resources" = "Trợ giúp và tài nguyên" +"Help page" = "Trang trợ giúp" +"Here: {names}" = "Tại đây: {names}" +"Hidden" = "Đã ẩn" +"Hide contents" = "Ẩn nội dung" +"Hide from publishing" = "Ẩn khi xuất bản" +"Hide section contents" = "Ẩn nội dung phần" +"Hide these tips (Getting started in the Help menu shows them again)" = "Ẩn các mẹo này (chọn Bắt đầu trong trình đơn Trợ giúp để hiện lại)" +"Hide when publishing" = "Ẩn khi xuất bản" +"Highlight layers on hover" = "Làm nổi bật lớp khi di chuột qua" +"Highlights" = "Vùng sáng" +"Hold Alt" = "Giữ Alt" +"Hold Alt+Z" = "Giữ Alt+Z" +"Hold Ctrl" = "Giữ Ctrl" +"Hold Z" = "Giữ Z" +"Hold ⌃ or ⌘" = "Giữ ⌃ hoặc ⌘" +"Hold ⌥" = "Giữ ⌥" +"Hold ⌥Z" = "Giữ ⌥Z" +"Home" = "Trang chủ" +"Horizontal" = "Ngang" +"Horizontal align" = "Căn ngang" +"Horizontal hex" = "Lục giác ngang" +"Horizontal padding" = "Đệm ngang" +"Horizontal spacing" = "Khoảng cách ngang" +"Hosted by {operator}" = "Được vận hành bởi {operator}" +"Hover a layer to see its properties" = "Di chuột qua một lớp để xem thuộc tính" +"Hover other layers to measure the distance" = "Di chuột qua các lớp khác để đo khoảng cách" +"Hue" = "Sắc độ" +"Hug" = "Ôm khít" +"Hug contents" = "Ôm khít nội dung" +"Icon components on a 24 px grid with keylines and a size preview" = "Các thành phần biểu tượng trên lưới 24 px có đường định chuẩn và khung xem trước kích thước" +"Icon set starter" = "Bộ khởi đầu biểu tượng" +"If" = "Nếu" +"If it keeps happening, please report it at {link} with this message." = "Nếu lỗi vẫn tiếp diễn, vui lòng báo cáo tại {link} kèm theo thông báo này." +"If {condition}" = "Nếu {condition}" +"Ignore auto layout (absolute position)" = "Bỏ qua bố cục tự động (vị trí tuyệt đối)" +"Image" = "Hình ảnh" +"Images" = "Hình ảnh" +"Import" = "Nhập" +"Import path" = "Đường dẫn nhập" +"Import plugin from manifest" = "Nhập plugin từ tệp kê khai" +"Import plugin from manifest…" = "Nhập plugin từ tệp kê khai…" +"Import report" = "Báo cáo nhập" +"Import variables" = "Nhập các biến" +"Imported document" = "Tài liệu đã nhập" +"Imported {name}" = "Đã nhập {name}" +"Imported {n} new variables, updated {updated}" = { other = "Đã nhập {n} biến mới, cập nhật {updated}" } +"Import…" = "Nhập…" +"In an instance, this comes from the main component" = "Trong bản thể, giá trị này được lấy từ thành phần chính" +"In the browser you can join sessions the desktop app hosts and files on a FigCraft server. A page opened over https reaches other computers only through wss:// links (a server behind TLS)." = "Trên trình duyệt, bạn có thể tham gia các phiên do ứng dụng máy tính chủ trì và các tệp trên máy chủ FigCraft. Trang mở qua https chỉ kết nối tới máy tính khác qua liên kết wss:// (máy chủ có TLS)." +"Include bounding box" = "Bao gồm khung giới hạn" +"Include id attribute" = "Bao gồm thuộc tính id" +"Included" = "Đã bao gồm" +"Included in layout" = "Được tính trong bố cục" +"Individual corners" = "Từng góc riêng" +"Individual padding" = "Đệm từng cạnh" +"Individual strokes" = "Nét từng cạnh" +"Ink" = "Mực" +"Inner shadow" = "Bóng trong" +"Inside" = "Bên trong" +"Inspect" = "Kiểm tra" +"Inspect the layer under the pointer: size, colours, typography" = "Kiểm tra lớp dưới con trỏ: kích thước, màu sắc, kiểu chữ" +"Install" = "Cài đặt" +"Install plugin" = "Cài đặt plugin" +"Installed" = "Đã cài đặt" +"Installed {name}" = "Đã cài đặt {name}" +"Installing…" = "Đang cài đặt…" +"Instance" = "Bản thể" +"Instance properties" = "Thuộc tính bản thể" +"Instance swap" = "Hoán đổi bản thể" +"Instance swap (no other component)" = "Hoán đổi bản thể (không có thành phần khác)" +"Instances" = "Các bản thể" +"Instant" = "Tức thì" +"Intensity" = "Cường độ" +"Interaction" = "Tương tác" +"Interactions" = "Các tương tác" +"Interface design and prototyping. A free, open-source, clean-room design tool written from scratch in Rust, part of the ArtCraft Crafting Apps." = "Thiết kế giao diện và tạo nguyên mẫu. Công cụ thiết kế miễn phí, mã nguồn mở, được viết mới hoàn toàn bằng Rust, thuộc bộ ứng dụng sáng tạo ArtCraft." +"Interface size" = "Kích thước giao diện" +"Intersect" = "Giao nhau" +"Intersects" = "Phép giao" +"Invalid color" = "Màu không hợp lệ" +"Invite link" = "Liên kết mời" +"Invite link copied" = "Đã sao chép liên kết mời" +"It asks permission to:" = "Plugin yêu cầu quyền:" +"Jan" = "Thg 1" +"Join" = "Tham gia" +"Join code copied" = "Đã sao chép mã tham gia" +"Join code or invite link" = "Mã tham gia hoặc liên kết mời" +"Join live session" = "Tham gia phiên trực tiếp" +"Join us on Discord" = "Tham gia Discord cùng chúng tôi" +"Join with a code" = "Tham gia bằng mã" +"Joined" = "Đã tham gia" +"Joined {file}" = "Đã tham gia {file}" +"Joining…" = "Đang tham gia…" +"Join|stroke" = "Khớp nối" +"Jul" = "Thg 7" +"Jun" = "Thg 6" +"Just now" = "Vừa xong" +"Justify" = "Căn đều" +"Keep appearance" = "Giữ nguyên diện mạo" +"Keep appearance converts every color value to {profile} so colors look the same. Keep values leaves the numbers as they are, so colors shift." = "Giữ nguyên diện mạo sẽ chuyển đổi mọi giá trị màu sang {profile} để màu sắc hiển thị như cũ. Giữ nguyên giá trị sẽ giữ nguyên các con số nên màu sắc sẽ thay đổi." +"Keep tool selected after use" = "Giữ công cụ được chọn sau khi dùng" +"Keep values" = "Giữ nguyên giá trị" +"Key/Gamepad" = "Phím/Tay cầm" +"Key/Gamepad {key}" = "Phím/Tay cầm {key}" +"Keyboard shortcuts" = "Phím tắt" +"Kits" = "Bộ công cụ" +"Landing page" = "Trang đích" +"Language" = "Ngôn ngữ" +"Lasso" = "Dây quây" +"Last" = "Cuối cùng" +"Last change: {note}" = "Thay đổi gần nhất: {note}" +"Last commit" = "Commit cuối cùng" +"Last modified" = "Sửa đổi lần cuối" +"Last on top" = "Mục cuối ở trên cùng" +"Layer blur" = "Làm mờ lớp" +"Layer name" = "Tên lớp" +"Layers" = "Các lớp" +"Layers in an instance take their position from the main component" = "Các lớp trong bản thể lấy vị trí từ thành phần chính" +"Layout" = "Bố cục" +"Layout grid" = "Lưới bố cục" +"Layout grid settings" = "Thiết lập lưới bố cục" +"Layout grids" = "Lưới bố cục" +"Leave session" = "Rời phiên" +"Leaves" = "Lá cây" +"Left" = "Trái" +"Left & right" = "Trái & phải" +"Left padding" = "Đệm trái" +"Left side" = "Cạnh trái" +"Left side width" = "Độ rộng cạnh trái" +"Letter case" = "Kiểu chữ hoa/thường" +"Letter spacing" = "Khoảng cách chữ" +"Libraries" = "Thư viện" +"Libraries in this file" = "Thư viện trong tệp này" +"Library updates available" = "Có bản cập nhật thư viện" +"Library: click to collapse" = "Thư viện: nhấp để thu gọn" +"Library: click to expand" = "Thư viện: nhấp để mở rộng" +"Library: its variables are read-only here; edit them in the library file and publish it" = "Thư viện: các biến của thư viện chỉ đọc tại đây; hãy chỉnh sửa chúng trong tệp thư viện rồi xuất bản" +"Light" = "Sáng" +"Lighten" = "Làm sáng" +"Light|glass" = "Ánh sáng" +"Line" = "Đường thẳng" +"Line arrow" = "Mũi tên nét mảnh" +"Line delta" = "Chênh lệch dòng" +"Line height" = "Chiều cao dòng" +"Linear" = "Tuyến tính" +"Lines" = "Đường thẳng" +"Lines +/−" = "Dòng +/−" +"Lines added" = "Dòng đã thêm" +"Lines deleted" = "Dòng đã xóa" +"Link" = "Liên kết" +"Link copied" = "Đã sao chép liên kết" +"Link docs, code or tickets for developers." = "Liên kết tài liệu, mã nguồn hoặc thẻ công việc cho nhà phát triển." +"Link frames on the Prototype tab, then present the flow" = "Liên kết các khung trong thẻ Nguyên mẫu, sau đó trình chiếu luồng" +"Link this component to its code component: instances then show your real snippet with their values." = "Liên kết thành phần này với thành phần mã nguồn: các bản thể sẽ hiển thị đoạn mã thực kèm theo giá trị của chúng." +"List spacing" = "Khoảng cách mục danh sách" +"List style" = "Kiểu danh sách" +"Live session" = "Phiên trực tiếp" +"Live · {people}" = "Trực tiếp · {people}" +"Local components" = "Thành phần cục bộ" +"Local network" = "Mạng cục bộ" +"Local styles" = "Kiểu cục bộ" +"Local variables" = "Biến cục bộ" +"Lock/Unlock" = "Khóa/Mở khóa" +"Locked" = "Đã khóa" +"Lowercase" = "Chữ thường" +"Luminance" = "Độ chói" +"Luminosity" = "Độ sáng" +"Main" = "Chính" +"Main component deleted" = "Thành phần chính đã bị xóa" +"Main menu" = "Trình đơn chính" +"Make a component" = "Tạo thành phần" +"Make slot" = "Tạo ô chứa" +"Mar" = "Thg 3" +"Margin" = "Lề" +"Mark all as read" = "Đánh dấu tất cả là đã đọc" +"Mark as resolved" = "Đánh dấu là đã giải quyết" +"Mark as unread" = "Đánh dấu là chưa đọc" +"Mark as unresolved" = "Đánh dấu là chưa giải quyết" +"Mask" = "Mặt nạ" +"Mass · Stiffness · Damping" = "Khối lượng · Độ cứng · Độ giảm chấn" +"Match (empty: the whole name)" = "Khớp (để trống: toàn bộ tên)" +"Max H" = "Cao tối đa" +"Max W" = "Rộng tối đa" +"Max lines" = "Số dòng tối đa" +"Maximize" = "Phóng to cực đại" +"May" = "Tháng 5" +"Measure to the selection" = "Đo khoảng cách tới vùng chọn" +"Merge into main" = "Hợp nhất vào nhánh chính" +"Merge regions" = "Hợp nhất các vùng" +"Merge the branch into the main file (one undo step) and archive it" = "Hợp nhất nhánh vào tệp chính (một bước hoàn tác) và lưu trữ nhánh" +"Merged" = "Đã hợp nhất" +"Merged PRs" = "PR đã hợp nhất" +"Min H" = "Cao tối thiểu" +"Min W" = "Rộng tối thiểu" +"Minimize" = "Thu nhỏ" +"Mirror angle" = "Đối xứng góc" +"Mirror angle and length" = "Đối xứng góc và độ dài" +"Mirroring" = "Đối xứng tay nắm" +"Missing" = "Thiếu" +"Missing fonts" = "Phông chữ bị thiếu" +"Missing layer" = "Lớp bị thiếu" +"Missing style" = "Kiểu bị thiếu" +"Missing variable" = "Biến bị thiếu" +"Miter" = "Góc nhọn" +"Miter angle" = "Góc vát nhọn" +"Mixed" = "Hỗn hợp" +"Mixed fonts" = "Nhiều phông chữ" +"Mixed interactions: click + to replace them" = "Tương tác hỗn hợp: nhấp + để thay thế" +"Mobile app" = "Ứng dụng di động" +"Mode" = "Chế độ" +"Model" = "Mô hình" +"Models" = "Mô hình AI" +"Mono" = "Đơn sắc" +"More" = "Thêm" +"More instance actions" = "Thêm hành động cho bản thể" +"Mouse down" = "Nhấn chuột xuống" +"Mouse enter" = "Đưa chuột vào" +"Mouse leave" = "Đưa chuột ra" +"Mouse up" = "Nhả chuột" +"Move" = "Di chuyển" +"Move along the toolbar or the layer rows" = "Di chuyển dọc thanh công cụ hoặc các hàng lớp" +"Move column left" = "Chuyển cột sang trái" +"Move column right" = "Chuyển cột sang phải" +"Move down" = "Di chuyển xuống" +"Move in" = "Di chuyển vào" +"Move out" = "Di chuyển ra" +"Move tools" = "Công cụ di chuyển" +"Move up" = "Di chuyển lên" +"Moved to {name}" = "Đã chuyển sang {name}" +"Multi" = "Đa sắc" +"Multiply" = "Nhân" +"Muted" = "Trầm" +"Name" = "Tên" +"Name (A–Z)" = "Tên (A–Z)" +"Named instance" = "Bản thể có tên" +"Navigate to" = "Điều hướng đến" +"Nested instance" = "Bản thể lồng nhau" +"New design file" = "Tệp thiết kế mới" +"Newest first" = "Mới nhất trước" +"Next frame" = "Khung tiếp theo" +"Next or previous control in the focused region" = "Điều khiển tiếp theo hoặc trước đó trong vùng đang giữ tiêu điểm" +"Next ready for dev" = "Mục Sẵn sàng cho dev tiếp theo" +"Next size option" = "Tùy chọn kích thước tiếp theo" +"No assets: no export settings, icons or images. Add export settings in the Design tab." = "Không có tài nguyên: chưa có thiết lập xuất, biểu tượng hay hình ảnh. Hãy thêm thiết lập xuất trong thẻ Thiết kế." +"No boolean variables fit here." = "Không có biến boolean nào phù hợp tại đây." +"No boolean variables yet. Create them in Local variables." = "Chưa có biến boolean nào. Hãy tạo trong mục Biến cục bộ." +"No branches. A branch is a copy of the file to try changes in, then review and merge." = "Chưa có nhánh nào. Nhánh là bản sao của tệp để thử nghiệm thay đổi, sau đó xem xét và hợp nhất." +"No category" = "Không có danh mục" +"No changes" = "Không có thay đổi" +"No color styles" = "Không có kiểu màu" +"No colour variables fit here." = "Không có biến màu nào phù hợp tại đây." +"No colour variables yet. Create them in Local variables." = "Chưa có biến màu nào. Hãy tạo trong mục Biến cục bộ." +"No comments yet" = "Chưa có bình luận nào" +"No compatibility warnings reported" = "Không có cảnh báo tương thích nào" +"No components yet. Select layers and press {keys}." = "Chưa có thành phần nào. Hãy chọn các lớp và nhấn {keys}." +"No conflicts." = "Không có xung đột." +"No contributor data was built into this copy." = "Bản sao này không có dữ liệu người đóng góp." +"No device" = "Không có thiết bị" +"No files or templates match your search" = "Không có tệp hoặc mẫu nào khớp với tìm kiếm của bạn" +"No fonts match" = "Không có phông chữ nào khớp" +"No join code here (the server is older than join codes, or this address can't be put in one): share the link instead." = "Không có mã tham gia tại đây (máy chủ cũ hơn tính năng mã tham gia, hoặc địa chỉ này không thể tạo mã): hãy chia sẻ liên kết thay thế." +"No layer changes to show." = "Không có thay đổi lớp nào để hiển thị." +"No libraries yet. Add a .figcraft file that was published as a library, or paste a team library's link." = "Chưa có thư viện nào. Hãy thêm tệp .figcraft đã xuất bản làm thư viện, hoặc dán liên kết thư viện nhóm." +"No list" = "Không tạo danh sách" +"No matching comments" = "Không có bình luận phù hợp" +"No matching components" = "Không có thành phần phù hợp" +"No matching layers" = "Không có lớp phù hợp" +"No matching styles" = "Không có kiểu phù hợp" +"No matching variables" = "Không có biến phù hợp" +"No mirroring" = "Không đối xứng" +"No model credits were built into this copy." = "Bản sao này không có thông tin ghi nhận mô hình." +"No number variables fit here." = "Không có biến số nào phù hợp tại đây." +"No number variables yet. Create them in Local variables." = "Chưa có biến số nào. Hãy tạo trong mục Biến cục bộ." +"No other pages" = "Không có trang nào khác" +"No paints" = "Không có màu tô" +"No plugins on {server}." = "Không có plugin nào trên {server}." +"No plugins yet. Import a development plugin from its figcraft-plugin.json." = "Chưa có plugin nào. Hãy nhập một plugin phát triển từ tệp figcraft-plugin.json." +"No preferred components" = "Chưa có thành phần ưu tiên" +"No preset" = "Không có thiết lập sẵn" +"No saved versions yet. Save a version to mark a point in your work you can come back to." = "Chưa có phiên bản đã lưu nào. Hãy lưu một phiên bản để đánh dấu mốc công việc có thể quay lại sau." +"No scrolling" = "Không cuộn" +"No shortcuts match" = "Không có phím tắt nào khớp" +"No status" = "Không có trạng thái" +"No string variables fit here." = "Không có biến chuỗi nào phù hợp tại đây." +"No string variables yet. Create them in Local variables." = "Chưa có biến chuỗi nào. Hãy tạo trong mục Biến cục bộ." +"No styles yet." = "Chưa có kiểu nào." +"No styles yet. Click + to create one from the selection." = "Chưa có kiểu nào. Nhấp + để tạo kiểu từ vùng chọn." +"No templates match your search" = "Không có mẫu nào khớp với tìm kiếm của bạn" +"No text styles yet. Click + to create one from the selected text." = "Chưa có kiểu văn bản nào. Nhấp + để tạo kiểu từ văn bản đã chọn." +"No variables fit here." = "Không có biến nào phù hợp tại đây." +"No variables yet. Create them in Local variables." = "Chưa có biến nào. Hãy tạo trong mục Biến cục bộ." +"Nobody else is here yet" = "Chưa có ai khác ở đây" +"Noise" = "Nhiễu" +"None" = "Không có" +"None." = "Không có." +"Normal" = "Bình thường" +"Not bound" = "Chưa gắn biến" +"Not in a live session" = "Không ở trong phiên trực tiếp" +"Not in this font" = "Không có trong phông chữ này" +"Not properties, kept as written: {names}" = "Không phải thuộc tính, được giữ nguyên như đã viết: {names}" +"Not read yet" = "Chưa đọc" +"Not shared" = "Chưa chia sẻ" +"Note {n}" = "Ghi chú {n}" +"Nothing changed since this was marked ready for dev." = "Chưa có gì thay đổi kể từ khi được đánh dấu sẵn sàng cho dev." +"Nothing here yet. Set a frame's status to list it." = "Chưa có gì ở đây. Hãy đặt trạng thái cho một khung để hiển thị tại đây." +"Nothing online yet. Use Share on a file to put it online and it is listed here." = "Chưa có tệp trực tuyến nào. Hãy dùng nút Chia sẻ trên một tệp để đưa lên trực tuyến và tệp sẽ xuất hiện tại đây." +"Nothing to export" = "Không có gì để xuất" +"Nov" = "Thg 11" +"Now" = "Bây giờ" +"Nudge (Shift: big nudge)" = "Dịch nhẹ (Shift: dịch bước lớn)" +"Nudge amount" = "Mức dịch chuyển nhẹ" +"Number" = "Số" +"Number ↑" = "Số ↑" +"Number ↓" = "Số ↓" +"Numbered list" = "Danh sách đánh số" +"Object" = "Đối tượng" +"Oct" = "Thg 10" +"Off" = "Tắt" +"Offered first when filling the slot (any content is allowed)" = "Được đề xuất đầu tiên khi thêm vào ô chứa (cho phép mọi nội dung)" +"Offered first when swapping the instance (any component is allowed)" = "Được đề xuất đầu tiên khi hoán đổi bản thể (cho phép mọi thành phần)" +"Offset" = "Độ lệch" +"Oldest first" = "Cũ nhất trước" +"On click" = "Khi nhấp" +"On drag" = "Khi kéo" +"On this page" = "Trên trang này" +"One announcement in five common sizes: square, portrait, story, link and banner" = "Một thông báo với năm kích thước phổ biến: vuông, dọc, story, liên kết và biểu ngữ" +"Online" = "Trực tuyến" +"Online files" = "Tệp trực tuyến" +"Online sharing is off: files are shared on the local network only." = "Chia sẻ trực tuyến đang tắt: tệp chỉ được chia sẻ trong mạng cục bộ." +"Only the first changed layers are listed." = "Chỉ liệt kê những lớp thay đổi đầu tiên." +"Only the first {n} changed layers are listed." = "Chỉ liệt kê {n} lớp thay đổi đầu tiên." +"Only your threads" = "Chỉ luồng của bạn" +"Opacity" = "Độ mờ" +"Opacity & blend" = "Độ mờ & hòa trộn" +"Opacity 10%…90%, 0: 100%" = "Độ mờ 10%…90%, 0: 100%" +"Open" = "Mở" +"Open .figcraft, .svg or images" = "Mở tệp .figcraft, .svg hoặc hình ảnh" +"Open branch" = "Mở nhánh" +"Open file" = "Mở tệp" +"Open files" = "Các tệp đang mở" +"Open in focus view" = "Mở trong chế độ xem tập trung" +"Open in new window" = "Mở trong cửa sổ mới" +"Open invite links in FigCraft" = "Mở liên kết mời trong FigCraft" +"Open link" = "Mở liên kết" +"Open link {url}" = "Mở liên kết {url}" +"Open overlay" = "Mở lớp phủ" +"Open prototype preview" = "Mở xem trước nguyên mẫu" +"Open variables ({count})" = "Mở các biến ({count})" +"Opened as a new document" = "Đã mở dưới dạng tài liệu mới" +"Opened “{name}” in a new tab" = "Đã mở “{name}” trong thẻ mới" +"Opening the file…" = "Đang mở tệp…" +"Opening {n} files as new files" = { other = "Đang mở {n} tệp dưới dạng tệp mới" } +"Open|comments" = "Đang mở" +"Options" = "Tùy chọn" +"Orange" = "Cam" +"Order" = "Thứ tự" +"Other" = "Khác" +"Other apps may not open every .fig file exported here." = "Các ứng dụng khác có thể không mở được mọi tệp .fig xuất từ đây." +"Others lose access and keep their copy; the file stays on the server for you" = "Những người khác sẽ mất quyền truy cập và giữ lại bản sao của họ; tệp vẫn còn trên máy chủ cho bạn" +"Others type this under Share ▸ Join with a code" = "Người khác nhập mã này tại mục Chia sẻ ▸ Tham gia bằng mã" +"Outline stroke" = "Chuyển nét thành đường viền" +"Outline text" = "Chuyển văn bản thành đường viền" +"Outlines" = "Đường viền nét" +"Outside" = "Bên ngoài" +"Overflow" = "Nội dung tràn" +"Overlay" = "Lớp phủ" +"Overlay position" = "Vị trí lớp phủ" +"Overridden here (the collection it extends has another value)" = "Đã ghi đè tại đây (bộ sưu tập gốc có giá trị khác)" +"Overrides" = "Ghi đè" +"Owner token" = "Mã thông báo chủ sở hữu" +"Owner token copied" = "Đã sao chép mã thông báo chủ sở hữu" +"PDF print options" = "Tùy chọn in PDF" +"PDF print settings" = "Thiết lập in PDF" +"Padding" = "Đệm" +"Page" = "Trang" +"Page deleted" = "Đã xóa trang" +"Pages" = "Các trang" +"Pages added to the document" = "Các trang đã được thêm vào tài liệu" +"Pages: {pages}" = "Trang: {pages}" +"Paint bucket" = "Thùng sơn" +"Pan the canvas" = "Di chuyển vùng vẽ" +"Pan with nothing selected (Shift: farther)" = "Di chuyển vùng vẽ khi không chọn gì (Shift: xa hơn)" +"Panels" = "Bảng" +"Paper" = "Giấy" +"Paragraph indent" = "Thụt lề đoạn văn" +"Paragraph indent applies to left-aligned text" = "Thụt lề đoạn văn áp dụng cho văn bản căn trái" +"Paragraph spacing" = "Khoảng cách đoạn văn" +"Pass through" = "Xuyên qua" +"Paste a link (https://…)" = "Dán một liên kết (https://…)" +"Paste a team library link (a view link)" = "Dán liên kết thư viện nhóm (liên kết xem)" +"Paste here" = "Dán vào đây" +"Paste to replace" = "Dán để thay thế" +"Pasted design layers; {n} kinds of content were left out" = { other = "Đã dán các lớp thiết kế; {n} loại nội dung đã bị lược bỏ" } +"Pattern" = "Họa tiết" +"Pattern alignment" = "Căn chỉnh họa tiết" +"Pattern scale" = "Tỷ lệ họa tiết" +"Pattern source" = "Nguồn họa tiết" +"Pen" = "Bút" +"Pencil" = "Bút chì" +"People in this file" = "Những người trong tệp này" +"People join from anywhere with a code. The file is kept on {server} while you share it." = "Mọi người có thể tham gia từ bất kỳ đâu bằng mã. Tệp được lưu trên {server} trong khi bạn chia sẻ." +"People on your network join with a code. Nothing goes through a server." = "Mọi người trong mạng của bạn tham gia bằng mã. Không có dữ liệu nào đi qua máy chủ." +"Phone" = "Điện thoại" +"Pick color" = "Chọn màu" +"Pick color (I)" = "Chọn màu (I)" +"Pick one font family first" = "Hãy chọn một họ phông chữ trước" +"Pick the Frame tool, then drag on the canvas or choose a device size" = "Chọn công cụ Khung, sau đó kéo trên vùng vẽ hoặc chọn kích thước thiết bị" +"Pin a property" = "Ghim thuộc tính" +"Pinch" = "Bóp nhọn" +"Pixel grid" = "Lưới pixel" +"Pixel preview 1x" = "Xem trước pixel 1x" +"Pixel preview 2x" = "Xem trước pixel 2x" +"Place a shape or frame (its tool chosen)" = "Đặt hình dạng hoặc khung (khi đã chọn công cụ tương ứng)" +"Place automatically" = "Đặt tự động" +"Place image" = "Đặt hình ảnh" +"Placed on the current page" = "Đã đặt trên trang hiện tại" +"Playground" = "Sân thử nghiệm" +"Plugin" = "Plugin" +"Plugins" = "Plugin" +"Plugins & widgets" = "Plugin & tiện ích" +"Plugins run in FigCraft's sandbox, without files, network or clock. Install only plugins you trust." = "Plugin chạy trong môi trường cô lập của FigCraft, không truy cập tệp, mạng hay đồng hồ. Chỉ cài đặt những plugin bạn tin tưởng." +"Plus darker" = "Cộng tối hơn" +"Plus lighter" = "Cộng sáng hơn" +"Point" = "Điểm" +"Points" = "Các điểm" +"Polygon" = "Đa giác" +"Polygons" = "Đa giác" +"Port" = "Cổng" +"Position" = "Vị trí" +"Post" = "Đăng" +"Preferences" = "Tùy chọn" +"Preferred" = "Ưu tiên" +"Present" = "Trình chiếu" +"Present or preview" = "Trình chiếu hoặc xem trước" +"Present this flow" = "Trình chiếu luồng này" +"Presentation" = "Thuyết trình" +"Presentation slides" = "Trang trình chiếu" +"Presenting: comments" = "Khi trình chiếu: bình luận" +"Presenting: cycle the size options" = "Khi trình chiếu: chuyển đổi tùy chọn kích thước" +"Presenting: full screen" = "Khi trình chiếu: toàn màn hình" +"Presenting: next frame" = "Khi trình chiếu: khung tiếp theo" +"Presenting: previous frame" = "Khi trình chiếu: khung trước" +"Presenting: restart" = "Khi trình chiếu: bắt đầu lại" +"Preserve scroll position" = "Giữ nguyên vị trí cuộn" +"Presets" = "Thiết lập sẵn" +"Press a key…" = "Nhấn một phím…" +"Preview" = "Xem trước" +"Preview this flow" = "Xem trước luồng này" +"Preview this frame" = "Xem trước khung này" +"Previous frame" = "Khung trước" +"Previous ready for dev" = "Mục Sẵn sàng cho dev trước đó" +"Progressive" = "Lũy tiến" +"Properties" = "Thuộc tính" +"Prototype" = "Nguyên mẫu" +"Prototype preview" = "Xem trước nguyên mẫu" +"Prototype settings" = "Thiết lập nguyên mẫu" +"Publish" = "Xuất bản" +"Publish changes" = "Xuất bản thay đổi" +"Publish to another server…" = "Xuất bản lên máy chủ khác…" +"Publish to server" = "Xuất bản lên máy chủ" +"Published version {v}" = "Đã xuất bản phiên bản {v}" +"Published version {v} to the server" = "Đã xuất bản phiên bản {v} lên máy chủ" +"Published version {v}: save the file so other files can use it" = "Đã xuất bản phiên bản {v}: hãy lưu tệp để các tệp khác có thể sử dụng" +"Published · {people}" = "Đã xuất bản · {people}" +"Publishing to a server needs the desktop app; in the browser you can join a server's files" = "Cần ứng dụng máy tính để xuất bản lên máy chủ; trên trình duyệt bạn có thể tham gia các tệp trên máy chủ" +"Publishing with the server's key." = "Đang xuất bản bằng khóa của máy chủ." +"Publishing…" = "Đang xuất bản…" +"Push" = "Đẩy" +"Push changes to main component" = "Đẩy thay đổi lên thành phần chính" +"Put text on path" = "Đặt văn bản lên đường dẫn" +"R" = "R" +"Radial" = "Hướng tâm" +"Radius" = "Bán kính" +"Ratio" = "Tỷ lệ" +"Reading the library…" = "Đang đọc thư viện…" +"Ready for dev" = "Sẵn sàng cho dev" +"Real name" = "Tên thật" +"Recent" = "Gần đây" +"Recent files" = "Tệp gần đây" +"Recents" = "Gần đây" +"Recovered {n} unsaved files after the app quit unexpectedly: save them to keep them" = { other = "Đã khôi phục {n} tệp chưa lưu sau khi ứng dụng thoát đột ngột: hãy lưu lại để giữ chúng" } +"Rectangle" = "Hình chữ nhật" +"Rectangles" = "Hình chữ nhật" +"Red" = "Đỏ" +"Reduce motion" = "Giảm chuyển động" +"Refraction" = "Khúc xạ" +"Regular expression" = "Biểu thức chính quy" +"Relative to your system's display scaling (100% is the system's own size). Document zoom is separate." = "Tương ứng với tỷ lệ hiển thị của hệ thống (100% là kích thước chuẩn của hệ thống). Mức thu phóng tài liệu là riêng biệt." +"Remove" = "Xóa" +"Remove all" = "Xóa tất cả" +"Remove annotation" = "Xóa chú thích" +"Remove auto layout" = "Xóa bố cục tự động" +"Remove dev resource" = "Xóa tài nguyên dev" +"Remove export setting" = "Xóa thiết lập xuất" +"Remove from recents" = "Xóa khỏi danh sách gần đây" +"Remove from server" = "Xóa khỏi máy chủ" +"Remove from server…" = "Xóa khỏi máy chủ…" +"Remove guide" = "Xóa đường gióng" +"Remove interaction" = "Xóa tương tác" +"Remove library from this file" = "Xóa thư viện khỏi tệp này" +"Remove min and max" = "Xóa giới hạn tối thiểu và tối đa" +"Remove min and max height" = "Xóa chiều cao tối thiểu và tối đa" +"Remove min and max width" = "Xóa chiều rộng tối thiểu và tối đa" +"Remove regions" = "Xóa các vùng" +"Remove slot" = "Xóa ô chứa" +"Remove starting point" = "Xóa điểm bắt đầu" +"Remove stop" = "Xóa điểm dừng màu" +"Remove text from path" = "Gỡ văn bản khỏi đường dẫn" +"Remove the else and its actions" = "Xóa nhánh ngược lại và các hành động của nó" +"Remove this condition and its actions" = "Xóa điều kiện này và các hành động của nó" +"Remove this file from the server? It can't be shared or opened from there again. Your copy stays open here." = "Xóa tệp này khỏi máy chủ? Tệp sẽ không thể chia sẻ hay mở lại từ đó nữa. Bản sao của bạn vẫn mở tại đây." +"Remove {name} from session" = "Xóa {name} khỏi phiên" +"Remove {name} from {server}?" = "Xóa {name} khỏi {server}?" +"Removed" = "Đã xóa" +"Removed from the server" = "Đã xóa khỏi máy chủ" +"Removed since it was marked" = "Đã bị xóa kể từ khi đánh dấu" +"Rename" = "Đổi tên" +"Rename duplicated layers" = "Đổi tên các lớp nhân bản" +"Rename folder" = "Đổi tên thư mục" +"Rename group" = "Đổi tên nhóm" +"Rename layers" = "Đổi tên các lớp" +"Rename mode" = "Đổi tên chế độ" +"Rename on the server" = "Đổi tên trên máy chủ" +"Rename on the server…" = "Đổi tên trên máy chủ…" +"Rename page" = "Đổi tên trang" +"Rename to" = "Đổi tên thành" +"Reorder selection" = "Sắp xếp lại vùng chọn" +"Replace all" = "Thay thế tất cả" +"Replace mixed export settings" = "Thay thế thiết lập xuất hỗn hợp" +"Replace with" = "Thay thế bằng" +"Replace with a new interaction" = "Thay thế bằng tương tác mới" +"Reply" = "Trả lời" +"Report" = "Báo cáo" +"Report this file…" = "Báo cáo tệp này…" +"Reset" = "Đặt lại" +"Reset adjustments" = "Đặt lại điều chỉnh" +"Reset all changes" = "Đặt lại mọi thay đổi" +"Reset all overrides on this layer" = "Đặt lại mọi ghi đè trên lớp này" +"Reset overrides" = "Đặt lại ghi đè" +"Reset slot" = "Đặt lại ô chứa" +"Reset this override" = "Đặt lại ghi đè này" +"Reset to style" = "Đặt lại theo kiểu" +"Reset to the inherited value" = "Đặt lại về giá trị kế thừa" +"Resize by the nudge amount" = "Đổi kích thước theo mức dịch chuyển nhẹ" +"Resize frames to the device's screen (or the window without a device): their constraints and auto layout respond" = "Đổi kích thước khung theo màn hình thiết bị (hoặc cửa sổ nếu không có thiết bị): các ràng buộc và bố cục tự động sẽ tự điều chỉnh" +"Resize to fit" = "Đổi kích thước vừa khít" +"Resizing" = "Đổi kích thước" +"Resolve" = "Giải quyết" +"Resolve change" = "Giải quyết thay đổi" +"Resolved" = "Đã giải quyết" +"Resources" = "Tài nguyên" +"Responsive" = "Đáp ứng" +"Restart" = "Bắt đầu lại" +"Restore" = "Khôi phục" +"Restore main component" = "Khôi phục thành phần chính" +"Restore this version" = "Khôi phục phiên bản này" +"Restored “{name}”" = "Đã khôi phục “{name}”" +"Reverse the order" = "Đảo ngược thứ tự" +"Reversed triangle" = "Tam giác ngược" +"Review and merge" = "Xem xét và hợp nhất" +"Ribbon" = "Dải ruy băng" +"Right" = "Phải" +"Right padding" = "Đệm phải" +"Right side" = "Cạnh phải" +"Right side width" = "Độ rộng cạnh phải" +"Rotate 90°" = "Xoay 90°" +"Rotate 90° right" = "Xoay 90° sang phải" +"Rotate to landscape" = "Xoay sang chiều ngang" +"Rotate to portrait" = "Xoay sang chiều dọc" +"Rotation" = "Góc xoay" +"Rotation jitter" = "Độ ngẫu nhiên góc xoay" +"Round" = "Tròn" +"Rounded" = "Bo tròn" +"Row" = "Hàng" +"Row gap" = "Khoảng hở hàng" +"Row sizes" = "Kích thước hàng" +"Row span" = "Số hàng gộp" +"Rows" = "Các hàng" +"Rows {count}" = "Hàng {count}" +"Rulers" = "Thước" +"Run" = "Chạy" +"Run {label}" = "Chạy {label}" +"SHA-256: {sha}…" = "SHA-256: {sha}…" +"Same as layer" = "Giống như lớp" +"Saturation" = "Độ bão hòa" +"Save" = "Lưu" +"Save as" = "Lưu thành" +"Save as preset…" = "Lưu thành thiết lập sẵn…" +"Save files automatically" = "Tự động lưu tệp" +"Save version {key}" = "Lưu phiên bản {key}" +"Saved" = "Đã lưu" +"Saved {name}" = "Đã lưu {name}" +"Say something" = "Nhập nội dung trò chuyện" +"Scale" = "Tỷ lệ" +"Scatter" = "Phân tán" +"Scoping: where pickers offer it" = "Phạm vi: nơi biến xuất hiện trong bộ chọn" +"Screen" = "Màn lọc" +"Scroll behavior" = "Hành vi cuộn" +"Scroll to" = "Cuộn tới" +"Scroll to layer" = "Cuộn tới lớp" +"Scroll with parent" = "Cuộn theo lớp cha" +"Search" = "Tìm kiếm" +"Search actions, layers and tools" = "Tìm kiếm hành động, lớp và công cụ" +"Search assets" = "Tìm tài nguyên" +"Search comments" = "Tìm bình luận" +"Search files and templates" = "Tìm tệp và mẫu" +"Search fonts" = "Tìm phông chữ" +"Search layers" = "Tìm lớp" +"Search pages" = "Tìm trang" +"Search plugins" = "Tìm plugin" +"Search results" = "Kết quả tìm kiếm" +"Search shortcuts" = "Tìm phím tắt" +"Search templates" = "Tìm mẫu" +"Section" = "Phần" +"Section color" = "Màu phần" +"Sections" = "Các phần" +"See all templates" = "Xem tất cả mẫu" +"Select a frame and add a starting point to present it as a flow." = "Hãy chọn một khung và thêm điểm bắt đầu để trình chiếu thành một luồng." +"Select a frame to preview it" = "Chọn một khung để xem trước" +"Select a layer to see its properties and code" = "Chọn một lớp để xem thuộc tính và mã nguồn" +"Select all" = "Chọn tất cả" +"Select all with same" = "Chọn tất cả có cùng" +"Select layer" = "Chọn lớp" +"Select layers and they space themselves as their content changes" = "Chọn các lớp để chúng tự động giãn cách khi nội dung thay đổi" +"Select layers to apply the style to" = "Chọn các lớp để áp dụng kiểu" +"Select layers with this color" = "Chọn các lớp có màu này" +"Select overlapping shapes" = "Chọn các hình chồng lên nhau" +"Select points to edit their position, radius and mirroring" = "Chọn các điểm để chỉnh sửa vị trí, bán kính và đối xứng tay nắm" +"Select slot" = "Chọn ô chứa" +"Selection" = "Vùng chọn" +"Selection box, {w} by {h} at {x}, {y}: arrows move it, Shift+arrows or {cmd}+arrows size it, Enter selects, Escape cancels" = "Khung chọn, {w} × {h} tại {x}, {y}: phím mũi tên để di chuyển, Shift+mũi tên hoặc {cmd}+mũi tên để đổi kích thước, Enter để chọn, Escape để hủy" +"Selection box: arrows move it, Shift+arrows or {cmd}+arrows size it, Enter selects, Escape cancels" = "Khung chọn: phím mũi tên để di chuyển, Shift+mũi tên hoặc {cmd}+mũi tên để đổi kích thước, Enter để chọn, Escape để hủy" +"Selection colors" = "Màu của vùng chọn" +"Send backward" = "Đưa lùi một lớp" +"Send report" = "Gửi báo cáo" +"Send to back" = "Đưa xuống dưới cùng" +"Sep" = "Thg 9" +"Server address" = "Địa chỉ máy chủ" +"Server address (ws://host:47900/)" = "Địa chỉ máy chủ (ws://host:47900/)" +"Server for online sharing" = "Máy chủ chia sẻ trực tuyến" +"Set as default" = "Đặt làm mặc định" +"Set variable" = "Đặt biến" +"Set variable mode" = "Đặt chế độ biến" +"Set variable {name}" = "Đặt biến {name}" +"Set {name} to {value}" = "Đặt {name} thành {value}" +"Shadows" = "Vùng tối" +"Shape" = "Hình dạng" +"Shape builder" = "Tạo hình" +"Shape tools" = "Công cụ hình dạng" +"Share" = "Chia sẻ" +"Share this file" = "Chia sẻ tệp này" +"Share with a code" = "Chia sẻ bằng mã" +"Share: live session, export" = "Chia sẻ: phiên trực tiếp, xuất tệp" +"Shared" = "Đã chia sẻ" +"Shared: copy its code from the file's menu" = "Đã chia sẻ: sao chép mã từ trình đơn của tệp" +"Sharing a file needs the desktop app; here you can join one." = "Cần ứng dụng máy tính để chia sẻ tệp; tại đây bạn có thể tham gia một phiên." +"Sharing on the local network (online sharing is off: no server is set in Preferences)." = "Đang chia sẻ trên mạng cục bộ (chia sẻ trực tuyến đang tắt: chưa đặt máy chủ trong Tùy chọn)." +"Sharing on your network · {people}" = "Đang chia sẻ trên mạng của bạn · {people}" +"Sharing online · {people}" = "Đang chia sẻ trực tuyến · {people}" +"Sharing stopped: the file stays on the server, open only to you" = "Đã dừng chia sẻ: tệp vẫn còn trên máy chủ và chỉ mình bạn mở được" +"Show" = "Hiện" +"Show all templates" = "Hiện tất cả mẫu" +"Show as grid" = "Hiện dạng lưới" +"Show as list" = "Hiện dạng danh sách" +"Show autosaves" = "Hiện các bản tự động lưu" +"Show behind transparent areas" = "Hiện phía sau vùng trong suốt" +"Show comments (Shift+C)" = "Hiện bình luận (Shift+C)" +"Show device frame" = "Hiện khung thiết bị" +"Show dimensions on objects" = "Hiện kích thước trên đối tượng" +"Show hotspot hints" = "Hiện gợi ý vùng tương tác" +"Show in Explorer" = "Hiện trong Explorer" +"Show in Finder" = "Hiện trong Finder" +"Show in folder" = "Hiện trong thư mục" +"Show only this on the canvas" = "Chỉ hiện mục này trên vùng vẽ" +"Show open" = "Hiện mục đang mở" +"Show section contents" = "Hiện nội dung phần" +"Show this layer" = "Hiện lớp này" +"Show usage" = "Hiện nơi sử dụng" +"Show/Hide" = "Hiện/Ẩn" +"Show/Hide UI" = "Hiện/Ẩn giao diện" +"Side by side" = "Cạnh nhau" +"Sidebar" = "Thanh bên" +"Simplify stroke" = "Đơn giản hóa nét" +"Size" = "Kích thước" +"Size jitter" = "Độ ngẫu nhiên kích thước" +"Skip ink" = "Chừa nét chữ dưới" +"Slashed zero" = "Số 0 gạch chéo" +"Slice" = "Lát cắt" +"Slices" = "Các lát cắt" +"Slide in" = "Trượt vào" +"Slide out" = "Trượt ra" +"Slot" = "Ô chứa" +"Slot content" = "Nội dung ô chứa" +"Small capitals" = "Chữ hoa nhỏ" +"Small caps" = "Chữ hoa nhỏ" +"Smart animate" = "Hoạt ảnh thông minh" +"Snap to pixel grid" = "Bắt dính vào lưới pixel" +"Social and slides" = "Mạng xã hội và trang chiếu" +"Social media" = "Mạng xã hội" +"Social post sizes" = "Kích thước bài đăng mạng xã hội" +"Soft light" = "Ánh sáng dịu" +"Solid" = "Đặc" +"Some variants have the same property values: give each one a unique combination" = "Một số biến thể có cùng giá trị thuộc tính: hãy đặt cho mỗi biến thể một tổ hợp duy nhất" +"Sort" = "Sắp xếp" +"Sort by" = "Sắp xếp theo" +"Sort by date" = "Sắp xếp theo ngày" +"Sort by page" = "Sắp xếp theo trang" +"Sort by {column}" = "Sắp xếp theo {column}" +"Space around" = "Cách đều xung quanh" +"Space between" = "Cách đều giữa các mục" +"Space drag" = "Space kéo" +"Space evenly" = "Cách đều bằng nhau" +"Space+drag" = "Space+kéo" +"Spacing" = "Khoảng cách" +"Spam, stolen work, abuse…" = "Thư rác, đánh cắp tác phẩm, lạm dụng…" +"Splay" = "Xòe tia" +"Spotlight me" = "Chiếu tâm điểm vào tôi" +"Spread" = "Độ lan" +"Square" = "Hình vuông" +"Standard" = "Tiêu chuẩn" +"Standard ligatures" = "Chữ ghép tiêu chuẩn" +"Star" = "Ngôi sao" +"Stars" = "Các ngôi sao" +"Start" = "Bắt đầu" +"Start ascending from / stop descending at" = "Bắt đầu tăng dần từ / dừng giảm dần tại" +"Start from a blank canvas" = "Bắt đầu từ vùng vẽ trống" +"Start from a template" = "Bắt đầu từ một mẫu" +"Start on path" = "Điểm bắt đầu trên đường dẫn" +"Start on the Home screen" = "Khởi động tại màn hình Trang chủ" +"Start point" = "Điểm đầu" +"Start sharing" = "Bắt đầu chia sẻ" +"Start sharing with the Share button, then pass on the code it gives" = "Bắt đầu chia sẻ bằng nút Chia sẻ, sau đó gửi mã nhận được cho người khác" +"Starting to share…" = "Đang bắt đầu chia sẻ…" +"Status" = "Trạng thái" +"Sticky" = "Ghim cố định khi cuộn" +"Stop" = "Dừng" +"Stop following {name}" = "Dừng theo dõi {name}" +"Stop session" = "Dừng phiên" +"Stop sharing" = "Dừng chia sẻ" +"Stop spotlighting" = "Dừng chiếu tâm điểm" +"Stop {n} {hex}" = "Điểm dừng {n} {hex}" +"Stretch" = "Kéo giãn" +"Strikethrough" = "Gạch ngang chữ" +"String" = "Chuỗi" +"Stroke" = "Nét" +"Stroke style" = "Kiểu nét" +"Stroke weight" = "Độ dày nét" +"Strokes" = "Các nét" +"Style" = "Kiểu" +"Styles" = "Các kiểu" +"Stylistic set 1" = "Bộ kiểu chữ 1" +"Stylistic set 2" = "Bộ kiểu chữ 2" +"Stylistic set 3" = "Bộ kiểu chữ 3" +"Stylistic set 4" = "Bộ kiểu chữ 4" +"Stylistic set 5" = "Bộ kiểu chữ 5" +"Subtract" = "Trừ" +"Subtracts" = "Phép trừ" +"Suffix" = "Hậu tố" +"Suspend snapping while dragging" = "Tạm ngừng bắt dính khi đang kéo" +"Swap instance" = "Hoán đổi bản thể" +"Swap library: use another library's assets of the same names" = "Hoán đổi thư viện: dùng tài nguyên cùng tên từ một thư viện khác" +"Swap orientation" = "Đổi chiều ngang/dọc" +"Swap overlay" = "Hoán đổi lớp phủ" +"Swap to {name}" = "Hoán đổi sang {name}" +"Swap width and height" = "Đổi chiều rộng và chiều cao" +"Swapped instance" = "Bản thể đã hoán đổi" +"Swapped {n} assets" = { other = "Đã hoán đổi {n} tài nguyên" } +"Swapped {n} assets; {missed} had no match and still use the old library" = { other = "Đã hoán đổi {n} tài nguyên; {missed} mục không khớp và vẫn dùng thư viện cũ" } +"Sweep" = "Góc quét" +"System" = "Hệ thống" +"Tab / Shift+Tab" = "Tab / Shift+Tab" +"Table" = "Bảng" +"Tablet" = "Máy tính bảng" +"Tabular numbers" = "Chữ số thẳng cột" +"Take the values from the first selected layer" = "Lấy giá trị từ lớp được chọn đầu tiên" +"Taper" = "Thuôn nhọn" +"Taper both ends" = "Thuôn nhọn cả hai đầu" +"Tell the server's operator what is wrong with it" = "Cho người vận hành máy chủ biết vấn đề của tệp này" +"Temperature" = "Nhiệt độ màu" +"Template" = "Mẫu" +"Templates" = "Các mẫu" +"Terms" = "Điều khoản" +"Text" = "Văn bản" +"Text align" = "Căn chỉnh văn bản" +"Text content" = "Nội dung văn bản" +"Text style" = "Kiểu văn bản" +"Text styles" = "Kiểu văn bản" +"Texts" = "Văn bản" +"Texture" = "Kết cấu" +"The canvas previews colors in sRGB; exported PNG, JPG and WebP files are tagged Display P3." = "Vùng vẽ xem trước màu theo sRGB; các tệp PNG, JPG và WebP xuất ra được gắn thẻ Display P3." +"The destination document is unavailable. Nothing was imported." = "Tài liệu đích không khả dụng. Không có nội dung nào được nhập." +"The destination document was closed. Nothing was imported." = "Tài liệu đích đã đóng. Không có nội dung nào được nhập." +"The destination page was removed. Nothing was imported." = "Trang đích đã bị xóa. Không có nội dung nào được nhập." +"The file is deleted from the server: nobody can open or join it from there again, and this can't be undone. Copies that are open stay with whoever has them." = "Tệp sẽ bị xóa khỏi máy chủ: không ai có thể mở hoặc tham gia tệp từ đó nữa, và thao tác này không thể hoàn tác. Các bản sao đang mở vẫn được giữ lại ở máy người dùng." +"The file now holds another library" = "Tệp hiện chứa một thư viện khác" +"The file now holds another library (\"{name}\")" = "Tệp hiện chứa một thư viện khác (\"{name}\")" +"The files you shared or published online from this computer. They stay on their server until you remove them." = "Các tệp bạn đã chia sẻ hoặc xuất bản trực tuyến từ máy tính này. Chúng sẽ được lưu trên máy chủ cho đến khi bạn xóa." +"The link carries the session's secret: share it only with people you invite." = "Liên kết chứa khóa bí mật của phiên: chỉ chia sẻ với những người bạn mời." +"The name in your online files and on the server. The document inside keeps its own name." = "Tên hiển thị trong danh sách tệp trực tuyến của bạn và trên máy chủ. Tài liệu bên trong vẫn giữ tên riêng của nó." +"The selection uses several text styles: click to apply one" = "Vùng chọn đang dùng nhiều kiểu văn bản: nhấp để áp dụng một kiểu" +"The server deletes this file if nobody opens it before {date}." = "Máy chủ sẽ xóa tệp này nếu không ai mở trước {date}." +"The whole file" = "Toàn bộ tệp" +"The window is too small for {size}%, so the interface is drawn at {drawn}%. Make the window larger to use {size}%." = "Cửa sổ quá nhỏ cho mức {size}%, nên giao diện được hiển thị ở mức {drawn}%. Hãy phóng rộng cửa sổ để dùng mức {size}%." +"Theme" = "Giao diện" +"There's no destination for that action" = "Không có đích đến cho hành động đó" +"Thickness" = "Độ dày" +"This branch can't be reviewed: {e}" = "Không thể xem xét nhánh này: {e}" +"This branch was merged or archived." = "Nhánh này đã được hợp nhất hoặc lưu trữ." +"This computer only" = "Chỉ máy tính này" +"This computer remembers the owner token, so the file can be managed from the home screen's Online list. Copy it to manage the file from somewhere else: it is a password for this file and won't be shown again." = "Máy tính này ghi nhớ mã thông báo chủ sở hữu để bạn có thể quản lý tệp từ danh sách Trực tuyến ở màn hình Trang chủ. Hãy sao chép mã này nếu muốn quản lý tệp từ nơi khác: đây là mật khẩu của tệp và sẽ không hiển thị lại." +"This condition is edited as an expression" = "Điều kiện này được chỉnh sửa dưới dạng biểu thức" +"This file" = "Tệp này" +"This file has unsaved changes" = "Tệp này có thay đổi chưa lưu" +"This file is on {server}, open only to you. Share it to let others in with a new code." = "Tệp này đang ở trên {server} và chỉ mình bạn mở được. Hãy chia sẻ để người khác tham gia bằng mã mới." +"This file is too large to join here (up to {mb} MB)" = "Tệp này quá lớn để tham gia tại đây (tối đa {mb} MB)" +"This file uses fonts that aren't installed on this computer. Their text is drawn in a fallback font until you install them." = "Tệp này sử dụng phông chữ chưa được cài đặt trên máy tính này. Văn bản sẽ hiển thị bằng phông chữ dự phòng cho đến khi bạn cài đặt chúng." +"This frame is new on the branch." = "Khung này là mới trên nhánh." +"This frame isn't on the branch." = "Khung này không có trên nhánh." +"This server is open to the public: no key needed." = "Máy chủ này mở công khai: không cần khóa." +"This server needs its key: add ?key=… to the address (`figcraft-server key` prints it on the server's machine)." = "Máy chủ này yêu cầu khóa: hãy thêm ?key=… vào địa chỉ (`figcraft-server key` sẽ in khóa trên máy chủ)." +"This server takes files only with its key: see Advanced." = "Máy chủ này chỉ nhận tệp khi có khóa: xem phần Nâng cao." +"Tidy up" = "Sắp xếp gọn" +"Tile" = "Lặp ô" +"Tile type" = "Kiểu lặp ô" +"Tint" = "Sắc thái" +"Title" = "Tiêu đề" +"Title case" = "Viết hoa đầu từ" +"To share this library with your team, publish the file to a server (Share ▸ Publish to server…), then publish the library there." = "Để chia sẻ thư viện này với nhóm của bạn, hãy xuất bản tệp lên máy chủ (Chia sẻ ▸ Xuất bản lên máy chủ…), sau đó xuất bản thư viện tại đó." +"Toggle" = "Bật/tắt" +"Toggle light/dark theme" = "Chuyển đổi giao diện sáng/tối" +"Toggle visibility" = "Bật/tắt hiển thị" +"Tools" = "Công cụ" +"Top" = "Trên" +"Top & bottom" = "Trên & dưới" +"Top left radius" = "Bán kính góc trên trái" +"Top padding" = "Đệm trên" +"Top right radius" = "Bán kính góc trên phải" +"Transform" = "Biến đổi" +"Triangle arrow" = "Mũi tên tam giác" +"Trigger" = "Kích hoạt" +"True" = "Đúng" +"Truncate text" = "Cắt bớt văn bản" +"Truncate with an ellipsis" = "Cắt bớt bằng dấu ba chấm" +"Try again" = "Thử lại" +"Try another search or filter." = "Hãy thử từ khóa hoặc bộ lọc khác." +"Try another search, or browse templates." = "Hãy thử tìm kiếm khác, hoặc duyệt các mẫu." +"Try another word, or look at every kind." = "Hãy thử từ khác, hoặc xem tất cả các loại." +"Turn a layer into a component, reuse it, and change every copy at once" = "Biến một lớp thành thành phần, tái sử dụng và cập nhật mọi bản sao cùng lúc" +"Two digits" = "Hai chữ số" +"Type" = "Loại" +"Type settings" = "Thiết lập kiểu chữ" +"Type the join code you were given, or paste an invite link." = "Nhập mã tham gia bạn được cấp, hoặc dán liên kết mời." +"Typography" = "Kiểu chữ" +"Underline" = "Gạch chân" +"Undo takes back only your own changes; what others changed since stays." = "Hoàn tác chỉ quay lại các thay đổi của riêng bạn; những gì người khác đã thay đổi vẫn giữ nguyên." +"Ungroup" = "Bỏ nhóm" +"Uniform" = "Đồng đều" +"Union" = "Hợp" +"Unions" = "Phép hợp" +"Unknown — treated as sRGB" = "Không rõ — được xử lý như sRGB" +"Unread" = "Chưa đọc" +"Unresolve" = "Mở lại bình luận" +"Unsaved changes" = "Thay đổi chưa lưu" +"Unsaved changes in {names}. Close the window and lose them?" = "Có thay đổi chưa lưu trong {names}. Đóng cửa sổ và hủy bỏ các thay đổi này?" +"Unsaved changes: save first ({save}), or close the tab with {alt}-click to discard" = "Có thay đổi chưa lưu: hãy lưu trước ({save}), hoặc giữ {alt} khi nhấp đóng thẻ để hủy bỏ" +"Unsaved changes: save first, or close again with {key} to discard" = "Có thay đổi chưa lưu: hãy lưu trước, hoặc đóng lại lần nữa bằng {key} để hủy bỏ" +"Up" = "Lên" +"Update" = "Cập nhật" +"Update from main" = "Cập nhật từ nhánh chính" +"Update from selection" = "Cập nhật từ vùng chọn" +"Update plugin" = "Cập nhật plugin" +"Updated {components} and {styles}" = "Đã cập nhật {components} và {styles}" +"Updated {name}" = "Đã cập nhật {name}" +"Updating the graphics driver often helps. To use OpenGL only, start FigCraft from a Command Prompt with:" = "Việc cập nhật trình điều khiển đồ họa thường sẽ khắc phục được lỗi. Để chỉ sử dụng OpenGL, hãy khởi chạy FigCraft từ Command Prompt bằng:" +"Updating the graphics driver often helps. WGPU_BACKEND (vulkan, gl, metal) names another graphics API to try." = "Việc cập nhật trình điều khiển đồ họa thường sẽ khắc phục được lỗi. Biến WGPU_BACKEND (vulkan, gl, metal) cho phép thử một API đồ họa khác." +"Uploads this file to a FigCraft server and keeps this tab in sync with it. You get a link to edit and a link to view." = "Tải tệp này lên máy chủ FigCraft và giữ thẻ này đồng bộ với máy chủ. Bạn sẽ nhận được một liên kết chỉnh sửa và một liên kết xem." +"Uppercase" = "Chữ hoa" +"Use a fixed value" = "Dùng giá trị cố định" +"Use an expression, e.g. count + 1" = "Dùng biểu thức, ví dụ: count + 1" +"Use as mask" = "Dùng làm mặt nạ" +"Use auto layout" = "Dùng bố cục tự động" +"Use number keys for opacity" = "Dùng phím số để chỉnh độ mờ" +"Use the .figcraft or .fig extension." = "Hãy dùng phần mở rộng .figcraft hoặc .fig." +"Use the layer's fill" = "Dùng màu tô của lớp" +"Use your browser's zoom to change the interface size." = "Hãy dùng tính năng thu phóng của trình duyệt để thay đổi kích thước giao diện." +"Used in {files} · {instances}" = "Được dùng trong {files} · {instances}" +"Username" = "Tên người dùng" +"Uses variables: each layer shows them in its own mode" = "Có sử dụng biến: mỗi lớp hiển thị giá trị theo chế độ riêng của lớp đó" +"Value" = "Giá trị" +"Variable" = "Biến" +"Variable collections" = "Bộ sưu tập biến" +"Variable modes" = "Chế độ biến" +"Variable width" = "Độ rộng biến thiên" +"Variables" = "Các biến" +"Variables JSON…" = "JSON biến…" +"Variables store reusable values (colours, numbers, strings, booleans) with modes such as Light and Dark." = "Biến lưu trữ các giá trị tái sử dụng (màu sắc, số, chuỗi, boolean) theo các chế độ như Sáng và Tối." +"Variant" = "Biến thể" +"Vector" = "Vector" +"Vectors" = "Vector" +"Version" = "Phiên bản" +"Version history" = "Lịch sử phiên bản" +"Version {version}" = "Phiên bản {version}" +"Version {v} · {components} · {styles} · {variables}" = "Phiên bản {v} · {components} · {styles} · {variables}" +"Vertical" = "Dọc" +"Vertical align" = "Căn dọc" +"Vertical hex" = "Lục giác dọc" +"Vertical padding" = "Đệm dọc" +"Vertical spacing" = "Khoảng cách dọc" +"Vertical trim" = "Cắt gọn khoảng đệm dọc" +"View" = "Xem" +"View link" = "Liên kết xem" +"View link copied" = "Đã sao chép liên kết xem" +"View only" = "Chỉ xem" +"View only: you see every change as it happens but can't edit. Leave to keep a copy you can edit." = "Chỉ xem: bạn thấy mọi thay đổi theo thời gian thực nhưng không thể chỉnh sửa. Hãy rời phiên để giữ lại một bản sao có thể chỉnh sửa." +"Viewing “{name}”" = "Đang xem “{name}”" +"Violet" = "Tím" +"Visibility" = "Hiển thị" +"Visible" = "Hiển thị" +"Vivid" = "Rực rỡ" +"WGPU_BACKEND is set and names the graphics API to use; unsetting it lets FigCraft choose." = "Biến WGPU_BACKEND đang được đặt để chỉ định API đồ họa; hãy bỏ đặt biến này để FigCraft tự chọn." +"Warm" = "Ấm" +"Watch" = "Đồng hồ" +"Wavy" = "Lượn sóng" +"Web" = "Web" +"WebSocket URL" = "URL WebSocket" +"WebSocket URL copied" = "Đã sao chép URL WebSocket" +"Websites" = "Trang web" +"Wedge" = "Hình nêm" +"Weight" = "Độ dày" +"What changed since it was marked ready for dev" = "Những thay đổi kể từ khi được đánh dấu sẵn sàng cho dev" +"What is wrong with this file? The server's operator gets your report." = "Tệp này có vấn đề gì? Người vận hành máy chủ sẽ nhận được báo cáo của bạn." +"What it's for" = "Mục đích sử dụng" +"What this changed from isn't known: it changed before FigCraft kept a copy of ready-for-dev frames. Resolve the change (or mark it ready again) to compare from now on." = "Không rõ trạng thái trước khi thay đổi: khung đã thay đổi trước khi FigCraft lưu bản sao của các khung sẵn sàng cho dev. Hãy giải quyết thay đổi (hoặc đánh dấu sẵn sàng lại) để so sánh từ nay về sau." +"What you try here changes this preview and the code below, not the file" = "Những gì bạn thử tại đây chỉ làm thay đổi bản xem trước này và đoạn mã bên dưới, không thay đổi tệp" +"While hovering" = "Khi di chuột qua" +"While pressing" = "Khi nhấn giữ" +"White" = "Trắng" +"Who runs it, its terms and how long it keeps files" = "Đơn vị vận hành, điều khoản và thời gian lưu giữ tệp" +"Why it changed" = "Lý do thay đổi" +"Widget" = "Tiện ích" +"Widgets" = "Các tiện ích" +"Width" = "Chiều rộng" +"Width point" = "Điểm độ rộng" +"Width profile" = "Biên dạng độ rộng" +"Wireframe kit" = "Bộ khung dây (Wireframe)" +"With the layers' export settings" = "Theo thiết lập xuất của các lớp" +"Wrap" = "Ngắt dòng" +"Wrap in new section" = "Bọc trong phần mới" +"Yellow" = "Vàng" +"Yesterday" = "Hôm qua" +"You" = "Bạn" +"You'll get the shared file as a new tab and edit it together." = "Bạn sẽ nhận được tệp chia sẻ trong một thẻ mới và cùng nhau chỉnh sửa." +"You're spotlighting: everyone follows your view" = "Bạn đang chiếu tâm điểm: mọi người đang theo dõi khung nhìn của bạn" +"Your copy of the file stays open" = "Bản sao tệp của bạn vẫn mở" +"Your copy stays open; the file stays on the server" = "Bản sao của bạn vẫn mở; tệp vẫn được lưu trên máy chủ" +"Your name" = "Tên của bạn" +"Your name in comments" = "Tên của bạn trong bình luận" +"Your system asks for reduced motion: animations stay off." = "Hệ thống của bạn yêu cầu giảm chuyển động: các hoạt ảnh sẽ được tắt." +"Z" = "Z" +"Z to A" = "Z đến A" +"Zoom" = "Thu phóng" +"Zoom around the pointer" = "Thu phóng quanh con trỏ" +"Zoom device to fill window" = "Thu phóng thiết bị lấp đầy cửa sổ" +"Zoom in" = "Phóng to" +"Zoom out" = "Thu nhỏ" +"Zoom to 100%" = "Thu phóng về 100%" +"Zoom to 200%" = "Thu phóng về 200%" +"Zoom to 50%" = "Thu phóng về 50%" +"Zoom to fit" = "Thu phóng vừa khít" +"Zoom to selection" = "Thu phóng vừa vùng chọn" +"Zoom tool: click to zoom in, drag an area" = "Công cụ thu phóng: nhấp để phóng to, kéo chọn vùng" +"Zoom tool: zoom out" = "Công cụ thu phóng: thu nhỏ" +"and {n} more" = { other = "và {n} mục nữa" } +"bleed marks" = "dấu tràn lề" +"by {author}" = "bởi {author}" +"call any command its access allows" = "gọi bất kỳ lệnh nào mà quyền truy cập cho phép" +"call only: {commands}" = "chỉ gọi: {commands}" +"can edit the document" = "có thể chỉnh sửa tài liệu" +"conditional prototype actions nested too deeply were skipped" = "đã bỏ qua các hành động nguyên mẫu có điều kiện lồng quá sâu" +"conditional prototype actions with conditions that can't be evaluated were skipped" = "đã bỏ qua các hành động nguyên mẫu có điều kiện không thể tính giá trị" +"connector label background was skipped: style data is missing" = "đã bỏ qua nền nhãn đường nối: thiếu dữ liệu kiểu" +"connector label was skipped: background bounds are invalid" = "đã bỏ qua nhãn đường nối: khung giới hạn nền không hợp lệ" +"connector label was skipped: background transform is invalid" = "đã bỏ qua nhãn đường nối: phép biến đổi nền không hợp lệ" +"connector label was skipped: composed text transform is invalid" = "đã bỏ qua nhãn đường nối: phép biến đổi văn bản tổng hợp không hợp lệ" +"connector label was skipped: derived background bounds are missing" = "đã bỏ qua nhãn đường nối: thiếu khung giới hạn nền suy dẫn" +"connector label was skipped: derived text bounds are missing" = "đã bỏ qua nhãn đường nối: thiếu khung giới hạn văn bản suy dẫn" +"connector label was skipped: text bounds are invalid" = "đã bỏ qua nhãn đường nối: khung giới hạn văn bản không hợp lệ" +"connector label was skipped: text style data is missing" = "đã bỏ qua nhãn đường nối: thiếu dữ liệu kiểu văn bản" +"connector label was skipped: text transform is invalid" = "đã bỏ qua nhãn đường nối: phép biến đổi văn bản không hợp lệ" +"connector labels were skipped" = "đã bỏ qua các nhãn đường nối" +"connector layers import as static frame/vector snapshots with labels when present; live endpoint bindings are not retained" = "các lớp đường nối được nhập dưới dạng khung/vector tĩnh kèm theo nhãn nếu có; liên kết động ở hai đầu mút không được giữ lại" +"connector snapshot vector data is missing; connector was left empty" = "thiếu dữ liệu vector tĩnh của đường nối; đường nối được để trống" +"connectors whose ends can't be placed are empty" = "các đường nối không thể đặt hai đầu mút sẽ được để trống" +"crop marks" = "dấu xén" +"damaged vector geometry was skipped" = "đã bỏ qua hình học vector bị hỏng" +"damaged vector networks import as outlines" = "mạng vector bị hỏng được nhập dưới dạng đường viền" +"development: {path}" = "phát triển: {path}" +"document children other than pages were skipped" = "đã bỏ qua các mục con của tài liệu không phải là trang" +"duplicate grid track sizing entries use equal tracks" = "các mục kích thước dải lưới trùng lặp sẽ dùng kích thước dải bằng nhau" +"e.g. count + 1" = "ví dụ: count + 1" +"e.g. count >= 3 and not done" = "ví dụ: count >= 3 and not done" +"elbowed and curved connectors without a saved path import as straight lines" = "các đường nối gấp khúc và cong không có đường dẫn đã lưu được nhập thành đường thẳng" +"entries without a node type were skipped" = "đã bỏ qua các mục không có loại nút" +"figcraft:// links from a browser, chat or email open this app and join the session." = "Liên kết figcraft:// từ trình duyệt, ứng dụng trò chuyện hoặc email sẽ mở ứng dụng này và tham gia phiên." +"filled areas of a vector with their own fill use the layer's fill" = "các vùng tô riêng trong một vector sẽ dùng màu tô của lớp" +"from {server}" = "từ {server}" +"gamepad triggers without exactly one known controller button were skipped" = "đã bỏ qua các kích hoạt tay cầm không có đúng một nút điều khiển đã biết" +"grid track list exceeds 1000 entries; the tracks use the default equal sizing" = "danh sách dải lưới vượt quá 1000 mục; các dải sẽ dùng kích thước đều nhau mặc định" +"grid track sizing is unsupported or malformed; affected tracks use equal sizing" = "kích thước dải lưới không được hỗ trợ hoặc sai định dạng; các dải bị ảnh hưởng sẽ dùng kích thước đều nhau" +"grid track sizing list exceeds 1000 entries; the tracks use the default equal sizing" = "danh sách kích thước dải lưới vượt quá 1000 mục; các dải sẽ dùng kích thước đều nhau mặc định" +"hidden" = "đã ẩn" +"iOS" = "iOS" +"image filters are ambiguous because both filter containers are present; filter conversion was skipped" = "bộ lọc hình ảnh không rõ ràng do có cả hai vùng chứa bộ lọc; đã bỏ qua chuyển đổi bộ lọc" +"image filters use FigCraft's approximate renderer" = "bộ lọc hình ảnh sử dụng bộ kết xuất xấp xỉ của FigCraft" +"instance swap properties whose default component isn't in the file were skipped" = "đã bỏ qua các thuộc tính hoán đổi bản thể có thành phần mặc định không nằm trong tệp" +"instances inside their own main component were imported as frames" = "các bản thể nằm bên trong chính thành phần chính của chúng đã được nhập thành khung" +"instances of components that aren't in the file show no layers" = "các bản thể của thành phần không có trong tệp sẽ không hiển thị lớp nào" +"instances of components that aren't in the file were imported as frames" = "các bản thể của thành phần không có trong tệp đã được nhập thành khung" +"instances that would nest a component inside itself were imported as frames" = "các bản thể gây lồng thành phần vào chính nó đã được nhập thành khung" +"instances without a main component were imported as empty frames" = "các bản thể không có thành phần chính đã được nhập thành khung trống" +"invalid internal .fig text path data was ignored" = "đã bỏ qua dữ liệu đường dẫn văn bản .fig nội bộ không hợp lệ" +"invalid or oversized vector networks import as outlines" = "mạng vector không hợp lệ hoặc quá lớn được nhập dưới dạng đường viền" +"invalid or oversized vector path data was skipped" = "đã bỏ qua dữ liệu đường dẫn vector không hợp lệ hoặc quá lớn" +"just now" = "vừa xong" +"key triggers without a supported key were skipped" = "đã bỏ qua các kích hoạt phím không có phím được hỗ trợ" +"key up triggers import as key presses" = "kích hoạt nhả phím được nhập thành nhấn phím" +"layers without a position were placed at their parent's origin" = "các lớp không có vị trí đã được đặt tại gốc tọa độ của lớp cha" +"layers without a type were skipped" = "đã bỏ qua các lớp không có loại" +"legacy image filter container is unsupported; filter conversion was skipped" = "vùng chứa bộ lọc hình ảnh kiểu cũ không được hỗ trợ; đã bỏ qua chuyển đổi bộ lọc" +"locked" = "đã khóa" +"malformed image filters container was skipped" = "đã bỏ qua vùng chứa bộ lọc hình ảnh bị lỗi định dạng" +"malformed image paintFilter container was skipped" = "đã bỏ qua vùng chứa paintFilter hình ảnh bị lỗi định dạng" +"malformed slot content assignment was skipped" = "đã bỏ qua phép gán nội dung ô chứa bị lỗi định dạng" +"no bleed" = "không tràn lề" +"nobody else here yet" = "chưa có ai khác ở đây" +"non-default slot settings are not represented and were skipped" = "các thiết lập ô chứa không mặc định không được biểu diễn và đã bị bỏ qua" +"now" = "bây giờ" +"only in a text style or variable" = "chỉ trong kiểu văn bản hoặc biến" +"or" = "hoặc" +"point stroke joins were preserved; dashed or variable-width strokes render with the layer join" = "khớp nối nét tại điểm được giữ lại; nét đứt hoặc nét có độ rộng biến thiên sẽ kết xuất theo khớp nối của lớp" +"preferred slot component keys cannot be resolved to file nodes and were skipped" = "không thể phân giải khóa thành phần ưu tiên của ô chứa thành nút trong tệp nên đã bỏ qua" +"prototype actions of unknown types were skipped" = "đã bỏ qua các hành động nguyên mẫu thuộc loại không xác định" +"prototype actions without a destination in the file were skipped" = "đã bỏ qua các hành động nguyên mẫu không có đích đến trong tệp" +"prototype expressions on variables that aren't in the variables JSON were skipped" = "đã bỏ qua các biểu thức nguyên mẫu dùng biến không có trong JSON biến" +"prototype expressions with unsupported functions were skipped" = "đã bỏ qua các biểu thức nguyên mẫu có hàm không được hỗ trợ" +"prototype interactions without supported actions were skipped" = "đã bỏ qua các tương tác nguyên mẫu không có hành động được hỗ trợ" +"prototype navigations of unknown types were skipped" = "đã bỏ qua các điều hướng nguyên mẫu thuộc loại không xác định" +"prototype transitions of unknown types play instantly" = "các chuyển cảnh nguyên mẫu thuộc loại không xác định sẽ phát tức thì" +"prototype triggers of unknown types were skipped" = "đã bỏ qua các kích hoạt nguyên mẫu thuộc loại không xác định" +"put a widget on the canvas" = "đặt một tiện ích lên vùng vẽ" +"read and edit the document" = "đọc và chỉnh sửa tài liệu" +"read the document" = "đọc tài liệu" +"reads the document" = "đọc tài liệu" +"set-variable actions on variables that aren't in the variables JSON were skipped" = "đã bỏ qua các hành động đặt biến trên biến không có trong JSON biến" +"set-variable actions with values that can't be evaluated were skipped" = "đã bỏ qua các hành động đặt biến có giá trị không thể tính toán" +"set-variable actions with values that don't fit the variable were skipped" = "đã bỏ qua các hành động đặt biến có giá trị không khớp kiểu biến" +"set-variable actions without a value were skipped" = "đã bỏ qua các hành động đặt biến không có giá trị" +"set-variable-mode actions on collections or modes that aren't in the variables JSON were skipped" = "đã bỏ qua các hành động đặt chế độ biến trên bộ sưu tập hoặc chế độ không có trong JSON biến" +"slot content assignment target is missing or is not slot content" = "đích gán nội dung ô chứa bị thiếu hoặc không phải là nội dung ô chứa" +"slot content assignment uses the empty GUID sentinel and was skipped" = "phép gán nội dung ô chứa dùng GUID rỗng nên đã bị bỏ qua" +"slot layers without a matching slot property were imported as frames" = "các lớp ô chứa không có thuộc tính ô chứa tương ứng đã được nhập thành khung" +"some vector points refer to point settings missing from the file; they use the layer's joins and plain corners" = "một số điểm vector tham chiếu đến thiết lập điểm bị thiếu trong tệp; chúng sẽ dùng khớp nối của lớp và góc thường" +"some vector segments refer to style settings missing from the file; they use the layer's stroke" = "một số đoạn vector tham chiếu đến thiết lập kiểu bị thiếu trong tệp; chúng sẽ dùng nét của lớp" +"stale or invalid grid track sizing entries were ignored" = "đã bỏ qua các mục kích thước dải lưới cũ hoặc không hợp lệ" +"stars and polygons without point counts or geometry use the default point count" = "ngôi sao và đa giác không có số đỉnh hoặc hình học sẽ dùng số đỉnh mặc định" +"style settings of some vector segments aren't supported; those segments use the layer's stroke" = "thiết lập kiểu của một số đoạn vector không được hỗ trợ; các đoạn đó sẽ dùng nét của lớp" +"text path underline or strikethrough decoration is not rendered" = "không kết xuất gạch chân hoặc gạch ngang chữ đối với văn bản trên đường dẫn" +"text style overrides refer to missing table entries" = "các ghi đè kiểu văn bản tham chiếu đến mục bảng bị thiếu" +"the file has no pages" = "tệp không có trang nào" +"the plugin" = "plugin" +"the variables JSON has no `variableCollections` (expected the local variables response) and was ignored" = "JSON biến không có `variableCollections` (cần phản hồi biến cục bộ) nên đã bị bỏ qua" +"this session only" = "chỉ trong phiên này" +"unknown component property types were skipped" = "đã bỏ qua các loại thuộc tính thành phần không xác định" +"variable aliases to variables that aren't in the variables JSON (or of another type) were skipped" = "đã bỏ qua các bí danh biến trỏ tới biến không có trong JSON biến (hoặc khác kiểu)" +"variable bindings to properties the layer doesn't have were skipped" = "đã bỏ qua các gắn kết biến vào thuộc tính mà lớp không có" +"variable bindings to variables that aren't in the variables JSON (library variables) were skipped" = "đã bỏ qua các gắn kết biến trỏ tới biến không có trong JSON biến (biến thư viện)" +"variable bindings were skipped: the file JSON has no variable definitions (pass the local variables JSON as `variables`, or embed its `meta` next to the file JSON)" = "đã bỏ qua các gắn kết biến: JSON tệp không có định nghĩa biến (hãy truyền JSON biến cục bộ vào `variables`, hoặc nhúng `meta` của nó cạnh JSON tệp)" +"variable bindings whose variable type doesn't fit the property were skipped" = "đã bỏ qua các gắn kết biến có kiểu biến không phù hợp với thuộc tính" +"variable collections without modes were skipped" = "đã bỏ qua các bộ sưu tập biến không có chế độ" +"variable mode lookups in prototype expressions that aren't a variable and one of its modes were skipped" = "đã bỏ qua các tra cứu chế độ biến trong biểu thức nguyên mẫu không phải là một biến và một chế độ của nó" +"variable modes of collections that aren't in the file were skipped" = "đã bỏ qua các chế độ biến của bộ sưu tập không có trong tệp" +"variable modes of collections that aren't in the variables JSON were skipped" = "đã bỏ qua các chế độ biến của bộ sưu tập không có trong JSON biến" +"variable values that don't match their type (or composed colours) were skipped" = "đã bỏ qua các giá trị biến không khớp kiểu (hoặc màu tổng hợp)" +"variables of unknown types were skipped" = "đã bỏ qua các biến thuộc kiểu không xác định" +"variables whose collection isn't in the variables JSON were skipped" = "đã bỏ qua các biến có bộ sưu tập không nằm trong JSON biến" +"variables without readable values were skipped" = "đã bỏ qua các biến không có giá trị đọc được" +"vector points with unknown stroke joins use the layer join" = "các điểm vector có khớp nối nét không xác định sẽ dùng khớp nối của lớp" +"vectors without geometry are empty" = "các vector không có dữ liệu hình học sẽ để trống" +"vectors without geometry are empty (export the file JSON with geometry=paths)" = "các vector không có dữ liệu hình học sẽ để trống (hãy xuất JSON tệp với geometry=paths)" +"very long text was cut to 1,048,576 characters" = "văn bản quá dài đã được cắt còn 1.048.576 ký tự" +"very long vector paths were skipped" = "đã bỏ qua các đường dẫn vector quá dài" +"video actions are not supported and were skipped" = "hành động video không được hỗ trợ và đã bị bỏ qua" +"video triggers are not supported and were skipped" = "kích hoạt video không được hỗ trợ và đã bị bỏ qua" +"yesterday" = "hôm qua" +"{instances} in {files}" = "{instances} trong {files}" +"{language}: draft translation, waiting for a native speaker's review." = "{language}: bản dịch nháp, đang chờ người bản ngữ hiệu đính." +"{length} bleed" = "tràn lề {length}" +"{month} {day}, {year}" = "{day} {month}, {year}" +"{name}\nClick to apply to the selection" = "{name}\nNhấp để áp dụng cho vùng chọn" +"{name}\nDrag onto the canvas, or click to place in the middle of the view.\nHold Alt (Option) while dropping onto an instance to swap it." = "{name}\nKéo vào vùng vẽ, hoặc nhấp để đặt ở giữa khung nhìn.\nGiữ Alt (Option) khi thả vào một bản thể để hoán đổi." +"{name} (from {library})" = "{name} (từ {library})" +"{name} (you)" = "{name} (bạn)" +"{name} ({layers} layers)" = "{name} ({layers} lớp)" +"{name} ({tag}): {min} – {max}, default {default}. Double-click the slider to go back to the style's value; Escape while dragging cancels." = "{name} ({tag}): {min} – {max}, mặc định {default}. Nhấp đúp vào thanh trượt để quay lại giá trị của kiểu; nhấn Escape khi đang kéo để hủy." +"{name} cleared from the list" = "Đã xóa {name} khỏi danh sách" +"{name} from {path}" = "{name} từ {path}" +"{name} is forgotten on this computer; the file stays on {server}" = "Đã quên {name} trên máy tính này; tệp vẫn còn trên {server}" +"{name} is on the server." = "{name} đang ở trên máy chủ." +"{name} is spotlighting" = "{name} đang chiếu tâm điểm" +"{name} is too large to open in the browser (over 512 MB)." = "{name} quá lớn để mở trong trình duyệt (trên 512 MB)." +"{name} was removed from the server" = "Đã xóa {name} khỏi máy chủ" +"{name} · deleted on main" = "{name} · đã xóa trên nhánh chính" +"{name} · deleted on the branch" = "{name} · đã xóa trên nhánh" +"{name} · not published" = "{name} · chưa xuất bản" +"{name} · on a server" = "{name} · trên máy chủ" +"{name} · published version {v}" = "{name} · đã xuất bản phiên bản {v}" +"{name} · version {v} on the server" = "{name} · phiên bản {v} trên máy chủ" +"{name}, in a live session" = "{name}, trong phiên trực tiếp" +"{name}, online, open only to you" = "{name}, trực tuyến, chỉ mình bạn mở được" +"{name}, {kind}, {w} by {h}, selected" = "{name}, {kind}, {w} × {h}, đã chọn" +"{n} added" = { other = "{n} đã thêm" } +"{n} autosave versions" = { other = "{n} phiên bản tự động lưu" } +"{n} changed" = { other = "{n} đã thay đổi" } +"{n} columns" = { other = "{n} cột" } +"{n} components" = { other = "{n} thành phần" } +"{n} components and styles have newer versions" = { other = "{n} thành phần và kiểu có phiên bản mới hơn" } +"{n} conflicts to resolve" = { other = "{n} xung đột cần giải quyết" } +"{n} days ago" = { other = "{n} ngày trước" } +"{n} files" = { other = "{n} tệp" } +"{n} hours ago" = { other = "{n} giờ trước" } +"{n} instances" = { other = "{n} bản thể" } +"{n} layers" = { other = "{n} lớp" } +"{n} layers as one file" = { other = "{n} lớp thành một tệp" } +"{n} layers selected" = { other = "Đã chọn {n} lớp" } +"{n} layers · {parts}" = { other = "{n} lớp · {parts}" } +"{n} matches" = { other = "{n} kết quả khớp" } +"{n} minutes ago" = { other = "{n} phút trước" } +"{n} months ago" = { other = "{n} tháng trước" } +"{n} more notes omitted from this report" = { other = "{n} ghi chú khác đã được lược bớt khỏi báo cáo này" } +"{n} of {total}" = "{n} / {total}" +"{n} people joined" = { other = "{n} người đã tham gia" } +"{n} preferred components" = { other = "{n} thành phần ưu tiên" } +"{n} ready" = { other = "{n} sẵn sàng" } +"{n} removed" = { other = "{n} đã xóa" } +"{n} replies" = { other = "{n} phản hồi" } +"{n} rows" = { other = "{n} hàng" } +"{n} styles" = { other = "{n} kiểu" } +"{n} text layers" = { other = "{n} lớp văn bản" } +"{n} variables" = { other = "{n} biến" } +"{n} weeks ago" = { other = "{n} tuần trước" } +"{n} years ago" = { other = "{n} năm trước" } +"{n}d" = "{n}ng" +"{n}h" = "{n}g" +"{n}m" = "{n}ph" +"{n}w" = "{n}t" +"{page}, nothing selected" = "{page}, chưa chọn gì" +"{percent}%" = "{percent}%" +"{profile} (current)" = "{profile} (hiện tại)" +"{property} is its value; {property ? \"a\" : \"b\"} picks a string. Other {…} stays as written." = "{property} là giá trị thuộc tính; {property ? \"a\" : \"b\"} chọn một chuỗi. Các {…} khác được giữ nguyên như đã viết." +"{server} can't say what became of your files (it is older than this app)." = "{server} không thể cho biết trạng thái các tệp của bạn (máy chủ cũ hơn ứng dụng này)." +"{server} · No longer on the server" = "{server} · Không còn trên máy chủ" +"{server} · {shared} · Opened {date}" = "{server} · {shared} · Đã mở {date}" +"{tool} hold {key}" = "{tool} giữ {key}" +"{value} isn't a colour" = "{value} không phải là một màu" +"{when} · edited" = "{when} · đã chỉnh sửa" +"←" = "←" +"← ↑ → ↓" = "← ↑ → ↓" +"← → ↑ ↓" = "← → ↑ ↓" +"→, Space or N" = "→, Space hoặc N" +"↵" = "↵" +"⇥ / ⇧⇥" = "⇥ / ⇧⇥" +"⌘ arrows" = "⌘ mũi tên" +"⌘ click" = "⌘ nhấp" +"⌘ scroll" = "⌘ cuộn" +"⌥ drag" = "⌥ kéo" + +[commands] +"align.bottom" = "Căn dưới" +"align.hcenter" = "Căn tâm ngang" +"align.left" = "Căn trái" +"align.right" = "Căn phải" +"align.top" = "Căn trên" +"align.vcenter" = "Căn tâm dọc" +"annotation.add" = "Thêm chú thích" +"annotation.addCategory" = "Thêm danh mục chú thích" +"annotation.categories" = "Danh mục chú thích" +"annotation.edit" = "Chỉnh sửa chú thích" +"annotation.editCategory" = "Chỉnh sửa danh mục chú thích" +"annotation.list" = "Danh sách chú thích" +"annotation.remove" = "Xóa chú thích" +"annotation.removeCategory" = "Xóa danh mục chú thích" +"app.actions" = "Hành động" +"app.preferences" = "Tùy chọn" +"arrange.back" = "Đưa xuống dưới cùng" +"arrange.backward" = "Đưa lùi một lớp" +"arrange.forward" = "Đưa tiến một lớp" +"arrange.front" = "Đưa lên trên cùng" +"arrange.packH" = "Xếp sát ngang" +"arrange.packV" = "Xếp sát dọc" +"arrange.reorder" = "Sắp xếp lại vùng chọn" +"arrange.roundToPixels" = "Làm tròn theo pixel" +"arrange.spacing" = "Khoảng cách" +"arrange.tidy" = "Sắp xếp gọn" +"bool.exclude" = "Loại trừ vùng chọn" +"bool.flatten" = "Làm phẳng nhóm boolean" +"bool.intersect" = "Giao vùng chọn" +"bool.subtract" = "Trừ vùng chọn" +"bool.union" = "Hợp vùng chọn" +"branch.archive" = "Lưu trữ nhánh" +"branch.create" = "Tạo nhánh" +"branch.list" = "Danh sách nhánh" +"branch.merge" = "Hợp nhất nhánh" +"branch.open" = "Mở nhánh" +"branch.review" = "Xem xét nhánh" +"branch.updateFromMain" = "Cập nhật từ nhánh chính" +"codeConnect.export" = "Xuất kết nối mã" +"codeConnect.import" = "Nhập kết nối mã" +"codeConnect.remove" = "Ngắt kết nối mã" +"codeConnect.set" = "Kết nối với mã" +"collab.cursor" = "Hiện con trỏ tại" +"collab.cursorChat" = "Trò chuyện con trỏ" +"collab.diff" = "Hiện thay đổi đồng bộ" +"collab.files" = "Tệp trực tuyến của bạn" +"collab.follow" = "Theo dõi" +"collab.forgetFile" = "Quên tệp trực tuyến" +"collab.host" = "Bắt đầu phiên trực tiếp" +"collab.join" = "Tham gia phiên trực tiếp" +"collab.leave" = "Rời phiên trực tiếp" +"collab.manageFile" = "Quản lý tệp đã xuất bản" +"collab.openFile" = "Mở tệp trực tuyến" +"collab.peers" = "Những người trong tệp này" +"collab.publish" = "Xuất bản lên máy chủ" +"collab.recoverFile" = "Khôi phục tệp trực tuyến" +"collab.registerLinks" = "Mở liên kết mời trong FigCraft" +"collab.removePerson" = "Xóa khỏi phiên" +"collab.report" = "Báo cáo tệp cho người vận hành máy chủ" +"collab.serverInfo" = "Thông tin máy chủ" +"collab.share" = "Chia sẻ bằng mã tham gia" +"collab.spotlight" = "Chiếu tâm điểm vào tôi" +"collab.stop" = "Dừng phiên trực tiếp" +"command.batch" = "Chạy nhiều lệnh" +"comment.add" = "Thêm bình luận" +"comment.delete" = "Xóa bình luận" +"comment.edit" = "Chỉnh sửa bình luận" +"comment.link" = "Sao chép liên kết đến bình luận" +"comment.list" = "Danh sách bình luận" +"comment.markRead" = "Đánh dấu bình luận đã đọc" +"comment.move" = "Di chuyển bình luận" +"comment.next" = "Bình luận tiếp theo" +"comment.open" = "Mở bình luận" +"comment.people" = "Người trong bình luận" +"comment.react" = "Thả cảm xúc cho bình luận" +"comment.reply" = "Trả lời bình luận" +"comment.resolve" = "Giải quyết bình luận" +"comment.zoom" = "Thu phóng đến bình luận" +"component.addProperty" = "Thêm thuộc tính thành phần" +"component.addVariant" = "Thêm biến thể" +"component.bindProperty" = "Gắn lớp vào thuộc tính" +"component.combineVariants" = "Kết hợp thành các biến thể" +"component.create" = "Tạo thành phần" +"component.createMultiple" = "Tạo nhiều thành phần" +"component.deleteProperty" = "Xóa thuộc tính thành phần" +"component.detach" = "Tách bản thể" +"component.editProperty" = "Chỉnh sửa thuộc tính thành phần" +"component.exposeInstance" = "Hiển thị bản thể lồng nhau" +"component.goToMain" = "Đi tới thành phần chính" +"component.hideWhenPublishing" = "Ẩn khi xuất bản" +"component.list" = "Danh sách thành phần" +"component.makeSlot" = "Tạo ô chứa" +"component.playground" = "Sân thử nghiệm thành phần" +"component.properties" = "Thuộc tính thành phần" +"component.pushChanges" = "Đẩy thay đổi lên thành phần chính" +"component.removeSlot" = "Xóa ô chứa" +"component.resetInstance" = "Đặt lại mọi thay đổi" +"component.resetOverride" = "Đặt lại ghi đè" +"component.restoreMain" = "Khôi phục thành phần chính" +"dev.compare" = "So sánh thay đổi" +"dev.focus" = "Chế độ xem tập trung" +"dev.resolveChange" = "Giải quyết thay đổi" +"dev.unfocus" = "Thoát chế độ xem tập trung" +"devResource.add" = "Thêm tài nguyên dev" +"devResource.edit" = "Chỉnh sửa tài nguyên dev" +"devResource.list" = "Danh sách tài nguyên dev" +"devResource.remove" = "Xóa tài nguyên dev" +"distribute.horizontal" = "Phân bổ đều khoảng cách ngang" +"distribute.vertical" = "Phân bổ đều khoảng cách dọc" +"doc.home" = "Trang chủ" +"doc.list" = "Danh sách tài liệu" +"doc.nextTab" = "Thẻ tiếp theo" +"doc.previousTab" = "Thẻ trước" +"doc.switch" = "Chuyển tài liệu" +"edit.copy" = "Sao chép" +"edit.copyAsCss" = "Sao chép dưới dạng CSS" +"edit.copyAsPng" = "Sao chép dưới dạng PNG" +"edit.copyAsSvg" = "Sao chép dưới dạng SVG" +"edit.copyAsText" = "Sao chép dưới dạng văn bản" +"edit.copyLink" = "Sao chép liên kết đến vùng chọn" +"edit.copyProperties" = "Sao chép thuộc tính" +"edit.cut" = "Cắt" +"edit.delete" = "Xóa" +"edit.duplicate" = "Nhân bản" +"edit.findReplace" = "Tìm và thay thế" +"edit.paste" = "Dán" +"edit.pasteDesignLayers" = "Dán các lớp thiết kế" +"edit.pasteOver" = "Dán đè lên vùng chọn" +"edit.pasteProperties" = "Dán thuộc tính" +"edit.pasteReplace" = "Dán để thay thế" +"edit.pickColor" = "Chọn màu" +"edit.redo" = "Làm lại" +"edit.repeat" = "Lặp lại lệnh cuối" +"edit.setDefaultProperties" = "Đặt thuộc tính mặc định" +"edit.undo" = "Hoàn tác" +"effect.add" = "Thêm hiệu ứng" +"effect.move" = "Di chuyển hiệu ứng" +"effect.remove" = "Xóa hiệu ứng" +"effect.set" = "Đặt hiệu ứng" +"export.add" = "Thêm thiết lập xuất" +"export.remove" = "Xóa thiết lập xuất" +"export.update" = "Chỉnh sửa thiết lập xuất" +"file.close" = "Đóng thẻ" +"file.colorProfile" = "Hồ sơ màu" +"file.duplicate" = "Nhân bản tệp" +"file.export" = "Xuất" +"file.exportFramesPdf" = "Xuất các khung ra PDF" +"file.exportLayers" = "Xuất các lớp" +"file.exportSvg" = "Xuất vùng chọn ra SVG" +"file.import" = "Nhập" +"file.moveTab" = "Di chuyển thẻ" +"file.new" = "Tệp thiết kế mới" +"file.newFromTemplate" = "Mới từ mẫu" +"file.open" = "Mở" +"file.openRecent" = "Mở tệp gần đây" +"file.placeImage" = "Đặt hình ảnh" +"file.recover" = "Khôi phục tệp" +"file.rename" = "Đổi tên tệp" +"file.revert" = "Hoàn nguyên về bản đã lưu" +"file.save" = "Lưu" +"file.saveAs" = "Lưu thành" +"file.saveVersion" = "Lưu vào lịch sử phiên bản" +"file.versionHistory" = "Hiện lịch sử phiên bản" +"fill.add" = "Thêm màu tô" +"fill.move" = "Di chuyển màu tô" +"fill.pattern" = "Tô họa tiết" +"fill.remove" = "Xóa màu tô" +"fill.set" = "Đặt màu tô" +"frame.create" = "Tạo khung" +"frame.presets" = "Danh sách kích thước khung dựng sẵn" +"frame.swapOrientation" = "Đổi chiều ngang/dọc" +"grid.add" = "Thêm lưới bố cục" +"grid.move" = "Di chuyển lưới bố cục" +"grid.remove" = "Xóa lưới bố cục" +"guide.add" = "Thêm đường gióng" +"guide.clear" = "Xóa mọi đường gióng" +"guide.move" = "Di chuyển đường gióng" +"guide.remove" = "Xóa đường gióng" +"guide.select" = "Chọn đường gióng" +"help.about" = "Giới thiệu về FigCraft" +"help.gettingStarted" = "Bắt đầu" +"help.page" = "Trang trợ giúp" +"help.shortcuts" = "Phím tắt" +"image.adjust" = "Điều chỉnh hình ảnh" +"image.deletePreset" = "Xóa thiết lập sẵn hình ảnh" +"image.place" = "Đặt hình ảnh" +"image.presets" = "Thiết lập sẵn hình ảnh" +"image.savePreset" = "Lưu thiết lập sẵn hình ảnh" +"inspect.assets" = "Kiểm tra tài nguyên" +"inspect.code" = "Mã cho lớp" +"inspect.componentCode" = "Mã thành phần" +"inspect.properties" = "Kiểm tra thuộc tính" +"inspect.readyForDev" = "Sẵn sàng cho dev" +"instance.create" = "Tạo bản thể" +"instance.exposed" = "Các bản thể lồng nhau được hiển thị" +"instance.place" = "Đặt bản thể" +"instance.resetSlot" = "Đặt lại ô chứa" +"instance.setProperties" = "Đặt thuộc tính bản thể" +"instance.slotInsert" = "Chèn vào ô chứa" +"instance.swap" = "Hoán đổi bản thể" +"instance.swapAt" = "Hoán đổi bản thể tại điểm" +"layers.collapseAll" = "Thu gọn các lớp" +"layout.add" = "Thêm bố cục tự động" +"layout.remove" = "Xóa bố cục tự động" +"layout.setTrack" = "Đặt kích thước dải lưới" +"layout.suggest" = "Gợi ý bố cục tự động" +"libraries.open" = "Thư viện" +"libraries.publish" = "Xuất bản thư viện…" +"library.acceptUpdates" = "Chấp nhận cập nhật thư viện" +"library.add" = "Thêm thư viện" +"library.aliasVariable" = "Tạo bí danh biến thư viện" +"library.applyStyle" = "Áp dụng kiểu thư viện" +"library.bindVariable" = "Gắn biến thư viện" +"library.extendCollection" = "Mở rộng bộ sưu tập thư viện" +"library.import" = "Nhập thành phần thư viện" +"library.importVariable" = "Nhập biến thư viện" +"library.list" = "Danh sách thư viện" +"library.place" = "Đặt thành phần thư viện" +"library.publish" = "Xuất bản thư viện" +"library.publishToServer" = "Xuất bản thư viện lên máy chủ" +"library.remove" = "Xóa thư viện" +"library.setVariableMode" = "Đặt chế độ biến thư viện" +"library.swap" = "Hoán đổi thư viện" +"library.swapAt" = "Hoán đổi bản thể sang thành phần thư viện" +"library.updates" = "Cập nhật thư viện" +"library.usage" = "Mức sử dụng thư viện" +"measure.distances" = "Đo khoảng cách" +"measure.padding" = "Đo khoảng đệm bố cục tự động" +"node.create" = "Tạo lớp" +"node.get" = "Lấy lớp" +"node.reorder" = "Sắp xếp lại lớp" +"node.reparent" = "Di chuyển lớp vào trong" +"node.set" = "Đặt thuộc tính" +"object.batchRename" = "Đổi tên hàng loạt" +"object.convertToFrame" = "Chuyển thành khung" +"object.convertToGroup" = "Chuyển thành nhóm" +"object.convertToSection" = "Chuyển thành phần" +"object.flipH" = "Lật ngang" +"object.flipV" = "Lật dọc" +"object.frameSelection" = "Đóng khung vùng chọn" +"object.group" = "Nhóm vùng chọn" +"object.hideOthers" = "Ẩn các lớp khác" +"object.mask" = "Dùng làm mặt nạ" +"object.moveToPage" = "Di chuyển sang trang" +"object.opacityKeys" = "Độ mờ từ phím số" +"object.rasterize" = "Điểm ảnh hóa vùng chọn" +"object.releaseMask" = "Bỏ mặt nạ" +"object.removeFill" = "Xóa màu tô" +"object.removeFrame" = "Bỏ khung" +"object.removeStroke" = "Xóa nét" +"object.rename" = "Đổi tên" +"object.resizeToFit" = "Đổi kích thước vừa khít" +"object.rotate180" = "Xoay 180°" +"object.rotateLeft" = "Xoay 90° sang trái" +"object.rotateRight" = "Xoay 90° sang phải" +"object.setThumbnail" = "Đặt làm ảnh thu nhỏ" +"object.swapFillStroke" = "Đổi chỗ màu tô và nét" +"object.toggleLock" = "Khóa/Mở khóa vùng chọn" +"object.toggleVisible" = "Hiện/Ẩn vùng chọn" +"object.ungroup" = "Bỏ nhóm vùng chọn" +"object.wrapInSection" = "Bọc trong phần mới" +"page.add" = "Thêm trang" +"page.delete" = "Xóa trang" +"page.duplicate" = "Nhân bản trang" +"page.list" = "Danh sách trang" +"page.move" = "Di chuyển trang" +"page.rename" = "Đổi tên trang" +"page.select" = "Đi tới trang" +"page.setBackground" = "Màu nền trang" +"paint.documentColors" = "Màu trong tài liệu" +"plugin.close" = "Đóng bảng plugin" +"plugin.directory.install" = "Cài đặt plugin từ thư mục" +"plugin.directory.list" = "Duyệt thư mục plugin" +"plugin.directory.publish" = "Xuất bản plugin lên thư mục" +"plugin.directory.unpublish" = "Gỡ xuất bản plugin khỏi thư mục" +"plugin.event" = "Dùng điều khiển bảng plugin" +"plugin.import" = "Nhập plugin từ tệp kê khai…" +"plugin.list" = "Danh sách plugin" +"plugin.remove" = "Gỡ plugin" +"plugin.run" = "Chạy plugin" +"plugin.ui" = "Bảng plugin" +"plugins.manage" = "Quản lý plugin…" +"plugins.runLast" = "Chạy plugin vừa dùng" +"pref.autoSave" = "Tự động lưu tệp" +"pref.highlightHover" = "Làm nổi bật lớp khi di chuột qua" +"pref.keepTool" = "Giữ công cụ được chọn sau khi dùng" +"pref.language" = "Ngôn ngữ giao diện" +"pref.nudge" = "Mức dịch chuyển nhẹ" +"pref.numberKeysOpacity" = "Dùng phím số để chỉnh độ mờ" +"pref.publishServer" = "Máy chủ chia sẻ trực tuyến" +"pref.reduceMotion" = "Giảm chuyển động" +"pref.renameDuplicates" = "Đổi tên các lớp nhân bản" +"pref.showDimensions" = "Hiện kích thước trên đối tượng" +"pref.startOnHome" = "Khởi động tại màn hình Trang chủ" +"pref.uiScale" = "Kích thước giao diện" +"pref.userName" = "Tên của bạn trong bình luận" +"proto.action.add" = "Thêm hành động nguyên mẫu" +"proto.action.move" = "Sắp xếp lại hành động nguyên mẫu" +"proto.action.remove" = "Xóa hành động nguyên mẫu" +"proto.action.set" = "Chỉnh sửa hành động nguyên mẫu" +"proto.closePreview" = "Đóng xem trước nguyên mẫu" +"proto.conditional.addBlock" = "Thêm nhánh else if / else" +"proto.conditional.removeBlock" = "Xóa nhánh if / else if / else" +"proto.conditional.setCondition" = "Chỉnh sửa điều kiện" +"proto.evaluate" = "Tính biểu thức nguyên mẫu" +"proto.flow.add" = "Thêm điểm bắt đầu luồng" +"proto.flow.remove" = "Xóa luồng" +"proto.flow.rename" = "Đổi tên luồng" +"proto.interaction.add" = "Thêm tương tác" +"proto.interaction.clear" = "Xóa mọi tương tác" +"proto.interaction.remove" = "Xóa tương tác" +"proto.interaction.set" = "Chỉnh sửa tương tác" +"proto.present" = "Trình chiếu" +"proto.presentOptions" = "Tùy chọn trình chiếu" +"proto.preview" = "Mở xem trước nguyên mẫu" +"proto.settings" = "Thiết lập nguyên mẫu" +"section.toggleContents" = "Ẩn/Hiện nội dung phần" +"select.add" = "Thêm vào vùng chọn" +"select.all" = "Chọn tất cả" +"select.area" = "Chọn vùng" +"select.byName" = "Chọn lớp theo tên" +"select.children" = "Chọn các lớp con" +"select.inverse" = "Đảo ngược vùng chọn" +"select.layersAt" = "Các lớp tại một điểm" +"select.matching" = "Chọn các lớp tương ứng" +"select.next" = "Chọn lớp đồng cấp tiếp theo" +"select.none" = "Bỏ chọn tất cả" +"select.parent" = "Chọn lớp cha" +"select.previous" = "Chọn lớp đồng cấp trước đó" +"select.remove" = "Bỏ khỏi vùng chọn" +"select.sameEffect" = "Chọn cùng hiệu ứng" +"select.sameFill" = "Chọn cùng màu tô" +"select.sameFont" = "Chọn cùng phông chữ" +"select.sameInstance" = "Chọn cùng bản thể" +"select.sameProperties" = "Chọn cùng thuộc tính" +"select.sameStroke" = "Chọn cùng nét" +"select.sameText" = "Chọn cùng thuộc tính văn bản" +"select.set" = "Chọn" +"selection.applyColorStyle" = "Áp dụng kiểu màu cho vùng chọn" +"selection.colors" = "Màu của vùng chọn" +"selection.selectColor" = "Chọn các lớp có màu này" +"selection.setPaint" = "Đổi màu vùng chọn" +"shape.arrow" = "Mũi tên" +"shape.ellipse" = "Hình elip" +"shape.line" = "Đường thẳng" +"shape.polygon" = "Đa giác" +"shape.rectangle" = "Hình chữ nhật" +"shape.star" = "Ngôi sao" +"shapeBuilder.merge" = "Hợp nhất các vùng" +"shapeBuilder.mode" = "Chế độ tạo hình" +"shapeBuilder.regions" = "Các vùng tạo hình" +"shapeBuilder.remove" = "Xóa các vùng" +"stroke.add" = "Thêm nét" +"stroke.brush" = "Cọ vẽ" +"stroke.move" = "Di chuyển nét" +"stroke.remove" = "Xóa nét" +"stroke.set" = "Đặt nét" +"stroke.widthProfile" = "Biên dạng độ rộng" +"style.apply" = "Áp dụng kiểu" +"style.bind" = "Gắn biến trong kiểu" +"style.create" = "Tạo kiểu" +"style.delete" = "Xóa kiểu" +"style.detach" = "Tách kiểu" +"style.duplicate" = "Nhân bản kiểu" +"style.list" = "Danh sách kiểu" +"style.move" = "Di chuyển kiểu" +"style.renameFolder" = "Đổi tên thư mục kiểu" +"style.update" = "Chỉnh sửa kiểu" +"template.list" = "Danh sách mẫu" +"text.alignCenter" = "Căn giữa" +"text.alignJustify" = "Căn đều" +"text.alignLeft" = "Căn trái" +"text.alignRight" = "Căn phải" +"text.bold" = "Đậm" +"text.bulletList" = "Danh sách dấu đầu dòng" +"text.case" = "Kiểu chữ hoa/thường" +"text.caseLower" = "Chữ thường" +"text.caseOriginal" = "Giữ nguyên chữ hoa/thường" +"text.caseSmallCaps" = "Chữ hoa nhỏ" +"text.caseTitle" = "Viết hoa đầu từ" +"text.caseUpper" = "Chữ hoa" +"text.create" = "Văn bản" +"text.decoration" = "Trang trí chữ" +"text.edit.begin" = "Chỉnh sửa văn bản" +"text.edit.caret" = "Đặt con trỏ văn bản" +"text.edit.end" = "Dừng chỉnh sửa văn bản" +"text.edit.insert" = "Nhập văn bản" +"text.edit.key" = "Phím văn bản" +"text.edit.preedit" = "Soạn văn bản (IME)" +"text.edit.selectLine" = "Chọn dòng" +"text.edit.selectWord" = "Chọn từ" +"text.edit.selection" = "Vùng chọn văn bản" +"text.endPreview" = "Kết thúc xem trước văn bản" +"text.fonts" = "Danh sách phông chữ" +"text.italic" = "Nghiêng" +"text.lineHeightDown" = "Giảm chiều cao dòng" +"text.lineHeightUp" = "Tăng chiều cao dòng" +"text.link" = "Tạo liên kết" +"text.listIndent" = "Thụt lề danh sách" +"text.listOutdent" = "Nhô lề danh sách" +"text.listStyle" = "Kiểu danh sách" +"text.loadFont" = "Tải tệp phông chữ" +"text.maxLines" = "Số dòng tối đa" +"text.missingFonts" = "Phông chữ bị thiếu" +"text.numberList" = "Danh sách đánh số" +"text.onPath" = "Văn bản trên đường dẫn" +"text.paragraphIndent" = "Thụt lề đoạn văn" +"text.paragraphSpacing" = "Khoảng cách đoạn văn" +"text.pathOptions" = "Tùy chọn đường dẫn văn bản" +"text.preview" = "Xem trước thay đổi văn bản" +"text.refit" = "Khớp lại văn bản theo phông chữ" +"text.removeFromPath" = "Gỡ văn bản khỏi đường dẫn" +"text.rescanFonts" = "Quét lại phông chữ đã cài đặt" +"text.set" = "Đặt văn bản" +"text.setFeatures" = "Tính năng OpenType" +"text.setVariations" = "Trục phông chữ biến thiên" +"text.sizeDown" = "Giảm cỡ chữ" +"text.sizeUp" = "Tăng cỡ chữ" +"text.strikethrough" = "Gạch ngang chữ" +"text.style" = "Định kiểu đoạn văn bản" +"text.trackingDown" = "Giảm khoảng cách chữ" +"text.trackingUp" = "Tăng khoảng cách chữ" +"text.underline" = "Gạch chân" +"text.weightDown" = "Giảm độ đậm chữ" +"text.weightUp" = "Tăng độ đậm chữ" +"tool.arrow" = "Mũi tên" +"tool.comment" = "Bình luận" +"tool.ellipse" = "Hình elip" +"tool.frame" = "Khung" +"tool.hand" = "Bàn tay" +"tool.line" = "Đường thẳng" +"tool.move" = "Di chuyển" +"tool.pen" = "Bút" +"tool.pencil" = "Bút chì" +"tool.pencilBrush" = "Cọ bút chì" +"tool.place" = "Đặt bằng công cụ" +"tool.polygon" = "Đa giác" +"tool.rectangle" = "Hình chữ nhật" +"tool.scale" = "Tỷ lệ" +"tool.scaleAnchor" = "Điểm neo tỷ lệ" +"tool.section" = "Phần" +"tool.set" = "Chọn công cụ" +"tool.shapeBuilder" = "Tạo hình" +"tool.slice" = "Lát cắt" +"tool.star" = "Ngôi sao" +"tool.text" = "Văn bản" +"transform.move" = "Di chuyển" +"transform.moveTo" = "Di chuyển tới" +"transform.nudge" = "Dịch chuyển nhẹ" +"transform.nudgeSize" = "Đổi kích thước theo bước dịch nhẹ" +"transform.resize" = "Đổi kích thước" +"transform.rotate" = "Xoay" +"transform.rotationOrigin" = "Di chuyển tâm xoay" +"transform.scale" = "Tỷ lệ" +"transform.setRotationOrigin" = "Đặt tâm xoay" +"variable.addMode" = "Thêm chế độ" +"variable.bind" = "Gắn biến" +"variable.create" = "Tạo biến" +"variable.createCollection" = "Tạo bộ sưu tập biến" +"variable.delete" = "Xóa biến" +"variable.deleteCollection" = "Xóa bộ sưu tập" +"variable.duplicate" = "Nhân bản biến" +"variable.export" = "Xuất các biến" +"variable.import" = "Nhập các biến" +"variable.list" = "Danh sách biến" +"variable.moveMode" = "Di chuyển chế độ" +"variable.removeMode" = "Xóa chế độ" +"variable.renameCollection" = "Đổi tên bộ sưu tập" +"variable.renameMode" = "Đổi tên chế độ" +"variable.resetOverride" = "Đặt lại ghi đè biến" +"variable.set" = "Đặt giá trị biến" +"variable.setMode" = "Đặt chế độ biến" +"variable.update" = "Chỉnh sửa biến" +"vector.create" = "Vector" +"vector.deleteHeal" = "Xóa và nối liền vùng chọn" +"vector.edit.addVertex" = "Thêm điểm" +"vector.edit.begin" = "Chỉnh sửa vector" +"vector.edit.bend" = "Uốn đoạn" +"vector.edit.bounds" = "Khung giới hạn các điểm đã chọn" +"vector.edit.connect" = "Nối các điểm" +"vector.edit.cornerRadius" = "Bán kính góc của điểm" +"vector.edit.cut" = "Cắt đường dẫn" +"vector.edit.delete" = "Xóa các điểm" +"vector.edit.end" = "Hoàn tất chỉnh sửa" +"vector.edit.erase" = "Tẩy xóa" +"vector.edit.lasso" = "Chọn bằng dây quây" +"vector.edit.mirroring" = "Đối xứng tay nắm" +"vector.edit.moveHandles" = "Di chuyển tay nắm" +"vector.edit.moveVertices" = "Di chuyển các điểm" +"vector.edit.nudge" = "Dịch nhẹ các điểm" +"vector.edit.paint" = "Thùng sơn" +"vector.edit.pen" = "Điểm bút" +"vector.edit.penEnd" = "Kết thúc đường dẫn bút" +"vector.edit.position" = "Vị trí điểm" +"vector.edit.resize" = "Đổi kích thước các điểm" +"vector.edit.rotate" = "Xoay các điểm" +"vector.edit.select" = "Chọn các điểm" +"vector.edit.selectAll" = "Chọn tất cả các điểm" +"vector.edit.setHandle" = "Đặt tay nắm" +"vector.edit.smooth" = "Làm mượt hoặc làm nhọn điểm" +"vector.edit.state" = "Trạng thái chỉnh sửa vector" +"vector.edit.strokeCap" = "Đầu mút nét tại điểm" +"vector.edit.strokeJoin" = "Khớp nối nét tại điểm" +"vector.edit.tool" = "Công cụ chỉnh sửa vector" +"vector.edit.transform" = "Biến đổi các điểm" +"vector.edit.widthPoint" = "Điểm độ rộng" +"vector.flatten" = "Làm phẳng" +"vector.join" = "Nối vùng chọn" +"vector.offset" = "Đường dẫn lệch" +"vector.outlineStroke" = "Chuyển nét thành đường viền" +"vector.reverse" = "Đảo chiều đường dẫn" +"vector.simplify" = "Đơn giản hóa vector" +"vector.smoothJoin" = "Nối mượt vùng chọn" +"version.autosave" = "Phiên bản tự động lưu" +"version.delete" = "Xóa phiên bản" +"version.duplicate" = "Nhân bản phiên bản" +"version.exitPreview" = "Quay lại phiên bản hiện tại" +"version.list" = "Danh sách phiên bản" +"version.preview" = "Xem phiên bản" +"version.rename" = "Đổi tên phiên bản" +"version.restore" = "Khôi phục phiên bản" +"view.assets" = "Bảng Tài nguyên" +"view.comments" = "Bình luận" +"view.contextMenu" = "Hiện trình đơn ngữ cảnh" +"view.design" = "Bảng Thiết kế" +"view.designPrototype" = "Chuyển đổi giữa Thiết kế và Nguyên mẫu" +"view.devMode" = "Dev Mode" +"view.frameOutlines" = "Đường viền khung" +"view.fullscreen" = "Toàn màn hình" +"view.get" = "Lấy khung nhìn" +"view.layers" = "Bảng Các lớp" +"view.layoutGrids" = "Lưới bố cục" +"view.leftSidebar" = "Hiện/Ẩn thanh bên trái" +"view.maskOutlines" = "Đường viền mặt nạ" +"view.multiplayerCursors" = "Con trỏ nhiều người dùng" +"view.nextFrame" = "Thu phóng đến khung tiếp theo" +"view.nextPage" = "Trang tiếp theo" +"view.nextRegion" = "Chuyển tiêu điểm sang vùng tiếp theo" +"view.outlines" = "Đường viền nét" +"view.outlinesHiddenLayers" = "Bao gồm các lớp ẩn trong đường viền nét" +"view.outlinesObjectBounds" = "Bao gồm khung giới hạn đối tượng trong đường viền nét" +"view.outlinesSelection" = "Đường viền nét cho vùng chọn" +"view.pan" = "Di chuyển khung nhìn" +"view.panelWidths" = "Đặt lại độ rộng bảng" +"view.pixelGrid" = "Lưới pixel" +"view.pixelPreview" = "Xem trước pixel" +"view.prevFrame" = "Thu phóng đến khung trước" +"view.prevPage" = "Trang trước" +"view.previousRegion" = "Chuyển tiêu điểm về vùng trước" +"view.proofSrgb" = "Kiểm thử mềm sRGB" +"view.prototype" = "Bảng Nguyên mẫu" +"view.rulers" = "Thước" +"view.set" = "Đặt khung nhìn" +"view.slices" = "Lát cắt" +"view.snapGeometry" = "Bắt dính vào hình học" +"view.snapObjects" = "Bắt dính vào đối tượng" +"view.snapPixel" = "Bắt dính vào lưới pixel" +"view.themeDark" = "Giao diện tối" +"view.themeLight" = "Giao diện sáng" +"view.themeSystem" = "Theo giao diện hệ thống" +"view.toggleUi" = "Hiện/Ẩn giao diện" +"view.zoom100" = "Thu phóng về 100%" +"view.zoom200" = "Thu phóng về 200%" +"view.zoom50" = "Thu phóng về 50%" +"view.zoomAt" = "Công cụ thu phóng" +"view.zoomFit" = "Thu phóng vừa khít" +"view.zoomIn" = "Phóng to" +"view.zoomOut" = "Thu nhỏ" +"view.zoomSelection" = "Thu phóng vừa vùng chọn" +"widget.click" = "Nhấp tiện ích" +"widget.insert" = "Chèn tiện ích" +"widget.list" = "Danh sách tiện ích" +"window.focus" = "Đưa cửa sổ lên trước" +"window.new" = "Cửa sổ mới" + +[menu] +"bool.exclude" = "Loại trừ" +"bool.flatten" = "Làm phẳng" +"bool.intersect" = "Giao nhau" +"bool.subtract" = "Trừ" +"bool.union" = "Hợp" +"file.duplicate" = "Nhân bản" +"file.import" = "Nhập từ tệp…" +"file.rename" = "Đổi tên" +"libraries.open" = "Mở thư viện" +"select.sameEffect" = "Hiệu ứng" +"select.sameFill" = "Màu tô" +"select.sameFont" = "Phông chữ" +"select.sameInstance" = "Bản thể" +"select.sameProperties" = "Thuộc tính" +"select.sameStroke" = "Nét" +"select.sameText" = "Thuộc tính văn bản" +"text.alignCenter" = "Căn giữa văn bản" +"text.alignJustify" = "Căn đều văn bản" +"text.alignLeft" = "Căn trái văn bản" +"text.alignRight" = "Căn phải văn bản" +"view.assets" = "Tài nguyên" +"view.design" = "Thiết kế" +"view.layers" = "Các lớp" +"view.outlines" = "Hiện đường viền nét" +"view.outlinesHiddenLayers" = "Bao gồm các lớp ẩn" +"view.outlinesObjectBounds" = "Bao gồm khung giới hạn đối tượng" +"view.outlinesSelection" = "Hiện đường viền nét cho vùng chọn" +"view.prototype" = "Nguyên mẫu" +"view.themeDark" = "Tối" +"view.themeLight" = "Sáng" +"view.themeSystem" = "Theo hệ thống" diff --git a/crates/ui-egui/src/cjk.rs b/crates/ui-egui/src/cjk.rs index 35323efe..88f5e516 100644 --- a/crates/ui-egui/src/cjk.rs +++ b/crates/ui-egui/src/cjk.rs @@ -157,7 +157,7 @@ mod tests { assert_eq!(language("zh-Hans"), HAN); assert_eq!(language("bn"), BENGALI); assert_eq!(language("fr"), 0); - assert!(["en", "es", "es-419", "fr", "de", "pt-BR", "tr", "id"].iter().all(|c| can_show(c))); + assert!(["en", "es", "es-419", "fr", "de", "pt-BR", "tr", "id", "vi"].iter().all(|c| can_show(c))); } #[test] diff --git a/crates/ui-egui/src/i18n.rs b/crates/ui-egui/src/i18n.rs index 9faff001..871f66cf 100644 --- a/crates/ui-egui/src/i18n.rs +++ b/crates/ui-egui/src/i18n.rs @@ -176,7 +176,7 @@ fn plural(code: &str, n: usize) -> Plural { "ru" if n % 10 == 1 && n % 100 != 11 => Plural::One, "ru" | "pl" if (2..=4).contains(&(n % 10)) && !(12..=14).contains(&(n % 100)) => Plural::Few, "ru" | "pl" => Plural::Many, - "ja" | "ko" | "zh-Hans" => Plural::Other, + "ja" | "ko" | "zh-Hans" | "vi" => Plural::Other, "fr" | "pt-BR" if n <= 1 => Plural::One, _ if n == 1 => Plural::One, _ => Plural::Other, @@ -187,7 +187,7 @@ fn plural(code: &str, n: usize) -> Plural { // "other" wording. Czech supplies separate few forms; Russian and Polish supply few/many forms. /// Whether count `n` takes the "one" form: 0 and 1 in French and Brazilian Portuguese, never in -/// Japanese, Korean and Chinese (no plural forms: always "other"), 1 elsewhere (CLDR's integer rules). +/// Japanese, Korean, Chinese and Vietnamese (no plural forms: always "other"), 1 elsewhere (CLDR's integer rules). #[cfg(test)] fn plural_one(lang: usize, n: usize) -> bool { plural(LANGS.get(lang).map_or("en", |l| l.code), n) == Plural::One diff --git a/crates/ui-egui/src/i18n_tests.rs b/crates/ui-egui/src/i18n_tests.rs index 046212c1..85b006ff 100644 --- a/crates/ui-egui/src/i18n_tests.rs +++ b/crates/ui-egui/src/i18n_tests.rs @@ -349,6 +349,7 @@ fn system_languages_pick_the_first_one_with_a_catalog() { assert_eq!(code("system", Some("pt-BR")), "pt-BR"); assert_eq!(code("system", Some("tr_TR.UTF-8")), "tr"); assert_eq!(code("system", Some("id_ID.UTF-8")), "id"); + assert_eq!(code("system", Some("vi_VN.UTF-8")), "vi"); // Portugal's Portuguese and a bare "pt" read the Brazilian catalog. assert_eq!(code("system", Some("pt-PT")), "pt-BR"); assert_eq!(code("pt", None), "pt-BR"); @@ -417,12 +418,15 @@ fn french_and_portuguese_count_zero_as_singular() { } #[test] -fn japanese_korean_and_chinese_have_no_plural_forms() { +fn japanese_korean_chinese_and_vietnamese_have_no_plural_forms() { let code = |pref: &str, system: Option<&str>| LANGS[resolve(pref, system)].code; assert_eq!(code("system", Some("ja-JP")), "ja"); assert_eq!(code("system", Some("ko_KR.UTF-8")), "ko"); + assert_eq!(code("system", Some("vi-VN")), "vi"); assert_eq!(code("system", Some("ja,en-US")), "ja"); - for code in ["ja", "ko", "zh-Hans"] { + assert_eq!(LANGS[resolve("vi", None)].name, "Tiếng Việt"); + assert!(LANGS[resolve("vi", None)].draft); + for code in ["ja", "ko", "zh-Hans", "vi"] { let lang = LANGS.iter().position(|l| l.code == code).unwrap(); assert!(!plural_one(lang, 0) && !plural_one(lang, 1) && !plural_one(lang, 2), "{code}"); let ones: Vec<_> = LANGS[lang].ui.iter().filter(|(_, t)| matches!(t, Text::Plural { one: Some(_), .. })).map(|(k, _)| k).collect(); diff --git a/docs/localization-parity.md b/docs/localization-parity.md index 50fcd4ec..05596fa3 100644 --- a/docs/localization-parity.md +++ b/docs/localization-parity.md @@ -4,7 +4,7 @@ FigCraft's interface has a localization layer with an English catalog, a Russian catalog reviewed by a native speaker, and Spanish (with a Latin American overlay), French, German, Brazilian -Portuguese, Japanese, Korean, Simplified Chinese, Indonesian and Czech drafts (machine-drafted, +Portuguese, Japanese, Korean, Simplified Chinese, Indonesian, Vietnamese and Czech drafts (machine-drafted, waiting for native speakers' review), plus Swedish and Turkish catalogs. This page lists the twelve key languages of the craftrules standard, then the other languages Figma ships. How to add a language: [`translating.md`](translating.md). @@ -32,7 +32,7 @@ supported by both apps (CJK, Arabic and Devanagari shaping, IME); Figma has no v channel stay English. Accessibility names come from the same strings. - **Language preference:** Preferences ▸ Language (System, then each catalog by its own name: English, Čeština, Deutsch, Español, Español (Latinoamérica), Français, Bahasa Indonesia, 日本語, - 한국어, Português (Brasil), Русский, Svenska, Türkçe, 简体中文), applied at once without a + 한국어, Português (Brasil), Русский, Svenska, Türkçe, Tiếng Việt, 简体中文), applied at once without a restart; System takes the first of the OS's preferred languages that has a catalog (on Windows only the first preferred language counts, since that list also holds the languages added for a keyboard; macOS AppleLanguages, `LANGUAGE` then the locale variables on Linux and BSD; a regional @@ -53,7 +53,7 @@ supported by both apps (CJK, Arabic and Devanagari shaping, IME); Figma has no v - **Not yet localized:** messages the engine writes (errors, a few toasts, Dev Mode property values such as "inside"), number formatting (decimal points stay `.`), and decimal plural rules (`trn` takes integers: Czech uses one/few/other and Russian one/few/many; French and Brazilian - Portuguese take the singular for 0 as well; Japanese, Korean and Chinese have one form; + Portuguese take the singular for 0 as well; Japanese, Korean, Chinese and Vietnamese have one form; CLDR's "many" for millions in French, Spanish and Portuguese reads as the plural). - **Script support in documents:** Unicode bidi with Arabic shaping and mirrored brackets in text layers; right-to-left list markers and indents; right-to-left names in the layers panel, tabs @@ -96,7 +96,7 @@ supported by both apps (CJK, Arabic and Devanagari shaping, IME); Figma has no v | Japanese | ja | 2,254 / 2,272 (99.2%, draft) | yes | CJK text and IME in documents; UI text in an installed Japanese face (web: the `FIGCRAFT_EMBED_CJK` build) | no | draft | 1–2 (after native review) | | German | de | 2,176 / 2,272 (95.8%, draft) | yes | Latin; long words elide in narrow fields | no | draft | 1–2 (after native review) | | Korean | ko | 2,166 / 2,272 (95.3%, draft) | yes | Hangul text and IME in documents; UI text in an installed Korean face (web: the `FIGCRAFT_EMBED_CJK` build) | no | draft | 1–2 (after native review) | -| Vietnamese | vi | 0 (0%) | no | Latin with stacked diacritics | no | none | 3–5 | +| Vietnamese | vi | 2,352 / 2,352 (100%, draft) | yes | Latin with stacked diacritics | no | draft | 1–2 (after native review) | Other languages (measured 2026-10-17): Russian (`ru`) 2,244 / 2,272 (98.8%), reviewed and approved by VanTan, one/few/many integer plurals; Swedish (`sv`) 2,264 (99.6%), its command labels and menu @@ -113,8 +113,8 @@ right-to-left mirroring of the panels is in Arabic's hours. Total: **29–51 h** every string adds). Priority: native reviews of the drafts and the es-419 overlay (every one of Figma's languages -and variants has one, plus Simplified Chinese, Indonesian and Czech, which Figma doesn't ship), then -Hindi, Vietnamese and Arabic. Traditional Chinese is not planned (no catalog; its users see English). +and variants has one, plus Simplified Chinese, Indonesian, Vietnamese and Czech, which Figma doesn't ship), then +Hindi and Arabic. Traditional Chinese is not planned (no catalog; its users see English). ## Revision history diff --git a/docs/mcp.md b/docs/mcp.md index dfea95cc..d8fb52a7 100644 --- a/docs/mcp.md +++ b/docs/mcp.md @@ -436,7 +436,7 @@ on; `key` resolves keys the way the canvas does. Commands behind keys: - `pref.startOnHome {on?}`: the desktop app starts on the Home screen instead of in a new file (off by default; files named on the command line still open, and `--control` starts in a new file anyway, so control callers have a document). -- `pref.language {language: system|en|cs|ru|es|es-419|fr|de|pt-BR|ja|ka|ko|sv|zh-Hans|…}`: the app's interface language, applied live ("system": +- `pref.language {language: system|en|cs|ru|es|es-419|fr|de|pt-BR|ja|ka|ko|sv|vi|zh-Hans|…}`: the app's interface language, applied live ("system": the OS or browser language; a language without a catalog shows English). Command ids, labels and every result stay English. diff --git a/docs/translating.md b/docs/translating.md index eaa59755..73ee5136 100644 --- a/docs/translating.md +++ b/docs/translating.md @@ -17,7 +17,7 @@ Simplified. The catalogs: English (`en`, the source), and Spanish (`es`, with the Latin American overlay `es-419`), French (`fr`), German (`de`), Dutch (`nl`), Brazilian Portuguese (`pt-BR`), Japanese (`ja`), Korean (`ko`), Simplified Chinese (`zh-Hans`), Czech (`cs`), Indonesian (`id`), Finnish -(`fi`), Polish (`pl`) and Bengali (`bn`), machine-drafted and waiting for native speakers' review. Georgian +(`fi`), Polish (`pl`), Bengali (`bn`) and Vietnamese (`vi`), machine-drafted and waiting for native speakers' review. Georgian (`ka`) was written with AI assistance and reviewed by a native speaker, and stays a draft until a maintainer changes its status. Russian (`ru`, Русский) was reviewed and approved by VanTan; its catalog keeps Frame, Dev Mode and Smart animate as familiar @@ -61,7 +61,9 @@ formal Anda (never kamu), keeps established design terms in English (frame, laye instance, auto layout, plugin, file) and keeps a noun unchanged after a count, so its plural entries give only `other`. Georgian has no letter case (never write Mtavruli for capitals), uses verbal nouns for commands (გვერდის დამატება) and keeps a noun singular after a numeral, so counts read -"შრე: {n}" and its plural entries give the same text for `one` and `other`. +"შრე: {n}" and its plural entries give the same text for `one` and `other`. Vietnamese uses concise +imperatives for buttons and menu items (Lưu, Xóa) and keeps a noun unchanged after a count, so its +plural entries give only `other`. CJK text needs a CJK font, which egui and Inter lack: the desktop app adds an installed one when something on screen needs it (see `crates/ui-egui/src/cjk.rs`). The web build has no system fonts, @@ -80,8 +82,8 @@ picker leaves Georgian out. A new CJK or other non-Latin language also needs its set `[meta] name` and `status = "draft — needs native review"`. 2. Translate every value; keep the keys. Keep `{placeholders}` exactly, "…" where English has it, brand names and keyboard glyphs. English labels of commands: `figcraft-cli commands`. -3. Plurals: give `one` only if the language has a singular form (Japanese, Korean and Chinese give - only `other`). `other` is required; `one`, `few` and `many` are optional. `trn` picks `one` for +3. Plurals: give `one` only if the language has a singular form (Japanese, Korean, Chinese and + Vietnamese give only `other`). `other` is required; `one`, `few` and `many` are optional. `trn` picks `one` for 1 (also 0 in French and Brazilian Portuguese). Russian uses `one` for 1, 21, 31… except 11; `few` for 2–4, 22–24… except 12–14; and `many` for the other integers, including 0. Keep `{n}` in all Russian forms. Add new rules to `plural` in @@ -94,8 +96,8 @@ picker leaves Georgian out. A new CJK or other non-Latin language also needs its 4. To require full coverage, add the code to `COMPLETE` in [`crates/ui-egui/src/i18n_tests.rs`](../crates/ui-egui/src/i18n_tests.rs). Every later PR that adds a string then has to translate it into each complete language, so only Spanish is there: - French, German, Brazilian Portuguese, Japanese, Korean, Simplified Chinese, Czech, Indonesian and - Georgian are registered as drafts, Russian and Turkish are reviewed but not required, and a string added + French, German, Brazilian Portuguese, Japanese, Korean, Simplified Chinese, Czech, Indonesian, + Georgian and Vietnamese are registered as drafts, Russian and Turkish are reviewed but not required, and a string added later shows English in them until it is translated. To list what a draft lacks, add its code to `COMPLETE` locally and run the check. 5. Run the check and look at the panels in the app (longer words must fit the right panel):