manhteky123 commited on
Commit
cc67c6c
·
verified ·
1 Parent(s): 60f878e

Upload 214 files

Browse files
apps/web/index.html CHANGED
@@ -3,30 +3,30 @@
3
  <head>
4
  <meta charset="utf-8" />
5
  <!-- 基本 SEO Meta 标签 (中文) -->
6
- <title>Drawnix - 开源白板工具</title>
7
- <meta name="description" content="Drawnix 是一款强大的开源白板工具(https://github.com/plait-board/drawnix),集成思维导图、流程图等功能。基于 Plait 框架开发,支持插件扩展,提供自动保存、无限画布等特性。Draw Beyond, Rise Above.">
8
- <meta name="keywords" content="Drawnix,白板工具,白板,思维导图,流程图,开源白板,开源思维导图,在线绘图,在线白板,协作工具,协作白板,Plait 框架">
9
  <!-- 基本 SEO Meta 标签 (English) -->
10
- <meta name="description" lang="en" content="Drawnix is a powerful open-source whiteboard tool featuring mind mapping and flowchart capabilities. Built on the Plait framework, it offers plugin extensibility, auto-save, infinite canvas, and more. Draw Beyond, Rise Above.">
11
- <meta name="keywords" lang="en" content="Drawnix,whiteboard tool, whiteboard,mind mapping,flowchart,open source whiteboard, open source mind mapping,online drawing,collaboration tool, collaboration whiteboard,Plait framework">
12
  <!-- 基本 SEO Meta 标签 (Русский) -->
13
- <meta name="description" lang="ru" content="Drawnix — это виртуальная доска с открытым исходным кодом, позволяющая строить mind-карты и блок-схемы. Написанный на основе фреймворка Plait, он имеет возможности расширения плагинами, автосохранения, бесконечного холта и многое другое. Draw Beyond, Rise Above.">
14
- <meta name="keywords" lang="ru" content="Drawnix,доска,виртуальная доска,mind-карты,интеллект-карты,карты мыслей,блоксхемы,блок-схемы,open source доска,доска с открытым кодом,open source mind-карты,mind-карты с открытым кодом,онлайн-рисование,рисовалка онлайн,совместная работа,доска для совместной работы,электронная доска для совместной работы,Plait framework,фреймворк Plait">
15
  <!-- Open Graph Meta 标签 (中文) -->
16
- <meta property="og:title" content="Drawnix - 开源白板工具 | 思维导图 | 流程图 | 白板 | 协作白板">
17
- <meta property="og:description" content="一体化开源白板工具(在线白板 | 协作白板),支持思维导图、流程图,基于 Plait 框��开发">
18
  <meta property="og:type" content="website">
19
  <meta property="og:url" content="https://drawnix.com">
20
- <meta property="og:site_name" content="Drawnix">
21
  <!-- Open Graph Meta 标签 (English) -->
22
- <meta property="og:title" lang="en" content="Drawnix - Open Source Whiteboard | Mind Mapping | Flowchart | Whiteboard | Collaboration Whiteboard">
23
- <meta property="og:description" lang="en" content="An integrated open-source whiteboard tool(online whiteboard | collaboration whiteboard) supporting mind mapping and flowcharts, built on the Plait framework">
24
  <!-- Open Graph Meta 标签 (Русский) -->
25
- <meta property="og:title" lang="ru" content="Drawnix - Доска с открытым кодом | Mind-карты | Блок-схемы | Электронная доска для совместной работы">
26
- <meta property="og:description" lang="ru" content="Интегрированная доска с открытым исходным кодом (онлайн доска | доска для совеместной работы), поддерживающая создание mind-карт и блок-схем, построенная на основе фреймворка Plait">
27
  <!-- Twitter Card Meta 标签 (English) -->
28
  <meta name="twitter:card" content="summary_large_image">
29
- <meta name="twitter:title" content="Drawnix - Open Source Whiteboard | Mind Mapping | Flowchart | Whiteboard | Collaboration Whiteboard">
30
  <meta name="twitter:description" content="An integrated open-source whiteboard tool(online whiteboard | collaboration whiteboard) supporting mind mapping and flowcharts, built on the Plait framework">
31
  <!-- 其他重要 Meta 标签 -->
32
  <meta name="robots" content="index, follow">
@@ -42,12 +42,12 @@
42
  {
43
  "@context": "https://schema.org",
44
  "@type": "SoftwareApplication",
45
- "name": "Drawnix",
46
- "alternateName": ["开源白板工具", "Open Source Whiteboard Tool"],
47
  "description": {
48
- "zh-CN": "Drawnix 是一款强大的开源白板工具,集成思维导图、流程图等功能。基于 Plait 框架开发,支持插件扩展,提供自动保存、无限画布等特性。",
49
- "en": "Drawnix is a powerful open-source whiteboard tool featuring mind mapping and flowchart capabilities. Built on the Plait framework, it offers plugin extensibility, auto-save, infinite canvas, and more.",
50
- "ru": "Drawnix — это мощная виртуальная доска с открытым исходным кодом, позволяющая строить mind-карты и блок-схемы. Написанный на основе фреймворка Plait, он имеет возможности расширения плагинами, автосохранения, бесконечного холта и многое другое."
51
  },
52
  "url": "https://drawnix.com",
53
  "applicationCategory": "DesignApplication",
@@ -59,7 +59,7 @@
59
  },
60
  "creator": {
61
  "@type": "Organization",
62
- "name": "Drawnix Team"
63
  },
64
  "keywords": ["доска", "электронная доска", "mind-карты", "блок-схемы", "диаграммы", "whiteboard", "mind mapping", "flowchart", "open source", "思维导图", "流程图", "白板"],
65
  "inLanguage": ["zh-CN", "en", "ru"],
 
3
  <head>
4
  <meta charset="utf-8" />
5
  <!-- 基本 SEO Meta 标签 (中文) -->
6
+ <title>NgocAnh - Công cụ bảng trắng mã nguồn mở</title>
7
+ <meta name="description" content="NgocAnh là một công cụ bảng trắng mã nguồn mở mạnh mẽ (https://github.com/plait-board/drawnix), tích hợp chức năng sơ đồ tư duy, sơ đồ luồng. Được phát triển dựa trên framework Plait, hỗ trợ mở rộng plugin, cung cấp tự động lưu, canvas vô hạn và nhiều tính năng khác. Vẽ vượt xa, vươn lên cao."
8
+ <meta name="keywords" content="NgocAnh,công cụ bảng trắng,bảng trắng,sơ đồ tư duy,sơ đồ luồng,bảng trắng mã nguồn mở,sơ đồ tư duy mã nguồn mở,vẽ trực tuyến,bảng trắng trực tuyến,công cụ cộng tác,bảng trắng cộng tác,Plait framework">
9
  <!-- 基本 SEO Meta 标签 (English) -->
10
+ <meta name="description" lang="en" content="NgocAnh is a powerful open-source whiteboard tool featuring mind mapping and flowchart capabilities. Built on the Plait framework, it offers plugin extensibility, auto-save, infinite canvas, and more. Draw Beyond, Rise Above."
11
+ <meta name="keywords" lang="en" content="NgocAnh,whiteboard tool, whiteboard,mind mapping,flowchart,open source whiteboard, open source mind mapping,online drawing,collaboration tool, collaboration whiteboard,Plait framework">
12
  <!-- 基本 SEO Meta 标签 (Русский) -->
13
+ <meta name="description" lang="ru" content="NgocAnh — это виртуальная доска с открытым исходным кодом, позволяющая строить mind-карты и блок-схемы. Написанный на основе фреймворка Plait, он имеет возможности расширения плагинами, автосохранения, бесконечного холта и многое другое. Draw Beyond, Rise Above."
14
+ <meta name="keywords" lang="ru" content="NgocAnh,доска,виртуальная доска,mind-карты,интеллект-карты,карты мыслей,блоксхемы,блок-схемы,open source доска,доска с открытым кодом,open source mind-карты,mind-карты с открытым кодом,онлайн-рисование,рисовалка онлайн,совместная работа,доска для совместной работы,электронная доска для совместной работы,Plait framework,фреймворк Plait">
15
  <!-- Open Graph Meta 标签 (中文) -->
16
+ <meta property="og:title" content="NgocAnh - Công cụ bảng trắng mã nguồn mở | đồ tư duy | đồ luồng | Bảng trắng | Bảng trắng cộng tác">
17
+ <meta property="og:description" content="Công cụ bảng trắng mã nguồn mở tích hợp (bảng trắng trực tuyến | bảng trắng cộng tác), hỗ trợ sơ đồ tư duy, sơ đồ luồng, được phát triển dựa trên framework Plait">
18
  <meta property="og:type" content="website">
19
  <meta property="og:url" content="https://drawnix.com">
20
+ <meta property="og:site_name" content="NgocAnh">
21
  <!-- Open Graph Meta 标签 (English) -->
22
+ <meta property="og:title" lang="en" content="Ngocanh - Open Source Whiteboard | Mind Mapping | Flowchart | Whiteboard | Collaboration Whiteboard"
23
+ <meta property="og:description" lang="en" content="An integrated open-source whiteboard tool(online whiteboard | collaboration whiteboard) supporting mind mapping and flowcharts, built on the Plait framework"
24
  <!-- Open Graph Meta 标签 (Русский) -->
25
+ <meta property="og:title" lang="ru" content="Ngocanh - Открытая виртуальная доска | Mind-карты | Блок-схемы | Доска | Коллаборативная доска"
26
+ <meta property="og:description" lang="ru" content="Интегрированный инструмент виртуальной доски с открытым исходным кодом (онлайн-доска | коллаборативная доска), поддерживающий mind-карты и блок-схемы, построенный на фреймворке Plait"
27
  <!-- Twitter Card Meta 标签 (English) -->
28
  <meta name="twitter:card" content="summary_large_image">
29
+ <meta name="twitter:title" content="Ngocanh - Công cụ bảng trắng mã nguồn mở | đồ tư duy | đồ luồng | Bảng trắng | Bảng trắng cộng tác"
30
  <meta name="twitter:description" content="An integrated open-source whiteboard tool(online whiteboard | collaboration whiteboard) supporting mind mapping and flowcharts, built on the Plait framework">
31
  <!-- 其他重要 Meta 标签 -->
32
  <meta name="robots" content="index, follow">
 
42
  {
43
  "@context": "https://schema.org",
44
  "@type": "SoftwareApplication",
45
+ "name": "Ngocanh",
46
+ "alternateName": ["Công cụ bảng trắng mã nguồn mở", "Open Source Whiteboard Tool"],
47
  "description": {
48
+ "zh-CN": "Ngocanh một công cụ bảng trắng mã nguồn mở mạnh mẽ, tích hợp chức năng sơ đồ tư duy, sơ đồ luồng. Được phát triển dựa trên framework Plait, hỗ trợ mở rộng plugin, cung cấp tự động lưu, canvas vô hạn và nhiều tính năng khác.",
49
+ "en": "Ngocanh is a powerful open-source whiteboard tool featuring mind mapping and flowchart capabilities. Built on the Plait framework, it offers plugin extensibility, auto-save, infinite canvas, and more.",
50
+ "ru": "Ngocanh — это мощная виртуальная доска с открытым исходным кодом, позволяющая строить mind-карты и блок-схемы. Написанный на основе фреймворка Plait, он имеет возможности расширения плагинами, автосохранения, бесконечного холта и многое другое."
51
  },
52
  "url": "https://drawnix.com",
53
  "applicationCategory": "DesignApplication",
 
59
  },
60
  "creator": {
61
  "@type": "Organization",
62
+ "name": "Ngocanh Team"
63
  },
64
  "keywords": ["доска", "электронная доска", "mind-карты", "блок-схемы", "диаграммы", "whiteboard", "mind mapping", "flowchart", "open source", "思维导图", "流程图", "白板"],
65
  "inLanguage": ["zh-CN", "en", "ru"],
packages/drawnix/src/components/toolbar/app-toolbar/language-switcher-menu.tsx CHANGED
@@ -60,6 +60,15 @@ export const LanguageSwitcherMenu = () => {
60
  selected={language === 'ar'}
61
  >{t('language.arabic')}
62
  </MenuItem>
 
 
 
 
 
 
 
 
 
63
  </Menu>
64
  }
65
  aria-label={t('language.switcher')}
 
60
  selected={language === 'ar'}
61
  >{t('language.arabic')}
62
  </MenuItem>
63
+ <MenuItem
64
+ onSelect={() => {
65
+ setLanguage('vi');
66
+ }}
67
+ aria-label={t('language.vietnamese')}
68
+ selected={language === 'vi'}
69
+ >
70
+ {t('language.vietnamese')}
71
+ </MenuItem>
72
  </Menu>
73
  }
74
  aria-label={t('language.switcher')}
packages/drawnix/src/i18n/index.tsx CHANGED
@@ -1,5 +1,5 @@
1
  import React, { createContext, useContext, useState, useMemo } from 'react';
2
- import { zhTranslations, enTranslations, ruTranslations,arTranslations } from './translations';
3
  import { Language, Translations, I18nContextType, I18nProviderProps } from './types';
4
 
5
  // Translation data
@@ -7,7 +7,8 @@ const translations: Record<Language, Translations> = {
7
  zh: zhTranslations,
8
  en: enTranslations,
9
  ru: ruTranslations,
10
- ar:arTranslations
 
11
  };
12
 
13
  // Create the context
@@ -15,7 +16,7 @@ const I18nContext = createContext<I18nContextType | undefined>(undefined);
15
 
16
  export const I18nProvider: React.FC<I18nProviderProps> = ({
17
  children,
18
- defaultLanguage = 'zh',
19
  }) => {
20
 
21
  const [language, setLanguageState] = useState<Language>(() => {
 
1
  import React, { createContext, useContext, useState, useMemo } from 'react';
2
+ import { zhTranslations, enTranslations, ruTranslations, arTranslations, viTranslations } from './translations';
3
  import { Language, Translations, I18nContextType, I18nProviderProps } from './types';
4
 
5
  // Translation data
 
7
  zh: zhTranslations,
8
  en: enTranslations,
9
  ru: ruTranslations,
10
+ ar: arTranslations,
11
+ vi: viTranslations
12
  };
13
 
14
  // Create the context
 
16
 
17
  export const I18nProvider: React.FC<I18nProviderProps> = ({
18
  children,
19
+ defaultLanguage = 'vi',
20
  }) => {
21
 
22
  const [language, setLanguageState] = useState<Language>(() => {
packages/drawnix/src/i18n/translations/ar.ts CHANGED
@@ -65,14 +65,13 @@ const arTranslations: Translations = {
65
  "general.duplicate": "تكرار",
66
  "general.delete": "حذف",
67
 
68
- // Language
69
- "language.switcher": "اللغة",
70
- "language.chinese": "中文",
71
- "language.english": "English",
72
- "language.russian": "Русский",
73
- "language.arabic": "عربي",
74
-
75
- // Menu items
76
  "menu.open": "فتح",
77
  "menu.saveFile": "حفظ الملف",
78
  "menu.exportImage": "تصدير صورة",
 
65
  "general.duplicate": "تكرار",
66
  "general.delete": "حذف",
67
 
68
+ // Language
69
+ "language.switcher": "اللغة",
70
+ "language.chinese": "中文",
71
+ "language.english": "English",
72
+ "language.russian": "Русский",
73
+ "language.arabic": "عربي",
74
+ "language.vietnamese": "Tiếng Việt", // Menu items
 
75
  "menu.open": "فتح",
76
  "menu.saveFile": "حفظ الملف",
77
  "menu.exportImage": "تصدير صورة",
packages/drawnix/src/i18n/translations/en.ts CHANGED
@@ -71,6 +71,7 @@ const enTranslations: Translations = {
71
  'language.english': 'English',
72
  'language.russian': 'Русский',
73
  'language.arabic': 'عربي',
 
74
  // Menu items
75
  'menu.open': 'Open',
76
  'menu.saveFile': 'Save File',
 
71
  'language.english': 'English',
72
  'language.russian': 'Русский',
73
  'language.arabic': 'عربي',
74
+ 'language.vietnamese': 'Tiếng Việt',
75
  // Menu items
76
  'menu.open': 'Open',
77
  'menu.saveFile': 'Save File',
packages/drawnix/src/i18n/translations/index.ts CHANGED
@@ -2,5 +2,6 @@ import zhTranslations from './zh';
2
  import enTranslations from './en';
3
  import ruTranslations from './ru';
4
  import arTranslations from './ar';
 
5
 
6
- export { zhTranslations, enTranslations, ruTranslations,arTranslations };
 
2
  import enTranslations from './en';
3
  import ruTranslations from './ru';
4
  import arTranslations from './ar';
5
+ import viTranslations from './vi';
6
 
7
+ export { zhTranslations, enTranslations, ruTranslations, arTranslations, viTranslations };
packages/drawnix/src/i18n/translations/ru.ts CHANGED
@@ -71,6 +71,7 @@ const ruTranslations: Translations = {
71
  'language.english': 'English',
72
  'language.russian': 'Русский',
73
  'language.arabic': 'عربي',
 
74
 
75
  // Menu items
76
  'menu.open': 'Открыть',
 
71
  'language.english': 'English',
72
  'language.russian': 'Русский',
73
  'language.arabic': 'عربي',
74
+ 'language.vietnamese': 'Tiếng Việt',
75
 
76
  // Menu items
77
  'menu.open': 'Открыть',
packages/drawnix/src/i18n/translations/vi.ts ADDED
@@ -0,0 +1,174 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Translations } from '../types';
2
+
3
+ const viTranslations: Translations = {
4
+ // Toolbar items
5
+ 'toolbar.hand': 'Bàn tay',
6
+ 'toolbar.selection': 'Lựa chọn',
7
+ 'toolbar.mind': 'Sơ đồ tư duy',
8
+ 'toolbar.text': 'Văn bản',
9
+ 'toolbar.arrow': 'Mũi tên',
10
+ 'toolbar.shape': 'Hình dạng',
11
+ 'toolbar.image': 'Hình ảnh',
12
+ 'toolbar.extraTools': 'Công cụ mở rộng',
13
+
14
+ 'toolbar.pen': 'Bút',
15
+ 'toolbar.eraser': 'Tẩy',
16
+
17
+ 'toolbar.arrow.straight': 'Thẳng',
18
+ 'toolbar.arrow.elbow': 'Góc vuông',
19
+ 'toolbar.arrow.curve': 'Cong',
20
+
21
+ 'toolbar.shape.rectangle': 'Hình chữ nhật — R',
22
+ 'toolbar.shape.ellipse': 'Hình elip — O',
23
+ 'toolbar.shape.triangle': 'Tam giác',
24
+ 'toolbar.shape.terminal': 'Đầu cuối',
25
+ 'toolbar.shape.diamond': 'Hình thoi',
26
+ 'toolbar.shape.parallelogram': 'Hình bình hành',
27
+ 'toolbar.shape.roundRectangle': 'Hình chữ nhật bo góc',
28
+
29
+ // Zoom controls
30
+ 'zoom.in': 'Phóng to — Cmd++',
31
+ 'zoom.out': 'Thu nhỏ — Cmd+-',
32
+ 'zoom.fit': 'Vừa màn hình',
33
+ 'zoom.100': 'Phóng to 100%',
34
+
35
+ // Themes
36
+ 'theme.default': 'Mặc định',
37
+ 'theme.colorful': 'Nhiều màu',
38
+ 'theme.soft': 'Nhẹ nhàng',
39
+ 'theme.retro': 'Hoài cổ',
40
+ 'theme.dark': 'Tối',
41
+ 'theme.starry': 'Sao trời',
42
+
43
+ // Colors
44
+ 'color.none': 'Màu chủ đề',
45
+ 'color.unknown': 'Màu khác',
46
+ 'color.default': 'Đen cơ bản',
47
+ 'color.white': 'Trắng',
48
+ 'color.gray': 'Xám',
49
+ 'color.deepBlue': 'Xanh đậm',
50
+ 'color.red': 'Đỏ',
51
+ 'color.green': 'Xanh lá',
52
+ 'color.yellow': 'Vàng',
53
+ 'color.purple': 'Tím',
54
+ 'color.orange': 'Cam',
55
+ 'color.pastelPink': 'Hồng nhạt',
56
+ 'color.cyan': 'Xanh lơ',
57
+ 'color.brown': 'Nâu',
58
+ 'color.forestGreen': 'Xanh rừng',
59
+ 'color.lightGray': 'Xám nhạt',
60
+
61
+ // General
62
+ 'general.undo': 'Hoán tác',
63
+ 'general.redo': 'Làm lại',
64
+ 'general.menu': 'Menu ứng dụng',
65
+ 'general.duplicate': 'Nhân bản',
66
+ 'general.delete': 'Xóa',
67
+
68
+ // Language
69
+ 'language.switcher': 'Ngôn ngữ',
70
+ 'language.chinese': '中文',
71
+ 'language.english': 'English',
72
+ 'language.russian': 'Русский',
73
+ 'language.arabic': 'عربي',
74
+ 'language.vietnamese': 'Tiếng Việt',
75
+
76
+ // Menu items
77
+ 'menu.open': 'Mở',
78
+ 'menu.saveFile': 'Lưu tệp',
79
+ 'menu.exportImage': 'Xuất hình ảnh',
80
+ 'menu.exportImage.png': 'PNG',
81
+ 'menu.exportImage.jpg': 'JPG',
82
+ 'menu.cleanBoard': 'Xóa bảng',
83
+ 'menu.github': 'GitHub',
84
+
85
+ // Dialog translations
86
+ 'dialog.mermaid.title': 'Mermaid sang NgocAnh',
87
+ 'dialog.mermaid.description': 'Hiện tại hỗ trợ',
88
+ 'dialog.mermaid.flowchart': 'sơ đồ luồng',
89
+ 'dialog.mermaid.sequence': 'sơ đồ trình tự',
90
+ 'dialog.mermaid.class': 'sơ đồ lớp',
91
+ 'dialog.mermaid.otherTypes': 'và các loại khác',
92
+ 'dialog.mermaid.syntax': 'Cú pháp Mermaid',
93
+ 'dialog.mermaid.placeholder': 'Nhập cú pháp Mermaid của bạn ở đây...',
94
+ 'dialog.mermaid.preview': 'Xem trước',
95
+ 'dialog.mermaid.insert': 'Chèn',
96
+ 'dialog.markdown.description': 'Chuyển đổi Markdown thành sơ đồ tư duy',
97
+ 'dialog.markdown.syntax': 'Cú pháp Markdown',
98
+ 'dialog.markdown.placeholder': 'Nhập nội dung Markdown của bạn ở đây...',
99
+ 'dialog.markdown.preview': 'Xem trước',
100
+ 'dialog.markdown.insert': 'Chèn',
101
+ 'dialog.error.loadMermaid': 'Lỗi khi tải thư viện Mermaid',
102
+
103
+ // Extra tools menu items
104
+ 'extraTools.mermaidToDrawnix': 'Mermaid sang NgocAnh',
105
+ 'extraTools.markdownToDrawnix': 'Markdown sang NgocAnh',
106
+
107
+ // Clean confirm dialog
108
+ 'cleanConfirm.title': 'Xóa bảng',
109
+ 'cleanConfirm.description': 'Điều này sẽ xóa toàn bộ bảng. Bạn có muốn tiếp tục?',
110
+ 'cleanConfirm.cancel': 'Hủy',
111
+ 'cleanConfirm.ok': 'Đồng ý',
112
+
113
+ // Link popup items
114
+ 'popupLink.delLink': 'Xóa liên kết',
115
+
116
+ // Tool popup items
117
+ 'popupToolbar.fillColor': 'Màu tô',
118
+ 'popupToolbar.fontColor': 'Màu phông',
119
+ 'popupToolbar.link': 'Chèn liên kết',
120
+ 'popupToolbar.stroke': 'Đường viền',
121
+
122
+ // Text placeholders
123
+ 'textPlaceholders.link': 'Liên kết',
124
+ 'textPlaceholders.text': 'Văn bản',
125
+
126
+ // Line tool
127
+ 'line.source': 'Nguồn',
128
+ 'line.target': 'Đích',
129
+ 'line.arrow': 'Mũi tên',
130
+ 'line.none': 'Không có',
131
+
132
+ // Stroke style
133
+ 'stroke.solid': 'Đặc',
134
+ 'stroke.dashed': 'Gạch đứt',
135
+ 'stroke.dotted': 'Chấm',
136
+
137
+ // Markdown example
138
+ 'markdown.example': `# Tiêu đề chính 🚀
139
+
140
+ ## Tiêu đề phụ ✨
141
+
142
+ ### Danh sách công việc 📝
143
+
144
+ - [ ] Nhiệm vụ 1
145
+ - [x] Nhiệm vụ hoàn thành ✅
146
+ - [ ] Nhiệm vụ quan trọng ⭐
147
+ - [ ] Nhiệm vụ con
148
+ - nếu thấy điều này
149
+ - thì đừng động vào nó 🛑 ✋
150
+ - 👾 💥 🏹 🎯
151
+
152
+ ## Trai hay gái 👶 ❓ 🤷 ♂️ ♀️
153
+
154
+ ### Xin chào thế giới 👋 🌍 ✨ 💻
155
+
156
+ #### Wow, một lập trình viên 🤯 ⌨️ 💡 👩 💻`,
157
+
158
+ // Draw elements text
159
+ 'draw.lineText': 'Văn bản',
160
+ 'draw.geometryText': 'Văn bản',
161
+
162
+ // Mind map elements text
163
+ 'mind.centralText': 'Chủ đề trung tâm',
164
+ 'mind.abstractNodeText': 'Tóm tắt',
165
+
166
+ 'tutorial.title': 'NgocAnh',
167
+ 'tutorial.description': 'Bảng trắng tất cả trong một, bao gồm sơ đồ tư duy, sơ đồ luồng, vẽ tự do và nhiều hơn nữa',
168
+ 'tutorial.dataDescription': 'Tất cả dữ liệu được lưu trữ cục bộ trong trình duyệt của bạn',
169
+ 'tutorial.appToolbar': 'Xuất, cài đặt ngôn ngữ, ...',
170
+ 'tutorial.creationToolbar': 'Chọn một công cụ để bắt đầu sáng tác của bạn',
171
+ 'tutorial.themeDescription': 'Chọn chủ đề phù hợp với phong cách của bạn',
172
+ };
173
+
174
+ export default viTranslations;
packages/drawnix/src/i18n/translations/zh.ts CHANGED
@@ -71,6 +71,7 @@ const zhTranslations: Translations = {
71
  'language.english': 'English',
72
  'language.russian': 'Русский',
73
  'language.arabic': 'عربي',
 
74
 
75
  // Menu items
76
  'menu.open': '打开',
 
71
  'language.english': 'English',
72
  'language.russian': 'Русский',
73
  'language.arabic': 'عربي',
74
+ 'language.vietnamese': 'Tiếng Việt',
75
 
76
  // Menu items
77
  'menu.open': '打开',
packages/drawnix/src/i18n/types.ts CHANGED
@@ -1,7 +1,7 @@
1
  import { ReactNode } from 'react';
2
 
3
  // Define supported languages
4
- export type Language = 'zh' | 'en' | 'ru' | 'ar';
5
 
6
  // Define translation keys and their corresponding values
7
  export interface Translations {
@@ -75,6 +75,7 @@ export interface Translations {
75
  'language.english': string;
76
  'language.russian': string;
77
  'language.arabic': string;
 
78
 
79
  // Menu items
80
  'menu.open': string;
 
1
  import { ReactNode } from 'react';
2
 
3
  // Define supported languages
4
+ export type Language = 'zh' | 'en' | 'ru' | 'ar' | 'vi';
5
 
6
  // Define translation keys and their corresponding values
7
  export interface Translations {
 
75
  'language.english': string;
76
  'language.russian': string;
77
  'language.arabic': string;
78
+ 'language.vietnamese': string;
79
 
80
  // Menu items
81
  'menu.open': string;