Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions electron/i18n.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,14 @@ import commonKo from "../src/i18n/locales/ko-KR/common.json";
import dialogsKo from "../src/i18n/locales/ko-KR/dialogs.json";
import commonTr from "../src/i18n/locales/tr/common.json";
import dialogsTr from "../src/i18n/locales/tr/dialogs.json";
import commonVi from "../src/i18n/locales/vi/common.json";
import dialogsVi from "../src/i18n/locales/vi/dialogs.json";
import commonZh from "../src/i18n/locales/zh-CN/common.json";
import dialogsZh from "../src/i18n/locales/zh-CN/dialogs.json";
import commonZhTw from "../src/i18n/locales/zh-TW/common.json";
import dialogsZhTw from "../src/i18n/locales/zh-TW/dialogs.json";

type Locale = "en" | "zh-CN" | "zh-TW" | "es" | "fr" | "ja-JP" | "ko-KR" | "tr";
type Locale = "en" | "zh-CN" | "zh-TW" | "es" | "fr" | "ja-JP" | "ko-KR" | "tr" | "vi";
type Namespace = "common" | "dialogs";
type MessageMap = Record<string, unknown>;

Expand All @@ -31,6 +33,7 @@ const messages: Record<Locale, Record<Namespace, MessageMap>> = {
"ja-JP": { common: commonJa, dialogs: dialogsJa },
"ko-KR": { common: commonKo, dialogs: dialogsKo },
tr: { common: commonTr, dialogs: dialogsTr },
vi: { common: commonVi, dialogs: dialogsVi },
};

let currentLocale: Locale = "en";
Expand All @@ -44,7 +47,8 @@ export function setMainLocale(locale: string) {
locale === "fr" ||
locale === "ja-JP" ||
locale === "ko-KR" ||
locale === "tr"
locale === "tr" ||
locale === "vi"
) {
currentLocale = locale;
}
Expand Down
30 changes: 30 additions & 0 deletions src/i18n/locales/vi/common.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"actions": {
"cancel": "Hủy",
"save": "Lưu",
"delete": "Xóa",
"close": "Đóng",
"share": "Chia sẻ",
"done": "Hoàn tất",
"open": "Mở",
"upload": "Tải lên",
"export": "Xuất",
"showInFolder": "Hiển thị trong thư mục",
"file": "Tệp",
"edit": "Chỉnh sửa",
"view": "Xem",
"window": "Cửa sổ",
"quit": "Thoát",
"stopRecording": "Dừng ghi hình"
},
"playback": {
"play": "Phát",
"pause": "Tạm dừng",
"fullscreen": "Toàn màn hình",
"exitFullscreen": "Thoát toàn màn hình"
},
"locale": {
"name": "Tiếng Việt",
"short": "VI"
}
}
70 changes: 70 additions & 0 deletions src/i18n/locales/vi/dialogs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
{
"export": {
"complete": "Xuất hoàn tất",
"yourFormatReady": "{{format}} của bạn đã sẵn sàng",
"showInFolder": "Hiển thị trong thư mục",
"finalizingVideo": "Đang hoàn tất xuất video...",
"compilingGifProgress": "Đang biên dịch GIF... {{progress}}%",
"compilingGifWait": "Đang biên dịch GIF... Có thể mất một lúc",
"takeMoment": "Có thể mất một chút thời gian...",
"failed": "Xuất thất bại",
"tryAgain": "Vui lòng thử lại",
"finalizingVideoTitle": "Hoàn tất video",
"compilingGif": "Biên dịch GIF",
"exportingFormat": "Đang xuất {{format}}",
"compiling": "Đang biên dịch",
"renderingFrames": "Kết xuất khung hình",
"processing": "Đang xử lý...",
"finalizing": "Đang hoàn tất...",
"compilingStatus": "Đang biên dịch...",
"status": "Trạng thái",
"format": "Định dạng",
"frames": "Khung hình",
"cancelExport": "Hủy xuất",
"savedSuccessfully": "Đã lưu {{format}} thành công!"
},
"tutorial": {
"triggerLabel": "Cách hoạt động của công cụ cắt",
"title": "Cách cắt video",
"description": "Hiểu cách cắt bỏ các phần không mong muốn trong video của bạn.",
"explanationBefore": "Công cụ Cắt hoạt động bằng cách xác định các đoạn bạn muốn",
"remove": "xóa",
"explanationMiddle": " — bất cứ thứ gì",
"covered": "được bao phủ",
"explanationAfter": "bởi một đoạn cắt màu đỏ sẽ bị loại bỏ khi bạn xuất.",
"visualExample": "Ví dụ trực quan",
"removed": "ĐÃ XÓA",
"kept": "Giữ lại",
"part1": "Phần 1",
"part2": "Phần 2",
"part3": "Phần 3",
"finalVideo": "Video cuối cùng",
"step1Title": "1. Thêm đoạn cắt",
"step1DescriptionBefore": "Nhấn ",
"step1DescriptionAfter": " hoặc nhấp vào biểu tượng cái kéo để đánh dấu một phần cần xóa.",
"step2Title": "2. Điều chỉnh",
"step2Description": "Kéo các cạnh của vùng màu đỏ để bao phủ chính xác những gì bạn muốn cắt bỏ."
},
"unsavedChanges": {
"title": "Thay đổi chưa được lưu",
"message": "Bạn có các thay đổi chưa được lưu.",
"detail": "Bạn có muốn lưu dự án của mình trước khi đóng không?",
"saveAndClose": "Lưu & Đóng",
"discardAndClose": "Bỏ qua & Đóng",
"loadProject": "Tải dự án…",
"saveProject": "Lưu dự án…",
"saveProjectAs": "Lưu dự án thành…"
},
"fileDialogs": {
"saveGif": "Lưu GIF đã xuất",
"saveVideo": "Lưu Video đã xuất",
"selectVideo": "Chọn tệp video",
"saveProject": "Lưu dự án OpenScreen",
"openProject": "Mở dự án OpenScreen",
"gifImage": "Hình ảnh GIF",
"mp4Video": "Video MP4",
"videoFiles": "Tệp Video",
"openscreenProject": "Dự án OpenScreen",
"allFiles": "Tất cả các tệp"
}
}
45 changes: 45 additions & 0 deletions src/i18n/locales/vi/editor.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{
"newRecording": {
"title": "Quay lại Trình ghi",
"description": "Phiên hiện tại của bạn đã được lưu.",
"cancel": "Hủy",
"confirm": "Xác nhận"
},
"loadingVideo": "Đang tải video...",
"errors": {
"noVideoLoaded": "Chưa tải video nào",
"videoNotReady": "Video chưa sẵn sàng",
"unableToDetermineSourcePath": "Không thể xác định đường dẫn video gốc",
"failedToSaveGif": "Không thể lưu GIF",
"gifExportFailed": "Xuất GIF thất bại",
"failedToSaveVideo": "Không thể lưu video",
"exportFailed": "Xuất thất bại",
"exportFailedWithError": "Xuất thất bại: {{error}}",
"exportBackgroundLoadFailed": "Xuất thất bại: không thể tải hình nền ({{url}})",
"failedToSaveExport": "Không thể lưu bản xuất",
"failedToSaveExportedVideo": "Không thể lưu video đã xuất",
"failedToRevealInFolder": "Lỗi khi hiển thị trong thư mục: {{error}}"
},
"export": {
"canceled": "Đã hủy xuất",
"exportedSuccessfully": "Đã xuất {{format}} thành công"
},
"project": {
"saveCanceled": "Đã hủy lưu dự án",
"failedToSave": "Lưu dự án thất bại",
"savedTo": "Đã lưu dự án vào {{path}}",
"failedToLoad": "Tải dự án thất bại",
"invalidFormat": "Định dạng tệp dự án không hợp lệ",
"loadedFrom": "Đã tải dự án từ {{path}}"
},
"recording": {
"failedCameraAccess": "Yêu cầu quyền truy cập máy ảnh thất bại.",
"cameraBlocked": "Quyền truy cập máy ảnh bị chặn. Hãy bật nó trong cài đặt hệ thống để sử dụng webcam.",
"systemAudioUnavailable": "Âm thanh hệ thống không khả dụng. Ghi hình không có âm thanh hệ thống.",
"microphoneDenied": "Quyền truy cập micro bị từ chối. Sẽ tiếp tục ghi hình không có âm thanh.",
"cameraDenied": "Quyền truy cập máy ảnh bị từ chối. Sẽ tiếp tục ghi hình không có webcam.",
"cameraDisconnected": "Webcam bị ngắt kết nối.",
"cameraNotFound": "Không tìm thấy máy ảnh.",
"permissionDenied": "Quyền ghi hình bị từ chối. Vui lòng cho phép ghi màn hình."
}
}
43 changes: 43 additions & 0 deletions src/i18n/locales/vi/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
{
"tooltips": {
"hideHUD": "Ẩn HUD",
"closeApp": "Đóng ứng dụng",
"restartRecording": "Khởi động lại ghi hình",
"cancelRecording": "Hủy ghi hình",
"pauseRecording": "Tạm dừng ghi hình",
"resumeRecording": "Tiếp tục ghi hình",
"openVideoFile": "Mở tệp video",
"openProject": "Mở dự án"
},
"audio": {
"enableSystemAudio": "Bật âm thanh hệ thống",
"disableSystemAudio": "Tắt âm thanh hệ thống",
"enableMicrophone": "Bật micro",
"disableMicrophone": "Tắt micro",
"defaultMicrophone": "Micro Mặc định"
},
"webcam": {
"enableWebcam": "Bật webcam",
"disableWebcam": "Tắt webcam",
"defaultCamera": "Máy ảnh Mặc định",
"searching": "Đang tìm kiếm...",
"noneFound": "Không tìm thấy máy ảnh",
"unavailable": "Máy ảnh không khả dụng"
},
"sourceSelector": {
"loading": "Đang tải nguồn...",
"screens": "Màn hình ({{count}})",
"windows": "Cửa sổ ({{count}})",
"defaultSourceName": "Màn hình"
},
"recording": {
"selectSource": "Vui lòng chọn một nguồn để ghi"
},
"language": "Ngôn ngữ",
"systemLanguagePrompt": {
"title": "Sử dụng ngôn ngữ hệ thống của bạn?",
"description": "Chúng tôi phát hiện {{language}} là ngôn ngữ hệ thống của bạn. Bạn có muốn chuyển OpenScreen sang {{language}} không?",
"switch": "Chuyển sang {{language}}",
"keepDefault": "Giữ ngôn ngữ hiện tại"
}
}
Loading
Loading