diff --git a/desktop/src/ui/platform.ts b/desktop/src/ui/platform.ts index abe1899a7b8..c0443748490 100644 --- a/desktop/src/ui/platform.ts +++ b/desktop/src/ui/platform.ts @@ -353,7 +353,7 @@ export async function configurePlatform (onWorkbenchConnect?: () => Promise l.trim()) : ['en', 'ru', 'es', 'pt', 'zh', 'fr', 'cs', 'it', 'de', 'ja', 'tr'] + const languages = myBranding.languages !== undefined && myBranding.languages !== '' ? myBranding.languages.split(',').map((l) => l.trim()) : ['en', 'ru', 'es', 'pt', 'zh', 'fr', 'cs', 'it', 'de', 'ja', 'tr', 'vi'] setMetadata(uiPlugin.metadata.Languages, languages) diff --git a/dev/prod/src/platform.ts b/dev/prod/src/platform.ts index 24d1ea41abf..0313319eb69 100644 --- a/dev/prod/src/platform.ts +++ b/dev/prod/src/platform.ts @@ -514,7 +514,7 @@ export async function configurePlatform () { const languages = myBranding.languages ? myBranding.languages.split(',').map((l) => l.trim()) - : ['en', 'ru', 'es', 'pt', 'zh', 'fr', 'cs', 'it', 'de', 'ja', 'tr'] + : ['en', 'ru', 'es', 'pt', 'zh', 'fr', 'cs', 'it', 'de', 'ja', 'tr', 'vi'] setMetadata(uiPlugin.metadata.Languages, languages) diff --git a/packages/ui/lang/vi.json b/packages/ui/lang/vi.json new file mode 100644 index 00000000000..ac9315167d7 --- /dev/null +++ b/packages/ui/lang/vi.json @@ -0,0 +1,114 @@ +{ + "string": { + "EditBoxPlaceholder": "Nhập văn bản...", + "Ok": "OK", + "Cancel": "Hủy", + "Save": "Lưu", + "Publish": "Xuất bản", + "SaveDraft": "Lưu bản nháp", + "MinutesAgo": "{minutes, plural, =0 {cách đây chưa đầy một phút} =1 {cách đây một phút} other {cách đây # phút}}", + "HoursAgo": "{hours, plural, =0 {cách đây chưa đầy một giờ} =1 {cách đây một giờ} other {cách đây # giờ}}", + "DaysAgo": "{days, plural, =0 {hôm nay} =1 {hôm qua} other {cách đây # ngày}}", + "MonthsAgo": "{months, plural, =0 {tháng này} =1 {cách đây một tháng} other {cách đây # tháng}}", + "YearsAgo": "{years, plural, =0 {năm nay} =1 {cách đây một năm} other {cách đây # năm}}", + "Minutes": "{minutes, plural, =0 {chưa đầy một phút} =1 {một phút} other {# phút}}", + "Hours": "{hours, plural, =0 {chưa đầy một giờ} =1 {một giờ} other {# giờ}}", + "Days": "{days, plural, =0 {hôm nay} =1 {1 ngày} other {# ngày}}", + "Weeks": "{weeks, plural, =0 {tuần này} =1 {1 tuần} other {# tuần}}", + "Months": "{months, plural, =0 {tháng này} =1 {1 tháng} other {# tháng}}", + "Years": "{years, plural, =0 {năm nay} =1 {một năm} other {# năm}}", + "Before": "Trước", + "After": "Sau", + "MinutesShort": "{value}m", + "HoursShort": "{value}h", + "DaysShort": "{value}d", + "ShowMore": "Xem thêm", + "ShowLess": "Thu gọn", + "Search": "Tìm kiếm", + "SearchDots": "Tìm kiếm...", + "SearchResults": "Kết quả tìm kiếm", + "Suggested": "Gợi ý", + "TimeTooltip": "{value}", + "SelectDate": "Chọn ngày", + "None": "Không có", + "NotSelected": "Chưa chọn", + "Today": "Hôm nay", + "NoDate": "Không có ngày", + "StartDate": "Ngày bắt đầu", + "TargetDate": "Ngày mục tiêu", + "Overdue": "Quá hạn", + "DueDate": "Ngày đến hạn", + "AddDueDate": "Thêm ngày đến hạn", + "SetDueDate": "Đặt ngày đến hạn", + "EditDueDate": "Sửa ngày đến hạn", + "SaveDueDate": "Lưu ngày đến hạn", + "NeedsToBeCompletedByThisDate": "Cần hoàn thành trước ngày này", + "DueDatePopupTitle": "Đến hạn vào {value}", + "DueDatePopupOverdueTitle": "Đã quá hạn vào {value}", + "DueDatePopupDescription": "{value, plural, =0 {Hôm nay} =1 {Ngày mai} other {còn # ngày}}", + "DueDatePopupOverdueDescription": "{value, plural, =1 {quá hạn 1 ngày} other {quá hạn # ngày}}", + "English": "English", + "Russian": "Русский", + "Portuguese": "Português", + "Spanish": "Español", + "Chinese": "中文", + "French": "Français", + "Italian": "Italiano", + "Czech": "Čeština", + "German": "Deutsch", + "Japanese": "日本語", + "Turkish": "Türkçe", + "Vietnamese": "Tiếng Việt", + "MinutesBefore": "{minutes, plural, =1 {trước 1 phút} other {trước # phút}}", + "HoursBefore": "{hours, plural, =1 {trước 1 giờ} other {trước # giờ}}", + "DaysBefore": "{days, plural, =1 {trước 1 ngày} other {trước # ngày}}", + "WeeksBefore": "{weeks, plural, =1 {trước 1 tuần} other {trước # tuần}}", + "MonthsBefore": "{months, plural, =1 {trước 1 tháng} other {trước # tháng}}", + "MinutesAfter": "{minutes, plural, =1 {sau 1 phút} other {sau # phút}}", + "HoursAfter": "{hours, plural, =1 {sau 1 giờ} other {sau # giờ}}", + "DaysAfter": "{days, plural, =1 {sau 1 ngày} other {sau # ngày}}", + "WeeksAfter": "{weeks, plural, =1 {sau 1 tuần} other {sau # tuần}}", + "MonthsAfter": "{months, plural, =1 {sau 1 tháng} other {sau # tháng}}", + "NoActionsDefined": "Không có hành động phù hợp", + "Incoming": "Đến", + "HoursLabel": "Giờ", + "Back": "Quay lại", + "Next": "Tiếp theo", + "DropdownDefaultLabel": "Chọn mục", + "DD": "DD", + "MM": "MM", + "YYYY": "YYYY", + "HH": "HH", + "Remove": "Xóa", + "NoResults": "Không có kết quả", + "MoreCount": "Thêm {count}", + "Spacious": "Rộng rãi", + "Compact": "Gọn", + "ThemeLight": "Sáng", + "ThemeDark": "Tối", + "ThemeSystem": "Theo hệ thống", + "NoTimeZonesFound": "Không tìm thấy múi giờ", + "Selected": "Đã chọn:", + "Submit": "Gửi", + "NextStep": "Bước tiếp theo", + "TypeHere": "Nhập tại đây...", + "NormalSize": "Kích thước thường", + "FullSize": "Kích thước đầy đủ", + "UseMaxWidth": "Độ rộng tối đa", + "Sidebar": "Thanh bên", + "FontSize": "Cỡ chữ", + "Language": "Ngôn ngữ", + "DaysWOValue": "{days, plural, =1 {ngày} other {ngày}}", + "WeeksWOValue": "{weeks, plural, =1 {tuần} other {tuần}}", + "MonthsWOValue": "{months, plural, =1 {tháng} other {tháng}}", + "Filter": "Lọc", + "Clear": "Xóa", + "Yesterday": "Hôm qua", + "ThisWeek": "Tuần này", + "ThisMonth": "Tháng này", + "ThisYear": "Năm nay", + "EmojiStyle": "Kiểu Emoji", + "EmojiSystem": "Mặc định hệ thống", + "EmojiNoto": "Noto Color" + } +} \ No newline at end of file diff --git a/packages/ui/src/components/internal/SettingsPopup.svelte b/packages/ui/src/components/internal/SettingsPopup.svelte index d89e47a5eb4..054b159d832 100644 --- a/packages/ui/src/components/internal/SettingsPopup.svelte +++ b/packages/ui/src/components/internal/SettingsPopup.svelte @@ -79,7 +79,8 @@ { id: 'it', label: ui.string.Italian, logo: '🇮🇹' }, { id: 'cs', label: ui.string.Czech, logo: '🇨🇿' }, { id: 'de', label: ui.string.German, logo: '🇩🇪' }, - { id: 'ja', label: ui.string.Japanese, logo: '🇯🇵' } + { id: 'ja', label: ui.string.Japanese, logo: '🇯🇵' }, + { id: 'vi', label: ui.string.Vietnamese, logo: '🇻🇳' } ].filter((lang) => uiLangs.has(lang.id)) if (langs.findIndex((l) => l.id === $currentLanguage) < 0 && langs.length !== 0) { diff --git a/packages/ui/src/plugin.ts b/packages/ui/src/plugin.ts index 6e38e186e9b..a20fb4a266e 100644 --- a/packages/ui/src/plugin.ts +++ b/packages/ui/src/plugin.ts @@ -82,6 +82,7 @@ export const uis = plugin(uiId, { Czech: '' as IntlString, German: '' as IntlString, Japanese: '' as IntlString, + Vietnamese: '' as IntlString, MinutesBefore: '' as IntlString, HoursBefore: '' as IntlString, DaysBefore: '' as IntlString,