diff --git a/src/components/LangSelect/index.vue b/src/components/LangSelect/index.vue
index 608b126a..8b88dee5 100644
--- a/src/components/LangSelect/index.vue
+++ b/src/components/LangSelect/index.vue
@@ -6,6 +6,7 @@
中文
English
+ Tiếng Việt
diff --git a/src/lang/index.js b/src/lang/index.js
index a36a9804..732b53f8 100644
--- a/src/lang/index.js
+++ b/src/lang/index.js
@@ -3,8 +3,10 @@ import VueI18n from 'vue-i18n'
import Cookies from 'js-cookie'
import elementEnLocale from 'element-ui/lib/locale/lang/en' // element-ui lang
import elementZhLocale from 'element-ui/lib/locale/lang/zh-CN'// element-ui lang
+import elementViLocale from 'element-ui/lib/locale/lang/vi'// element-ui lang
import enLocale from './en'
import zhLocale from './zh'
+import viLocale from './vi'
Vue.use(VueI18n)
@@ -16,6 +18,10 @@ const messages = {
zh: {
...zhLocale,
...elementZhLocale
+ },
+ vi: {
+ ...viLocale,
+ ...elementViLocale
}
}
diff --git a/src/lang/vi.js b/src/lang/vi.js
new file mode 100644
index 00000000..21aad17f
--- /dev/null
+++ b/src/lang/vi.js
@@ -0,0 +1,126 @@
+export default {
+ route: {
+ dashboard: 'Bảng điều khiển',
+ introduction: 'Giới thiệu',
+ documentation: 'Tài liệu',
+ permission: 'Quyền truy cập',
+ icons: 'Biểu tượng',
+ components: 'Components',
+ componentIndex: 'Giới thiệu',
+ tinymce: 'Tinymce',
+ markdown: 'Markdown',
+ jsonEditor: 'Trình soạn thảo JSON',
+ dndList: 'Dnd List',
+ splitPane: 'SplitPane',
+ avatarUpload: 'Ảnh đại diện',
+ dropzone: 'Dropzone',
+ sticky: 'Sticky',
+ countTo: 'CountTo',
+ componentMixin: 'Thành phần',
+ backToTop: 'Trở về trên',
+ charts: 'Biểu đồ',
+ keyboardChart: 'Biểu đồ cột',
+ lineChart: 'Biểu đồ đường',
+ mixChart: 'Biểu đồ Kết hợp',
+ example: 'Ví dụ',
+ Table: 'Bảng',
+ dynamicTable: 'Lọc dữ liệu',
+ dragTable: 'Kéo & Thả',
+ inlineEditTable: 'Sửa tại chỗ',
+ complexTable: 'Đầy đủ',
+ tab: 'Tab',
+ form: 'Form',
+ createForm: 'Tạo Form',
+ editForm: 'Sửa Form',
+ errorPages: 'Các Trang lỗi',
+ page401: '401',
+ page404: '404',
+ errorLog: 'Lịch sử lỗi',
+ excel: 'Excel',
+ exportExcel: 'Xuất Excel',
+ selectExcel: 'Xuất Mục được chọn',
+ uploadExcel: 'Tải Excel',
+ exportZip: 'Xuất Zip',
+ theme: 'Chủ đề',
+ clipboardDemo: 'Clipboard',
+ i18n: 'I18n'
+ },
+ navbar: {
+ logOut: 'Thoát',
+ dashboard: 'Bảng điều khiển',
+ github: 'Github',
+ screenfull: 'Toàn màn hình',
+ theme: 'Đổi Chủ đề'
+ },
+ login: {
+ title: 'Form Đăng nhập',
+ logIn: 'Đăng nhập',
+ username: 'Tài khoản',
+ password: 'Mật khẩu',
+ any: 'Tuỳ ý',
+ thirdparty: 'Hoặc kết nối với',
+ thirdpartyTips: 'Chức năng không thể thực hiện ở local!!!'
+ },
+ documentation: {
+ documentation: 'Tài liệu',
+ github: 'Github Repository'
+ },
+ permission: {
+ roles: 'Quyền truy cập của bạn',
+ switchRoles: 'Thay đổi quyền truy cập'
+ },
+ components: {
+ documentation: 'Tài liệu',
+ tinymceTips: 'Trình soạn thảo văn bản là một phần không thể thiếu của một hệ thống quản lí, nhưng đồng thời nó cũng là nơi xảy ra nhiều vấn đề. Trong quá trình lựa chọn, tôi cũng đã xem qua nhiều trình soạn thảo trên thị trường được nhiều người sử dụng và cuối cùng tôi quyết định chọn Tinymce. Nếu muốn tìm hiểu thêm bạn có thể xem tài liệu về giới thiệu và sự so sánh các trình soạn thảo ở',
+ dropzoneTips: 'Vì sự cần thiết đặc biệt để tải hình ảnh lên qiniu thay vì sử dụng một bên thứ ba, tôi đã tạo nó. Nó là rất đơn giản, bạn có thể xem chi tiết ở @/components/Dropzone.',
+ stickyTips: 'Cố định một phần tử được đặt trước ở phía trên trang khi cuộn trang.',
+ backToTopTips1: 'Nút BackToTop sẽ xuất hiện khi cuộn trang đến một vị trí nhất định.',
+ backToTopTips2: 'Bạn có thể thay đổi style của nút, hiện / ẩn, vị trí xuất hiện, vị trí ẩn. Bạn có thể thay đổi văn bản bằng cách chỉnh của element-ui el-tooltip ở bên ngoài.',
+ imageUploadTips: 'Từ khi sử dụng vue@1 và nó có 1 vài thứ không tương thích với mockjs, tôi đã hiệu chỉnh nó. Nó vẫn tốt hơn nếu được sử dụng bản chính thức nếu bạn muốn.'
+ },
+ table: {
+ dynamicTips1: 'Sắp xếp cố định theo trình tự các tuỳ chọn',
+ dynamicTips2: 'Sắp xếp theo trình tự giá trị được chọn',
+ dragTips1: 'Trình tự ban đầu',
+ dragTips2: 'Trình tự sau khi Kéo & Thả',
+ title: 'Tiêu đề',
+ importance: 'Độ ưu tiên',
+ type: 'Kiểu',
+ remark: 'Ghi chú',
+ search: 'Tìm kiếm',
+ add: 'Tạo mới',
+ export: 'Xuất',
+ reviewer: 'Đánh giá',
+ id: 'IDv',
+ date: 'Ngày giờ',
+ author: 'Tác giả',
+ readings: 'Lượt xem',
+ status: 'Trạng thái',
+ actions: 'Chức năng',
+ edit: 'Sửa',
+ publish: 'Xuất bản',
+ draft: 'Nháp',
+ delete: 'Xoá',
+ cancel: 'Huỷ',
+ confirm: 'Xác nhận'
+ },
+ errorLog: {
+ tips: 'Click vào biểu tượng BUG trên thanh tiêu đề để xem lịch sử lỗi.',
+ description: 'Hiện tại hệ thống quản lí cơ bản chạy kiểu SPA, nó tăng trải nghiệm người dùng đồng thời cũng làm tăng khả năng lỗi của trang, chỉ cần một sợ xuất nhỏ cũng có thể dẫn đến lỗi toàn bộ. May mắn thay, Vue đã cũng cấp cách để xử lí các trường hợp ngoại lệ (exceptions), nơi mà các bạn có thể xử lí hoặc báo cáo.',
+ documentation: 'Tài liệu chi tiết'
+ },
+ excel: {
+ export: 'Xuất',
+ selectedExport: 'Xuất mục được chọn',
+ placeholder: 'Nhập tên file (mặc định excel-list)'
+ },
+ zip: {
+ export: 'Xuất',
+ placeholder: 'Nhập tên file (mặc định file)'
+ },
+ theme: {
+ change: 'Đổi Chủ đề',
+ documentation: 'Tài liệu của Chủ đề',
+ tips: 'Tips: Chức năng này khác với `Đổi chủ đề` ở thanh tiêu đề. Mỗi nơi đều có giá trị khác nhau. Xem chi tiết bên dưới.'
+ }
+}
diff --git a/src/mock/article.js b/src/mock/article.js
index 2f5b4583..e1ca9888 100644
--- a/src/mock/article.js
+++ b/src/mock/article.js
@@ -13,7 +13,7 @@ for (let i = 0; i < count; i++) {
title: '@title(5, 10)',
forecast: '@float(0, 100, 2, 2)',
importance: '@integer(1, 3)',
- 'type|1': ['CN', 'US', 'JP', 'EU'],
+ 'type|1': ['CN', 'US', 'JP', 'VI', 'EU'],
'status|1': ['published', 'draft', 'deleted'],
display_time: '@datetime',
pageviews: '@integer(300, 5000)'
diff --git a/src/views/example/tab/components/tabPane.vue b/src/views/example/tab/components/tabPane.vue
index 5d11d33b..ac9783a6 100644
--- a/src/views/example/tab/components/tabPane.vue
+++ b/src/views/example/tab/components/tabPane.vue
@@ -1,45 +1,45 @@
-
{{scope.row.id}}
-
+
{{scope.row.timestamp | parseTime('{y}-{m}-{d} {h}:{i}')}}
-
+
{{scope.row.title}}
{{scope.row.type}}
-
+
{{scope.row.author}}
-
+
-
+
{{scope.row.pageviews}}
-
+
{{scope.row.status}}
diff --git a/src/views/example/tab/index.vue b/src/views/example/tab/index.vue
index 2a3239a3..0d627bc7 100644
--- a/src/views/example/tab/index.vue
+++ b/src/views/example/tab/index.vue
@@ -23,6 +23,7 @@ export default {
{ label: 'China', key: 'CN' },
{ label: 'USA', key: 'US' },
{ label: 'Japan', key: 'JP' },
+ { label: 'Vietnamese', key: 'VI' },
{ label: 'Eurozone', key: 'EU' }
],
activeName: 'CN',
diff --git a/src/views/example/table/complexTable.vue b/src/views/example/table/complexTable.vue
index b96b8f9c..9f5dc6e8 100644
--- a/src/views/example/table/complexTable.vue
+++ b/src/views/example/table/complexTable.vue
@@ -142,6 +142,7 @@ const calendarTypeOptions = [
{ key: 'CN', display_name: 'China' },
{ key: 'US', display_name: 'USA' },
{ key: 'JP', display_name: 'Japan' },
+ { key: 'VI', display_name: 'Vietnamese' },
{ key: 'EU', display_name: 'Eurozone' }
]
diff --git a/src/views/example/table/dragTable.vue b/src/views/example/table/dragTable.vue
index 5534f2f8..7e42ba71 100644
--- a/src/views/example/table/dragTable.vue
+++ b/src/views/example/table/dragTable.vue
@@ -3,43 +3,43 @@
-
+
{{scope.row.id}}
-
+
{{scope.row.timestamp | parseTime('{y}-{m}-{d} {h}:{i}')}}
-
+
{{scope.row.title}}
-
+
{{scope.row.author}}
-
+
-
+
{{scope.row.pageviews}}
-
+
{{scope.row.status}}
diff --git a/src/views/example/table/inlineEditTable.vue b/src/views/example/table/inlineEditTable.vue
index 3d2ad00f..41f7ec09 100644
--- a/src/views/example/table/inlineEditTable.vue
+++ b/src/views/example/table/inlineEditTable.vue
@@ -3,50 +3,50 @@
-
+
{{scope.row.id}}
-
+
{{scope.row.timestamp | parseTime('{y}-{m}-{d} {h}:{i}')}}
-
+
{{scope.row.author}}
-
+
-
+
{{scope.row.status}}
-
+
- cancel
+ {{$t('table.cancel')}}
{{ scope.row.title }}
-
+
Ok
- Edit
+ {{$t('table.edit')}}
diff --git a/src/views/excel/exportExcel.vue b/src/views/excel/exportExcel.vue
index be12ea4b..b625999c 100644
--- a/src/views/excel/exportExcel.vue
+++ b/src/views/excel/exportExcel.vue
@@ -4,27 +4,27 @@
{{$t('excel.export')}} excel
-
+
{{scope.$index}}
-
+
{{scope.row.title}}
-
+
{{scope.row.author}}
-
+
{{scope.row.pageviews}}
-
+
{{scope.row.timestamp | parseTime('{y}-{m}-{d} {h}:{i}')}}
diff --git a/src/views/excel/selectExcel.vue b/src/views/excel/selectExcel.vue
index bd62ade7..f668f5a7 100644
--- a/src/views/excel/selectExcel.vue
+++ b/src/views/excel/selectExcel.vue
@@ -6,27 +6,27 @@
-
+
{{scope.$index}}
-
+
{{scope.row.title}}
-
+
{{scope.row.author}}
-
+
{{scope.row.pageviews}}
-
+
{{scope.row.display_time}}
diff --git a/src/views/i18n-demo/index.vue b/src/views/i18n-demo/index.vue
index dc842a71..6c8856ed 100644
--- a/src/views/i18n-demo/index.vue
+++ b/src/views/i18n-demo/index.vue
@@ -9,6 +9,7 @@
简体中文
English
+ Tiếng Việt
{{$t('i18nView.note')}}
@@ -80,6 +81,7 @@ export default {
if (!this.$i18n.getLocaleMessage('en')[viewName]) {
this.$i18n.mergeLocaleMessage('en', local.en)
this.$i18n.mergeLocaleMessage('zh', local.zh)
+ this.$i18n.mergeLocaleMessage('vi', local.vi)
}
},
computed: {
diff --git a/src/views/i18n-demo/local.js b/src/views/i18n-demo/local.js
index a4c07203..e6da1cb6 100644
--- a/src/views/i18n-demo/local.js
+++ b/src/views/i18n-demo/local.js
@@ -25,12 +25,28 @@ export default {
tableDate: 'tableDate',
tableName: 'tableName',
tableAddress: 'tableAddress',
- default: 'default:',
+ default: 'default',
primary: 'primary',
success: 'success',
info: 'info',
warning: 'warning',
danger: 'danger'
}
+ },
+ vi: {
+ i18nView: {
+ title: 'Đổi Ngôn Ngữ',
+ note: 'Hiện tại chỉ dịch với i18n cho trang, sidebar và levelbar. Xin hãy chờ đợi ...',
+ datePlaceholder: 'Chọn ngày',
+ tableDate: 'Ngày giờ',
+ tableName: 'Tên',
+ tableAddress: 'Địa chỉ',
+ default: 'mặc định',
+ primary: 'chính',
+ success: 'thành công',
+ info: 'thông tin',
+ warning: 'cảnh báo',
+ danger: 'nguy hiểm'
+ }
}
}
diff --git a/src/views/zip/index.vue b/src/views/zip/index.vue
index 54320a8e..aaf191e3 100644
--- a/src/views/zip/index.vue
+++ b/src/views/zip/index.vue
@@ -4,27 +4,27 @@
{{$t('zip.export')}} zip
-
+
{{scope.$index}}
-
+
{{scope.row.title}}
-
+
{{scope.row.author}}
-
+
{{scope.row.pageviews}}
-
+
{{scope.row.display_time}}