feat(i18n): 剩余15页全量接入中英(登录/注册/扫码/绑定/佩戴/扫描/治疗/订阅/帮助等)
- 3 个并行 agent 各管 5 页,互不重叠命名空间 - 全 App 18 页均 i18n.bind,22 命名空间/400 键中英对齐 - 动态文案(时长/天数/价格/区域)JS 内 i18n.t 计算;区域标签复用 common.regions
这个提交包含在:
@@ -4,11 +4,11 @@ Page({
|
||||
data: {
|
||||
statusBarHeight: 44,
|
||||
regions: [
|
||||
{ name: '右区', mask: 0x01, checked: true },
|
||||
{ name: '左区', mask: 0x02, checked: true },
|
||||
{ name: '上区', mask: 0x04, checked: true },
|
||||
{ name: '中区', mask: 0x08, checked: true },
|
||||
{ name: '下区', mask: 0x10, checked: true }
|
||||
{ name: '', mask: 0x01, checked: true },
|
||||
{ name: '', mask: 0x02, checked: true },
|
||||
{ name: '', mask: 0x04, checked: true },
|
||||
{ name: '', mask: 0x08, checked: true },
|
||||
{ name: '', mask: 0x10, checked: true }
|
||||
],
|
||||
selectedMode: 0,
|
||||
subExpired: false,
|
||||
@@ -34,6 +34,15 @@ Page({
|
||||
var app = getApp()
|
||||
this.setData({ statusBarHeight: app.globalData.statusBarHeight })
|
||||
i18n.bind(this)
|
||||
var regionKeys = ['right', 'left', 'top', 'middle', 'bottom']
|
||||
var regions = this.data.regions
|
||||
regions.forEach(function (r, i) {
|
||||
r.name = i18n.t('common.regions.' + regionKeys[i])
|
||||
})
|
||||
this.setData({
|
||||
regions: regions,
|
||||
subDaysText: i18n.t('setup.remainDays', { days: this.data.subDays })
|
||||
})
|
||||
this.checkSubscription()
|
||||
},
|
||||
|
||||
@@ -43,7 +52,8 @@ Page({
|
||||
http.get('/api/v1/subscription').then(function (sub) {
|
||||
self.setData({
|
||||
subExpired: sub.status !== 'active',
|
||||
subDays: sub.remaining_days || 0
|
||||
subDays: sub.remaining_days || 0,
|
||||
subDaysText: i18n.t('setup.remainDays', { days: sub.remaining_days || 0 })
|
||||
})
|
||||
}).catch(function () {})
|
||||
},
|
||||
@@ -79,7 +89,7 @@ Page({
|
||||
})
|
||||
|
||||
if (mask === 0) {
|
||||
wx.showToast({ title: '请至少选择一个区域', icon: 'none' })
|
||||
wx.showToast({ title: i18n.t('setup.noRegion'), icon: 'none' })
|
||||
return
|
||||
}
|
||||
|
||||
@@ -109,7 +119,7 @@ Page({
|
||||
'&mode=' + self.data.selectedMode
|
||||
})
|
||||
}).catch(function (err) {
|
||||
self.setData({ submitting: false, error: err.error_msg || '启动失败' })
|
||||
self.setData({ submitting: false, error: err.error_msg || i18n.t('setup.startFailed') })
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
@@ -1,40 +1,40 @@
|
||||
<view class="page">
|
||||
<view class="page-header page-header-pink" style="padding-top: {{statusBarHeight + 24}}px;">
|
||||
<view class="nav-back" bindtap="onBack">‹ 返回</view>
|
||||
<view class="page-header-title">使用设置</view>
|
||||
<view class="page-header-subtitle">选择模式和区域</view>
|
||||
<view class="nav-back" bindtap="onBack">‹ {{i18n.common.back}}</view>
|
||||
<view class="page-header-title">{{i18n.setup.title}}</view>
|
||||
<view class="page-header-subtitle">{{i18n.setup.subtitle}}</view>
|
||||
</view>
|
||||
|
||||
<view class="page-content">
|
||||
<view class="page-title">选择模式</view>
|
||||
<view class="page-title">{{i18n.setup.selectMode}}</view>
|
||||
|
||||
<view class="mode-selector">
|
||||
<view class="mode-option {{selectedMode === 0 ? 'active' : ''}}" bindtap="onSelectMode" data-value="0">
|
||||
<text class="mode-icon">🔄</text>
|
||||
<view class="mode-label">普通模式</view>
|
||||
<view class="mode-sub">6色循环</view>
|
||||
<view class="mode-label">{{i18n.setup.normalMode}}</view>
|
||||
<view class="mode-sub">{{i18n.setup.normalModeSub}}</view>
|
||||
</view>
|
||||
<view class="mode-option {{selectedMode === 1 ? 'active' : ''}} {{subExpired ? 'locked' : ''}}" bindtap="onSelectMode" data-value="1">
|
||||
<text class="mode-icon">✨</text>
|
||||
<view class="mode-label">智能模式</view>
|
||||
<view class="mode-sub" wx:if="{{!subExpired}}">剩余{{subDays}}天</view>
|
||||
<view class="mode-sub" wx:else>订阅解锁</view>
|
||||
<view class="mode-label">{{i18n.setup.smartMode}}</view>
|
||||
<view class="mode-sub" wx:if="{{!subExpired}}">{{subDaysText}}</view>
|
||||
<view class="mode-sub" wx:else>{{i18n.setup.subscribeUnlock}}</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="page-title" style="font-size:28rpx;">选择区域</view>
|
||||
<view class="mode-tip" wx:if="{{selectedMode === 0}}">普通模式固定 10 分钟,使用区域默认全区域,不可调整</view>
|
||||
<view class="page-title" style="font-size:28rpx;">{{i18n.setup.selectRegion}}</view>
|
||||
<view class="mode-tip" wx:if="{{selectedMode === 0}}">{{i18n.setup.normalTip}}</view>
|
||||
|
||||
<view class="face-map">
|
||||
<view class="face-region forehead {{regions[2].checked ? 'active' : ''}} {{selectedMode === 0 ? 'disabled' : ''}}" bindtap="onToggleRegion" data-idx="2">上区</view>
|
||||
<view class="face-region left-cheek {{regions[1].checked ? 'active' : ''}} {{selectedMode === 0 ? 'disabled' : ''}}" bindtap="onToggleRegion" data-idx="1">左区</view>
|
||||
<view class="face-region right-cheek {{regions[0].checked ? 'active' : ''}} {{selectedMode === 0 ? 'disabled' : ''}}" bindtap="onToggleRegion" data-idx="0">右区</view>
|
||||
<view class="face-region nose {{regions[3].checked ? 'active' : ''}} {{selectedMode === 0 ? 'disabled' : ''}}" bindtap="onToggleRegion" data-idx="3">中区</view>
|
||||
<view class="face-region chin {{regions[4].checked ? 'active' : ''}} {{selectedMode === 0 ? 'disabled' : ''}}" bindtap="onToggleRegion" data-idx="4">下区</view>
|
||||
<view class="face-region forehead {{regions[2].checked ? 'active' : ''}} {{selectedMode === 0 ? 'disabled' : ''}}" bindtap="onToggleRegion" data-idx="2">{{i18n.common.regions.top}}</view>
|
||||
<view class="face-region left-cheek {{regions[1].checked ? 'active' : ''}} {{selectedMode === 0 ? 'disabled' : ''}}" bindtap="onToggleRegion" data-idx="1">{{i18n.common.regions.left}}</view>
|
||||
<view class="face-region right-cheek {{regions[0].checked ? 'active' : ''}} {{selectedMode === 0 ? 'disabled' : ''}}" bindtap="onToggleRegion" data-idx="0">{{i18n.common.regions.right}}</view>
|
||||
<view class="face-region nose {{regions[3].checked ? 'active' : ''}} {{selectedMode === 0 ? 'disabled' : ''}}" bindtap="onToggleRegion" data-idx="3">{{i18n.common.regions.middle}}</view>
|
||||
<view class="face-region chin {{regions[4].checked ? 'active' : ''}} {{selectedMode === 0 ? 'disabled' : ''}}" bindtap="onToggleRegion" data-idx="4">{{i18n.common.regions.bottom}}</view>
|
||||
</view>
|
||||
|
||||
<button class="btn-primary" bindtap="onStart" disabled="{{submitting}}" loading="{{submitting}}">
|
||||
开始使用
|
||||
{{i18n.setup.startBtn}}
|
||||
</button>
|
||||
|
||||
<view class="manual-entry" bindtap="onManual" style="text-align:center;color:#E8503A;font-size:26rpx;margin-top:28rpx;">{{i18n.manual.entryLink}}</view>
|
||||
|
||||
在新工单中引用
屏蔽一个用户