From 1f1632a7ebf8118c92d1d036e324e51fb99ca4a2 Mon Sep 17 00:00:00 2001 From: neverland Date: Fri, 24 Nov 2017 10:33:28 +0800 Subject: [PATCH] [Doc] add switch lang button in mobile (#348) * fix: Tabbar icon line-height * [new feature] progress add showPivot prop * [new feature] TabItem support vue-router * [new feature] update document header style * [Doc] add toast english ducoment * [bugfix] Search box-sizing wrong * [Doc] update vant-demo respo * [Doc] translate theme & demo pages * [Doc] add Internationalization document * [bugfix] remove unnecessary props * [fix] optimize clickoutside * [new feature] optimize find-parent * [new feature]: change document title accordinng to language * [new feature] Pagination code review * [improvement] adjust icon-font unicode * [improvement] Icon spinner color inherit * [improvement] icon default width * [bugfix] DateTimePicker validate date props * [bugfix] Tab item text ellipsis * [improvement] optimize single line ellipsis * [Improvement] optimzie staticClass * [Improvement] Button: use sfc instread of jsx * [Improvement] update actionsheet close icon style * fix: yarn.lock * fix: icon test cases * [bugfix] errors during ssr * [Improvement] SubmitBar add left slot * [new feature] ImagePreview support manually close * fix: ImagePreview test case * [Doc] add switch lang button in mobile --- .eslintrc.js | 2 +- docs/src/components/DemoList.vue | 40 ++++++++++++++++++++++++++++++-- docs/src/index.js | 2 +- docs/src/utils/lang.js | 40 +++++++++++++++++++++----------- 4 files changed, 66 insertions(+), 18 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 27cd432b1..1861ec826 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -106,7 +106,7 @@ module.exports = { 'no-this-before-super': 2, 'no-throw-literal': 2, 'no-trailing-spaces': 2, - 'no-undef': 2, + 'no-undef': 0, 'no-undef-init': 2, 'no-unexpected-multiline': 2, 'no-unmodified-loop-condition': 2, diff --git a/docs/src/components/DemoList.vue b/docs/src/components/DemoList.vue index 5fe6be82a..6ff02a794 100644 --- a/docs/src/components/DemoList.vue +++ b/docs/src/components/DemoList.vue @@ -4,6 +4,10 @@ Vant +
+ EN + 中文 +

{{ description }}

@@ -16,6 +20,7 @@ diff --git a/docs/src/index.js b/docs/src/index.js index 59fdf22bd..59ef3d960 100644 --- a/docs/src/index.js +++ b/docs/src/index.js @@ -18,7 +18,7 @@ const router = new VueRouter({ router.beforeEach((route, redirect, next) => { if (isMobile) { - window.location.replace('/zanui/vant/examples'); + location.replace('/zanui/vant/examples' + location.hash); } document.title = route.meta.title || document.title; next(); diff --git a/docs/src/utils/lang.js b/docs/src/utils/lang.js index 2698ef3d4..871808154 100644 --- a/docs/src/utils/lang.js +++ b/docs/src/utils/lang.js @@ -3,24 +3,36 @@ import zhCN from '../../../packages/locale/lang/zh-CN'; import enUS from '../../../packages/locale/lang/en-US'; const langMap = { - 'en-US': enUS, - 'zh-CN': zhCN + 'en-US': { + title: 'Vant - A Vue.js 2.0 Mobile UI at YouZan', + messages: enUS + }, + 'zh-CN': { + title: 'Vant - 有赞移动端 Vue 组件库', + messages: zhCN + } }; -const titleMap = { - 'en-US': 'Vant - A Vue.js 2.0 Mobile UI at YouZan', - 'zh-CN': 'Vant - 有赞移动端 Vue 组件库' -}; +setLang(getDefaultLang()); -const userLang = window.localStorage.getItem('VANT_LANGUAGE') || window.navigator.language || 'en-US'; -let defaultLang = 'en-US'; -if (userLang.indexOf('zh-') !== -1) { - defaultLang = 'zh-CN'; +function getDefaultLang() { + const langs = Object.keys(langMap); + const hash = location.hash; + + for (let i = 0; i < langs.length; i++) { + if (hash.indexOf(langs[i]) !== -1) { + return langs[i]; + } + } + + const userLang = localStorage.getItem('VANT_LANGUAGE') || navigator.language || 'en-US'; + return userLang.indexOf('zh-') !== -1 ? 'zh-CN' : 'en-US'; } -setLang(defaultLang); export function setLang(lang) { - window.localStorage.setItem('VANT_LANGUAGE', lang); - Locale.use(lang, langMap[lang]); - document.title = titleMap[lang]; + if (window.localStorage) { + localStorage.setItem('VANT_LANGUAGE', lang); + } + Locale.use(lang, langMap[lang].messages); + document.title = langMap[lang].title; }