正是由于微信小程序已支持個人公眾號,又喚起我對小程序的一些“熱情”。說實在的,它不過是一個封閉的web框架。語法上,有點像vue,但是它單項綁定的特性,又有點像react。總的來 ...
正是由于微信小程序已支持個人公眾號,又喚起我對小程序的一些“熱情”。說實在的,它不過是一個封閉的web框架。語法上,有點像vue,但是它單項綁定的特性,又有點像react。總的來說,借用知乎上的一句話就是,“四不像”。我自己有一個想法,就是按照它的語法,將它做成一個支持virtual dom的web框架,兼容它的所有接口,于此同時,native的接口可以用cordova替換。其實,這樣的想法早就有人想過,像phodal大神的phodal/winv就是一個非常好的原型,只不過沒有很好的持續下去。說真的,有時候我搞不懂alloyteam為啥要自己搞一套omi?
題外話說多了。考慮到小程序是邁向國際化的,怎么能不考慮做成i18n的翻譯工具。就此,我造了一個小輪子,歡迎大家使用和fork。
這個項目源碼非常簡單。靈感來自Leaflet.i18n。
設置翻譯內容要在application的onLaunch時(或前)設置。
T.registerLocale = function (locales) {
T.locales = locales;
}
翻譯內容以js的對象或json形式進行保存。其中,包括en
和zh-Hans
分別對應了英語和簡體中文。當然,你可以自定義很多其他語言,如法語,日語。內部對象的key
幫助你獲取翻譯語言。
export default {
"en": {
"Weather": "Weather"
},
"zh-Hans": {
"Weather": "天氣"
}
}
該方法用于切換語言的類型,code指的是語言類型,如en
指的是英語,zh-Hans
指的是簡體中文。
T.setLocale = function (code) {
T.locale = code
}
通過索引把對應語言的語句取出即可。
T._ = function (line, data) {
const locale = T.locale
const locales = T.locales
if (locale && locales[locale] && locales[locale][line]) {
line = locales[locale][line]
}
return line
}
使用樣例在brandonxiang/weapp-weatherfine中查看。這是我已經上線的小程序小好天氣。
wx.T = T
增加模版翻譯功能
項目地址:https://github.com/brandonxiang/weapp-i18n
項目地址:weapp-i18n-master.zip