21 次代碼提交 72ab8cfc9b ... d32b931ede

作者 SHA1 備註 提交日期
  xxq d32b931ede 0402 2 天之前
  郭宇琦 d83dfd3620 样式修改 2 天之前
  郭宇琦 331fc97112 中英文bug 2 天之前
  郭宇琦 ef60a830eb Merge branch 'dly_test' into gyq_test 2 天之前
  liuwei 4b97494b17 Merge branch 'lw_test' into gyq_test 2 天之前
  pingan\平安 4316ecf673 bugfix_dly 2 天之前
  郭宇琦 b79324eb85 英文补全 2 天之前
  liuwei 9a97c49bd9 首页权限 2 天之前
  xxq 17c3fd4c27 Merge branch 'gyq_test' of http://git.bms16.com/liuwei/zx_flk_app into gyq_test 2 天之前
  郭宇琦 a37903c381 多语言处理 2 天之前
  郭宇琦 db6a855355 中英文处理 2 天之前
  郭宇琦 c9585a87de bug修改 2 天之前
  pingan\平安 d6363e8088 语言切换 2 天之前
  pingan\平安 e5871155f9 合并代码,解决冲突 3 天之前
  pingan\平安 30aaa836eb 脚本修改 3 天之前
  郭宇琦 1ff06efcca 语言替换 3 天之前
  pingan\平安 9b22c71527 文字替换脚本 3 天之前
  pingan\平安 21494e00ac 国际化翻译 3 天之前
  pingan\平安 2c6a8f5162 国际化 4 天之前
  pingan\平安 593cfd778e 国际化修改 4 天之前
  pingan\平安 04e03fb7e3 国际化2025年3月31日11:18:48 5 天之前
共有 76 個文件被更改,包括 6216 次插入1516 次删除
  1. 52 0
      app2.js
  2. 63 0
      app3.js
  3. 78 0
      app4.js
  4. 101 0
      app5.js
  5. 2 1
      common/http.js
  6. 2 1
      common/request.js
  7. 1 1
      common/storage.js
  8. 2 2
      component/customSwitch.vue
  9. 28 28
      component/customTabbar/index.vue
  10. 0 1
      component/googleMap/googleMap.vue
  11. 842 574
      locale/en.json
  12. 4 1
      locale/index.js
  13. 848 91
      locale/zh.json
  14. 1 1
      manifest.json
  15. 842 0
      output.json
  16. 827 0
      output1.json
  17. 852 0
      output3.json
  18. 3 3
      pages/aboutMy/aboutMy.vue
  19. 28 28
      pages/activation/activation.vue
  20. 2 2
      pages/activity/activity.vue
  21. 4 4
      pages/addUser/addUser.vue
  22. 68 68
      pages/battery/battery.vue
  23. 5 5
      pages/batteryDetail/batteryDetail.vue
  24. 14 14
      pages/batteryPackage/batteryPackage.vue
  25. 14 14
      pages/batteryRecord/batteryRecord.vue
  26. 37 38
      pages/bluetoothUnlock/bluetoothPair.vue
  27. 11 11
      pages/bluetoothUnlock/unlockSet.vue
  28. 16 16
      pages/cabinetDetail/cabinetDetail.vue
  29. 15 15
      pages/carDetail/carDetail.vue
  30. 1 1
      pages/carFunctionSet/more.vue
  31. 5 5
      pages/carFunctionSet/unbind.vue
  32. 7 7
      pages/carList/carList.vue
  33. 12 12
      pages/carLocation/carLocation.vue
  34. 5 5
      pages/contract/contract.vue
  35. 6 6
      pages/dashboard/dashboard.vue
  36. 5 5
      pages/deviceInfo/deviceInfo.vue
  37. 15 15
      pages/feedback/index.vue
  38. 8 8
      pages/index/components/AndroidUnlockAuth.vue
  39. 12 12
      pages/index/components/IosUnlockAuth.vue
  40. 45 36
      pages/index/components/control/control.vue
  41. 3 3
      pages/index/components/mapCard/mapCard.vue
  42. 13 13
      pages/index/components/unleasedPages/unleasedPages.vue
  43. 1 1
      pages/index/homeNotRent.vue
  44. 2 1
      pages/index/index.css
  45. 8 8
      pages/index/index.vue
  46. 16 16
      pages/login/login.vue
  47. 1 1
      pages/loginRegister/changePassword.vue
  48. 2 2
      pages/loginRegister/forgetPassword.vue
  49. 3 3
      pages/loginRegister/login.vue
  50. 2 2
      pages/loginRegister/register.vue
  51. 17 17
      pages/manualInput/manualInput.vue
  52. 1 1
      pages/message/detail.vue
  53. 4 4
      pages/message/index.vue
  54. 5 5
      pages/message/location.vue
  55. 13 13
      pages/mileageStatistics/index.vue
  56. 9 9
      pages/modifyPhone/modifyPhone.vue
  57. 2 2
      pages/moreInfo/moreInfo.vue
  58. 23 23
      pages/my/my.vue
  59. 13 12
      pages/my/set.vue
  60. 17 17
      pages/openCabinet/openCabinet.vue
  61. 58 58
      pages/order/order.vue
  62. 11 7
      pages/orderStatus/orderStatus.css
  63. 129 129
      pages/orderStatus/orderStatus.vue
  64. 20 20
      pages/package/package.vue
  65. 13 13
      pages/phoneLogin/phoneLogin.vue
  66. 14 14
      pages/powerSetting/powerSetting.vue
  67. 27 27
      pages/purchaseOrder/purchaseOrder.vue
  68. 18 18
      pages/scanCar/scanCar.vue
  69. 7 7
      pages/service/components/carRentalList/carRentalList.vue
  70. 2 2
      pages/service/components/leaseType/leaseType.vue
  71. 10 10
      pages/service/service.vue
  72. 14 14
      pages/storeDetails/storeDetails.vue
  73. 8 8
      pages/travelingTrack/travelingTrack.vue
  74. 4 4
      pages/userManagement/userManagement.vue
  75. 4 1
      utils/util.js
  76. 839 0
      zh-CN.js

+ 52 - 0
app2.js

@@ -0,0 +1,52 @@
+// array-to-json.js
+const fs = require('fs');
+let arr1 = require('./zh-CN')
+/**
+ * 将数组转换为 { key: value } 格式的 JSON 对象
+ * @param {Array} array - 要转换的数组
+ * @returns {Object} 生成的 JSON 对象
+ */
+function convertArrayToKeyValueJSON(array) {
+  if (!Array.isArray(array)) {
+    throw new Error('输入必须是数组类型');
+  }
+
+  const result = {};
+  const seenKeys = new Set(); // 用于检测重复键
+
+  array.forEach((item, index) => {
+    const key = String(item); // 强制转换为字符串键
+    
+    if (seenKeys.has(key)) {
+      console.warn(`⚠️ 警告: 键 "${key}" 在索引 ${index} 处重复,将被覆盖`);
+    }
+    
+    seenKeys.add(key);
+    result[key] = item; // 保留原始值类型
+  });
+
+  return result;
+}
+
+// 示例用法
+const sampleArray = ['苹果', 123, true, null, '苹果'];
+
+try {
+  // 执行转换
+  const jsonObject = convertArrayToKeyValueJSON(arr1);
+  
+  // 生成带格式化的 JSON 字符串
+  const jsonString = JSON.stringify(jsonObject, null, 2);
+  
+  // 输出到控制台
+  console.log('转换结果:');
+  console.log(jsonString);
+  
+  // 写入文件(可选)
+  fs.writeFileSync('output1.json', jsonString);
+  console.log('\n✅ 已保存到 output1.json');
+
+} catch (error) {
+  console.error('❌ 发生错误:', error.message);
+  process.exit(1);
+}

+ 63 - 0
app3.js

@@ -0,0 +1,63 @@
+const fs = require('fs')
+const path = require('path')
+
+// 配置参数
+const config = {
+  inputDir: './pages',       // 要扫描的目录
+  outputFile: './zh-CN.js', // 输出文件路径
+  extensions: ['.js', '.vue'], // 要处理的文件扩展名
+  chineseRegex: /[\u4e00-\u9fa5\u3000-\u303f\uff01-\uff5e\u201c-\u201d\u3008-\u3011]+/g
+}
+
+// 存储中文内容的 Set(自动去重)
+const chineseSet = new Set()
+
+/**
+ * 递归遍历目录
+ */
+function scanDirectory(dir) {
+  const files = fs.readdirSync(dir)
+
+  files.forEach(file => {
+    const filePath = path.join(dir, file)
+    const stat = fs.statSync(filePath)
+
+    if (stat.isDirectory()) {
+      scanDirectory(filePath)
+    } else if (stat.isFile() &&config.extensions.includes(path.extname(filePath).toLowerCase()))
+    {
+      processFile(filePath)
+    }
+  })
+}
+
+/**
+ * 处理单个文件
+ */
+function processFile(filePath) {
+  try {
+    const content = fs.readFileSync(filePath, 'utf-8')
+    const matches = content.match(config.chineseRegex)
+
+    if (matches) {
+      matches.forEach(text => chineseSet.add(text))
+    }
+  } catch (err) {
+    console.error(`Error processing file ${filePath}:`, err)
+  }
+}
+
+/**
+ * 生成输出文件
+ */
+function generateOutput() {
+  const output = `// 自动生成的中文字符列表
+module.exports = ${JSON.stringify([...chineseSet], null, 2)}`
+
+  fs.writeFileSync(config.outputFile, output, 'utf-8')
+  console.log(`找到 ${chineseSet.size} 个中文字符,已保存到 ${config.outputFile}`)
+}
+
+// 执行主流程
+scanDirectory(config.inputDir)
+generateOutput()

+ 78 - 0
app4.js

@@ -0,0 +1,78 @@
+const fs = require('fs');
+const path = require('path');
+
+// 配置
+const projectDir = './pages'; // 你的 UniApp 项目路径
+const langFilePath = './output3.json'; // 本地语言文件路径
+const ignoredFiles = ['node_modules', 'locale']; // 忽略的文件夹或文件
+
+// 加载语言文件
+let langData = {};
+if (fs.existsSync(langFilePath)) {
+    const langFileContent = fs.readFileSync(langFilePath, 'utf-8');
+    langData = JSON.parse(langFileContent);
+}
+
+// 正则表达式:匹配汉字
+const chineseRegex = /[\u4e00-\u9fa5\u3000-\u303f\uff01-\uff5e\u201c-\u201d\u3008-\u3011]+/g;
+
+// 处理单个文件
+function processFile(filePath) {
+    let content = fs.readFileSync(filePath, 'utf-8');
+    const matches = content.match(chineseRegex);
+
+    if (matches) {
+        matches.forEach((text) => {
+            // 如果语言文件中不存在该汉字,则生成一个唯一的 key
+            // if (!langData[text]) {
+            //     const key = `text_${Object.keys(langData).length + 1}`;
+            //     langData[text] = key;
+            // }
+
+            // 替换为 $t('key') 形式
+            const key = langData[text];
+            const replacement = `$t('${key}')`;
+            content = content.replace(new RegExp(text, 'g'), replacement);
+        });
+
+        // 写回文件
+        fs.writeFileSync(filePath, content, 'utf-8');
+    }
+}
+
+// 遍历目录
+function traverseDirectory(dir) {
+    const files = fs.readdirSync(dir);
+
+    files.forEach((file) => {
+        const fullPath = path.join(dir, file);
+        const stats = fs.statSync(fullPath);
+
+        if (stats.isDirectory()) {
+            // 忽略指定的文件夹
+            if (!ignoredFiles.includes(file)) {
+                traverseDirectory(fullPath);
+            }
+        } else if (stats.isFile()) {
+            // 只处理 .vue 和 .js 文件
+            if (/\.(vue|js)$/.test(file)) {
+                processFile(fullPath);
+            }
+        }
+    });
+}
+
+// 主函数
+function main() {
+    console.log('开始转换汉字为国际化格式...');
+
+    // 遍历项目目录
+    traverseDirectory(projectDir);
+
+    // 更新语言文件
+    fs.writeFileSync(langFilePath, JSON.stringify(langData, null, 2), 'utf-8');
+    console.log(`语言文件已更新:${langFilePath}`);
+    console.log('转换完成!');
+}
+
+main();

+ 101 - 0
app5.js

@@ -0,0 +1,101 @@
+const fs = require('fs');
+const path = require('path');
+
+// 配置
+const projectDir = './pages'; // 你的 UniApp 项目路径
+const langFilePath = './output3.json'; // 本地语言文件路径
+const ignoredFiles = ['node_modules', 'locale']; // 忽略的文件夹或文件
+
+// 加载语言文件
+let langData = {};
+if (fs.existsSync(langFilePath)) {
+    const langFileContent = fs.readFileSync(langFilePath, 'utf-8');
+    langData = JSON.parse(langFileContent);
+}
+
+// 正则表达式:匹配汉字
+const chineseRegex = /[\u4e00-\u9fa5\u3000-\u303f\uff01-\uff5e\u201c-\u201d\u3008-\u3011]+/g;
+
+// 处理单个文件
+function processFile(filePath) {
+    let content = fs.readFileSync(filePath, 'utf-8');
+
+    // 匹配 <template> 和 <script> 标签中的内容
+    const templateRegex = /<template[^>]*>([\s\S]*?)<\/template>/gi;
+    const scriptRegex = /<script[^>]*>([\s\S]*?)<\/script>/gi;
+
+    // 替换 <template> 中的内容
+    content = content.replace(templateRegex, (match, templateContent) => {
+        return match.replace(chineseRegex, (text) => {
+            // 跳过已有的 $t()
+            if (templateContent.includes(`$t('${langData[text]}')`) || templateContent.includes(`$t("${langData[text]}")`)) {
+                return text; // 不替换
+            }
+            return replaceText(text, '{{ $t(\'$1\') }}');
+        });
+    });
+
+    // 替换 <script> 中的内容
+    content = content.replace(scriptRegex, (match, scriptContent) => {
+        return match.replace(/(['"])([\u4e00-\u9fa5\u3000-\u303f\uff01-\uff5e\u201c-\u201d\u3008-\u3011]+)\1/g, (_, quote, text) => {
+            // 跳过已有的 $t()
+            if (scriptContent.includes(`this.$t('${langData[text]}')`) || scriptContent.includes(`this.$t("${langData[text]}")`)) {
+                return `${quote}${text}${quote}`; // 不替换
+            }
+            return replaceText(text, 'this.$t(\'$1\')');
+        });
+    });
+
+    // 写回文件
+    fs.writeFileSync(filePath, content, 'utf-8');
+}
+
+// 替换逻辑
+function replaceText(text, replacementPattern) {
+    // 如果语言文件中不存在该汉字,则生成一个唯一的 key
+    if (!langData[text]) {
+        const key = `text_${Object.keys(langData).length + 1}`;
+        langData[text] = key;
+    }
+
+    // 替换为指定的模式
+    const key = langData[text];
+    return replacementPattern.replace('$1', text);
+}
+
+// 遍历目录
+function traverseDirectory(dir) {
+    const files = fs.readdirSync(dir);
+
+    files.forEach((file) => {
+        const fullPath = path.join(dir, file);
+        const stats = fs.statSync(fullPath);
+
+        if (stats.isDirectory()) {
+            // 忽略指定的文件夹
+            if (!ignoredFiles.includes(file)) {
+                traverseDirectory(fullPath);
+            }
+        } else if (stats.isFile()) {
+            // 只处理 .vue 和 .js 文件
+            if (/\.(vue|js)$/.test(file)) {
+                processFile(fullPath);
+            }
+        }
+    });
+}
+
+// 主函数
+function main() {
+    console.log('开始转换汉字为国际化格式...');
+
+    // 遍历项目目录
+    traverseDirectory(projectDir);
+
+    // 更新语言文件
+    fs.writeFileSync(langFilePath, JSON.stringify(langData, null, 2), 'utf-8');
+    console.log(`语言文件已更新:${langFilePath}`);
+    console.log('转换完成!');
+}
+
+main();

+ 2 - 1
common/http.js

@@ -1,8 +1,9 @@
 // import common = require("./common");
 // const appid = 'wxefa2810018787a41'
+import {Language} from '@/utils/util.js'
 const appid = '487987498'
 
-const language = 'zh'
+const language = Language
 
 var common = require('./common.js');
 

+ 2 - 1
common/request.js

@@ -1,7 +1,8 @@
 // import common = require("./common");
 // const appid = 'wxefa2810018787a41'
+import {Language} from '@/utils/util.js'
 const appid = '487987498'
-const language = 'zh'
+const language = Language
 
 var common = require('./common.js');
 

+ 1 - 1
common/storage.js

@@ -53,7 +53,7 @@ const activeTabs = [
 		iconUrl: `${QINIU_URL}FppwhbFzrEmDeJQgZJtDTu6WOoMZ`
 	},
 	{
-		name: i18n.t('打开尾箱'),
+		name: i18n.t('打开尾箱'),
 		type:'openTailBox',
 		iconUrl: `${QINIU_URL}Fv3KLuYWEeV5IM4_2sMbmur7yZtz`
 	},

+ 2 - 2
component/customSwitch.vue

@@ -6,8 +6,8 @@
 			<view class="indicator-wrapper" :class="{ shaking: isShaking }">
 				<image class="indicator" :src="imageSrc" />
 			</view>
-			<view v-if="isShowSwitchText&&isValue" class="switch_text_off">滑动关机</view>
-			<view v-if="isShowSwitchText&&!isValue" class="switch_text_on">滑动开机</view>
+			<view v-if="isShowSwitchText&&isValue" class="switch_text_off">{{$t('滑动关机')}}</view>
+			<view v-if="isShowSwitchText&&!isValue" class="switch_text_on">{{$t('滑动开机')}}</view>
 		</view>
 	</view>
 </template>

+ 28 - 28
component/customTabbar/index.vue

@@ -17,7 +17,7 @@
 					<!-- <img src="https://qiniu.bms16.com/FqcCjRjhzHFUkZj76SMHNXCZHwb3" style="width: 122rpx; height: 122rpx;margin-bottom: 14rpx;"/> -->
 					<image src="https://qiniu.bms16.com/FqcCjRjhzHFUkZj76SMHNXCZHwb3"
 						style="width: 122rpx; height: 122rpx;margin-bottom: 14rpx;"></image>
-					<view class="scan-text">扫一扫</view>
+					<view class="scan-text">{{$t('扫一扫')}}</view>
 				</view>
 			</view>
 		</view>
@@ -38,56 +38,58 @@
 			}
 		},
 		data() {
+			let _this = this
 			return {
 				selectedTab: uni.getStorageSync('selectedIndex') || 0,
-				tabs: [{
-						label: '设备',
+				tabs: [],
+				userInfo: {
+					is_auth: 0,
+					status: 0
+				},
+				// accountInfo: uni.getAccountInfoSync(),
+				plate_number: '',
+				isScanCondeRentalCar: false,
+			};
+		},
+		// created: function () {
+		//   if (appWhiteListFilter.isScanCondeRentalCar()) {
+		//   	this.setData({
+		//   		isScanCondeRentalCar: true
+		//   	})
+		//   }
+		// },
+
+		mounted() {
+			// console.log(uni.getSystemInfoSync().safeArea)
+			this.tabs = [{
+						label: this.$t('设备'),
 						name: 'home',
 						url: '/pages/index/index',
 						icon: '/static/resource/images/home_i.png',
 						activeIcon: '/static/resource/images/home_s.png',
 					},
 					{
-						label: '服务',
+						label: this.$t('服务'),
 						name: 'service',
 						url: '/pages/service/service',
 						icon: '/static/resource/images/service_i.png',
 						activeIcon: '/static/resource/images/service_s.png',
 					},
 					{
-						label: '活动',
+						label: this.$t('活动'),
 						name: 'active',
 						url: '/pages/activity/activity',
 						icon: '/static/resource/images/active_i.png',
 						activeIcon: '/static/resource/images/active_s.png',
 					},
 					{
-						label: '我的',
+						label: this.$t('我的'),
 						name: 'my',
 						url: '/pages/my/my',
 						icon: '/static/resource/images/my_i.png',
 						activeIcon: '/static/resource/images/my_s.png',
 					},
-				],
-				userInfo: {
-					is_auth: 0,
-					status: 0
-				},
-				// accountInfo: uni.getAccountInfoSync(),
-				plate_number: '',
-				isScanCondeRentalCar: false,
-			};
-		},
-		// created: function () {
-		//   if (appWhiteListFilter.isScanCondeRentalCar()) {
-		//   	this.setData({
-		//   		isScanCondeRentalCar: true
-		//   	})
-		//   }
-		// },
-
-		mounted() {
-			// console.log(uni.getSystemInfoSync().safeArea)
+				]
 		},
 		methods: {
 			routerPush(url) {
@@ -116,13 +118,11 @@
 				let objOpt = this.$paramsObj(options)
 				
 				if (objOpt.d) {
-					console.log('扫码的是机柜')
 					uni.navigateTo({
 						url: `/pages/cabinetDetail/cabinetDetail?dev_id=${objOpt.d}`,
 					})
 					return
 				} else {
-					console.log('扫码的是车辆')
 					this.navToInputPage(options)
 					return
 				}

+ 0 - 1
component/googleMap/googleMap.vue

@@ -244,7 +244,6 @@
 
 			//typeFn
 			typeFn(e, __, ownerInstance) {
-				console.log('我跑了呀')
 				this.types = e[0]
 			},
 		}

+ 842 - 574
locale/en.json

@@ -1,582 +1,850 @@
 {
-	"authenticate": "You have not authenticated, please authenticate ...",
-	"cabinet": "Cabinet",
-	"charge": "Charge",
-	"shop": "Shop",
-	"handleInput": "Manual input",
-	"belowPromptly": "Your battery level below 20%, please replace it promptly!",
-	"navigation": "Navigation",
-	"lowVoltage": "Low voltage start",
-	"storeExchange": "Store Exchange",
-	"Exchange": "Exchange",
-	"alarm": "Alarm",
-	"renewal": "Renewal",
-	"userNormal": "Normal",
-	"kilometre": "Kil",
-	"soc": "SOC",
-	"vol": "Voltage",
-	"mileage": "Mileage",
-	"resident": "Resident",
-	"times": "times",
-	"day": "day",
-	"expire": "expire",
-	"expired": "expired",
-	"pleaseConfirm": "Please Confirm",
-	"pleaseEnter": "Please Enter",
-	"cancel": "Cancel",
-	"confirm": "Confirm",
-	"details": "Details",
-	"unit": "Unit",
-	"availBattery": "Avail. Battery",
-	"nav": "NAV",
-	"nil": "Empity",
-	"empity": "Empity",
-	"business": "In business",
-	"atRest": "At rest",
-	"keyNav": "NAV",
-	"tel": "Tel",
-	"storeIntro": "Store Intro",
-	"businessHours": "Business hours",
-	"storeBattery": "Store Battery",
-	"ICcard": "IC Card",
-	"BatteryPackage": "Battery Package",
-	"Ic套餐换电": "Battery Package",
-	"换电中,请稍候...": "Changing battery, please wait...",
-	"报警详情": "Alarm details",
-	"请输入账号": "Please account",
-	"请输入密码": "Please password",
-	"请再次输入密码": "Please password again",
-	"账号不能小于4位数": "The account cannot be less than 4 digits",
-	"账号不能大于20位数": "The account cannot exceed 20 digits",
-	"密码不能小于4位数": "The password cannot be less than 4 digits",
-	"密码不能大于15位数": "The password cannot exceed 15 digits",
-	"注册": "Register",
-	"注册成功": "Registered success",
-	"短信报警": "SMS alarm",
-	"币": "coin",
-	"我的优惠劵": "My coupon",
-	"充电记录": "Charging Record",
-	"常用功能": "Common functions",
-	"我的套餐": "My package",
-	"我的设备": "My device",
-	"我的订单": "My Order",
-	"更多功能": "More features",
-	"免押审核中": "Free deposit review",
-	"免押申请": "Free deposit apply",
-	"告警详情": "Alarm details",
-	"故障报修": "Fault repair",
-	"专属客服": "Exclusive customer",
-	"我的拉新": "My Pull User",
-	"福利中心": "Welfare center",
-	"设置": "Set",
-	"当前版本:": "Current version:",
-	"上传失败": "Upload failure",
-	"邀请码功能被冻结": "The invitation code function is frozen",
-	"提示": "Tips",
-	"Tips": "Tips",
-	"您的账号已被冻结": "Your account has been frozen",
-	"您需要认证后才能使用": "You need certification before you can use it",
-	"你的身份正在审核,请稍后": "Your identity is being reviewed, please wait",
-	"身份认证不通过: ": "The identity authentication fails: ",
-	"确定要注销当前账号吗?": "Are you sure you want to close your current account?",
+	"关于我们": "About Us",
+	"弗兰克公司": "Frank Inc.",
+	"版权所有": "All Rights Reserved",
+	"我的订单": "My Orders",
+	"车辆信息": "Bike Info",
+	"逾期费用:": "lafe fee",
+	"车辆编号:": "Vehicle No:",
+	"车辆名称:": "Vehicle Name:",
+	"设备": "Device",
+	"服务": "Service",
+	"活动": "Activity",
+	"我的": "Mine",
+	"车型:": "Model:",
+	"续航:": "Range:",
+	"重量:": "Weight:",
+	"照片:": "Photo:",
+	"门店信息": "Store Info",
+	"门店名称:": "Store Name:",
+	"门店地址:": "Store Address:",
+	"车辆照片": "Vehicle Photo",
+	"归还车辆": "Return Vehicle",
+	"激活车辆": "Activate Vehicle",
+	"还车成功": "Return Success",
+	"还车": "Return",
+	"请上传车辆照片": "Upload Vehicle Photo",
+	"未获取到门店位置!": "Store Location Not Found!",
+	"数组": "Array",
+	"车辆激活成功": "Activation Success",
+	"活动中心": "Event Center",
+	"暂无可参与的活动": "No Events Available",
+	"添加成员": "Add Member",
+	"请输入被邀人邮箱号": "Please Enter Invite Account",
+	"下一步": "Next",
+	"该用户不存在!": "User Not Found!",
+	"免费": "Free",
+	"次": "Times",
+	"车辆换电": "Swap Battery",
+	"响铃找车": "Find Vehicle",
+	"开座桶锁": "Open Seat Lock",
+	"关闭头盔锁": "Close Helmet Lock",
+	"解锁": "Unlock",
+	"上锁": "Lock",
+	"行驶轨迹": "Track",
+	"车辆位置": "Vehicle Location",
+	"拖车服务": "Towing",
+	"关闭车辆": "Turn Off",
+	"启动车辆": "Start Vehicle",
+	"我要还车": "Return Vehicle",
+	"剩余租期": "Remaining Lease",
+	"查看订单": "View Order",
+	"日": "D",
+	"小时": "H",
+	"分": "M",
+	"到期后将无法用车": "Expiry: No Usage",
+	"已到期": "Expired",
+	"续租": "Renew",
+	"还车到门店": "Return to Store",
+	"系统会根据您的定位判断您是否已到还车位置,如您已经到达门店,请点击「我已到店」按钮,待门店确认还车后,即可还车成功。": "系统会根据您的定位判断您是否已到还车位置,如您已经到达门店,请点击「我已到店」按钮,待门店确认还车后,即可还车成功。",
+	"我已到店": "Arrived at store",
+	"附近可还门店": "Nearby return stores",
+	"选择续租方案": "Choose renewal plan",
+	"时租": "Hourly",
+	"日租": "Daily",
+	"周租": "Weekly",
+	"租车时长": "Rent duration",
+	"天": "Day",
+	"优惠券": "Coupon",
+	"折": "Discount",
+	"骑行保障服务": "Riding protection",
+	"保障须知": "Protection terms",
+	"含行程延误保障": "Includes trip delay protection",
+	"元": "Yuan",
+	"商家赠送": "Merchant gift",
+	"配套服务": "Supporting services",
+	"头盔": "Helmet",
+	"手机支架": "Phone holder",
+	"已阅读并同意": "Read and Agree",
+	"《租赁用户协议》": "Rental agreement",
+	"明细": "Details",
+	"支付": "Payment",
+	"授权免押": "Authorization for no deposit",
+	"暂无车辆": "No vehicles available",
+	"是否返回首页": "Return to homepage?",
+	"车辆状态(是否上锁)": "Status (locked or not)",
+	"初始状态": "Initial state",
+	"如果是激活页面过来的。后端接口第一时间无法获取数据。需要再延迟获取一次": "如果是激活页面过来的。后端接口第一时间无法获取数据。需要再延迟获取一次",
+	"首页": "Home",
+	"查询车辆关键参数": "Vehicle Info",
+	"获取地址失败,请授权重新打开": "Failed to get address, please authorize",
+	"获取当前时间": "Get Time",
+	"默认返回首页再提示报错": "Return home and show error",
+	"您确定开启响铃找车?": "Start bell to find car?",
+	"车辆已开始鸣笛": "Car honking",
+	"您确定打开座桶锁?": "Open seat box lock?",
+	"打开座桶": "Open Seat",
+	"滑动开机": "Slide to Power On",
+	"开机中": "Powering On",
+	"关机中": "Powering Off",
+	"滑动关机": "Slide to Power Off",
+	"座桶锁已打开": "Seat box unlocked",
+	"您确定给车辆上锁?": "Lock the vehicle?",
+	"正在上锁": "Locking",
+	"已上锁": "Locked",
+	"您确定给车辆解锁?": "Unlock the vehicle?",
+	"正在解锁": "Unlocking",
+	"已解锁": "Unlocked",
 	"取消": "Cancel",
-	"Cancel": "Cancel",
 	"确定": "Confirm",
-	"免押正在审核,请稍后": "Free deposit reviewing, please wait",
-	"您还未登录,请先登录": "You are not logged, please log",
-	"取消未确认成功": "Successfully cancel unconfirmed",
-	"成功": "Success",
-	"密钥验证失败": "Key verification failure",
-	"前一个流程未结束": "The previous process is not complete",
-	"空仓门不存在": "Empty door does not exist",
-	"满仓门不存在": "Full door does not exist",
-	"柜子禁用": "Cabinet disable",
-	"上次操作未确认": "The last operation not confirmed",
-	"租电仓门号不存在": "rental battery door does not exist",
-	"指定的还电仓门号不存在": "return battery door does not exist",
-	"空仓门开启失败,终止流程": "empty door fails open, process terminated",
-	"用户没有放入电池,终止流程": "user not put  battery,process terminated",
-	"用户与放入的电池不匹配,终止流程": "user not match battery put,process terminated",
-	"无法识别电池,终止流程": "Unrecognized battery,process terminated",
-	"满电仓门开启失败,终止流程": "Failed open full Electric quantity door,process terminated",
-	"用户取出电池,未关仓门,流程正常结束": "user takes out  battery and leaves door open,process ends normally",
-	"换电成功": "Success replace battery",
-	"用户关闭空仓门超时,终止流程": "user closed empty door timeout,process terminated",
-	"用户长时间未取电池,终止流程": "battery not removed long time,process terminated",
-	"用户关闭仓门,未取电池,终止流程": "user closes door and not remove battery,process terminated",
-	"租电仓门开启失败,终止租电流程": "Failed  open rental door,terminate rental process",
-	"用户关闭仓门,未取租用电池,终止流程": "user closes door and not remove battery,process terminated",
-	"租电成功": "Rental success",
-	"用户未关闭仓门,未取走租用电池,超时终止流程": "user not close door,not take rented battery, timeout termination process",
-	"用户未关闭仓门,取走租用电池,超时终止流程": "user not close door, takes rented battery, and terminates process timeout",
-	"还电仓门开启失败,终止还电流程": "return battery door fails open, process  terminated",
-	"归还电池编码不匹配,终止还电流程": "return battery code not match, terminate return process",
-	"用户关闭还电仓门超时,终止还电流程": "user closes return door overtime,the battery return process is terminated",
-	"还电成功": "Successful battery return",
-	"正在加载数据 ...": "Loading data ...",
-	"LoadingData": "Loading data ...",
-	"错误": "error",
-	"上传图片错误[": "Upload picture error[",
-	"秒": "seconds",
-	"分": "minutes",
-	"小时": " hours",
-	"天": "day",
-	"网络错误": "Network error",
-	"登录提示": "Login prompt",
-	"请授权": "Please authorize",
-	"商城需要获取您的用户信息": "The store needs to obtain your user information",
-	"支付成功": "Payment success",
-	"未完成支付": "Outstanding payment",
-	"保额": "Insurance amount",
-	"未认证": "Not certified",
-	"待审核": "Pending review",
-	"certified": "Certified",
-	"未通过": "Failed",
-	"冻结": "Freeze",
-	"免押认证": "No deposit certified",
-	"警告": "Warning",
-	"请点击登录": "Please click log in",
-	"元": "USD",
-	"使用地区": "Region of use",
-	"请输入保险使用地区": "Please Enter region",
-	"已购买保险": "Insurance has been purchased",
-	"押金": "Deposit",
-	"(仅供参考,具体以门店为准)": "(reference only,refer shop details)",
-	"单价": "Unit price",
-	"个月": "Months",
-	"周": "weeks",
-	"年": "year",
-	"起享": "Start enjoy",
-	"首租": "First Lease",
-	"优惠": "discount",
-	"现在续费优惠": "Renewal discount now",
-	"时长": "duration",
-	"VIP专属": "VIP exclusive",
-	"输入其它周期": "Input other cycles",
-	"为一周期": "For one cycle",
-	"优惠劵": "Discount coupon",
-	"您有可用的优惠劵": "You have available discount coupons",
-	"租金未达到优惠劵门槛": "Rent not reached discount coupon threshold",
-	"减": "reduction",
-	"领租金劵满": "Rent collection coupon full",
-	"立减": "Immediate reduction",
-	"应付金额": "Payable amount",
-	"立省": "Immediate savings",
-	"微信支付": "WeChat payment",
-	"线下支付": "Offline payment",
-	"线上支付": "Online payment",
-	"我已阅读并同意": "I have read and agree",
-	"确定租赁": "Determine Lease",
-	"当前机柜有": "Current cabinet has",
-	"种价格的电池": "prices of batteries",
+	"已取消": "Cancelled",
+	"其他都需要带车牌号": "License plate needed for others",
+	"锁车": "Lock Car",
+	"启动": "Start",
+	"车辆提示": "Car Alert",
+	"确认关闭车辆": "Confirm to turn off car",
+	"确认需要启动车辆": "Confirm to start car",
+	"开启": "Enable",
+	"关闭": "Disable",
+	"正在关闭车辆": "Turning off car",
+	"正在启动车辆": "Starting car",
+	"车辆已关闭": "Car off",
+	"车辆已启动": "Car on",
+	"操作超时": "Timeout",
+	"电池信息": "Battery Info",
+	"电池": "Battery",
+	"剩余电量": "Battery Left",
 	"电压": "Voltage",
-	"已关联车辆": "Associated vehicle",
-	"当前设备为车请关联电池": "Current device is vehicle, please associate battery",
-	"请输入电池编号": "Please enter battery No.",
-	"上传车辆照片": "Upload vehicle photos",
-	"换电功能": "Battery exchange function",
-	"合同时长": "Contract duration",
-	"信用分数": "Credit score",
-	"蓝牙已连接": "Bluetooth connected",
-	"蓝牙未连接": "Bluetooth not connected",
-	"请确认": "Please confirm",
-	"PleaseConfirm": "Please confirm",
-	"确认": "Confirm",
+	"温度": "Temperature",
+	"换电套餐": "Swap Plan",
+	"适用类型": "Model",
+	"5秒换电,瞬间满电,畅享骑行新体验!": "5s swap, full power, ride on!",
+	"适用电池:": "Applicable battery:",
+	"当前购买为虚拟": "Virtual purchase",
+	"卡": "Card",
+	"如想要体验实体": "For physical card",
+	"卡功能,前往最近的门店领取": "Pick up card at store",
+	"立即购买": "Buy Now",
+	"请先绑定车辆!": "Bind vehicle first",
+	"提交中": "Submitting",
+	"换电记录": "Swap History",
+	"开始换电": "Start Swap",
+	"换电中": "Swapping",
+	"换电成功": "Swap Success",
+	"换电失败": "Swap Failed",
+	"未知": "Unknown",
+	"换电单号": "Swap Order",
+	"归还电池": "Return Battery",
+	"借出电池": "Borrow Battery",
+	"换电类型": "Swap Type",
+	"机柜换电": "Cabinet Swap",
+	"门店换电": "Store Swap",
+	"电柜名称": "Cabinet Name",
+	"开启感应解锁": "Enable Proximity Unlock",
+	"是否配对改设备": "Pair with Device?",
+	"配对": "Pair",
+	"点击下方": "Click Below",
+	"开始配对": "Start Pairing",
+	"请在系统弹窗中选择": "Select in system popup",
+	"以完成功能开启。": "To enable feature.",
+	"提示信息": "Tip Info",
+	"使用感应解锁功能时,请务必保证手机蓝牙功能开启,在蓝牙列表中忽略此设备会导致感应解锁失败": "Ensure Bluetooth is on. Ignoring device in Bluetooth list will cause failure.",
+	"测试指令!!!别删除": "Test Command!!! Do not delete",
+	"关闭靠近解锁": "Disable Proximity Unlock",
+	"跳转解绑配对": "Go to Unpair",
+	"靠近解锁": "Proximity Unlock",
+	"升级": "Upgrade",
+	"感应解锁已开启": "Proximity Unlock Enabled",
+	"注意:请勿在手机蓝牙中忽略“电动车蓝牙": "Warning: Do not ignore 'e-bike Bluetooth' in Bluetooth list",
+	"设备,否则感应解锁功能将无法使用": "Device, or unlock feature won't work",
+	"机柜信息传输完成": "Cabinet Info Transfer Complete",
+	"初始化": "Initializing",
+	"连接蓝牙": "Connect Bluetooth",
+	"下发配对指令": "Send Pairing Command",
+	"会断开连接": "Will Disconnect",
+	"直接再次连接": "Reconnect Directly",
+	"记得不要提示可以蓝牙断开连接": "Do not prompt Bluetooth disconnection",
+	"点击配对": "Click to Pair",
+	"调用配对": "Invoke Pairing",
+	"确认配对": "Confirm Pairing",
+	"断开蓝牙": "Disconnect Bluetooth",
+	"不走逻辑": "No Logic",
+	"蓝牙未启用": "Bluetooth Disabled",
+	"请先打开蓝牙": "Please Turn On Bluetooth",
+	"开始升级": "Start Upgrade",
+	"结束?????": "End????",
+	"蓝牙未连接": "Bluetooth Not Connected",
+	"蓝牙连接断开": "Bluetooth Disconnected",
+	"提示": "Tip",
+	"重新连接": "Re-connect",
+	"蓝牙连接中断,是否重新连接?": "Bluetooth connection interrupted, reconnect?",
+	"蓝牙连接成功": "Bluetooth Connected",
+	"电动车蓝牙": "E-bike Bluetooth",
+	"蓝牙配对请求": "Bluetooth Pairing Request",
+	"想与您配对,请确保显示的配对密钥为": "Wants to pair, ensure displayed key is",
+	"关闭蓝牙连接": "Disconnect Bluetooth",
+	"切换正常工厂模式": "Switch to Normal Factory Mode",
+	"切换工厂模式以后蓝牙断开": "Bluetooth disconnects after factory mode switch",
+	"重新连接蓝牙": "Reconnect Bluetooth",
+	"接近解锁下发成功": "Proximity Unlock Sent Successfully",
+	"下发打开接近解锁指令": "Send Proximity Unlock Command",
+	"获取接近解锁下发成功": "Proximity Unlock Command Sent Successfully",
+	"是否是蓝牙类型列表里面的": "Is it in the Bluetooth type list?",
+	"打开蓝牙连接": "Open Bluetooth Connection",
+	"监听蓝牙设备连接状态变化事件": "Listen for Bluetooth connection status change",
+	"观察周围是否有其他骑手连接,请等待对方完成": "Check if other riders are connected, wait for them",
+	"或": "Or",
+	"微信是否开启了蓝牙权限": "Has WeChat enabled Bluetooth permissions?",
+	"微信是否开启了蓝牙权限!!": "Has WeChat enabled Bluetooth permissions!!",
+	"连接失败,请尝试重新连接": "Connection failed, try reconnecting",
+	"蓝牙未打开或请在右上角设置授权小程序使用蓝牙": "Bluetooth is off, or enable Bluetooth in settings",
+	"我知道了": "Got it",
+	"蓝牙连接未成功": "Bluetooth connection failed",
+	"当前机柜未找到符合的蓝牙类型": "No compatible Bluetooth type found for this cabinet",
+	"开启感应解锁后,携带手机靠近车辆并按": "After enabling proximity unlock, bring phone close and press",
+	"键即可开机": "to turn on",
+	"按键解锁": "Button Unlock",
+	"手机接近车辆后,长按": "Press and hold after phone is near vehicle",
+	"键即可解锁": "to unlock",
+	"灵敏度设置": "Sensitivity Settings",
+	"关闭感应解锁": "Disable Proximity Unlock",
+	"距离建议适中,设置过近会降低成功率,设置过远可能会有风险": "Recommended distance is moderate, too close may reduce success rate, too far may be risky",
+	"最近": "Closest",
+	"适中": "Moderate",
+	"最远": "Farthest",
+	"左": "Left",
+	"设置灵敏度指令成功": "Sensitivity setting successful",
+	"关闭接近解锁成功": "Proximity Unlock disabled successfully",
+	"无可用电池": "No available batteries",
+	"营业中": "Open",
+	"已休息": "Resting",
+	"直线距您": "Straight-line Distance",
+	"千米": "km",
+	"米": "m",
+	"导航": "Navigation",
+	"格口详情": "Box Detail",
+	"电柜编号:": "Cabinet ID:",
+	"已预约": "Reserved",
+	"没有预约": "Not Reserved",
+	"空仓或者仓门不可用": "Empty or unavailable box",
+	"空仓": "Empty Box",
+	"满电或者电量未满": "Full or not fully charged",
+	"电池可用": "Battery Available",
+	"待充满": "Charging Required",
+	"电池列表": "Battery List",
+	"存储蓝牙状态": "Store Bluetooth Status",
+	"机柜详情": "Cabinet Details",
+	"离线": "Offline",
+	"在线": "Online",
+	"钱包余额": "Wallet Balance",
+	"扫码机柜": "Scan Cabinet",
+	"车牌号": "License Plate",
+	"可用电池数": "Available Battery Count",
+	"蓝牙信息": "Bluetooth Info",
+	"蓝牙换电需要的数据": "Data required for Bluetooth swap",
+	"如果本地有存储的定位信息,则直接使用": "Use stored location info if available",
+	"领取电池成功": "Battery Retrieved Successfully",
+	"获取机柜信息": "Retrieve Cabinet Info",
+	"计算可用电池数": "Calculate Available Battery Count",
+	"导航去机柜": "Navigate to Cabinet",
+	"设备数据": "Device Data",
+	"将传入的时间转换为分钟": "Convert the given time to minutes",
+	"判断当前时间是否在指定范围内": "Check if the current time is within the specified range",
+	"仓体": "Cabinet Body",
+	"月租": "Monthly",
+	"年租": "Yearly",
+	"分租": "Sub-lease",
+	"季租": "Quarterly",
+	"购买": "Buy",
+	"免费换电次数": "Free Swap Count",
+	"日租享": "Daily Rental Enjoyment",
+	"次免费换电数,超出后需要单独支付换电费用;": "Free swaps, extra swaps will require payment;",
+	"我要用车": "I want to use the vehicle",
+	"获取直线距离": "Get Straight-line Distance",
+	"您是否要拨打电话": "Do you want to call?",
+	"更多功能": "More Features",
+	"固定导航栏": "Fixed Navigation Bar",
+	"其他功能": "Other Features",
+	"长按拖动可调整顺序,可增减固定导航栏内容": "Long press to adjust order, add or remove items from fixed navigation bar",
+	"解除绑定": "Unbind",
+	"开机": "Slide to Turn On",
+	"开启车辆": "Start Vehicle",
+	"关机": "Shutdown",
+	"您确认": "Are you sure?",
+	"吗": "?",
+	"处理修改之后的数据": "Process modified data",
+	"输入注册账号的密码即可解绑": "Enter the registration account password to unbind",
+	"请输入密码": "Enter Password",
+	"解绑后,您将失去当前设备的控制权,其他人可以连接绑定您的设备。": "After unbinding, you will lose control of the device, and others can connect and bind your device.",
+	"解绑后将立即删除家庭账号,感应解锁等数据。": "Unbinding will immediately delete family account and proximity unlock data.",
+	"完成并解绑": "Finish and Unbind",
+	"是否确定解除绑定": "Are you sure you want to unbind?",
+	"返回首页": "Return to Home",
+	"解绑成功!": "Unbind Successful!",
+	"请选择设备": "Select Device",
+	"当前选择": "Current Selection",
+	"租赁设备": "Leased Device",
+	"绑定设备": "Bind Device",
+	"是否确定": "Are you sure?",
+	"清空当前设备蓝牙相关": "Clear current device Bluetooth data",
+	"切换成功!": "Switch successful!",
+	"由于": "Due to",
+	"一些样式及点击事件不支持": "Some styles and click events are not supported",
+	"气泡内容": "Bubble content",
+	"已驻车": "Parked",
+	"分钟": "Minutes",
+	"更新于": "Updated at",
+	"闪灯鸣笛": "Flash light & Horn",
+	"使用": "Use",
+	"点击事件": "Click Event",
+	"需要填写": "Required",
+	"标记点": "Mark point",
+	"定时器变量,用于清除定时器": "Timer variable, used to clear the timer",
+	"未知时间": "Unknown time",
+	"五秒后重新调用加载车辆位置信息的方法": "Re-call method to load vehicle location in 5 seconds",
+	"监听页面卸载": "Listen for page unload",
+	"页面卸载时清除定时器": "Clear timer when page unloads",
+	"确保定时器引用被清除": "Ensure timer reference is cleared",
+	"默认返回上一个页面再提示报错": "Default return to previous page then show error",
+	"您确认开启闪灯鸣笛吗": "Are you sure to turn on flash light & horn?",
+	"本人已知晓上述内容": "I acknowledge the above content",
+	"阅读合同倒计时": "Contract reading countdown",
+	"秒": "s",
+	"签名": "Signature",
+	"重新签名": "Resign",
+	"上报小程序账号信息": "Report mini-program account information",
+	"您当前没有手写签名,是否要进行填写": "You do not have a handwritten signature, do you want to fill it?",
+	"续航": "Range",
+	"骑行里程": "Ride Distance",
+	"骑行时长": "Ride Time",
+	"最大速度": "Max Speed",
+	"平均速度": "Avg Speed",
+	"车架号": "VIN",
+	"设备编号": "Device No.",
+	"车辆总里程": "Total Mileage",
+	"固件详情": "Firmware Details",
+	"中控硬件": "Control Hardware",
+	"中控软件": "Control Software",
+	"意见反馈": "Feedback",
+	"问题类型": "Problem Type",
+	"问题描述": "Problem Description",
+	"请详细说明,以便我们解决问题,最多可填写": "Please describe in detail to help us solve the problem, max",
+	"字。": "characters.",
+	"问题图片": "Problem Image",
+	"提交": "Submit",
+	"常用功能": "Common Features",
+	"车辆": "Vehicle",
+	"电柜": "Battery Cabinet",
+	"应用操作": "App Operations",
+	"其他": "Others",
+	"最多输入": "Max Input",
+	"字": "characters",
+	"提交成功": "Submit Success",
+	"为保证": "To ensure",
+	"感应解锁": "Sensor Unlock",
+	"闪电鸣笛": "Flash Horn",
+	"打开尾箱锁": "Open trunk lock",
+	"请先链接蓝牙": "Connect Bluetooth First",
+	"的正常使用,请依次开以下权限,开启后可以显著提高解锁成功率,且不会明显增加手机电量消耗": "For normal use, please enable the following permissions to improve unlock success rate without significant battery drain",
+	"授权引导": "Authorization Guide",
+	"已开启": "Enabled",
+	"未开启": "Disabled",
+	"我已开启": "I have enabled",
+	"引入": "Introduce",
+	"是否打开所有需要权限": "Open all required permissions?",
+	"位置权限": "Location Permission",
+	"打开手机定位,并运行": "Enable phone location and run",
+	"始终使用": "Always use",
+	"电池优化": "Battery Optimization",
+	"打开电池优化设置,": "Open Battery Optimization Settings",
+	"将弗兰克": "Frank",
+	"加入保护名单": "Add to Whitelist",
+	"后台运行": "Background Running",
+	"打开后台运行权限": "Open Background Permission",
+	"清选择手动控制": "Clear Manual Control",
+	"打开应用锁": "Open App Lock",
+	"打开应用权限锁": "Open App Permission Lock",
+	"的": "of",
+	"里编写如下代码": "Write the following code inside",
+	"已授权": "Authorized",
+	"已获得授权": "Authorization Obtained",
+	"未获得授权": "Authorization Not Obtained",
+	"被永久拒绝权限": "Permission Permanently Denied",
+	"确定打开": "Confirm Open",
+	"胎压": "Tire Pressure",
+	"选择的车辆控制": "Selected Vehicle Control",
+	"组件的方法列表": "Component Method List",
+	"判断车辆是否在线状态": "Check Vehicle Online Status",
+	"在线调用接口": "Call Interface When Online",
+	"不在线提示连接蓝牙": "Offline Prompt to Connect Bluetooth",
+	"成功": "Success",
+	"蓝牙是否已经连接": "Is Bluetooth Connected",
+	"未连接提示去连接": "Not Connected, Prompt to Connect",
+	"已连接下发对应指令": "Connected, Send Command",
+	"操作成功": "Operation Successful",
+	"发送": "Send",
+	"指令结束": "Command End",
+	"当前车辆处于离线,是否前往开启蓝牙配对操作车辆?": "Vehicle Offline, Go to Start Bluetooth Pairing?",
+	"前往配置更多功能": "Go to Configure More Features",
+	"请先开启位置授权": "Please Enable Location Authorization First",
+	"的正常使用,请": "For Normal Use, Please",
+	"开启位置授权": "Enable Location Authorization",
+	"并": "and",
+	"打开精准位置": "Enable Precise Location",
+	"开关,可提高解锁成功率,且不会明显增加手机电量消耗。": "Switch can improve unlock success rate without significant battery drain.",
+	"打开手机定位,并允许": "Enable Phone Location and Allow",
+	"「始终」": "Always",
+	"第": "Step",
+	"步": "Step",
+	"始终": "Always",
+	"开启请准位置开关": "Enable Precise Location Switch",
+	"精准位置": "Precise Location",
+	"组件的属性列表": "Component Properties List",
+	"续航开新路": "New Path for Range",
+	"路遥见实力": "Distance Reveals Strength",
+	"全速续航": "Full-Speed Range",
+	"极速可达": "Max Speed Achievable",
+	"了解更多": "Learn More",
+	"全新车型,即将发布!": "New Model Coming Soon!",
+	"更智能、更高效,全新车型即将亮相,敬请期待!": "Smarter, More Efficient, New Model Coming Soon!",
+	"租赁设备编号": "Leased Device ID",
+	"子组件": "Subcomponent",
+	"更新": "Update",
+	"您已逾期": "You are Overdue",
+	"请及时续费或归还车辆": "Please Extend Rental or Return the Vehicle",
+	"去续费": "Go to Extend Rental",
+	"车辆已开机": "Vehicle Powered On",
+	"车辆已关机": "Vehicle Powered Off",
+	"最近骑行": "Recent Rides",
+	"总里程": "Total Mileage",
+	"蓝牙配对成功": "Bluetooth Pairing Successful",
+	"请先连接蓝牙": "Please Connect Bluetooth First",
+	"用车人管理": "User Management",
+	"个家庭账号": "Family Accounts",
+	"设备信息": "Device Info",
+	"软件版本": "Current Version",
+	"用户车辆列表": "User Vehicle List",
+	"当前车辆编号": "Current Vehicle ID",
+	"手机型号": "Phone Model",
+	"是否打开权限弹窗": "Enable Permission Pop-Up?",
+	"当前是否蓝牙连接或者配对": "Is Bluetooth Connected or Paired?",
+	"所有蓝牙配对所需权限是否已开启": "Have All Bluetooth Pairing Permissions Been Enabled?",
+	"分享给好友": "Share with Friends",
+	"发送给朋友": "Send to Friends",
+	"蓝牙配对所需权限": "Bluetooth Pairing Permissions",
+	"运行小程序需要隐藏": "Running App Requires Hidden",
+	"所需权限开启成功": "Required Permissions Enabled Successfully",
+	"前往开启蓝牙配对": "Go to Enable Bluetooth Pairing",
+	"身份认证提示": "Identity Authentication Prompt",
+	"尚未完成身份认证,是否进行身份认证": "Identity authentication not completed, proceed with authentication?",
+	"您还未登录,请先登录": "You are not logged in, please log in first",
+	"判断逾期": "Check overdue",
+	"如果租": "If renting",
+	"购多个车辆的话可以切换当前车辆": "If buying multiple vehicles, you can switch the current vehicle",
+	"判断距离是否超过": "Check if distance exceeds",
+	"如果超过": "If exceeds",
+	"米,则转换为千米并返回": "meters, then convert to kilometers and return",
+	"否则直接返回米": "Otherwise, return meters directly",
+	"是否是小众租车": "Is this a niche rental service?",
+	"欢迎来到": "Welcome to",
+	"手机号快捷登录": "Phone number quick login",
+	"其他手机号登录": "Login with other phone number",
+	"电动车租赁用户协议": "Electric vehicle rental user agreement",
+	"和": "and",
+	"申请获取并验证你的手机号": "Request and verify your phone number",
+	"快捷登录": "Quick login",
+	"上次提供": "Last provided",
+	"不允许": "Not allowed",
+	"使用其他号码": "Use other number",
+	"初始化未授权": "Initialization unauthorized",
+	"请查阅隐私和协议": "Please refer to privacy and agreement",
+	"一键授权失败": "One-click authorization failed",
+	"请使用手机号登录": "Please use phone number to log in",
+	"登录成功": "Login successful",
+	"修改密码": "Change password",
+	"请输入旧密码": "Enter old password",
+	"请输入新密码": "Enter new password",
+	"请再次输入新密码": "Please confirm the new password",
+	"确认修改": "Confirm modification",
+	"是否确认修改密码?": "Confirm password change?",
+	"修改成功": "Change successful",
+	"忘记密码": "Forgot password",
+	"请输入要重置的邮箱账号": "Enter the email address to reset password",
+	"重置密码": "Reset password",
+	"重置密码邮件已发送": "Password reset email sent",
+	"去登录": "Go Login",
+	"我们向": "We have sent",
+	"发送了一封密码重置邮件,请您登录邮箱操作处理。": "A password reset email has been sent, please check your inbox.",
+	"请输入有效的邮箱地址": "Please enter a valid email address",
+	"欢迎来到智寻出行": "Welcome to ZhiXun Travel",
+	"邮箱密码登录": "Email password login",
+	"请输入邮箱账号": "Enter email address",
+	"用户协议": "User agreement",
+	"隐私政策": "Privacy policy",
+	"登录": "Login",
+	"没有账号": "No account",
+	"立即注册": "Register now",
+	"其他方式登录": "Other login methods",
+	"请勾选用户协议和隐私政策": "Please check agreement and privacy policy",
+	"账号注册": "Account registration",
+	"请再次输入密码": "Please re-enter password",
+	"注册邮件已发送": "Registration email sent",
+	"我们已向": "We have sent",
+	"发送注册邮件,请您登录邮箱点击链接完成注册。": "Registration email sent, please check your inbox to complete registration.",
 	"请输入": "Please enter",
-	"该设备无支付方式": "device no payment method",
-	"需使用手机蓝牙功能,请打开蓝牙": "use Bluetooth on phone, turn on Bluetooth",
-	"请输入租赁时长": "Please enter rental duration",
-	"请查阅合同": "Please check the contract",
-	"请补齐相应的车辆照片": "Please fill correspond vehicle photos",
-	"请上传车辆图片": "Please upload picture vehicle",
-	"请尽快完成线下支付": "Please complete offline payment",
-	"签约成功": "Successful signing",
-	"签约失败,租赁设备已成功": "Signing failed, leasing device successful",
-	"请先点击阅读租赁合同": "Please click read rental contract",
-	"登录": "Log in",
-	"请登录之后进行阅读合同签名?": "Please login read contract signature?",
-	"获取定位失败": "Get location fail",
-	"正在租电中,请稍后": "battery being rented, please wait",
-	"重新发送": "resend",
-	"重新发起租电": "Restart lease",
-	"连接设备失败,请靠近设备重试": "Failed connect device, Please try again close device",
-	"重试": "retry",
-	"一键导航": "NAV",
-	"店铺位置": "Shop location",
-	"联系电话": "Tel",
-	"店铺介绍": "Store Intro",
-	"电池信息": "Battery Info",
-	"组": "groups",
-	"品牌": "Brand",
-	"型号": "Model",
-	"车牌": "License plate",
-	"暂时没有可租车辆": "no cars available the moment",
-	"暂停": "Pause",
-	"播放": "Play",
-	"地址": "Address",
-	"时间": "time",
-	"当前没有轨迹": "No current track",
-	"请上传照片": "Please upload photos",
-	"注:长按图片删除": "Note: Long press image delete",
-	"提交": "submit",
-	"前面": "front side",
-	"左面": "left side",
-	"右面": "right side",
-	"前轮": "front wheel",
-	"后轮": "rear wheel",
-	"车子+电池": "Car + Battery",
-	"你确定要删除吗?": "Are you sure you want to delete?",
-	"请补齐相应的照片": "Please fill corresponding photos",
-	"上传成功": "Upload success",
+	"位密码,包含字母数字": "character password, including letters and numbers",
+	"两次输入的密码不一致": "Passwords do not match",
+	"注册邮件发送成功": "Registration email sent successfully",
+	"请输入车牌号全称": "Please enter full license plate number",
+	"请输入车牌号": "Please enter license plate number",
+	"确认": "Confirm",
+	"请先输入车牌号": "Please enter license plate number first",
+	"温馨提示:各省市因地制宜,制定相关的牌照格式,请按照实际车辆牌照的格式进行填写~": "Friendly reminder: Different provinces and cities have different license plate formats, please follow the actual format.",
+	"参考格式": "Reference format",
+	"北京": "Beijing",
+	"未获取到经纬度": "Latitude and longitude not obtained",
+	"判断原因是否为微信小程序内部没有授权定位": "Check if the issue is due to the lack of location authorization in the WeChat mini-program",
+	"无法获取位置信息,请检查您的微信定位权限设置": "Unable to retrieve location information, please check your WeChat location permissions",
+	"您的手机未授权微信定位权限,请前往手机设置开启权限": "Your phone has not authorized WeChat location permissions, please enable them in phone settings",
+	"获取当前时间戳(毫秒)": "Get current timestamp (milliseconds)",
+	"此车辆已离线,请选择其他车辆": "This vehicle is offline, please choose another vehicle",
+	"车辆正在被使用": "The vehicle is in use",
+	"是本人在使用": "I am using it",
+	"已有正在使用的车辆,是否跳转至车辆详情页": "There is a vehicle in use, do you want to go to the vehicle details page?",
+	"此车辆正在被使用": "This vehicle is in use",
+	"预租车型与之前预约车型不一致": "Pre-rental model does not match the previously reserved model",
+	"与预约车型不符": "Does not match the reserved model",
+	"轴偏移量": "Axle offset",
+	"点击显示": "Click to display",
+	"常显": "Always visible",
+	"今天": "Today",
+	"车辆推动报警": "Vehicle movement alert",
+	"车辆正在被人推送,请及时查看": "Vehicle is being moved, please check promptly",
+	"我的消息": "My Messages",
+	"设备消息": "Device Messages",
+	"系统消息": "System Messages",
+	"行驶里程": "Mileage",
+	"功率": "Power",
+	"减少碳排放": "Reduce carbon emissions",
+	"骑行次数": "Ride Count",
+	"累计功率": "Total Power",
+	"减少排放量": "Emissions Reduction",
+	"总": "total",
+	"年": "year",
+	"月": "month",
+	"周": "week",
+	"请输入绑定的新手机号": "Please enter the new phone number to bind",
+	"请输入验证码": "Please enter the verification code",
+	"秒后再次获取": "Get again after seconds",
+	"获取验证码": "Get Verification Code",
+	"绑定新手机号": "Bind New Phone Number",
+	"请输入手机号码": "Please enter phone number",
+	"请检测您的手机号码是否正确": "Please check if your phone number is correct",
+	"仪表盘": "Dashboard",
+	"请点击登录": "Please click to log in",
+	"我的车辆": "My Vehicle",
+	"用车人": "Vehicle User",
+	"温馨提示": "Friendly Reminder",
+	"您还未购买换电套餐,是否前往进行换电套餐?": "You have not purchased a battery swap plan yet. Would you like to proceed with purchasing one?",
+	"前往购买": "Go to Purchase",
+	"客服中心": "Customer",
+	"设置": "Settings",
+	"换电": "Battery Swap",
+	"您还未购买车辆,购买车辆才可享受换电套餐": "You have not purchased a vehicle, a vehicle must be purchased to enjoy the battery swap plan",
+	"您还未绑定车辆!": "You have not bound a vehicle!",
+	"未获取到手机号码": "Phone number not obtained",
+	"退出登录": "Logout",
+	"昵称": "NickName",
+	"注册时间": "Register Time",
+	"隐私协议": "Privacy Policy",
+	"用户条款": "User Terms",
+	"输入处理": "Input Processing",
+	"延迟处理输入法组合输入": "Delay input method combination input",
+	"更新值(避免无限触发,需判断)": "Update value (avoid infinite triggers, needs checking)",
+	"截断字符串至指定字节": "Truncate string to specified bytes",
+	"判断字符是否为双字节(如中文)": "Check if character is double-byte (e.g., Chinese)",
+	"您确定要退出当前账号吗?": "Are you sure you want to log out of the current account?",
+	"号仓门已打开": "Door Open",
+	"请存入更换电池": "Please insert replacement battery",
+	"取走满电电池": "Take fully charged battery",
+	"并关好仓门": "And close the door",
+	"请": "please",
+	"归还": "Return",
+	"取出": "Take Out",
+	"电池并关上仓门": "Battery and close the door",
+	"请取出电池并关上仓门": "Please remove the battery and close the door",
+	"归还完成后电柜会自动打开可租仓门": "Cabinet Opens Automatically After Return",
+	"自动为您匹配最高电量电池": "Automatically match the highest charged battery",
+	"即将跳转至首页,祝您骑行愉快": "Redirecting to homepage, wish you happy riding",
+	"回到首页": "Back to Home",
+	"联系门店": "Contact Store",
+	"仅为示例": "For example",
+	"待支付": "Pending Payment",
+	"待取车": "Pending Pickup",
+	"待激活": "Pending Activation",
+	"使用中": "In Use",
+	"已逾期": "Overdue",
+	"还车申请中": "Return Application Pending",
+	"还车中": "Returning Vehicle",
+	"车辆已归还": "Vehicle Returned",
+	"订单已支付": "Order Paid",
+	"订单未支付": "Order Not Paid",
+	"已完结": "Finished",
+	"支付中": "Paying",
+	"支付成功": "Payment Successful",
+	"支付失败": "Payment Failed",
+	"支付取消": "Payment Cancelled",
+	"线下待审核": "Offline Pending Review",
+	"线下审核拒绝": "Offline Review Rejected",
+	"下单时间": "Order Time",
+	"有效期至": "Valid Until",
+	"有效时长": "Valid Duration",
+	"免费换电数": "Free Battery Swaps",
+	"订单类型": "Order Type",
+	"购车": "Purchase Vehicle",
+	"租车": "Rent Vehicle",
+	"申请中": "Pending Application",
+	"审核失败": "Review Failed",
+	"退款失败": "Refund Failed",
+	"已退款": "Refunded",
+	"套餐金额": "Plan Amount",
+	"订单金额": "Order Amount",
+	"租车购车": "Rent or Purchase",
+	"请于": "By",
+	"到门店取车": "Pick up at the store",
+	"请上传车辆图片激活车辆": "Please upload vehicle picture to activate vehicle",
+	"待门店确认": "Pending Store Confirm",
+	"等待门店取车": "Waiting store pick up vehicle",
 	"已完成": "Completed",
-	"未完成": "Uncompleted",
-	"当前余额": "Current balance",
-	"收支明细": "Income expenditure detail",
-	"充值金额": "Recharge amount",
-	"每一条报警短信消耗": "Each alarm message consumes",
-	"自定义币": "Custom Coin",
-	"充值": "top-up",
-	"距您": "From you",
-	"机柜可用电池": "Cabinet available battery",
-	"充电中": "Charging",
-	"空仓": "Empity",
-	"电池充电情况": "Battery charging status",
-	"电池型号": "Battery type",
-	"客服电话": "Customer service TEL No",
-	"当前充电柜": "Current charging cabinet",
-	"个可用": "available",
-	"个使用中": "in use",
-	"系统提示": "system Tips",
-	"查看": "check",
-	"恭喜获得": "Congratulations obtaining",
-	"积分": "Integral",
-	"邀请新用户完成任务赢取奖金": "Invite new users complete tasks and earn bonuses",
-	"去赚钱": "To make money",
-	"优惠劵(元)": "coupon (USD)",
-	"仅适用于": "Only applicable",
-	"租金": "rent",
-	"满": "full",
-	"使用": "use",
-	"永久有效": "Permanently valid",
-	"有效期": "Validity period",
-	"一键领取": "One click collect",
-	"不可与其他优惠券叠加使用": "Cannot used combination other coupons",
-	"优惠劵领取成功": "The coupon successfully claimed",
-	"没有更多信息啦 ~": "No more information ~",
-	"营业中": "In business",
-	"休息中": "At rest",
-	"营业时间": "Business hours",
-	"门店电池": "Store battery",
-	"居民": "Resident",
-	"24小时营业": "Open 24 hours",
-	"星期日": "Sunday",
-	"星期一": "Monday",
-	"星期二": "Tuesday",
-	"星期三": "Wednesday",
-	"星期四": "Thursday",
-	"星期五": "Friday",
-	"星期六": "Saturday",
-	"不同意并退出": "Disagree and exit",
-	"同意并继续": "Disagree and quit",
-	"您的姓名": "Your name",
-	"请输入姓名": "Please input your name",
-	"身份证号码": "ID No.",
-	"请输入身份证号码": "Please input the ID No.",
-	"请上传身份证人像面照片": "Please upload photo identity witness",
-	"身份证人像面照片": "Identity witness photo",
-	"请上传身份证国徽面照片": "Please upload photo national emblem on your ID card",
-	"身份证国徽面照片": "Photo national emblem on ID card",
-	"请上传真人拍照照片": "Please upload real people to take photos",
-	"真人拍照": "Real person photography",
-	"请上传车辆照片": "Please upload vehicle photos",
-	"车辆拍照": "Vehicle photography",
-	"请上传安装后电瓶桩头照片": "Please upload photos battery pile head after installation",
-	"电瓶桩头拍照": "Photo of battery pile head",
-	"请输入您的姓名": "Please enter your name",
-	"请输入您的身份证号": "Please enter your ID number",
-	"请上传您的身份证照片": "Please upload your ID photo",
-	"请上传您的真人照片": "Please upload your real photo",
-	"请上传您的车辆照片": "Please upload photo your vehicle",
-	"请上传您的电瓶桩头照片": "Please upload your battery post head photo",
-	"提交成功": "Submit success",
-	"全部": "Whole",
-	"使用中": "Use",
-	"待续租": "To be Rent",
-	"已超时": "Timed out",
-	"暂存": "Storage",
-	"次": "times",
-	"到期": "expire",
-	"已过期": "expired",
-	"电量": "electricity level",
-	"公里": "Kilometre",
-	"里程": "Mileage",
-	"使用正常": "Normal use",
-	"正常": "Normal",
-	"立即续费": "Renew immediately",
-	"续费": "Renew",
-	"轨迹": "Trajectory",
-	"报警": "Alarm",
-	"已通电": "Powered on",
-	"已断电": "Powered off",
-	"门店换电": "Exchange",
-	"套餐换电": "Exchange All",
-	"还车": "Return car",
-	"返回": "Return",
-	"当前设备": "Current device",
-	"CurrentDevice": "Current device",
-	"请输入新设备编号": "Please input new device No.",
-	"PleaseInput": "Please input new device No.",
-	"换电": "Change electricity",
-	"ChangeElectricity": "Change electricity",
-	"当前设备未购买换电功能,是否需要进行开通": "current device not have power change function. Do you need to enable it",
-	"开通": "Activation",
-	"该设备暂无位置信息": "The device has no location information",
-	"设备过期不允许暂存": "The device is expired and cannot be temporarily stored",
-	"机柜暂存": "Cabinet temporary storage",
-	"门店暂存": "Store temporary storage",
-	"自己暂存": "Own temporary storage",
-	"提交审核中,请等待门店审核": "Submitted for review, please wait store review",
-	"提交审核中,请拿取您的电池联系门店进行暂存吧!": "Submit for review, please take your battery and contact store temporary storage!",
-	"您的设备已过期,请续费后再进行操作": "Your device has expired, please renew before operation",
-	"通电": "Power on",
-	"断电": "Power off",
-	"发生成功": "Sent success",
-	"请选择设备开始暂停吧!": "Select your device start pausing!",
-	"扫一扫": "Scan",
-	"Scan": "Scan",
-	"手动输入": "Manual input",
-	"ManualInput": "Manual input",
-	"充满": "Full charge",
-	"禁用": "Prohibition of use",
-	"异常": "Abnormal",
-	"无法识别电池": "Unable recognize battery",
-	"门未开,电池连接异常": "Door not open, battery connection abnormal",
-	"电池通讯故障": "Battery communication failure",
-	"块": "Unit",
-	"可用电池": "Available batteries",
-	"空": "empty",
-	"取电": "Electricity intake",
-	"租电": "Rent electricity",
-	"退租": "Terminate lease",
-	"我的电池": "My battery",
-	"换电套餐": "Power exchange Package",
-	"更换": "Replacing",
-	"您暂无电池": "You currently no battery",
-	"套餐内剩余换电次数": "remaining exchange battery within the package",
-	"换电费用": "Electricity exchange cost",
-	"门店退租": "Store Renting Out",
-	"取消选择": "Deselect",
-	"当前电池换电需要付费": "Current battery replacement requires payment",
-	"支付": "payment",
-	"当前门店未开启收款码功能": "The payment code function not enabled current store",
-	"当前有未取的电池,请前往机柜或门店取电!!!": "current have unused battery, please go to cabinet or shop!!!",
-	"正在暂存中,请稍后": "Being temporarily stored,Please wait",
-	"正在取电中,请稍后": "Take the batter,Please wait",
-	"购买换电套餐更优惠,是否前往购买?": "Buy change package more discount, whether to buy?",
-	"继续换电": "Continue Exchange",
-	"前往购买": "Go to buy",
-	"数据异常已更新,请重新扫码": "Abnormal data has been updated, please re-scan code",
-	"需使用手机蓝牙功能,请打开蓝牙(换电状态)": "use Bluetooth function of phone, please turn on Bluetooth (change state)",
-	"正在换电中,请稍后": "battery being exchange, please wait",
-	"您确定要归还电池吗?": "Are you sure return the battery?",
-	"正在还电中,请稍后": "battery being return, please wait",
-	"重新发起还电": "Restart return battery",
-	"蓝牙换电中,请勿关闭手机!!!": "Do not turn off phone while Bluetooth being changed!!!",
-	"请重新发起换电": "Please restart replacement battery",
-	"取电成功": "Battery removed successfully",
-	"暂存成功": "Temporary storage success",
-	"未获取到机柜信息,请尝试重新获取": "No cabinet info obtained. Try to obtain it again",
-	"观察周围是否有其他骑手连接,请等待对方完成 或 微信是否开启了蓝牙权限!!": "Observe whether other connected around, please wait other party to complete or Bluetooth permission enabled on wechat!!",
-	"连接失败,请尝试重新连接": "connection failed. Please try to reconnect",
-	"蓝牙未打开或请在右上角设置授权小程序使用蓝牙": "Bluetooth not turned on or please set authorization applet upper right corner to use Bluetooth",
-	"当前机柜未找到符合的蓝牙类型": "No matching Bluetooth type found for current cabinet",
-	"全部类型": "All types",
-	"自动": "Auto",
-	"您尚未进行身份认证,请先认证 ...": "You have not authenticated, please authenticate ...",
-	"推荐换电柜": "recommended cabinet",
-	"导航": "Nav",
-	"获取地址失败,请授权重新打开": "Failed obtain address, please authorize reopen",
-	"FailedObtain": "Failed obtain address, please authorize reopen",
-	"请勿重复操作": "Do not repeat operation",
-	"更新时间:": "Update time:",
-	"定位": "positioning",
-	"是否要启用低压启动功能": "Whether enable low-voltage boot function",
-	"需要获取您的用户信息": "Need get your user information",
-	"您的账号已成功申请佣金提现,请等待管理员审核": "Your account has successfully applied, please wait administrator's review",
-	"失败": "Fail",
-	"绑定成功": "Bind successful",
-	"用于完善资料": "For data refinement",
-	"正在寻找您的电池可更换的机柜,请稍后...": "Looking for your battery replaceable cabinet, please wait...",
-	"电池电压": "Battery voltage",
-	"电池电量": "Battery level",
-	"今日里程": "Today's mileage",
-	"设防": "fortify",
-	"启动": "start",
-	"撤防": "disarm",
-	"熄火": "flameout",
-	"设备": "device",
-	"已设防": "Fortified",
-	"已撤防": "disarmed",
-	"操作成功": "Successful operation",
-	"推荐车型": "Recommend car model",
-	"换一辆": "Change another one",
-	"车型": "Car model",
-	"附近门店": "Nearby stores",
-	"店铺地址": "Store Address",
-	"服务项目": "Service item",
-	"租车": "Car rental",
-	"共享": "Share",
-	"生产": "produce",
+	"租期剩余": "Remaining Rental Period",
+	"逾期时长": "Overdue Duration",
+	"租借周期": "Rental Period",
+	"逾期金额": "Overdue Amount",
+	"收起": "Collapse",
+	"展开": "Expand",
+	"租借周期:购买": "Rental Period: Purchase",
+	"订单信息": "Order Information",
+	"订单编号": "Order No.",
+	"支付时间": "Payment Time",
+	"支付方式": "Payment Method",
+	"微信支付": "WeChat Pay",
+	"线下支付": "Offline Pay",
+	"支付宝支付": "Alipay",
+	"钱包余额支付": "Wallet Balance Payment",
+	"租车金额": "Rental Amount",
+	"租车押金": "Rental Deposit",
+	"订单结束后随时退": "Return anytime after order ends",
+	"自行去门店取还": "Pick up and return at the store",
+	"未知地址": "Unknown Address",
+	"重量": "Weight",
+	"换电信息": "Battery Swap Information",
+	"共": "Total",
+	"本单可享": "This order includes",
+	"次免费换电数,超出后需单独支付": "free battery swaps, additional will incur extra charges",
+	"自费换电": "Self-paid Battery Swap",
+	"本单您可享受": "This order offers",
+	"次免费换电,": "free battery swap,",
+	"当前免费换电剩余": "Remaining free swaps",
+	"次,超出后需要单独支付换电费用": "times, extra swaps will incur a charge",
+	"取还时间": "Pickup and Return Time",
+	"逾期规则": "Late Policy",
+	"逾期后还可用车吗": "Can I still use the vehicle after overdue?",
+	"如果逾期将触发智能锁车逻辑,可能导致您无法正常用车,请及时续费或联系商家处理。": "If overdue, the smart lock will be triggered, and you may not be able to use the vehicle. Please renew or contact the merchant.",
+	"逾期费计算标准是什么": "What is the late fee calculation standard?",
+	"小时租逾期费": "Hourly rental late fee",
+	"每小时费用": "Hourly Fee",
+	"逾期小时;当日还": "Overdue hours; return same day",
+	"季租逾期费": "Seasonal rental late fee",
+	"每天费用": "Daily Fee",
+	"逾期天数;如果不满": "Overdue days; if less than",
+	"小时按": "Calculated by hours",
+	"小时算,不满": "Calculated by hours, less than",
+	"天按": "Calculated by days",
+	"天算,最终收取的逾期费以门店确认的费用为准": "Calculated by days, final late fee subject to store confirmation",
+	"逾期后续租如何收费": "How is the fee charged for subsequent rentals after overdue?",
+	"逾期后及时续租不收取逾期费,逾期时长将从续租订单的用车时间中抵扣": "If you renew immediately after overdue, no late fee will be charged, overdue time will be deducted from the renewal order’s usage time.",
+	"结束订单": "End Order",
+	"扫码绑定": "Scan to Bind",
+	"去上传": "Go to Upload",
+	"到店还车": "Return vehicle to the store",
+	"选择取消原因": "Select Cancellation Reason",
+	"行程变更无需用车": "Trip changed, no car needed",
+	"修改订单信息": "Update Order Info",
+	"不想要了": "No longer needed",
+	"确认取消": "Confirm Cancellation",
+	"车辆价格": "Vehicle Price",
+	"逾期支付金额": "Overdue Payment Amount",
+	"逾期费用计算": "Overdue Fee Calculation",
+	"车型不匹配!": "Model mismatch!",
+	"车辆未展示!": "Vehicle not displayed!",
+	"请扫描正确的二维码!": "Please scan the correct QR code!",
+	"识别中": "Recognizing",
+	"季": "Season",
+	"取还时间展示": "Pickup and Return Time Display",
+	"剩余租期判断": "Remaining Rental Period Check",
+	"判断逾期状态": "Check Overdue Status",
+	"如果逾期要交逾期费用": "Late fee applies if overdue",
+	"跳转到上传车辆图片再支付逾期费用还车": "Redirect to upload vehicle image, then pay overdue fee and return vehicle",
+	"提交还车图片": "Submit Return Vehicle Image",
+	"取消订单": "Cancel Order",
+	"您是否需要取消该订单": "Do you want to cancel this order?",
+	"是": "Yes",
+	"否": "No",
+	"预约": "Reservation",
+	"非预约": "Non-Reservation",
+	"支付失败,请重试": "Payment failed, please try again",
+	"保险金": "Insurance Fee",
+	"租金": "Rental Fee",
+	"保险": "Insurance",
+	"有保险的时候": "When insured",
+	"为免押": "For deposit-free",
+	"为总金额": "For total amount",
+	"押金": "Deposit",
+	"时": "Hour",
+	"无保险": "No Insurance",
+	"金额": "Amount",
+	"周期数": "Cycle Count",
+	"周期价格": "Cycle Price",
+	"跳转换电记录": "Jump to Battery Swap Record",
+	"我的套餐": "My Plan",
+	"适用电池": "Applicable Batteries",
+	"车辆编号": "Vehicle ID",
+	"小米": "Xiaomi",
+	"卡号": "IC No.",
+	"生效中": "Active",
+	"待生效": "Pending",
+	"已结束": "Ended",
+	"前往购买套餐": "Go to Purchase Plan",
+	"返回上一页": "Back to Previous Page",
+	"请输入手机号": "Please enter phone number",
+	"重新获取": "Get again",
+	"计算属性用于判断是否可以登录": "Calculated property to check if login is allowed",
+	"权限设置": "Permission Settings",
+	"查看实时位置": "View Real-Time Location",
+	"使用换电": "Use Battery Swap",
+	"默认设置": "Default Settings",
+	"远程开关锁": "Remote Lock/Unlock",
+	"座桶锁": "Seat Bucket Lock",
+	"确认添加": "Confirm",
+	"删除成员": "Delete Member",
+	"确定删除这个成员吗?": "Are you sure you want to delete this member?",
+	"删除中": "Deleting",
+	"添加成功!": "Added Successfully!",
+	"确认订单": "Confirm Order",
+	"选择取车时间": "Select Pickup Time",
+	"共计": "Total",
+	"车辆押金": "Vehicle Deposit",
+	"需要支付": "Amount to Pay",
+	"元押金,诺无车损、违章及逾期,还车后可退": "Deposit, refundable upon return if no damage, violations, or overdue.",
+	"前往门店取还": "Go to Store to Pick Up/Return",
+	"门店距您": "Store is X km away",
+	"确认下单": "Confirm Order",
+	"价格明细": "Price Breakdown",
+	"车辆租金": "Vehicle Rental Fee",
+	"支付金额": "Payment Amount",
+	"导航到店": "Navigate to Store",
+	"租车订单已提交": "Rental Order Submitted",
+	"到": "To",
+	"取车": "Pick Up",
+	"订单详情": "Order Details",
+	"选择预约订单时间": "Select Reservation Time",
+	"单价": "Unit Price",
+	"租赁订单号": "Rental Order No.",
+	"结算总金额": "Total Settlement Amount",
+	"拍照车牌号": "Take Photo of License Plate",
+	"拍照时请留意照片的清晰度,便于系统提取车牌号": "Please ensure the photo is clear for the system to read the license plate.",
+	"重拍": "Retake",
+	"使用照片": "Use Photo",
+	"手动输入车牌号": "Manually Enter License Plate",
+	"开了定位权限": "Location Permission Enabled",
+	"休闲鞋": "Casual Shoes",
+	"数据加载中,请稍等": "Data is loading, please wait",
+	"无法获取位置信息,请检查您的定位权限设置": "Unable to retrieve location, please check your location permission settings.",
+	"您的手机未授权定位权限,请前往手机设置开启权限": "Your phone has not authorized location services, please enable it in settings.",
+	"车牌": "License Plate",
+	"读取图片数据": "Reading Image Data",
+	"款车型": "Model Type",
+	"城市代码": "City Code",
+	"我的位置": "My Location",
+	"取车时间": "Pickup Time",
+	"还车时间": "Return Time",
+	"租借时长": "Rental Duration",
+	"租借时长单位": "Rental Duration Unit",
+	"经度": "Longitude",
+	"纬度": "Latitude",
+	"周期单位": "Period Unit",
+	"选中城市": "Selected City",
+	"是否为当前城市": "Is this the current city?",
+	"还车方式": "Return Method",
+	"是否免押": "Is Deposit-Free?",
+	"租": "Rent",
+	"位置是否改变": "Has the location changed?",
+	"加上距离数量门店数据": "Add distance-based store data",
+	"判断当前是否有租赁周期类型": "Check if there is a rental period type",
+	"车辆类型": "Vehicle Type",
+	"租借类型": "Rental Type",
+	"地图控件": "Map Control",
+	"请输入搜索内容": "Please enter search content",
+	"清空": "Clear",
+	"搜索": "Search",
+	"门店": "Pickup Store",
+	"换电柜": "Swap Cabinet",
+	"筛选": "Filter",
+	"上下文": "Context",
+	"是否处于搜索状态": "Is search active?",
+	"点击图标跳转": "Click icon to navigate",
+	"骑行": "Cycling",
+	"附近门店列表": "Nearby Store List",
+	"附近机柜列表": "Nearby Cabinet List",
+	"将": "Move",
+	"移动至中心点": "Move to Center Point",
+	"已移动至中心点": "Moved to Center Point",
+	"线上选择用车方案生成待支付订单": "Online vehicle selection creates a pending payment order",
+	"导航到店向商家支付订单金额": "Navigate to store to pay the order amount",
+	"支付完成后直接现场取车": "Pay and pick up vehicle on-site",
+	"短租": "Short Rent",
+	"长租": "Long Rent",
 	"出售": "Sell",
-	"可租数量": "Quantity available rent",
-	"拍车牌租车": "License plate rental",
-	"请输入车牌号码": "Please enter license plate number",
-	"您是否要拨打电话": "Whether you want to make call",
-	"分钟": "minutes",
-	"月": "month",
-	"日": "day",
-	"本人已知晓上述内容": "I am aware of the above content",
-	"阅读合同倒计时": "Countdown for reading the contract",
-	"签名": "Autograph",
-	"重新签名": "Re sign",
-	"合同订单号": "Contract Order No.",
-	"合同时间": "Contract time",
-	"电池编号": "Battery No.",
-	"查看合同": "View Contract",
-	"名称": "name",
-	"状态": "status",
-	"编号": "No.",
-	"未知": "Unknown",
-	"设防状态": "Fortified state",
-	"控制": "Control",
-	"定位类型": "Positioning type",
-	"GPS+北斗": "GPS+Beidou",
-	"当日里程": "Daily mileage",
-	"总里程": "Total mileage",
-	"主电接通": "Main power on",
-	"主电断开": "Main power off",
-	"通信": "Communication",
-	"停留": "Remain",
-	"查询": "Query",
-	"开始时间": "Start time",
-	"结束时间": "End time",
-	"当天": "same day",
-	"昨天": "Yesterday",
-	"前天": "Day before yesterday",
-	"公里/小时": "Kilometers / hour",
-	"停留点": "Hold point",
-	"起点": "Starting point",
-	"您当前没有手写签名,是否要进行填写": "You currently not handwritten signature, do you want to fill it in",
-	"点击获取": "Click to obtain",
-	"更多机柜": "More cabinets",
-	"您尚未进行身份认证,请先认证 …": "You not yet undergone identity authentication. Please authenticate …",
-	"骑手租电": "Riders rent",
-	"居民租电": "Residential rent",
-	"您的电池电量低于20%,请及时换电!": "Your battery level below 20%, please replace it promptly!",
-	"低压启动": "Low voltage start",
-	"门店": "Store",
-	"换电柜": "exchange cabinet",
-	"充电柜": "Charging cabinet",
-	"不限距离": "Unlimited distance",
-	"模块拼命加载中": "Module loading desperately",
-	"请确保您的网络是否顺畅哦 ~": "Please make sure your Internet connect smooth ~",
-	"一键登录": "One click login",
-	"手机号登录/注册": "Mobile login/registration",
-	"用户服务协议": "User Service Agreement",
-	"隐私政策": "Privacy Policy",
-	"申请获取并验证你的手机号": "Request obtain and verify your mobile number",
-	"快捷登录": "Quick login",
-	"上次提供": "Last offer",
-	"不允许": "Not allow",
-	"使用其他号码": "Use another number",
-	"请查阅隐私和协议": "Please review Privacy and Agreement",
-	"当前检测到您未同意隐私协议,是否需要前往同意隐私协议": "It is detected that you have not agreed  privacy Agreement, do you need to agree to the Privacy agreement",
-	"前往": "Go",
-	"登录成功": "Login success",
-	"一键授权失败,请使用手机号登录": "One-click authorization failed. Please use your mobile number to log in",
-	"一键登录授权失败": "One-click login authorization failed",
-	"当前选择电池租金总价": "Currently select total battery rental price",
-	"(仅租金)": "(Rent only)",
-	"去使用": "Go to Use",
-	"不可用": "Not available",
-	"不可用原因": "Unavailability Reason",
-	"距使用租金门槛还差": "Just short of the rent threshold",
-	"请上传必传图片": "Please upload required image",
-	"提交申请中,请等待商家处理": "Submit application, please wait merchant process",
-	"请输入绑定的新手机号": "Please input  bound new phone No.",
-	"请输入验证码": "Please input verification code",
-	"秒后再次获取": "Retrieve again in seconds",
-	"获取验证码": "Obtain verification code",
-	"请输入手机号码": "Please input your phone No.",
-	"请检测您的手机号码是否正确": "Please check your mobile phone number correct",
-	"修改成功": "Success modified",
-	"修改手机号": "Modify phone No.",
-	"关于我们": "About us",
-	"退出": "Quit",
-	"您确定要退出当前账号吗?": "Are you sure you want to log out of your account?",
-	"重写": "rewriting",
-	"保存": "Saving",
-	"签名内容不能为空!": "The signature cannot empty!",
-	"签名失败": "Signature failure",
-	"微信当前版本不支持,请更新到最新版本!": "current version wechat not supported, please update latest version!",
-	"机柜": "cabinet",
-	"租电池": "Rent battery",
-	"没有更多 ~": "No more ~",
-	"网点": "Shop",
-	"全国": "Whole country",
-	"hireOrder": "Lease order",
-	"押金退款": "Deposit refund",
-	"线下退款": "Offline refund",
-	"线上退款": "Online refund",
-	"租赁设备": "Lease device",
-	"含押金": "With deposit",
-	"线下支付-待取电": "Offline payment-pending",
-	"微信支付-待取电": "WeChat payment - pending",
-	"未使用": "Not Use",
-	"已使用": "Have used",
-	"已失效": "Became invalid",
-	"元使用": "USD use",
-	"暂无数据": "No data available",
-	"请到首页租赁电池使用优惠劵": "Please go to the home page to rent batteries to use coupon",
-	"设备号:": "Device number:",
-	"扫描编码或手动输入编码": "Please enter code",
-	"请选择故障类型(可多选)": "Please select fault type (optional)",
-	"问题补充描述": "Problem description",
-	"上传照片": "Upload photos",
-	"确认报修": "Repair confirm",
-	"请输入车辆编码": "Please enter vehicle number",
-	"请选择故障": "Please select fault",
-	"报障成功,谢谢您的支持": "Report success, thank you for your support",
-	"充电失败": "Charge fail",
-	"未取出": "Not take out",
-	"取出": "Take out",
-	"开始": "Start",
-	"结束": "End",
-	"仓体编号": "Box No.",
-	"已充电": "Charged",
-	"充满电花费时长": "Charging time",
-	"已取出:充电": "Take out:Charge",
-	"暂存:已超时": "Temporary:Timed out",
-	"额外收取暂存费": "Additional temporary storage fee",
-	"支付金额": "Payment amount",
-	"定时充电支付": "Timed charging payment",
-	"智能充电预付": "Charging prepayment",
-	"返还": "Return money",
-	"补差": "make up difference",
-	"未开始充电": "No charge",
-	"取电失败": "Failed to take",
-	"充电定时时间到": "Charging timing is up",
-	"电池充满": "Full electricity",
-	"已取出": "Take out",
-	"设备名称": "Device name",
-	"设备编号": "Device No.",
-	"已发生报警短信次数": "Alert SMS Count",
-	"最近报警类型":"Latest Alarm Type",
-	"设备列表":"Device List",
-	"租赁类型": "Lease type",
-	"电池和车": "Battery and car",
-	"请关联车辆": "Please contact vehicle",
-	"请输入车辆编号": "Enter vehicle number",
-	"修改成功":"修改成功",
-	"请输入8-18位密码,包含字母数字":"请输入8-18位密码,包含字母数字"
+	"购": "Buy",
+	"平均时速": "Average Speed",
+	"减少碳排量": "Reduce Carbon Emissions",
+	"暂无骑行数据!": "No cycling data available!",
+	"共享用户": "Shared User",
+	"家人、朋友长期共用车辆,授权账户可以使用感应解锁,寻车定位,查看设置等功能;": "Family/Friends Share – Authorized accounts can use functions like unlock, locate, and settings.",
+	"您还未绑定车辆": "You have not bound a vehicle yet.",
+	"车辆激活": "Vehicle activation",
+	"车辆品牌:": "Vehicle brand",
+	"车辆颜色:": "Vehicle color",
+	"车牌号": "Plate Number",
+	"上传照片": "Upload Photo",
+	"你确定要删除吗?": "Confirm Deletion?",
+	"还车成功!": "Return Successful!",
+	"秒换电,瞬间满电,畅享骑行新体验!": "Instant Swap, Full Charge, Smooth Ride!",
+	"不限次数": "Unlimited",
+	"部分成功": "Partially Successful",
+	"是否切换到车辆": "Switch Vehicle?",
+	"滑动启动": "Slide to Start",
+	"扫码失败,请重新扫码": "Scan Failed, Retry",
+	"您还未购买换电套餐,是否前往购买换电套餐?": "No Swap Plan, Purchase Now?",
+	"当前车辆暂未绑定电池": "No Battery Linked",
+	"请扫描机柜二维码": "Scan Cabinet QR Code",
+	"信息详情": "Details",
+	"您还没有设备消息": "No Device Messages",
+	"您还没有系统消息": "No System Messages",
+	"当前没有可更换的电池,购买车辆绑定电池后才可享受换电套餐": "No Battery Available, Link One to Swap",
+	"仓门已打开": "Compartment Open",
+	"完成弹窗": "Completion Popup",
+	"祝您骑行愉快": "Enjoy Your Ride!",
+	"车辆已被租售!": "Vehicle Rented or Sold!",
+	"全部": "All"
 }

+ 4 - 1
locale/index.js

@@ -2,9 +2,12 @@ import en from './en.json'
 import zh from './zh.json'
 import Vue from 'vue';
 import VueI18n from 'vue-i18n'
+import {
+	Language
+} from '@/utils/util.js'
 Vue.use(VueI18n);
 let i18nConfig = {
-	locale: "zh",
+	locale: Language,
 	messages: {
 		en,
 		zh

+ 848 - 91
locale/zh.json

@@ -1,93 +1,850 @@
 {
-	"设备":"设备",
-	"续航":"续航",
-	"车辆已关机":"车辆已关机",
-	"更新于":"更新于",
-	"最近骑行":"最近骑行",
-	"总里程":"总里程",
-	"换电套餐":"换电套餐",
-	"天":"天",
-	"感应解锁":"感应解锁",
-	"感应解锁":"感应解锁",
-	"用车人管理":"用车人管理",
-	"个家庭账号":"个家庭账号",
-	"设备信息":"设备信息",
-	"软件版本":"软件版本",
-	"开机":"开机",
-	"开启车辆":"开启车辆",
-	"关闭车辆":"关闭车辆",
-	"闪灯鸣笛":"闪灯鸣笛",
-	"打开座桶":"打开座桶",
-	"打开尾箱":"打开尾箱",
-	"更多功能":"更多功能",
-	"开启车辆":"开启车辆",
-	"您确认":"您确认",
-	"取消":"取消",
-	"确定":"确定",
-	"更多功能":"更多功能",
-	"胎压":"胎压",
-	"电池信息":"电池信息",
-	"导航":"导航",
-	"温馨提示":"温馨提示",
-	"解除绑定":"解除绑定",
-	"按键解锁":"按键解锁",
-	"灵敏度设置":"灵敏度设置",
-	"关闭感应解锁":"关闭感应解锁",
-	"开启感应解锁":"开启感应解锁",
-	"授权引导":"授权引导",
-	"已开启":"已开启",
-	"未开启":"未开启",
-	"我已开启":"我已开启",
-	"固定导航栏":"固定导航栏",
-	"其他功能":"其他功能",
-	"长按拖动可调整顺序,可增减固定导航栏内容":"长按拖动可调整顺序,可增减固定导航栏内容",
-	"输入注册账号的密码即可解绑":"输入注册账号的密码即可解绑",
-	"请输入密码":"请输入密码",
-	"完成并解绑":"完成并解绑",
-	"是否确定解除绑定":"是否确定解除绑定",
-	"请输入旧密码":"请输入旧密码",
-	"请输入新密码":"请输入新密码",
-	"请再次输入新密码":"请再次输入新密码",
-	"确认修改":"确认修改",
-	"请输入要重置的邮箱账号":"请输入要重置的邮箱账号",
-	"重置密码":"重置密码",
-	"重置密码邮件已发送":"重置密码邮件已发送",
-	"我知道了":"我知道了",
-	"请输入有效的邮箱地址":"请输入有效的邮箱地址",
-	"欢迎来到FRANCO MORINI":"欢迎来到FRANCO MORINI",
-	"请输入邮箱账号":"请输入邮箱账号",
-	"请输入密码":"请输入密码",
-	"已阅读并同意":"已阅读并同意",
-	"用户协议":"用户协议",
-	"和":"和",
-	"登录":"登录",
-	"忘记密码":"忘记密码",
-	"没有账号 立即注册":"没有账号 立即注册",
-	"其他方式登录":"其他方式登录",
-	"请勾选用户协议和隐私政策":"请勾选用户协议和隐私政策",
-	"请输入有效的邮箱地址":"请输入有效的邮箱地址",
-	"立即注册":"立即注册",
-	"注册邮件已发送":"注册邮件已发送",
-	"设备消息":"设备消息",
-	"系统消息":"系统消息",
-	"我的车辆":"我的车辆",
-	"用车人":"用车人",
-	"换电套餐":"换电套餐",
-	"我的订单":"我的订单",
-	"换电记录":"换电记录",
-	"意见反馈":"意见反馈",
-	"客服中心":"客服中心",
-	"设置":"设置",
-	"隐私政策":"隐私政策",
-	"邮箱密码登录":"邮箱密码登录",
-	"打开应用锁":"打开应用锁",
-	"后台运行":"后台运行",
-	"电池优化":"电池优化",
-	"位置权限":"位置权限",
-	"修改成功":"修改成功",
-	"请先连接蓝牙":"请先连接蓝牙",
-	"注册邮件发送成功":"注册邮件发送成功",
-	"蓝牙配对成功":"蓝牙配对成功",
-	"请输入8-18位密码,包含字母数字":"请输入8-18位密码,包含字母数字",
-	"车辆已开机":"车辆已开机"
+	"关于我们": "关于我们",
+	"弗兰克公司": "弗兰克公司",
+	"版权所有": "版权所有",
+	"我的订单": "我的订单",
+	"车辆信息": "车辆信息",
+	"逾期费用:": "逾期费用:",
+	"车辆编号:": "车辆编号:",
+	"车辆名称:": "车辆名称:",
+	"设备": "设备",
+	"服务": "服务",
+	"活动": "活动",
+	"我的": "我的",
+	"车型:": "车型:",
+	"续航:": "续航:",
+	"重量:": "重量:",
+	"照片:": "照片:",
+	"门店信息": "门店信息",
+	"门店名称:": "门店名称:",
+	"门店地址:": "门店地址:",
+	"车辆照片": "车辆照片",
+	"归还车辆": "归还车辆",
+	"激活车辆": "激活车辆",
+	"还车成功": "还车成功",
+	"还车": "还车",
+	"请上传车辆照片": "请上传车辆照片",
+	"未获取到门店位置!": "未获取到门店位置!",
+	"数组": "数组",
+	"车辆激活成功": "车辆激活成功",
+	"活动中心": "活动中心",
+	"暂无可参与的活动": "暂无可参与的活动",
+	"添加成员": "添加成员",
+	"请输入被邀人邮箱号": "请输入被邀人邮箱号",
+	"下一步": "下一步",
+	"该用户不存在!": "该用户不存在!",
+	"免费": "免费",
+	"次": "次",
+	"车辆换电": "车辆换电",
+	"响铃找车": "响铃找车",
+	"开座桶锁": "开座桶锁",
+	"关闭头盔锁": "关闭头盔锁",
+	"解锁": "解锁",
+	"上锁": "上锁",
+	"行驶轨迹": "行驶轨迹",
+	"车辆位置": "车辆位置",
+	"拖车服务": "拖车服务",
+	"关闭车辆": "关闭车辆",
+	"启动车辆": "启动车辆",
+	"我要还车": "我要还车",
+	"剩余租期": "剩余租期",
+	"查看订单": "查看订单",
+	"日": "日",
+	"小时": "小时",
+	"分": "分",
+	"到期后将无法用车": "到期后将无法用车",
+	"已到期": "已到期",
+	"续租": "续租",
+	"还车到门店": "还车到门店",
+	"系统会根据您的定位判断您是否已到还车位置,如您已经到达门店,请点击「我已到店」按钮,待门店确认还车后,即可还车成功。": "系统会根据您的定位判断您是否已到还车位置,如您已经到达门店,请点击「我已到店」按钮,待门店确认还车后,即可还车成功。",
+	"我已到店": "我已到店",
+	"附近可还门店": "附近可还门店",
+	"选择续租方案": "选择续租方案",
+	"时租": "时租",
+	"日租": "日租",
+	"周租": "周租",
+	"租车时长": "租车时长",
+	"天": "天",
+	"优惠券": "优惠券",
+	"折": "折",
+	"骑行保障服务": "骑行保障服务",
+	"保障须知": "保障须知",
+	"含行程延误保障": "含行程延误保障",
+	"元": "元",
+	"商家赠送": "商家赠送",
+	"配套服务": "配套服务",
+	"头盔": "头盔",
+	"手机支架": "手机支架",
+	"已阅读并同意": "已阅读并同意",
+	"《租赁用户协议》": "《租赁用户协议》",
+	"明细": "明细",
+	"支付": "支付",
+	"授权免押": "授权免押",
+	"暂无车辆": "暂无车辆",
+	"是否返回首页": "是否返回首页",
+	"车辆状态(是否上锁)": "车辆状态(是否上锁)",
+	"初始状态": "初始状态",
+	"如果是激活页面过来的。后端接口第一时间无法获取数据。需要再延迟获取一次": "如果是激活页面过来的。后端接口第一时间无法获取数据。需要再延迟获取一次",
+	"首页": "首页",
+	"查询车辆关键参数": "查询车辆关键参数",
+	"获取地址失败,请授权重新打开": "获取地址失败,请授权重新打开",
+	"获取当前时间": "获取当前时间",
+	"默认返回首页再提示报错": "默认返回首页再提示报错",
+	"您确定开启响铃找车?": "您确定开启响铃找车?",
+	"车辆已开始鸣笛": "车辆已开始鸣笛",
+	"您确定打开座桶锁?": "您确定打开座桶锁?",
+	"打开座桶": "打开座桶",
+	"滑动开机": "滑动开机",
+	"开机中": "开机中",
+	"关机中": "关机中",
+	"滑动关机": "滑动关机",
+	"座桶锁已打开": "座桶锁已打开",
+	"您确定给车辆上锁?": "您确定给车辆上锁?",
+	"正在上锁": "正在上锁",
+	"已上锁": "已上锁",
+	"您确定给车辆解锁?": "您确定给车辆解锁?",
+	"正在解锁": "正在解锁",
+	"已解锁": "已解锁",
+	"取消": "取消",
+	"确定": "确定",
+	"已取消": "已取消",
+	"其他都需要带车牌号": "其他都需要带车牌号",
+	"锁车": "锁车",
+	"启动": "启动",
+	"车辆提示": "车辆提示",
+	"确认关闭车辆": "确认关闭车辆",
+	"确认需要启动车辆": "确认需要启动车辆",
+	"开启": "开启",
+	"关闭": "关闭",
+	"正在关闭车辆": "正在关闭车辆",
+	"正在启动车辆": "正在启动车辆",
+	"车辆已关闭": "车辆已关闭",
+	"车辆已启动": "车辆已启动",
+	"操作超时": "操作超时",
+	"电池信息": "电池信息",
+	"电池": "电池",
+	"剩余电量": "剩余电量",
+	"电压": "电压",
+	"温度": "温度",
+	"换电套餐": "换电套餐",
+	"适用类型": "适用类型",
+	"5秒换电,瞬间满电,畅享骑行新体验!": "5秒换电,瞬间满电,畅享骑行新体验!",
+	"适用电池:": "适用电池:",
+	"当前购买为虚拟": "当前购买为虚拟",
+	"卡": "卡",
+	"如想要体验实体": "如想要体验实体",
+	"卡功能,前往最近的门店领取": "卡功能,前往最近的门店领取",
+	"立即购买": "立即购买",
+	"请先绑定车辆!": "请先绑定车辆!",
+	"提交中": "提交中",
+	"换电记录": "换电记录",
+	"开始换电": "开始换电",
+	"换电中": "换电中",
+	"换电成功": "换电成功",
+	"换电失败": "换电失败",
+	"未知": "未知",
+	"换电单号": "换电单号",
+	"归还电池": "归还电池",
+	"借出电池": "借出电池",
+	"换电类型": "换电类型",
+	"机柜换电": "机柜换电",
+	"门店换电": "门店换电",
+	"电柜名称": "电柜名称",
+	"开启感应解锁": "开启感应解锁",
+	"是否配对改设备": "是否配对改设备",
+	"配对": "配对",
+	"点击下方": "点击下方",
+	"开始配对": "开始配对",
+	"请在系统弹窗中选择": "请在系统弹窗中选择",
+	"以完成功能开启。": "以完成功能开启。",
+	"提示信息": "提示信息",
+	"使用感应解锁功能时,请务必保证手机蓝牙功能开启,在蓝牙列表中忽略此设备会导致感应解锁失败": "使用感应解锁功能时,请务必保证手机蓝牙功能开启,在蓝牙列表中忽略此设备会导致感应解锁失败",
+	"测试指令!!!别删除": "测试指令!!!别删除",
+	"关闭靠近解锁": "关闭靠近解锁",
+	"跳转解绑配对": "跳转解绑配对",
+	"靠近解锁": "靠近解锁",
+	"升级": "升级",
+	"感应解锁已开启": "感应解锁已开启",
+	"注意:请勿在手机蓝牙中忽略“电动车蓝牙": "注意:请勿在手机蓝牙中忽略“电动车蓝牙",
+	"设备,否则感应解锁功能将无法使用": "设备,否则感应解锁功能将无法使用",
+	"机柜信息传输完成": "机柜信息传输完成",
+	"初始化": "初始化",
+	"连接蓝牙": "连接蓝牙",
+	"下发配对指令": "下发配对指令",
+	"会断开连接": "会断开连接",
+	"直接再次连接": "直接再次连接",
+	"记得不要提示可以蓝牙断开连接": "记得不要提示可以蓝牙断开连接",
+	"点击配对": "点击配对",
+	"调用配对": "调用配对",
+	"确认配对": "确认配对",
+	"断开蓝牙": "断开蓝牙",
+	"不走逻辑": "不走逻辑",
+	"蓝牙未启用": "蓝牙未启用",
+	"请先打开蓝牙": "请先打开蓝牙",
+	"开始升级": "开始升级",
+	"结束?????": "结束?????",
+	"蓝牙未连接": "蓝牙未连接",
+	"蓝牙连接断开": "蓝牙连接断开",
+	"提示": "提示",
+	"重新连接": "重新连接",
+	"蓝牙连接中断,是否重新连接?": "蓝牙连接中断,是否重新连接?",
+	"蓝牙连接成功": "蓝牙连接成功",
+	"电动车蓝牙": "电动车蓝牙",
+	"蓝牙配对请求": "蓝牙配对请求",
+	"想与您配对,请确保显示的配对密钥为": "想与您配对,请确保显示的配对密钥为",
+	"关闭蓝牙连接": "关闭蓝牙连接",
+	"切换正常工厂模式": "切换正常工厂模式",
+	"切换工厂模式以后蓝牙断开": "切换工厂模式以后蓝牙断开",
+	"重新连接蓝牙": "重新连接蓝牙",
+	"接近解锁下发成功": "接近解锁下发成功",
+	"下发打开接近解锁指令": "下发打开接近解锁指令",
+	"获取接近解锁下发成功": "获取接近解锁下发成功",
+	"是否是蓝牙类型列表里面的": "是否是蓝牙类型列表里面的",
+	"打开蓝牙连接": "打开蓝牙连接",
+	"监听蓝牙设备连接状态变化事件": "监听蓝牙设备连接状态变化事件",
+	"观察周围是否有其他骑手连接,请等待对方完成": "观察周围是否有其他骑手连接,请等待对方完成",
+	"或": "或",
+	"微信是否开启了蓝牙权限": "微信是否开启了蓝牙权限",
+	"微信是否开启了蓝牙权限!!": "微信是否开启了蓝牙权限!!",
+	"连接失败,请尝试重新连接": "连接失败,请尝试重新连接",
+	"蓝牙未打开或请在右上角设置授权小程序使用蓝牙": "蓝牙未打开或请在右上角设置授权小程序使用蓝牙",
+	"我知道了": "我知道了",
+	"蓝牙连接未成功": "蓝牙连接未成功",
+	"当前机柜未找到符合的蓝牙类型": "当前机柜未找到符合的蓝牙类型",
+	"开启感应解锁后,携带手机靠近车辆并按": "开启感应解锁后,携带手机靠近车辆并按",
+	"键即可开机": "键即可开机",
+	"按键解锁": "按键解锁",
+	"手机接近车辆后,长按": "手机接近车辆后,长按",
+	"键即可解锁": "键即可解锁",
+	"灵敏度设置": "灵敏度设置",
+	"关闭感应解锁": "关闭感应解锁",
+	"距离建议适中,设置过近会降低成功率,设置过远可能会有风险": "距离建议适中,设置过近会降低成功率,设置过远可能会有风险",
+	"最近": "最近",
+	"适中": "适中",
+	"最远": "最远",
+	"左": "左",
+	"设置灵敏度指令成功": "设置灵敏度指令成功",
+	"关闭接近解锁成功": "关闭接近解锁成功",
+	"无可用电池": "无可用电池",
+	"营业中": "营业中",
+	"已休息": "已休息",
+	"直线距您": "直线距您",
+	"千米": "千米",
+	"米": "米",
+	"导航": "导航",
+	"格口详情": "格口详情",
+	"电柜编号:": "电柜编号:",
+	"已预约": "已预约",
+	"没有预约": "没有预约",
+	"空仓或者仓门不可用": "空仓或者仓门不可用",
+	"空仓": "空仓",
+	"满电或者电量未满": "满电或者电量未满",
+	"电池可用": "电池可用",
+	"待充满": "待充满",
+	"电池列表": "电池列表",
+	"存储蓝牙状态": "存储蓝牙状态",
+	"机柜详情": "机柜详情",
+	"离线": "离线",
+	"在线": "在线",
+	"钱包余额": "钱包余额",
+	"扫码机柜": "扫码机柜",
+	"车牌号": "车牌号",
+	"可用电池数": "可用电池数",
+	"蓝牙信息": "蓝牙信息",
+	"蓝牙换电需要的数据": "蓝牙换电需要的数据",
+	"如果本地有存储的定位信息,则直接使用": "如果本地有存储的定位信息,则直接使用",
+	"领取电池成功": "领取电池成功",
+	"获取机柜信息": "获取机柜信息",
+	"计算可用电池数": "计算可用电池数",
+	"导航去机柜": "导航去机柜",
+	"设备数据": "设备数据",
+	"将传入的时间转换为分钟": "将传入的时间转换为分钟",
+	"判断当前时间是否在指定范围内": "判断当前时间是否在指定范围内",
+	"仓体": "仓体",
+	"月租": "月租",
+	"年租": "年租",
+	"分租": "分租",
+	"季租": "季租",
+	"购买": "购买",
+	"免费换电次数": "免费换电次数",
+	"日租享": "日租享",
+	"次免费换电数,超出后需要单独支付换电费用;": "次免费换电数,超出后需要单独支付换电费用;",
+	"我要用车": "我要用车",
+	"获取直线距离": "获取直线距离",
+	"您是否要拨打电话": "您是否要拨打电话",
+	"更多功能": "更多功能",
+	"固定导航栏": "固定导航栏",
+	"其他功能": "其他功能",
+	"长按拖动可调整顺序,可增减固定导航栏内容": "长按拖动可调整顺序,可增减固定导航栏内容",
+	"解除绑定": "解除绑定",
+	"开机": "开机",
+	"开启车辆": "开启车辆",
+	"关机": "关机",
+	"您确认": "您确认",
+	"吗": "吗",
+	"处理修改之后的数据": "处理修改之后的数据",
+	"输入注册账号的密码即可解绑": "输入注册账号的密码即可解绑",
+	"请输入密码": "请输入密码",
+	"解绑后,您将失去当前设备的控制权,其他人可以连接绑定您的设备。": "解绑后,您将失去当前设备的控制权,其他人可以连接绑定您的设备。",
+	"解绑后将立即删除家庭账号,感应解锁等数据。": "解绑后将立即删除家庭账号,感应解锁等数据。",
+	"完成并解绑": "完成并解绑",
+	"是否确定解除绑定": "是否确定解除绑定",
+	"返回首页": "返回首页",
+	"解绑成功!": "解绑成功!",
+	"请选择设备": "请选择设备",
+	"当前选择": "当前选择",
+	"租赁设备": "租赁设备",
+	"绑定设备": "绑定设备",
+	"是否确定": "是否确定",
+	"清空当前设备蓝牙相关": "清空当前设备蓝牙相关",
+	"切换成功!": "切换成功!",
+	"由于": "由于",
+	"一些样式及点击事件不支持": "一些样式及点击事件不支持",
+	"气泡内容": "气泡内容",
+	"已驻车": "已驻车",
+	"分钟": "分钟",
+	"更新于": "更新于",
+	"闪灯鸣笛": "闪灯鸣笛",
+	"使用": "使用",
+	"点击事件": "点击事件",
+	"需要填写": "需要填写",
+	"标记点": "标记点",
+	"定时器变量,用于清除定时器": "定时器变量,用于清除定时器",
+	"未知时间": "未知时间",
+	"五秒后重新调用加载车辆位置信息的方法": "五秒后重新调用加载车辆位置信息的方法",
+	"监听页面卸载": "监听页面卸载",
+	"页面卸载时清除定时器": "页面卸载时清除定时器",
+	"确保定时器引用被清除": "确保定时器引用被清除",
+	"默认返回上一个页面再提示报错": "默认返回上一个页面再提示报错",
+	"您确认开启闪灯鸣笛吗": "您确认开启闪灯鸣笛吗",
+	"本人已知晓上述内容": "本人已知晓上述内容",
+	"阅读合同倒计时": "阅读合同倒计时",
+	"秒": "秒",
+	"签名": "签名",
+	"重新签名": "重新签名",
+	"上报小程序账号信息": "上报小程序账号信息",
+	"您当前没有手写签名,是否要进行填写": "您当前没有手写签名,是否要进行填写",
+	"续航": "续航",
+	"骑行里程": "骑行里程",
+	"骑行时长": "骑行时长",
+	"最大速度": "最大速度",
+	"平均速度": "平均速度",
+	"车架号": "车架号",
+	"设备编号": "设备编号",
+	"车辆总里程": "车辆总里程",
+	"固件详情": "固件详情",
+	"中控硬件": "中控硬件",
+	"中控软件": "中控软件",
+	"意见反馈": "意见反馈",
+	"问题类型": "问题类型",
+	"问题描述": "问题描述",
+	"请详细说明,以便我们解决问题,最多可填写": "请详细说明,以便我们解决问题,最多可填写",
+	"字。": "字。",
+	"问题图片": "问题图片",
+	"提交": "提交",
+	"常用功能": "常用功能",
+	"车辆": "车辆",
+	"电柜": "电柜",
+	"应用操作": "应用操作",
+	"其他": "其他",
+	"最多输入": "最多输入",
+	"字": "字",
+	"提交成功": "提交成功",
+	"为保证": "为保证",
+	"感应解锁": "感应解锁",
+	"闪电鸣笛": "闪电鸣笛",
+	"打开尾箱锁": "打开尾箱锁",
+	"请先链接蓝牙": "请先链接蓝牙",
+	"的正常使用,请依次开以下权限,开启后可以显著提高解锁成功率,且不会明显增加手机电量消耗": "的正常使用,请依次开以下权限,开启后可以显著提高解锁成功率,且不会明显增加手机电量消耗",
+	"授权引导": "授权引导",
+	"已开启": "已开启",
+	"未开启": "未开启",
+	"我已开启": "我已开启",
+	"引入": "引入",
+	"是否打开所有需要权限": "是否打开所有需要权限",
+	"位置权限": "位置权限",
+	"打开手机定位,并运行": "打开手机定位,并运行",
+	"始终使用": "始终使用",
+	"电池优化": "电池优化",
+	"打开电池优化设置,": "打开电池优化设置,",
+	"将弗兰克": "将弗兰克",
+	"加入保护名单": "加入保护名单",
+	"后台运行": "后台运行",
+	"打开后台运行权限": "打开后台运行权限",
+	"清选择手动控制": "清选择手动控制",
+	"打开应用锁": "打开应用锁",
+	"打开应用权限锁": "打开应用权限锁",
+	"的": "的",
+	"里编写如下代码": "里编写如下代码",
+	"已授权": "已授权",
+	"已获得授权": "已获得授权",
+	"未获得授权": "未获得授权",
+	"被永久拒绝权限": "被永久拒绝权限",
+	"确定打开": "确定打开",
+	"胎压": "胎压",
+	"选择的车辆控制": "选择的车辆控制",
+	"组件的方法列表": "组件的方法列表",
+	"判断车辆是否在线状态": "判断车辆是否在线状态",
+	"在线调用接口": "在线调用接口",
+	"不在线提示连接蓝牙": "不在线提示连接蓝牙",
+	"成功": "成功",
+	"蓝牙是否已经连接": "蓝牙是否已经连接",
+	"未连接提示去连接": "未连接提示去连接",
+	"已连接下发对应指令": "已连接下发对应指令",
+	"操作成功": "操作成功",
+	"发送": "发送",
+	"指令结束": "指令结束",
+	"当前车辆处于离线,是否前往开启蓝牙配对操作车辆?": "当前车辆处于离线,是否前往开启蓝牙配对操作车辆?",
+	"前往配置更多功能": "前往配置更多功能",
+	"请先开启位置授权": "请先开启位置授权",
+	"的正常使用,请": "的正常使用,请",
+	"开启位置授权": "开启位置授权",
+	"并": "并",
+	"打开精准位置": "打开精准位置",
+	"开关,可提高解锁成功率,且不会明显增加手机电量消耗。": "开关,可提高解锁成功率,且不会明显增加手机电量消耗。",
+	"打开手机定位,并允许": "打开手机定位,并允许",
+	"「始终」": "「始终」",
+	"第": "第",
+	"步": "步",
+	"始终": "始终",
+	"开启请准位置开关": "开启请准位置开关",
+	"精准位置": "精准位置",
+	"组件的属性列表": "组件的属性列表",
+	"续航开新路": "续航开新路",
+	"路遥见实力": "路遥见实力",
+	"全速续航": "全速续航",
+	"极速可达": "极速可达",
+	"了解更多": "了解更多",
+	"全新车型,即将发布!": "全新车型,即将发布!",
+	"更智能、更高效,全新车型即将亮相,敬请期待!": "更智能、更高效,全新车型即将亮相,敬请期待!",
+	"租赁设备编号": "租赁设备编号",
+	"子组件": "子组件",
+	"更新": "更新",
+	"您已逾期": "您已逾期",
+	"请及时续费或归还车辆": "请及时续费或归还车辆",
+	"去续费": "去续费",
+	"车辆已开机": "车辆已开机",
+	"车辆已关机": "车辆已关机",
+	"最近骑行": "最近骑行",
+	"总里程": "总里程",
+	"蓝牙配对成功": "蓝牙配对成功",
+	"请先连接蓝牙": "请先连接蓝牙",
+	"用车人管理": "用车人管理",
+	"个家庭账号": "个家庭账号",
+	"设备信息": "设备信息",
+	"软件版本": "软件版本",
+	"用户车辆列表": "用户车辆列表",
+	"当前车辆编号": "当前车辆编号",
+	"手机型号": "手机型号",
+	"是否打开权限弹窗": "是否打开权限弹窗",
+	"当前是否蓝牙连接或者配对": "当前是否蓝牙连接或者配对",
+	"所有蓝牙配对所需权限是否已开启": "所有蓝牙配对所需权限是否已开启",
+	"分享给好友": "分享给好友",
+	"发送给朋友": "发送给朋友",
+	"蓝牙配对所需权限": "蓝牙配对所需权限",
+	"运行小程序需要隐藏": "运行小程序需要隐藏",
+	"所需权限开启成功": "所需权限开启成功",
+	"前往开启蓝牙配对": "前往开启蓝牙配对",
+	"身份认证提示": "身份认证提示",
+	"尚未完成身份认证,是否进行身份认证": "尚未完成身份认证,是否进行身份认证",
+	"您还未登录,请先登录": "您还未登录,请先登录",
+	"判断逾期": "判断逾期",
+	"如果租": "如果租",
+	"购多个车辆的话可以切换当前车辆": "购多个车辆的话可以切换当前车辆",
+	"判断距离是否超过": "判断距离是否超过",
+	"如果超过": "如果超过",
+	"米,则转换为千米并返回": "米,则转换为千米并返回",
+	"否则直接返回米": "否则直接返回米",
+	"是否是小众租车": "是否是小众租车",
+	"欢迎来到": "欢迎来到",
+	"手机号快捷登录": "手机号快捷登录",
+	"其他手机号登录": "其他手机号登录",
+	"电动车租赁用户协议": "电动车租赁用户协议",
+	"和": "和",
+	"申请获取并验证你的手机号": "申请获取并验证你的手机号",
+	"快捷登录": "快捷登录",
+	"上次提供": "上次提供",
+	"不允许": "不允许",
+	"使用其他号码": "使用其他号码",
+	"初始化未授权": "初始化未授权",
+	"请查阅隐私和协议": "请查阅隐私和协议",
+	"一键授权失败": "一键授权失败",
+	"请使用手机号登录": "请使用手机号登录",
+	"登录成功": "登录成功",
+	"修改密码": "修改密码",
+	"请输入旧密码": "请输入旧密码",
+	"请输入新密码": "请输入新密码",
+	"请再次输入新密码": "请再次输入新密码",
+	"确认修改": "确认修改",
+	"是否确认修改密码?": "是否确认修改密码?",
+	"修改成功": "修改成功",
+	"忘记密码": "忘记密码",
+	"请输入要重置的邮箱账号": "请输入要重置的邮箱账号",
+	"重置密码": "重置密码",
+	"重置密码邮件已发送": "重置密码邮件已发送",
+	"去登录": "去登录",
+	"我们向": "我们向",
+	"发送了一封密码重置邮件,请您登录邮箱操作处理。": "发送了一封密码重置邮件,请您登录邮箱操作处理。",
+	"请输入有效的邮箱地址": "请输入有效的邮箱地址",
+	"欢迎来到智寻出行": "欢迎来到智寻出行",
+	"邮箱密码登录": "邮箱密码登录",
+	"请输入邮箱账号": "请输入邮箱账号",
+	"用户协议": "用户协议",
+	"隐私政策": "隐私政策",
+	"登录": "登录",
+	"没有账号": "没有账号",
+	"立即注册": "立即注册",
+	"其他方式登录": "其他方式登录",
+	"请勾选用户协议和隐私政策": "请勾选用户协议和隐私政策",
+	"账号注册": "账号注册",
+	"请再次输入密码": "请再次输入密码",
+	"注册邮件已发送": "注册邮件已发送",
+	"我们已向": "我们已向",
+	"发送注册邮件,请您登录邮箱点击链接完成注册。": "发送注册邮件,请您登录邮箱点击链接完成注册。",
+	"请输入": "请输入",
+	"位密码,包含字母数字": "位密码,包含字母数字",
+	"两次输入的密码不一致": "两次输入的密码不一致",
+	"注册邮件发送成功": "注册邮件发送成功",
+	"请输入车牌号全称": "请输入车牌号全称",
+	"请输入车牌号": "请输入车牌号",
+	"确认": "确认",
+	"请先输入车牌号": "请先输入车牌号",
+	"温馨提示:各省市因地制宜,制定相关的牌照格式,请按照实际车辆牌照的格式进行填写~": "温馨提示:各省市因地制宜,制定相关的牌照格式,请按照实际车辆牌照的格式进行填写~",
+	"参考格式": "参考格式",
+	"北京": "北京",
+	"未获取到经纬度": "未获取到经纬度",
+	"判断原因是否为微信小程序内部没有授权定位": "判断原因是否为微信小程序内部没有授权定位",
+	"无法获取位置信息,请检查您的微信定位权限设置": "无法获取位置信息,请检查您的微信定位权限设置",
+	"您的手机未授权微信定位权限,请前往手机设置开启权限": "您的手机未授权微信定位权限,请前往手机设置开启权限",
+	"获取当前时间戳(毫秒)": "获取当前时间戳(毫秒)",
+	"此车辆已离线,请选择其他车辆": "此车辆已离线,请选择其他车辆",
+	"车辆正在被使用": "车辆正在被使用",
+	"是本人在使用": "是本人在使用",
+	"已有正在使用的车辆,是否跳转至车辆详情页": "已有正在使用的车辆,是否跳转至车辆详情页",
+	"此车辆正在被使用": "此车辆正在被使用",
+	"预租车型与之前预约车型不一致": "预租车型与之前预约车型不一致",
+	"与预约车型不符": "与预约车型不符",
+	"轴偏移量": "轴偏移量",
+	"点击显示": "点击显示",
+	"常显": "常显",
+	"今天": "今天",
+	"车辆推动报警": "车辆推动报警",
+	"车辆正在被人推送,请及时查看": "车辆正在被人推送,请及时查看",
+	"我的消息": "我的消息",
+	"设备消息": "设备消息",
+	"系统消息": "系统消息",
+	"行驶里程": "行驶里程",
+	"功率": "功率",
+	"减少碳排放": "减少碳排放",
+	"骑行次数": "骑行次数",
+	"累计功率": "累计功率",
+	"减少排放量": "减少排放量",
+	"总": "总",
+	"年": "年",
+	"月": "月",
+	"周": "周",
+	"请输入绑定的新手机号": "请输入绑定的新手机号",
+	"请输入验证码": "请输入验证码",
+	"秒后再次获取": "秒后再次获取",
+	"获取验证码": "获取验证码",
+	"绑定新手机号": "绑定新手机号",
+	"请输入手机号码": "请输入手机号码",
+	"请检测您的手机号码是否正确": "请检测您的手机号码是否正确",
+	"仪表盘": "仪表盘",
+	"请点击登录": "请点击登录",
+	"我的车辆": "我的车辆",
+	"用车人": "用车人",
+	"温馨提示": "温馨提示",
+	"您还未购买换电套餐,是否前往进行换电套餐?": "您还未购买换电套餐,是否前往进行换电套餐?",
+	"前往购买": "前往购买",
+	"客服中心": "客服中心",
+	"设置": "设置",
+	"换电": "换电",
+	"您还未购买车辆,购买车辆才可享受换电套餐": "您还未购买车辆,购买车辆才可享受换电套餐",
+	"您还未绑定车辆!": "您还未绑定车辆!",
+	"未获取到手机号码": "未获取到手机号码",
+	"退出登录": "退出登录",
+	"昵称": "昵称",
+	"注册时间": "注册时间",
+	"隐私协议": "隐私协议",
+	"用户条款": "用户条款",
+	"输入处理": "输入处理",
+	"延迟处理输入法组合输入": "延迟处理输入法组合输入",
+	"更新值(避免无限触发,需判断)": "更新值(避免无限触发,需判断)",
+	"截断字符串至指定字节": "截断字符串至指定字节",
+	"判断字符是否为双字节(如中文)": "判断字符是否为双字节(如中文)",
+	"您确定要退出当前账号吗?": "您确定要退出当前账号吗?",
+	"号仓门已打开": "号仓门已打开",
+	"请存入更换电池": "请存入更换电池",
+	"取走满电电池": "取走满电电池",
+	"并关好仓门": "并关好仓门",
+	"请": "请",
+	"归还": "归还",
+	"取出": "取出",
+	"电池并关上仓门": "电池并关上仓门",
+	"请取出电池并关上仓门": "请取出电池并关上仓门",
+	"归还完成后电柜会自动打开可租仓门": "归还完成后电柜会自动打开可租仓门",
+	"自动为您匹配最高电量电池": "自动为您匹配最高电量电池",
+	"即将跳转至首页,祝您骑行愉快": "即将跳转至首页,祝您骑行愉快",
+	"回到首页": "回到首页",
+	"联系门店": "联系门店",
+	"仅为示例": "仅为示例",
+	"待支付": "待支付",
+	"待取车": "待取车",
+	"待激活": "待激活",
+	"使用中": "使用中",
+	"已逾期": "已逾期",
+	"还车申请中": "还车申请中",
+	"还车中": "还车中",
+	"车辆已归还": "车辆已归还",
+	"订单已支付": "订单已支付",
+	"订单未支付": "订单未支付",
+	"已完结": "已完结",
+	"支付中": "支付中",
+	"支付成功": "支付成功",
+	"支付失败": "支付失败",
+	"支付取消": "支付取消",
+	"线下待审核": "线下待审核",
+	"线下审核拒绝": "线下审核拒绝",
+	"下单时间": "下单时间",
+	"有效期至": "有效期至",
+	"有效时长": "有效时长",
+	"免费换电数": "免费换电数",
+	"订单类型": "订单类型",
+	"购车": "购车",
+	"租车": "租车",
+	"申请中": "申请中",
+	"审核失败": "审核失败",
+	"退款失败": "退款失败",
+	"已退款": "已退款",
+	"套餐金额": "套餐金额",
+	"订单金额": "订单金额",
+	"租车购车": "租车购车",
+	"请于": "请于",
+	"到门店取车": "到门店取车",
+	"请上传车辆图片激活车辆": "请上传车辆图片激活车辆",
+	"待门店确认": "待门店确认",
+	"等待门店取车": "等待门店取车",
+	"已完成": "已完成",
+	"租期剩余": "租期剩余",
+	"逾期时长": "逾期时长",
+	"租借周期": "租借周期",
+	"逾期金额": "逾期金额",
+	"收起": "收起",
+	"展开": "展开",
+	"租借周期:购买": "租借周期:购买",
+	"订单信息": "订单信息",
+	"订单编号": "订单编号",
+	"支付时间": "支付时间",
+	"支付方式": "支付方式",
+	"微信支付": "微信支付",
+	"线下支付": "线下支付",
+	"支付宝支付": "支付宝支付",
+	"钱包余额支付": "钱包余额支付",
+	"租车金额": "租车金额",
+	"租车押金": "租车押金",
+	"订单结束后随时退": "订单结束后随时退",
+	"自行去门店取还": "自行去门店取还",
+	"未知地址": "未知地址",
+	"重量": "重量",
+	"换电信息": "换电信息",
+	"共": "共",
+	"本单可享": "本单可享",
+	"次免费换电数,超出后需单独支付": "次免费换电数,超出后需单独支付",
+	"自费换电": "自费换电",
+	"本单您可享受": "本单您可享受",
+	"次免费换电,": "次免费换电,",
+	"当前免费换电剩余": "当前免费换电剩余",
+	"次,超出后需要单独支付换电费用": "次,超出后需要单独支付换电费用",
+	"取还时间": "取还时间",
+	"逾期规则": "逾期规则",
+	"逾期后还可用车吗": "逾期后还可用车吗",
+	"如果逾期将触发智能锁车逻辑,可能导致您无法正常用车,请及时续费或联系商家处理。": "如果逾期将触发智能锁车逻辑,可能导致您无法正常用车,请及时续费或联系商家处理。",
+	"逾期费计算标准是什么": "逾期费计算标准是什么",
+	"小时租逾期费": "小时租逾期费",
+	"每小时费用": "每小时费用",
+	"逾期小时;当日还": "逾期小时;当日还",
+	"季租逾期费": "季租逾期费",
+	"每天费用": "每天费用",
+	"逾期天数;如果不满": "逾期天数;如果不满",
+	"小时按": "小时按",
+	"小时算,不满": "小时算,不满",
+	"天按": "天按",
+	"天算,最终收取的逾期费以门店确认的费用为准": "天算,最终收取的逾期费以门店确认的费用为准",
+	"逾期后续租如何收费": "逾期后续租如何收费",
+	"逾期后及时续租不收取逾期费,逾期时长将从续租订单的用车时间中抵扣": "逾期后及时续租不收取逾期费,逾期时长将从续租订单的用车时间中抵扣",
+	"结束订单": "结束订单",
+	"扫码绑定": "扫码绑定",
+	"去上传": "去上传",
+	"到店还车": "到店还车",
+	"选择取消原因": "选择取消原因",
+	"行程变更无需用车": "行程变更无需用车",
+	"修改订单信息": "修改订单信息",
+	"不想要了": "不想要了",
+	"确认取消": "确认取消",
+	"车辆价格": "车辆价格",
+	"逾期支付金额": "逾期支付金额",
+	"逾期费用计算": "逾期费用计算",
+	"车型不匹配!": "车型不匹配!",
+	"车辆未展示!": "车辆未展示!",
+	"请扫描正确的二维码!": "请扫描正确的二维码!",
+	"识别中": "识别中",
+	"季": "季",
+	"取还时间展示": "取还时间展示",
+	"剩余租期判断": "剩余租期判断",
+	"判断逾期状态": "判断逾期状态",
+	"如果逾期要交逾期费用": "如果逾期要交逾期费用",
+	"跳转到上传车辆图片再支付逾期费用还车": "跳转到上传车辆图片再支付逾期费用还车",
+	"提交还车图片": "提交还车图片",
+	"取消订单": "取消订单",
+	"您是否需要取消该订单": "您是否需要取消该订单",
+	"是": "是",
+	"否": "否",
+	"预约": "预约",
+	"非预约": "非预约",
+	"支付失败,请重试": "支付失败,请重试",
+	"保险金": "保险金",
+	"租金": "租金",
+	"保险": "保险",
+	"有保险的时候": "有保险的时候",
+	"为免押": "为免押",
+	"为总金额": "为总金额",
+	"押金": "押金",
+	"时": "时",
+	"无保险": "无保险",
+	"金额": "金额",
+	"周期数": "周期数",
+	"周期价格": "周期价格",
+	"跳转换电记录": "跳转换电记录",
+	"我的套餐": "我的套餐",
+	"适用电池": "适用电池",
+	"车辆编号": "车辆编号",
+	"小米": "小米",
+	"卡号": "卡号",
+	"生效中": "生效中",
+	"待生效": "待生效",
+	"已结束": "已结束",
+	"前往购买套餐": "前往购买套餐",
+	"返回上一页": "返回上一页",
+	"请输入手机号": "请输入手机号",
+	"重新获取": "重新获取",
+	"计算属性用于判断是否可以登录": "计算属性用于判断是否可以登录",
+	"权限设置": "权限设置",
+	"查看实时位置": "查看实时位置",
+	"使用换电": "使用换电",
+	"默认设置": "默认设置",
+	"远程开关锁": "远程开关锁",
+	"座桶锁": "座桶锁",
+	"确认添加": "确认添加",
+	"删除成员": "删除成员",
+	"确定删除这个成员吗?": "确定删除这个成员吗?",
+	"删除中": "删除中",
+	"添加成功!": "添加成功!",
+	"确认订单": "确认订单",
+	"选择取车时间": "选择取车时间",
+	"共计": "共计",
+	"车辆押金": "车辆押金",
+	"需要支付": "需要支付",
+	"元押金,诺无车损、违章及逾期,还车后可退": "元押金,诺无车损、违章及逾期,还车后可退",
+	"前往门店取还": "前往门店取还",
+	"门店距您": "门店距您",
+	"确认下单": "确认下单",
+	"价格明细": "价格明细",
+	"车辆租金": "车辆租金",
+	"支付金额": "支付金额",
+	"导航到店": "导航到店",
+	"租车订单已提交": "租车订单已提交",
+	"到": "到",
+	"取车": "取车",
+	"订单详情": "订单详情",
+	"选择预约订单时间": "选择预约订单时间",
+	"单价": "单价",
+	"租赁订单号": "租赁订单号",
+	"结算总金额": "结算总金额",
+	"拍照车牌号": "拍照车牌号",
+	"拍照时请留意照片的清晰度,便于系统提取车牌号": "拍照时请留意照片的清晰度,便于系统提取车牌号",
+	"重拍": "重拍",
+	"使用照片": "使用照片",
+	"手动输入车牌号": "手动输入车牌号",
+	"开了定位权限": "开了定位权限",
+	"休闲鞋": "休闲鞋",
+	"数据加载中,请稍等": "数据加载中,请稍等",
+	"无法获取位置信息,请检查您的定位权限设置": "无法获取位置信息,请检查您的定位权限设置",
+	"您的手机未授权定位权限,请前往手机设置开启权限": "您的手机未授权定位权限,请前往手机设置开启权限",
+	"车牌": "车牌",
+	"读取图片数据": "读取图片数据",
+	"款车型": "款车型",
+	"城市代码": "城市代码",
+	"我的位置": "我的位置",
+	"取车时间": "取车时间",
+	"还车时间": "还车时间",
+	"租借时长": "租借时长",
+	"租借时长单位": "租借时长单位",
+	"经度": "经度",
+	"纬度": "纬度",
+	"周期单位": "周期单位",
+	"选中城市": "选中城市",
+	"是否为当前城市": "是否为当前城市",
+	"还车方式": "还车方式",
+	"是否免押": "是否免押",
+	"租": "租",
+	"位置是否改变": "位置是否改变",
+	"加上距离数量门店数据": "加上距离数量门店数据",
+	"判断当前是否有租赁周期类型": "判断当前是否有租赁周期类型",
+	"车辆类型": "车辆类型",
+	"租借类型": "租借类型",
+	"地图控件": "地图控件",
+	"请输入搜索内容": "请输入搜索内容",
+	"清空": "清空",
+	"搜索": "搜索",
+	"门店": "门店",
+	"换电柜": "换电柜",
+	"筛选": "筛选",
+	"上下文": "上下文",
+	"是否处于搜索状态": "是否处于搜索状态",
+	"点击图标跳转": "点击图标跳转",
+	"骑行": "骑行",
+	"附近门店列表": "附近门店列表",
+	"附近机柜列表": "附近机柜列表",
+	"将": "将",
+	"移动至中心点": "移动至中心点",
+	"已移动至中心点": "已移动至中心点",
+	"线上选择用车方案生成待支付订单": "线上选择用车方案生成待支付订单",
+	"导航到店向商家支付订单金额": "导航到店向商家支付订单金额",
+	"支付完成后直接现场取车": "支付完成后直接现场取车",
+	"短租": "短租",
+	"长租": "长租",
+	"出售": "出售",
+	"购": "购",
+	"平均时速": "平均时速",
+	"减少碳排量": "减少碳排量",
+	"暂无骑行数据!": "暂无骑行数据!",
+	"共享用户": "共享用户",
+	"家人、朋友长期共用车辆,授权账户可以使用感应解锁,寻车定位,查看设置等功能;": "家人、朋友长期共用车辆,授权账户可以使用感应解锁,寻车定位,查看设置等功能;",
+	"您还未绑定车辆": "您还未绑定车辆",
+	"车辆激活": "车辆激活",
+	"车辆品牌:": "车辆品牌:",
+	"车辆颜色:": "车辆颜色:",
+	"车牌号:": "车牌号:",
+	"上传照片": "上传照片",
+	"你确定要删除吗?": "你确定要删除吗?",
+	"还车成功!": "还车成功!",
+	"秒换电,瞬间满电,畅享骑行新体验!": "秒换电,瞬间满电,畅享骑行新体验!",
+	"不限次数": "不限次数",
+	"部分成功": "部分成功",
+	"是否切换到车辆": "是否切换到车辆",
+	"滑动启动": "滑动启动",
+	"扫码失败,请重新扫码": "扫码失败,请重新扫码",
+	"您还未购买换电套餐,是否前往购买换电套餐?": "您还未购买换电套餐,是否前往购买换电套餐?",
+	"当前车辆暂未绑定电池": "当前车辆暂未绑定电池",
+	"请扫描机柜二维码": "请扫描机柜二维码",
+	"信息详情": "信息详情",
+	"您还没有设备消息": "您还没有设备消息",
+	"您还没有系统消息": "您还没有系统消息",
+	"当前没有可更换的电池,购买车辆绑定电池后才可享受换电套餐": "当前没有可更换的电池,购买车辆绑定电池后才可享受换电套餐",
+	"仓门已打开": "仓门已打开",
+	"完成弹窗": "完成弹窗",
+	"祝您骑行愉快": "祝您骑行愉快",
+	"车辆已被租售!": "车辆已被租售!",
+	"全部": "全部"
 }

+ 1 - 1
manifest.json

@@ -141,7 +141,7 @@
     },
     "quickapp" : {},
     "mp-weixin" : {
-        "appid" : "wxefa2810018787a41",
+        "appid" : "wx2206efa444bf887e",
         // "appid": "wxfa47ec20c664ad3e", //可人智行
         // "appid" : "wx56681a7f2fe324ed",//名师傅出行
         "setting" : {

+ 842 - 0
output.json

@@ -0,0 +1,842 @@
+{
+  "关于我们": "关于我们",
+  "弗兰克公司": "弗兰克公司",
+  "版权所有": "版权所有",
+  "生命周期函数": "生命周期函数",
+  "监听页面加载": "监听页面加载",
+  "监听页面显示": "监听页面显示",
+  "我的订单": "我的订单",
+  "车辆信息": "车辆信息",
+  "逾期费用:": "逾期费用:",
+  "车辆编号:": "车辆编号:",
+  "车辆名称:": "车辆名称:",
+  "设备": "设备",
+  "服务": "服务",
+  "活动": "活动",
+  "我的": "我的",
+  "车型:": "车型:",
+  "续航:": "续航:",
+  "重量:": "重量:",
+  "照片:": "照片:",
+  "门店信息": "门店信息",
+  "门店名称:": "门店名称:",
+  "门店地址:": "门店地址:",
+  "车辆照片": "车辆照片",
+  "这里是关于激活车辆照片的文案描述,这里是关于激活车辆照片的文案描述": "这里是关于激活车辆照片的文案描述,这里是关于激活车辆照片的文案描述",
+  "归还车辆": "归还车辆",
+  "激活车辆": "激活车辆",
+  "还车成功": "还车成功",
+  "还车": "还车",
+  "请上传车辆照片": "请上传车辆照片",
+  "未获取到门店位置!": "未获取到门店位置!",
+  "这里会接收到子组件传来的更新后的图片": "这里会接收到子组件传来的更新后的图片",
+  "数组": "数组",
+  "车辆激活成功": "车辆激活成功",
+  "活动中心": "活动中心",
+  "暂无可参与的活动": "暂无可参与的活动",
+  "添加成员": "添加成员",
+  "请输入被邀人邮箱号": "请输入被邀人邮箱号",
+  "下一步": "下一步",
+  "该用户不存在!": "该用户不存在!",
+  "免费": "免费",
+  "次": "次",
+  "车辆换电": "车辆换电",
+  "响铃找车": "响铃找车",
+  "开座桶锁": "开座桶锁",
+  "关闭头盔锁": "关闭头盔锁",
+  "解锁": "解锁",
+  "上锁": "上锁",
+  "行驶轨迹": "行驶轨迹",
+  "车辆位置": "车辆位置",
+  "拖车服务": "拖车服务",
+  "关闭车辆": "关闭车辆",
+  "启动车辆": "启动车辆",
+  "我要还车": "我要还车",
+  "剩余租期": "剩余租期",
+  "查看订单": "查看订单",
+  "日": "日",
+  "小时": "小时",
+  "分": "分",
+  "到期后将无法用车": "到期后将无法用车",
+  "已到期": "已到期",
+  "续租": "续租",
+  "还车到门店": "还车到门店",
+  "系统会根据您的定位判断您是否已到还车位置,如您已经到达门店,请点击「我已到店」按钮,待门店确认还车后,即可还车成功。": "系统会根据您的定位判断您是否已到还车位置,如您已经到达门店,请点击「我已到店」按钮,待门店确认还车后,即可还车成功。",
+  "我已到店": "我已到店",
+  "附近可还门店": "附近可还门店",
+  "选择续租方案": "选择续租方案",
+  "时租": "时租",
+  "日租": "日租",
+  "周租": "周租",
+  "租车时长": "租车时长",
+  "天": "天",
+  "优惠券": "优惠券",
+  "折": "折",
+  "骑行保障服务": "骑行保障服务",
+  "保障须知": "保障须知",
+  "含行程延误保障": "含行程延误保障",
+  "元": "元",
+  "商家赠送": "商家赠送",
+  "配套服务": "配套服务",
+  "头盔": "头盔",
+  "手机支架": "手机支架",
+  "已阅读并同意": "已阅读并同意",
+  "《小众电动车租赁用户协议》": "《小众电动车租赁用户协议》",
+  "明细": "明细",
+  "支付": "支付",
+  "授权免押": "授权免押",
+  "暂无车辆": "暂无车辆",
+  "是否返回首页": "是否返回首页",
+  "车辆状态(是否上锁)": "车辆状态(是否上锁)",
+  "初始状态": "初始状态",
+  "如果是激活页面过来的。后端接口第一时间无法获取数据。需要再延迟获取一次": "如果是激活页面过来的。后端接口第一时间无法获取数据。需要再延迟获取一次",
+  "首页": "首页",
+  "查询车辆关键参数": "查询车辆关键参数",
+  "获取地址失败,请授权重新打开": "获取地址失败,请授权重新打开",
+  "获取当前时间": "获取当前时间",
+  "默认返回首页再提示报错": "默认返回首页再提示报错",
+  "您确定开启响铃找车?": "您确定开启响铃找车?",
+  "车辆已开始鸣笛": "车辆已开始鸣笛",
+  "您确定打开座桶锁?": "您确定打开座桶锁?",
+  "座桶锁已打开": "座桶锁已打开",
+  "您确定给车辆上锁?": "您确定给车辆上锁?",
+  "正在上锁": "正在上锁",
+  "已上锁": "已上锁",
+  "您确定给车辆解锁?": "您确定给车辆解锁?",
+  "正在解锁": "正在解锁",
+  "已解锁": "已解锁",
+  "取消": "取消",
+  "确定": "确定",
+  "已取消": "已取消",
+  "其他都需要带车牌号": "其他都需要带车牌号",
+  "锁车": "锁车",
+  "启动": "启动",
+  "车辆提示": "车辆提示",
+  "确认关闭车辆": "确认关闭车辆",
+  "确认需要启动车辆": "确认需要启动车辆",
+  "开启": "开启",
+  "关闭": "关闭",
+  "正在关闭车辆": "正在关闭车辆",
+  "正在启动车辆": "正在启动车辆",
+  "车辆已关闭": "车辆已关闭",
+  "车辆已启动": "车辆已启动",
+  "操作超时": "操作超时",
+  "电池信息": "电池信息",
+  "电池": "电池",
+  "剩余电量": "剩余电量",
+  "电压": "电压",
+  "温度": "温度",
+  "换电套餐": "换电套餐",
+  "秒换电,瞬间满电,畅享骑行新体验!": "秒换电,瞬间满电,畅享骑行新体验!",
+  "适用电池:": "适用电池:",
+  "当前购买为虚拟": "当前购买为虚拟",
+  "卡": "卡",
+  "如想要体验实体": "如想要体验实体",
+  "卡功能,前往最近的门店领取": "卡功能,前往最近的门店领取",
+  "立即购买": "立即购买",
+  "请先绑定车辆!": "请先绑定车辆!",
+  "提交中": "提交中",
+  "换电记录": "换电记录",
+  "开始换电": "开始换电",
+  "换电中": "换电中",
+  "换电成功": "换电成功",
+  "换电失败": "换电失败",
+  "未知": "未知",
+  "换电单号": "换电单号",
+  "归还电池": "归还电池",
+  "借出电池": "借出电池",
+  "换电类型": "换电类型",
+  "机柜换电": "机柜换电",
+  "门店换电": "门店换电",
+  "电柜名称": "电柜名称",
+  "开启感应解锁": "开启感应解锁",
+  "是否配对改设备": "是否配对改设备",
+  "配对": "配对",
+  "点击下方": "点击下方",
+  "开始配对": "开始配对",
+  "请在系统弹窗中选择": "请在系统弹窗中选择",
+  "以完成功能开启。": "以完成功能开启。",
+  "提示信息": "提示信息",
+  "使用感应解锁功能时,请务必保证手机蓝牙功能开启,在蓝牙列表中忽略此设备会导致感应解锁失败": "使用感应解锁功能时,请务必保证手机蓝牙功能开启,在蓝牙列表中忽略此设备会导致感应解锁失败",
+  "测试指令!!!别删除": "测试指令!!!别删除",
+  "关闭靠近解锁": "关闭靠近解锁",
+  "跳转解绑配对": "跳转解绑配对",
+  "靠近解锁": "靠近解锁",
+  "升级": "升级",
+  "感应解锁已开启": "感应解锁已开启",
+  "注意:请勿在手机蓝牙中忽略“电动车蓝牙": "注意:请勿在手机蓝牙中忽略“电动车蓝牙",
+  "设备,否则感应解锁功能将无法使用": "设备,否则感应解锁功能将无法使用",
+  "机柜信息传输完成": "机柜信息传输完成",
+  "初始化": "初始化",
+  "连接蓝牙": "连接蓝牙",
+  "下发配对指令": "下发配对指令",
+  "会断开连接": "会断开连接",
+  "直接再次连接": "直接再次连接",
+  "记得不要提示可以蓝牙断开连接": "记得不要提示可以蓝牙断开连接",
+  "点击配对": "点击配对",
+  "调用配对": "调用配对",
+  "确认配对": "确认配对",
+  "断开蓝牙": "断开蓝牙",
+  "不走逻辑": "不走逻辑",
+  "蓝牙未启用": "蓝牙未启用",
+  "请先打开蓝牙": "请先打开蓝牙",
+  "开始升级": "开始升级",
+  "结束?????": "结束?????",
+  "蓝牙未连接": "蓝牙未连接",
+  "蓝牙连接断开": "蓝牙连接断开",
+  "提示": "提示",
+  "重新连接": "重新连接",
+  "蓝牙连接中断,是否重新连接?": "蓝牙连接中断,是否重新连接?",
+  "蓝牙连接成功": "蓝牙连接成功",
+  "电动车蓝牙": "电动车蓝牙",
+  "蓝牙配对请求": "蓝牙配对请求",
+  "想与您配对,请确保显示的配对密钥为": "想与您配对,请确保显示的配对密钥为",
+  "关闭蓝牙连接": "关闭蓝牙连接",
+  "切换正常工厂模式": "切换正常工厂模式",
+  "切换工厂模式以后蓝牙断开": "切换工厂模式以后蓝牙断开",
+  "重新连接蓝牙": "重新连接蓝牙",
+  "接近解锁下发成功": "接近解锁下发成功",
+  "下发打开接近解锁指令": "下发打开接近解锁指令",
+  "获取接近解锁下发成功": "获取接近解锁下发成功",
+  "是否是蓝牙类型列表里面的": "是否是蓝牙类型列表里面的",
+  "打开蓝牙连接": "打开蓝牙连接",
+  "监听蓝牙设备连接状态变化事件": "监听蓝牙设备连接状态变化事件",
+  "观察周围是否有其他骑手连接,请等待对方完成": "观察周围是否有其他骑手连接,请等待对方完成",
+  "或": "或",
+  "微信是否开启了蓝牙权限": "微信是否开启了蓝牙权限",
+  "微信是否开启了蓝牙权限!!": "微信是否开启了蓝牙权限!!",
+  "连接失败,请尝试重新连接": "连接失败,请尝试重新连接",
+  "蓝牙未打开或请在右上角设置授权小程序使用蓝牙": "蓝牙未打开或请在右上角设置授权小程序使用蓝牙",
+  "我知道了": "我知道了",
+  "蓝牙连接未成功": "蓝牙连接未成功",
+  "当前机柜未找到符合的蓝牙类型": "当前机柜未找到符合的蓝牙类型",
+  "开启感应解锁后,携带手机靠近车辆并按": "开启感应解锁后,携带手机靠近车辆并按",
+  "键即可开机": "键即可开机",
+  "按键解锁": "按键解锁",
+  "手机接近车辆后,长按": "手机接近车辆后,长按",
+  "键即可解锁": "键即可解锁",
+  "灵敏度设置": "灵敏度设置",
+  "关闭感应解锁": "关闭感应解锁",
+  "距离建议适中,设置过近会降低成功率,设置过远可能会有风险": "距离建议适中,设置过近会降低成功率,设置过远可能会有风险",
+  "最近": "最近",
+  "适中": "适中",
+  "最远": "最远",
+  "左": "左",
+  "设置灵敏度指令成功": "设置灵敏度指令成功",
+  "关闭接近解锁成功": "关闭接近解锁成功",
+  "无可用电池": "无可用电池",
+  "营业中": "营业中",
+  "已休息": "已休息",
+  "直线距您": "直线距您",
+  "千米": "千米",
+  "米": "米",
+  "导航": "导航",
+  "格口详情": "格口详情",
+  "电柜编号:": "电柜编号:",
+  "已预约": "已预约",
+  "没有预约": "没有预约",
+  "空仓或者仓门不可用": "空仓或者仓门不可用",
+  "空仓": "空仓",
+  "满电或者电量未满": "满电或者电量未满",
+  "电池可用": "电池可用",
+  "待充满": "待充满",
+  "电池列表": "电池列表",
+  "存储蓝牙状态": "存储蓝牙状态",
+  "机柜详情": "机柜详情",
+  "离线": "离线",
+  "在线": "在线",
+  "钱包余额": "钱包余额",
+  "扫码机柜": "扫码机柜",
+  "车牌号": "车牌号",
+  "可用电池数": "可用电池数",
+  "蓝牙信息": "蓝牙信息",
+  "蓝牙换电需要的数据": "蓝牙换电需要的数据",
+  "如果本地有存储的定位信息,则直接使用": "如果本地有存储的定位信息,则直接使用",
+  "领取电池成功": "领取电池成功",
+  "获取机柜信息": "获取机柜信息",
+  "计算可用电池数": "计算可用电池数",
+  "导航去机柜": "导航去机柜",
+  "设备数据": "设备数据",
+  "将传入的时间转换为分钟": "将传入的时间转换为分钟",
+  "判断当前时间是否在指定范围内": "判断当前时间是否在指定范围内",
+  "仓体": "仓体",
+  "月租": "月租",
+  "年租": "年租",
+  "分租": "分租",
+  "季租": "季租",
+  "购买": "购买",
+  "免费换电次数": "免费换电次数",
+  "日租享": "日租享",
+  "次免费换电数,超出后需要单独支付换电费用;": "次免费换电数,超出后需要单独支付换电费用;",
+  "我要用车": "我要用车",
+  "获取直线距离": "获取直线距离",
+  "您是否要拨打电话": "您是否要拨打电话",
+  "更多功能": "更多功能",
+  "固定导航栏": "固定导航栏",
+  "其他功能": "其他功能",
+  "长按拖动可调整顺序,可增减固定导航栏内容": "长按拖动可调整顺序,可增减固定导航栏内容",
+  "解除绑定": "解除绑定",
+  "开机": "开机",
+  "开启车辆": "开启车辆",
+  "关机": "关机",
+  "您确认": "您确认",
+  "吗": "吗",
+  "处理修改之后的数据": "处理修改之后的数据",
+  "输入注册账号的密码即可解绑": "输入注册账号的密码即可解绑",
+  "请输入密码": "请输入密码",
+  "解绑后,您将失去当前设备的控制权,其他人可以连接绑定您的设备。": "解绑后,您将失去当前设备的控制权,其他人可以连接绑定您的设备。",
+  "解绑后将立即删除家庭账号,感应解锁等数据。": "解绑后将立即删除家庭账号,感应解锁等数据。",
+  "完成并解绑": "完成并解绑",
+  "是否确定解除绑定": "是否确定解除绑定",
+  "返回首页": "返回首页",
+  "解绑成功!": "解绑成功!",
+  "请选择设备": "请选择设备",
+  "当前选择": "当前选择",
+  "租赁设备": "租赁设备",
+  "绑定设备": "绑定设备",
+  "是否确定": "是否确定",
+  "清空当前设备蓝牙相关": "清空当前设备蓝牙相关",
+  "切换成功!": "切换成功!",
+  "由于": "由于",
+  "一些样式及点击事件不支持": "一些样式及点击事件不支持",
+  "气泡内容": "气泡内容",
+  "已驻车": "已驻车",
+  "分钟": "分钟",
+  "更新于": "更新于",
+  "闪灯鸣笛": "闪灯鸣笛",
+  "使用": "使用",
+  "点击事件": "点击事件",
+  "需要填写": "需要填写",
+  "标记点": "标记点",
+  "定时器变量,用于清除定时器": "定时器变量,用于清除定时器",
+  "未知时间": "未知时间",
+  "五秒后重新调用加载车辆位置信息的方法": "五秒后重新调用加载车辆位置信息的方法",
+  "监听页面卸载": "监听页面卸载",
+  "页面卸载时清除定时器": "页面卸载时清除定时器",
+  "确保定时器引用被清除": "确保定时器引用被清除",
+  "默认返回上一个页面再提示报错": "默认返回上一个页面再提示报错",
+  "您确认开启闪灯鸣笛吗": "您确认开启闪灯鸣笛吗",
+  "本人已知晓上述内容": "本人已知晓上述内容",
+  "阅读合同倒计时": "阅读合同倒计时",
+  "秒": "秒",
+  "签名": "签名",
+  "重新签名": "重新签名",
+  "上报小程序账号信息": "上报小程序账号信息",
+  "您当前没有手写签名,是否要进行填写": "您当前没有手写签名,是否要进行填写",
+  "续航": "续航",
+  "骑行里程": "骑行里程",
+  "骑行时长": "骑行时长",
+  "最大速度": "最大速度",
+  "平均速度": "平均速度",
+  "车架号": "车架号",
+  "设备编号": "设备编号",
+  "车辆总里程": "车辆总里程",
+  "中控硬件": "中控硬件",
+  "中控软件": "中控软件",
+  "意见反馈": "意见反馈",
+  "问题类型": "问题类型",
+  "问题描述": "问题描述",
+  "请详细说明,以便我们解决问题,最多可填写": "请详细说明,以便我们解决问题,最多可填写",
+  "字。": "字。",
+  "问题图片": "问题图片",
+  "提交": "提交",
+  "车辆": "车辆",
+  "电柜": "电柜",
+  "应用操作": "应用操作",
+  "其他": "其他",
+  "最多输入": "最多输入",
+  "字": "字",
+  "提交成功": "提交成功",
+  "返回上一级页面": "返回上一级页面",
+  "为保证": "为保证",
+  "感应解锁": "感应解锁",
+  "的正常使用,请依次开以下权限,开启后可以显著提高解锁成功率,且不会明显增加手机电量消耗": "的正常使用,请依次开以下权限,开启后可以显著提高解锁成功率,且不会明显增加手机电量消耗",
+  "授权引导": "授权引导",
+  "已开启": "已开启",
+  "未开启": "未开启",
+  "我已开启": "我已开启",
+  "引入": "引入",
+  "是否打开所有需要权限": "是否打开所有需要权限",
+  "位置权限": "位置权限",
+  "打开手机定位,并运行": "打开手机定位,并运行",
+  "始终使用": "始终使用",
+  "电池优化": "电池优化",
+  "打开电池优化设置,": "打开电池优化设置,",
+  "将弗兰克": "将弗兰克",
+  "加入保护名单": "加入保护名单",
+  "后台运行": "后台运行",
+  "打开后台运行权限": "打开后台运行权限",
+  "清选择手动控制": "清选择手动控制",
+  "打开应用锁": "打开应用锁",
+  "打开应用权限锁": "打开应用权限锁",
+  "的": "的",
+  "里编写如下代码": "里编写如下代码",
+  "已授权": "已授权",
+  "已获得授权": "已获得授权",
+  "未获得授权": "未获得授权",
+  "被永久拒绝权限": "被永久拒绝权限",
+  "确定打开": "确定打开",
+  "胎压": "胎压",
+  "选择的车辆控制": "选择的车辆控制",
+  "组件的方法列表": "组件的方法列表",
+  "判断车辆是否在线状态": "判断车辆是否在线状态",
+  "在线调用接口": "在线调用接口",
+  "不在线提示连接蓝牙": "不在线提示连接蓝牙",
+  "成功": "成功",
+  "蓝牙是否已经连接": "蓝牙是否已经连接",
+  "未连接提示去连接": "未连接提示去连接",
+  "已连接下发对应指令": "已连接下发对应指令",
+  "操作成功": "操作成功",
+  "发送": "发送",
+  "指令结束": "指令结束",
+  "当前车辆处于离线,是否前往开启蓝牙配对操作车辆?": "当前车辆处于离线,是否前往开启蓝牙配对操作车辆?",
+  "前往配置更多功能": "前往配置更多功能",
+  "请先开启位置授权": "请先开启位置授权",
+  "的正常使用,请": "的正常使用,请",
+  "开启位置授权": "开启位置授权",
+  "并": "并",
+  "打开精准位置": "打开精准位置",
+  "开关,可提高解锁成功率,且不会明显增加手机电量消耗。": "开关,可提高解锁成功率,且不会明显增加手机电量消耗。",
+  "打开手机定位,并允许": "打开手机定位,并允许",
+  "「始终」": "「始终」",
+  "第": "第",
+  "步": "步",
+  "始终": "始终",
+  "开启请准位置开关": "开启请准位置开关",
+  "精准位置": "精准位置",
+  "组件的属性列表": "组件的属性列表",
+  "续航开新路": "续航开新路",
+  "路遥见实力": "路遥见实力",
+  "全速续航": "全速续航",
+  "极速可达": "极速可达",
+  "了解更多": "了解更多",
+  "全新车型,即将发布!": "全新车型,即将发布!",
+  "更智能、更高效,全新车型即将亮相,敬请期待!": "更智能、更高效,全新车型即将亮相,敬请期待!",
+  "租赁设备编号": "租赁设备编号",
+  "子组件": "子组件",
+  "更新": "更新",
+  "您已逾期": "您已逾期",
+  "请及时续费或归还车辆": "请及时续费或归还车辆",
+  "去续费": "去续费",
+  "车辆已开机": "车辆已开机",
+  "车辆已关机": "车辆已关机",
+  "最近骑行": "最近骑行",
+  "总里程": "总里程",
+  "蓝牙配对成功": "蓝牙配对成功",
+  "请先连接蓝牙": "请先连接蓝牙",
+  "用车人管理": "用车人管理",
+  "个家庭账号": "个家庭账号",
+  "设备信息": "设备信息",
+  "软件版本": "软件版本",
+  "用户车辆列表": "用户车辆列表",
+  "当前车辆编号": "当前车辆编号",
+  "手机型号": "手机型号",
+  "是否打开权限弹窗": "是否打开权限弹窗",
+  "当前是否蓝牙连接或者配对": "当前是否蓝牙连接或者配对",
+  "所有蓝牙配对所需权限是否已开启": "所有蓝牙配对所需权限是否已开启",
+  "分享给好友": "分享给好友",
+  "发送给朋友": "发送给朋友",
+  "蓝牙配对所需权限": "蓝牙配对所需权限",
+  "运行小程序需要隐藏": "运行小程序需要隐藏",
+  "所需权限开启成功": "所需权限开启成功",
+  "前往开启蓝牙配对": "前往开启蓝牙配对",
+  "身份认证提示": "身份认证提示",
+  "尚未完成身份认证,是否进行身份认证": "尚未完成身份认证,是否进行身份认证",
+  "您还未登录,请先登录": "您还未登录,请先登录",
+  "判断逾期": "判断逾期",
+  "如果租": "如果租",
+  "购多个车辆的话可以切换当前车辆": "购多个车辆的话可以切换当前车辆",
+  "判断距离是否超过": "判断距离是否超过",
+  "如果超过": "如果超过",
+  "米,则转换为千米并返回": "米,则转换为千米并返回",
+  "否则直接返回米": "否则直接返回米",
+  "是否是小众租车": "是否是小众租车",
+  "欢迎来到": "欢迎来到",
+  "手机号快捷登录": "手机号快捷登录",
+  "其他手机号登录": "其他手机号登录",
+  "电动车租赁用户协议": "电动车租赁用户协议",
+  "和": "和",
+  "《隐私协议》": "《隐私协议》",
+  "申请获取并验证你的手机号": "申请获取并验证你的手机号",
+  "快捷登录": "快捷登录",
+  "上次提供": "上次提供",
+  "不允许": "不允许",
+  "使用其他号码": "使用其他号码",
+  "初始化未授权": "初始化未授权",
+  "请查阅隐私和协议": "请查阅隐私和协议",
+  "一键授权失败": "一键授权失败",
+  "请使用手机号登录": "请使用手机号登录",
+  "登录成功": "登录成功",
+  "修改密码": "修改密码",
+  "请输入旧密码": "请输入旧密码",
+  "请输入新密码": "请输入新密码",
+  "请再次输入新密码": "请再次输入新密码",
+  "确认修改": "确认修改",
+  "是否确认修改密码?": "是否确认修改密码?",
+  "修改成功": "修改成功",
+  "忘记密码": "忘记密码",
+  "请输入要重置的邮箱账号": "请输入要重置的邮箱账号",
+  "重置密码": "重置密码",
+  "重置密码邮件已发送": "重置密码邮件已发送",
+  "去登录": "去登录",
+  "我们向": "我们向",
+  "发送了一封密码重置邮件,请您登录邮箱操作处理。": "发送了一封密码重置邮件,请您登录邮箱操作处理。",
+  "请输入有效的邮箱地址": "请输入有效的邮箱地址",
+  "欢迎来到智寻出行": "欢迎来到智寻出行",
+  "邮箱密码登录": "邮箱密码登录",
+  "请输入邮箱账号": "请输入邮箱账号",
+  "用户协议": "用户协议",
+  "隐私政策": "隐私政策",
+  "登录": "登录",
+  "没有账号": "没有账号",
+  "立即注册": "立即注册",
+  "其他方式登录": "其他方式登录",
+  "请勾选用户协议和隐私政策": "请勾选用户协议和隐私政策",
+  "账号注册": "账号注册",
+  "请再次输入密码": "请再次输入密码",
+  "注册邮件已发送": "注册邮件已发送",
+  "我们已向": "我们已向",
+  "发送注册邮件,请您登录邮箱点击链接完成注册。": "发送注册邮件,请您登录邮箱点击链接完成注册。",
+  "请输入": "请输入",
+  "位密码,包含字母数字": "位密码,包含字母数字",
+  "两次输入的密码不一致": "两次输入的密码不一致",
+  "注册邮件发送成功": "注册邮件发送成功",
+  "请输入车牌号全称": "请输入车牌号全称",
+  "请输入车牌号": "请输入车牌号",
+  "确认": "确认",
+  "请先输入车牌号": "请先输入车牌号",
+  "温馨提示:各省市因地制宜,制定相关的牌照格式,请按照实际车辆牌照的格式进行填写~": "温馨提示:各省市因地制宜,制定相关的牌照格式,请按照实际车辆牌照的格式进行填写~",
+  "参考格式": "参考格式",
+  "北京": "北京",
+  "未获取到经纬度": "未获取到经纬度",
+  "判断原因是否为微信小程序内部没有授权定位": "判断原因是否为微信小程序内部没有授权定位",
+  "无法获取位置信息,请检查您的微信定位权限设置": "无法获取位置信息,请检查您的微信定位权限设置",
+  "您的手机未授权微信定位权限,请前往手机设置开启权限": "您的手机未授权微信定位权限,请前往手机设置开启权限",
+  "获取当前时间戳(毫秒)": "获取当前时间戳(毫秒)",
+  "此车辆已离线,请选择其他车辆": "此车辆已离线,请选择其他车辆",
+  "车辆正在被使用": "车辆正在被使用",
+  "是本人在使用": "是本人在使用",
+  "已有正在使用的车辆,是否跳转至车辆详情页": "已有正在使用的车辆,是否跳转至车辆详情页",
+  "此车辆正在被使用": "此车辆正在被使用",
+  "预租车型与之前预约车型不一致": "预租车型与之前预约车型不一致",
+  "与预约车型不符": "与预约车型不符",
+  "轴偏移量": "轴偏移量",
+  "点击显示": "点击显示",
+  "常显": "常显",
+  "今天": "今天",
+  "车辆推动报警": "车辆推动报警",
+  "车辆正在被人推送,请及时查看": "车辆正在被人推送,请及时查看",
+  "我的消息": "我的消息",
+  "设备消息": "设备消息",
+  "系统消息": "系统消息",
+  "行驶里程": "行驶里程",
+  "功率": "功率",
+  "减少碳排放": "减少碳排放",
+  "骑行次数": "骑行次数",
+  "累计功率": "累计功率",
+  "减少排放量": "减少排放量",
+  "总": "总",
+  "年": "年",
+  "月": "月",
+  "周": "周",
+  "请输入绑定的新手机号": "请输入绑定的新手机号",
+  "请输入验证码": "请输入验证码",
+  "秒后再次获取": "秒后再次获取",
+  "获取验证码": "获取验证码",
+  "绑定新手机号": "绑定新手机号",
+  "请输入手机号码": "请输入手机号码",
+  "请检测您的手机号码是否正确": "请检测您的手机号码是否正确",
+  "仪表盘": "仪表盘",
+  "请点击登录": "请点击登录",
+  "我的车辆": "我的车辆",
+  "用车人": "用车人",
+  "温馨提示": "温馨提示",
+  "您还未购买换电套餐,是否前往进行换电套餐?": "您还未购买换电套餐,是否前往进行换电套餐?",
+  "前往购买": "前往购买",
+  "客服中心": "客服中心",
+  "设置": "设置",
+  "您还未购买车辆,购买车辆才可享受换电套餐": "您还未购买车辆,购买车辆才可享受换电套餐",
+  "您还未绑定车辆!": "您还未绑定车辆!",
+  "未获取到手机号码": "未获取到手机号码",
+  "退出登录": "退出登录",
+  "昵称": "昵称",
+  "注册时间": "注册时间",
+  "隐私协议": "隐私协议",
+  "用户条款": "用户条款",
+  "输入处理": "输入处理",
+  "延迟处理输入法组合输入": "延迟处理输入法组合输入",
+  "更新值(避免无限触发,需判断)": "更新值(避免无限触发,需判断)",
+  "截断字符串至指定字节": "截断字符串至指定字节",
+  "判断字符是否为双字节(如中文)": "判断字符是否为双字节(如中文)",
+  "您确定要退出当前账号吗?": "您确定要退出当前账号吗?",
+  "号仓门已打开": "号仓门已打开",
+  "仓门已打开": "仓门已打开",
+  "请存入更换电池": "请存入更换电池",
+  "取走满电电池": "取走满电电池",
+  "并关好仓门": "并关好仓门",
+  "请": "请",
+  "归还": "归还",
+  "取出": "取出",
+  "电池并关上仓门": "电池并关上仓门",
+  "请取出电池并关上仓门": "请取出电池并关上仓门",
+  "归还完成后电柜会自动打开可租仓门": "归还完成后电柜会自动打开可租仓门",
+  "自动为您匹配最高电量电池": "自动为您匹配最高电量电池",
+  "完成弹窗": "完成弹窗",
+  "即将跳转至首页,祝您骑行愉快": "即将跳转至首页,祝您骑行愉快",
+  "回到首页": "回到首页",
+  "联系门店": "联系门店",
+  "仅为示例": "仅为示例",
+  "待支付": "待支付",
+  "待取车": "待取车",
+  "待激活": "待激活",
+  "使用中": "使用中",
+  "已逾期": "已逾期",
+  "还车申请中": "还车申请中",
+  "还车中": "还车中",
+  "车辆已归还": "车辆已归还",
+  "订单已支付": "订单已支付",
+  "订单未支付": "订单未支付",
+  "已完结": "已完结",
+  "支付中": "支付中",
+  "支付成功": "支付成功",
+  "支付失败": "支付失败",
+  "支付取消": "支付取消",
+  "线下待审核": "线下待审核",
+  "线下审核拒绝": "线下审核拒绝",
+  "下单时间": "下单时间",
+  "有效期至": "有效期至",
+  "有效时长": "有效时长",
+  "免费换电数": "免费换电数",
+  "订单类型": "订单类型",
+  "购车": "购车",
+  "租车": "租车",
+  "申请中": "申请中",
+  "审核失败": "审核失败",
+  "退款失败": "退款失败",
+  "已退款": "已退款",
+  "套餐金额": "套餐金额",
+  "订单金额": "订单金额",
+  "租车购车": "租车购车",
+  "页面上拉触底事件的处理函数": "页面上拉触底事件的处理函数",
+  "页面下拉触底事件的处理函数": "页面下拉触底事件的处理函数",
+  "解析到期时间": "解析到期时间",
+  "计算剩余天数": "计算剩余天数",
+  "请于": "请于",
+  "到门店取车": "到门店取车",
+  "请上传车辆图片激活车辆": "请上传车辆图片激活车辆",
+  "待门店确认": "待门店确认",
+  "等待门店取车": "等待门店取车",
+  "已完成": "已完成",
+  "租期剩余": "租期剩余",
+  "逾期时长": "逾期时长",
+  "租借周期": "租借周期",
+  "逾期金额": "逾期金额",
+  "收起": "收起",
+  "展开": "展开",
+  "租借周期:购买": "租借周期:购买",
+  "订单信息": "订单信息",
+  "订单编号": "订单编号",
+  "支付时间": "支付时间",
+  "支付方式": "支付方式",
+  "微信支付": "微信支付",
+  "线下支付": "线下支付",
+  "支付宝支付": "支付宝支付",
+  "钱包余额支付": "钱包余额支付",
+  "租车金额": "租车金额",
+  "租车押金": "租车押金",
+  "订单结束后随时退": "订单结束后随时退",
+  "自行去门店取还": "自行去门店取还",
+  "未知地址": "未知地址",
+  "重量": "重量",
+  "换电信息": "换电信息",
+  "共": "共",
+  "本单可享": "本单可享",
+  "次免费换电数,超出后需单独支付": "次免费换电数,超出后需单独支付",
+  "自费换电": "自费换电",
+  "本单您可享受": "本单您可享受",
+  "次免费换电,": "次免费换电,",
+  "当前免费换电剩余": "当前免费换电剩余",
+  "次,超出后需要单独支付换电费用": "次,超出后需要单独支付换电费用",
+  "取还时间": "取还时间",
+  "逾期规则": "逾期规则",
+  "逾期后还可用车吗": "逾期后还可用车吗",
+  "如果逾期将触发智能锁车逻辑,可能导致您无法正常用车,请及时续费或联系商家处理。": "如果逾期将触发智能锁车逻辑,可能导致您无法正常用车,请及时续费或联系商家处理。",
+  "逾期费计算标准是什么": "逾期费计算标准是什么",
+  "小时租逾期费": "小时租逾期费",
+  "每小时费用": "每小时费用",
+  "逾期小时;当日还": "逾期小时;当日还",
+  "季租逾期费": "季租逾期费",
+  "每天费用": "每天费用",
+  "逾期天数;如果不满": "逾期天数;如果不满",
+  "小时按": "小时按",
+  "小时算,不满": "小时算,不满",
+  "天按": "天按",
+  "天算,最终收取的逾期费以门店确认的费用为准": "天算,最终收取的逾期费以门店确认的费用为准",
+  "逾期后续租如何收费": "逾期后续租如何收费",
+  "逾期后及时续租不收取逾期费,逾期时长将从续租订单的用车时间中抵扣": "逾期后及时续租不收取逾期费,逾期时长将从续租订单的用车时间中抵扣",
+  "结束订单": "结束订单",
+  "扫码绑定": "扫码绑定",
+  "去上传": "去上传",
+  "到店还车": "到店还车",
+  "选择取消原因": "选择取消原因",
+  "行程变更无需用车": "行程变更无需用车",
+  "修改订单信息": "修改订单信息",
+  "不想要了": "不想要了",
+  "确认取消": "确认取消",
+  "车辆价格": "车辆价格",
+  "逾期支付金额": "逾期支付金额",
+  "逾期费用计算": "逾期费用计算",
+  "车型不匹配!": "车型不匹配!",
+  "车辆未展示!": "车辆未展示!",
+  "请扫描正确的二维码!": "请扫描正确的二维码!",
+  "识别中": "识别中",
+  "季": "季",
+  "取还时间展示": "取还时间展示",
+  "剩余租期判断": "剩余租期判断",
+  "判断逾期状态": "判断逾期状态",
+  "如果逾期要交逾期费用": "如果逾期要交逾期费用",
+  "跳转到上传车辆图片再支付逾期费用还车": "跳转到上传车辆图片再支付逾期费用还车",
+  "提交还车图片": "提交还车图片",
+  "取消订单": "取消订单",
+  "您是否需要取消该订单": "您是否需要取消该订单",
+  "是": "是",
+  "否": "否",
+  "预约": "预约",
+  "非预约": "非预约",
+  "支付失败,请重试": "支付失败,请重试",
+  "计算拖车说明收费价格": "计算拖车说明收费价格",
+  "实际距离单位米": "实际距离单位米",
+  "向上取整的公里数": "向上取整的公里数",
+  "超出首公里的费用": "超出首公里的费用",
+  "将价格拆分为整数部分和小数部分": "将价格拆分为整数部分和小数部分",
+  "保留两位小数": "保留两位小数",
+  "计算价格": "计算价格",
+  "保险金": "保险金",
+  "租金": "租金",
+  "保险": "保险",
+  "有保险的时候": "有保险的时候",
+  "为免押": "为免押",
+  "为是否成功开通免押": "为是否成功开通免押",
+  "为总金额": "为总金额",
+  "押金": "押金",
+  "时": "时",
+  "无保险": "无保险",
+  "金额": "金额",
+  "周期数": "周期数",
+  "周期价格": "周期价格",
+  "跳转换电记录": "跳转换电记录",
+  "我的套餐": "我的套餐",
+  "适用电池": "适用电池",
+  "车辆编号": "车辆编号",
+  "小米": "小米",
+  "卡号": "卡号",
+  "生效中": "生效中",
+  "待生效": "待生效",
+  "已结束": "已结束",
+  "前往购买套餐": "前往购买套餐",
+  "返回上一页": "返回上一页",
+  "请输入手机号": "请输入手机号",
+  "重新获取": "重新获取",
+  "计算属性用于判断是否可以登录": "计算属性用于判断是否可以登录",
+  "权限设置": "权限设置",
+  "查看实时位置": "查看实时位置",
+  "使用换电": "使用换电",
+  "默认设置": "默认设置",
+  "远程开关锁": "远程开关锁",
+  "座桶锁": "座桶锁",
+  "确认添加": "确认添加",
+  "删除成员": "删除成员",
+  "确定删除这个成员吗?": "确定删除这个成员吗?",
+  "删除中": "删除中",
+  "添加成功!": "添加成功!",
+  "确认订单": "确认订单",
+  "选择取车时间": "选择取车时间",
+  "共计": "共计",
+  "车辆押金": "车辆押金",
+  "需要支付": "需要支付",
+  "元押金,诺无车损、违章及逾期,还车后可退": "元押金,诺无车损、违章及逾期,还车后可退",
+  "前往门店取还": "前往门店取还",
+  "门店距您": "门店距您",
+  "确认下单": "确认下单",
+  "价格明细": "价格明细",
+  "车辆租金": "车辆租金",
+  "支付金额": "支付金额",
+  "导航到店": "导航到店",
+  "租车订单已提交": "租车订单已提交",
+  "到": "到",
+  "取车": "取车",
+  "订单详情": "订单详情",
+  "选择预约订单时间": "选择预约订单时间",
+  "单价": "单价",
+  "租赁订单号": "租赁订单号",
+  "结算总金额": "结算总金额",
+  "拍照车牌号": "拍照车牌号",
+  "拍照时请留意照片的清晰度,便于系统提取车牌号": "拍照时请留意照片的清晰度,便于系统提取车牌号",
+  "重拍": "重拍",
+  "使用照片": "使用照片",
+  "手动输入车牌号": "手动输入车牌号",
+  "开了定位权限": "开了定位权限",
+  "休闲鞋": "休闲鞋",
+  "数据加载中,请稍等": "数据加载中,请稍等",
+  "无法获取位置信息,请检查您的定位权限设置": "无法获取位置信息,请检查您的定位权限设置",
+  "您的手机未授权定位权限,请前往手机设置开启权限": "您的手机未授权定位权限,请前往手机设置开启权限",
+  "车牌": "车牌",
+  "前缀": "前缀",
+  "读取图片数据": "读取图片数据",
+  "款车型": "款车型",
+  "城市代码": "城市代码",
+  "我的位置": "我的位置",
+  "取车时间": "取车时间",
+  "还车时间": "还车时间",
+  "租借时长": "租借时长",
+  "租借时长单位": "租借时长单位",
+  "经度": "经度",
+  "纬度": "纬度",
+  "周期单位": "周期单位",
+  "选中城市": "选中城市",
+  "是否为当前城市": "是否为当前城市",
+  "还车方式": "还车方式",
+  "是否免押": "是否免押",
+  "租": "租",
+  "位置是否改变": "位置是否改变",
+  "加上距离数量门店数据": "加上距离数量门店数据",
+  "判断当前是否有租赁周期类型": "判断当前是否有租赁周期类型",
+  "车辆类型": "车辆类型",
+  "租借类型": "租借类型",
+  "地图控件": "地图控件",
+  "请输入搜索内容": "请输入搜索内容",
+  "清空": "清空",
+  "搜索": "搜索",
+  "门店": "门店",
+  "换电柜": "换电柜",
+  "筛选": "筛选",
+  "上下文": "上下文",
+  "是否处于搜索状态": "是否处于搜索状态",
+  "点击图标跳转": "点击图标跳转",
+  "骑行": "骑行",
+  "附近门店列表": "附近门店列表",
+  "附近机柜列表": "附近机柜列表",
+  "将": "将",
+  "移动至中心点": "移动至中心点",
+  "已移动至中心点": "已移动至中心点",
+  "线上选择用车方案生成待支付订单": "线上选择用车方案生成待支付订单",
+  "导航到店向商家支付订单金额": "导航到店向商家支付订单金额",
+  "支付完成后直接现场取车": "支付完成后直接现场取车",
+  "短租": "短租",
+  "长租": "长租",
+  "出售": "出售",
+  "购": "购",
+  "平均时速": "平均时速",
+  "减少碳排量": "减少碳排量",
+  "是否开启卫星图": "是否开启卫星图",
+  "是否开启实时路况": "是否开启实时路况",
+  "路线": "路线",
+  "暂无骑行数据!": "暂无骑行数据!",
+  "接口返回描绘线段": "接口返回描绘线段",
+  "点收尾标记": "点收尾标记",
+  "这里的": "这里的",
+  "只为": "只为",
+  "共享用户": "共享用户",
+  "家人、朋友长期共用车辆,授权账户可以使用感应解锁,寻车定位,查看设置等功能;": "家人、朋友长期共用车辆,授权账户可以使用感应解锁,寻车定位,查看设置等功能;",
+  "您还未绑定车辆": "您还未绑定车辆"
+}

+ 827 - 0
output1.json

@@ -0,0 +1,827 @@
+{
+  "关于我们": "About Us",
+  "弗兰克公司": "弗兰克公司",
+  "版权所有": "版权所有",
+  "我的订单": "My Orders",
+  "车辆信息": "Bike Info",
+  "逾期费用:": "lafe fee",
+  "车辆编号:": "车辆编号:",
+  "车辆名称:": "车辆名称:",
+  "设备": "Device",
+  "服务": "Service",
+  "活动": "Activity",
+  "我的": "Mine",
+  "车型:": "车型:",
+  "续航:": "续航:",
+  "重量:": "重量:",
+  "照片:": "照片:",
+  "门店信息": "门店信息",
+  "门店名称:": "门店名称:",
+  "门店地址:": "门店地址:",
+  "车辆照片": "车辆照片",
+  "这里是关于激活车辆照片的文案描述,这里是关于激活车辆照片的文案描述": "这里是关于激活车辆照片的文案描述,这里是关于激活车辆照片的文案描述",
+  "归还车辆": "归还车辆",
+  "激活车辆": "Activate Vehicle",
+  "还车成功": "还车成功",
+  "还车": "还车",
+  "请上传车辆照片": "请上传车辆照片",
+  "未获取到门店位置!": "未获取到门店位置!",
+  "这里会接收到子组件传来的更新后的图片": "这里会接收到子组件传来的更新后的图片",
+  "数组": "数组",
+  "车辆激活成功": "车辆激活成功",
+  "活动中心": "活动中心",
+  "暂无可参与的活动": "暂无可参与的活动",
+  "添加成员": "Add Member",
+  "请输入被邀人邮箱号": "Please Enter Invite Account",
+  "下一步": "Next",
+  "该用户不存在!": "该用户不存在!",
+  "免费": "免费",
+  "次": "次",
+  "车辆换电": "车辆换电",
+  "响铃找车": "响铃找车",
+  "开座桶锁": "开座桶锁",
+  "关闭头盔锁": "关闭头盔锁",
+  "解锁": "解锁",
+  "上锁": "上锁",
+  "行驶轨迹": "行驶轨迹",
+  "车辆位置": "车辆位置",
+  "拖车服务": "拖车服务",
+  "关闭车辆": "关闭车辆",
+  "启动车辆": "启动车辆",
+  "我要还车": "我要还车",
+  "剩余租期": "剩余租期",
+  "查看订单": "查看订单",
+  "日": "日",
+  "小时": "h",
+  "分": "m",
+  "到期后将无法用车": "到期后将无法用车",
+  "已到期": "已到期",
+  "续租": "Renew",
+  "还车到门店": "还车到门店",
+  "系统会根据您的定位判断您是否已到还车位置,如您已经到达门店,请点击「我已到店」按钮,待门店确认还车后,即可还车成功。": "系统会根据您的定位判断您是否已到还车位置,如您已经到达门店,请点击「我已到店」按钮,待门店确认还车后,即可还车成功。",
+  "我已到店": "我已到店",
+  "附近可还门店": "附近可还门店",
+  "选择续租方案": "选择续租方案",
+  "时租": "时租",
+  "日租": "Daily",
+  "周租": "周租",
+  "租车时长": "Rent Duration",
+  "天": "Day",
+  "优惠券": "优惠券",
+  "折": "折",
+  "骑行保障服务": "骑行保障服务",
+  "保障须知": "保障须知",
+  "含行程延误保障": "含行程延误保障",
+  "元": "元",
+  "商家赠送": "商家赠送",
+  "配套服务": "配套服务",
+  "头盔": "头盔",
+  "手机支架": "手机支架",
+  "已阅读并同意": "Read and Agree",
+  "《小众电动车租赁用户协议》": "《小众电动车租赁用户协议》",
+  "明细": "明细",
+  "支付": "支付",
+  "授权免押": "授权免押",
+  "暂无车辆": "暂无车辆",
+  "是否返回首页": "是否返回首页",
+  "车辆状态(是否上锁)": "车辆状态(是否上锁)",
+  "初始状态": "初始状态",
+  "如果是激活页面过来的。后端接口第一时间无法获取数据。需要再延迟获取一次": "如果是激活页面过来的。后端接口第一时间无法获取数据。需要再延迟获取一次",
+  "首页": "首页",
+  "查询车辆关键参数": "查询车辆关键参数",
+  "获取地址失败,请授权重新打开": "获取地址失败,请授权重新打开",
+  "获取当前时间": "获取当前时间",
+  "默认返回首页再提示报错": "默认返回首页再提示报错",
+  "您确定开启响铃找车?": "您确定开启响铃找车?",
+  "车辆已开始鸣笛": "车辆已开始鸣笛",
+  "您确定打开座桶锁?": "您确定打开座桶锁?",
+  "打开座桶": "Open Seat Box",
+  "滑动开机": "Slide Turn On",
+  "开机中":"Powering On",
+  "关机中":"Powering Off",
+  "滑动关机":"Slide Turn Off",
+  "座桶锁已打开": "座桶锁已打开",
+  "您确定给车辆上锁?": "您确定给车辆上锁?",
+  "正在上锁": "正在上锁",
+  "已上锁": "已上锁",
+  "您确定给车辆解锁?": "您确定给车辆解锁?",
+  "正在解锁": "正在解锁",
+  "已解锁": "已解锁",
+  "取消": "取消",
+  "确定": "Confirm",
+  "已取消": "Cancelled",
+  "其他都需要带车牌号": "其他都需要带车牌号",
+  "锁车": "锁车",
+  "启动": "启动",
+  "车辆提示": "车辆提示",
+  "确认关闭车辆": "确认关闭车辆",
+  "确认需要启动车辆": "确认需要启动车辆",
+  "开启": "开启",
+  "关闭": "关闭",
+  "正在关闭车辆": "正在关闭车辆",
+  "正在启动车辆": "正在启动车辆",
+  "车辆已关闭": "车辆已关闭",
+  "车辆已启动": "车辆已启动",
+  "操作超时": "操作超时",
+  "电池信息": "电池信息",
+  "电池": "Battery",
+  "剩余电量": "Battery Left",
+  "电压": "Voltage",
+  "温度": "Temp",
+  "换电套餐": "Battery Swap Plan",
+  "适用类型":"Model",
+  "5秒换电,瞬间满电,畅享骑行新体验!": "5s Swap, Full Power, Ride with Ease!",
+  "适用电池:": "适用电池:",
+  "当前购买为虚拟": "当前购买为虚拟",
+  "卡": "卡",
+  "如想要体验实体": "如想要体验实体",
+  "卡功能,前往最近的门店领取": "卡功能,前往最近的门店领取",
+  "立即购买": "立即购买",
+  "请先绑定车辆!": "请先绑定车辆!",
+  "提交中": "提交中",
+  "换电记录": "Swap History",
+  "开始换电": "开始换电",
+  "换电中": "换电中",
+  "换电成功": "Swap Success",
+  "换电失败": "Swap Failed",
+  "未知": "Unknown",
+  "换电单号": "换电单号",
+  "归还电池": "归还电池",
+  "借出电池": "借出电池",
+  "换电类型": "Swap Type",
+  "机柜换电": "机柜换电",
+  "门店换电": "门店换电",
+  "电柜名称": "电柜名称",
+  "开启感应解锁": "开启感应解锁",
+  "是否配对改设备": "是否配对改设备",
+  "配对": "配对",
+  "点击下方": "点击下方",
+  "开始配对": "开始配对",
+  "请在系统弹窗中选择": "请在系统弹窗中选择",
+  "以完成功能开启。": "以完成功能开启。",
+  "提示信息": "提示信息",
+  "使用感应解锁功能时,请务必保证手机蓝牙功能开启,在蓝牙列表中忽略此设备会导致感应解锁失败": "使用感应解锁功能时,请务必保证手机蓝牙功能开启,在蓝牙列表中忽略此设备会导致感应解锁失败",
+  "测试指令!!!别删除": "测试指令!!!别删除",
+  "关闭靠近解锁": "关闭靠近解锁",
+  "跳转解绑配对": "跳转解绑配对",
+  "靠近解锁": "靠近解锁",
+  "升级": "升级",
+  "感应解锁已开启": "感应解锁已开启",
+  "注意:请勿在手机蓝牙中忽略“电动车蓝牙": "注意:请勿在手机蓝牙中忽略“电动车蓝牙",
+  "设备,否则感应解锁功能将无法使用": "设备,否则感应解锁功能将无法使用",
+  "机柜信息传输完成": "机柜信息传输完成",
+  "初始化": "初始化",
+  "连接蓝牙": "连接蓝牙",
+  "下发配对指令": "下发配对指令",
+  "会断开连接": "会断开连接",
+  "直接再次连接": "直接再次连接",
+  "记得不要提示可以蓝牙断开连接": "记得不要提示可以蓝牙断开连接",
+  "点击配对": "点击配对",
+  "调用配对": "调用配对",
+  "确认配对": "确认配对",
+  "断开蓝牙": "断开蓝牙",
+  "不走逻辑": "不走逻辑",
+  "蓝牙未启用": "蓝牙未启用",
+  "请先打开蓝牙": "请先打开蓝牙",
+  "开始升级": "开始升级",
+  "结束?????": "结束?????",
+  "蓝牙未连接": "蓝牙未连接",
+  "蓝牙连接断开": "蓝牙连接断开",
+  "提示": "提示",
+  "重新连接": "Re-connect",
+  "蓝牙连接中断,是否重新连接?": "蓝牙连接中断,是否重新连接?",
+  "蓝牙连接成功": "蓝牙连接成功",
+  "电动车蓝牙": "电动车蓝牙",
+  "蓝牙配对请求": "蓝牙配对请求",
+  "想与您配对,请确保显示的配对密钥为": "想与您配对,请确保显示的配对密钥为",
+  "关闭蓝牙连接": "关闭蓝牙连接",
+  "切换正常工厂模式": "切换正常工厂模式",
+  "切换工厂模式以后蓝牙断开": "切换工厂模式以后蓝牙断开",
+  "重新连接蓝牙": "重新连接蓝牙",
+  "接近解锁下发成功": "接近解锁下发成功",
+  "下发打开接近解锁指令": "下发打开接近解锁指令",
+  "获取接近解锁下发成功": "获取接近解锁下发成功",
+  "是否是蓝牙类型列表里面的": "是否是蓝牙类型列表里面的",
+  "打开蓝牙连接": "打开蓝牙连接",
+  "监听蓝牙设备连接状态变化事件": "监听蓝牙设备连接状态变化事件",
+  "观察周围是否有其他骑手连接,请等待对方完成": "观察周围是否有其他骑手连接,请等待对方完成",
+  "或": "或",
+  "微信是否开启了蓝牙权限": "微信是否开启了蓝牙权限",
+  "微信是否开启了蓝牙权限!!": "微信是否开启了蓝牙权限!!",
+  "连接失败,请尝试重新连接": "连接失败,请尝试重新连接",
+  "蓝牙未打开或请在右上角设置授权小程序使用蓝牙": "蓝牙未打开或请在右上角设置授权小程序使用蓝牙",
+  "我知道了": "我知道了",
+  "蓝牙连接未成功": "蓝牙连接未成功",
+  "当前机柜未找到符合的蓝牙类型": "当前机柜未找到符合的蓝牙类型",
+  "开启感应解锁后,携带手机靠近车辆并按": "开启感应解锁后,携带手机靠近车辆并按",
+  "键即可开机": "键即可开机",
+  "按键解锁": "按键解锁",
+  "手机接近车辆后,长按": "手机接近车辆后,长按",
+  "键即可解锁": "键即可解锁",
+  "灵敏度设置": "灵敏度设置",
+  "关闭感应解锁": "关闭感应解锁",
+  "距离建议适中,设置过近会降低成功率,设置过远可能会有风险": "距离建议适中,设置过近会降低成功率,设置过远可能会有风险",
+  "最近": "最近",
+  "适中": "适中",
+  "最远": "最远",
+  "左": "左",
+  "设置灵敏度指令成功": "设置灵敏度指令成功",
+  "关闭接近解锁成功": "关闭接近解锁成功",
+  "无可用电池": "无可用电池",
+  "营业中": "Open",
+  "已休息": "Resting",
+  "直线距您": "Away",
+  "千米": "km",
+  "米": "m",
+  "导航": "Nav",
+  "格口详情": "Box Detail",
+  "电柜编号:": "Cabinet ID",
+  "已预约": "已预约",
+  "没有预约": "没有预约",
+  "空仓或者仓门不可用": "空仓或者仓门不可用",
+  "空仓": "Empity",
+  "满电或者电量未满": "满电或者电量未满",
+  "电池可用": "Available",
+  "待充满": "待充满",
+  "电池列表": "电池列表",
+  "存储蓝牙状态": "存储蓝牙状态",
+  "机柜详情": "机柜详情",
+  "离线": "Offline",
+  "在线": "Online",
+  "钱包余额": "钱包余额",
+  "扫码机柜": "扫码机柜",
+  "车牌号": "车牌号",
+  "可用电池数": "可用电池数",
+  "蓝牙信息": "蓝牙信息",
+  "蓝牙换电需要的数据": "蓝牙换电需要的数据",
+  "如果本地有存储的定位信息,则直接使用": "如果本地有存储的定位信息,则直接使用",
+  "领取电池成功": "领取电池成功",
+  "获取机柜信息": "获取机柜信息",
+  "计算可用电池数": "计算可用电池数",
+  "导航去机柜": "导航去机柜",
+  "设备数据": "设备数据",
+  "将传入的时间转换为分钟": "将传入的时间转换为分钟",
+  "判断当前时间是否在指定范围内": "判断当前时间是否在指定范围内",
+  "仓体": "仓体",
+  "月租": "Monthly",
+  "年租": "Yearly",
+  "分租": "分租",
+  "季租": "季租",
+  "购买": "Buy",
+  "免费换电次数": "免费换电次数",
+  "日租享": "日租享",
+  "次免费换电数,超出后需要单独支付换电费用;": "次免费换电数,超出后需要单独支付换电费用;",
+  "我要用车": "我要用车",
+  "获取直线距离": "获取直线距离",
+  "您是否要拨打电话": "您是否要拨打电话",
+  "更多功能": "More Features",
+  "固定导航栏": "固定导航栏",
+  "其他功能": "其他功能",
+  "长按拖动可调整顺序,可增减固定导航栏内容": "长按拖动可调整顺序,可增减固定导航栏内容",
+  "解除绑定": "解除绑定",
+  "开机": " Slide Turn On",
+  "开启车辆": "开启车辆",
+  "关机": "关机",
+  "您确认": "您确认",
+  "吗": "吗",
+  "处理修改之后的数据": "处理修改之后的数据",
+  "输入注册账号的密码即可解绑": "输入注册账号的密码即可解绑",
+  "请输入密码": "Password",
+  "解绑后,您将失去当前设备的控制权,其他人可以连接绑定您的设备。": "解绑后,您将失去当前设备的控制权,其他人可以连接绑定您的设备。",
+  "解绑后将立即删除家庭账号,感应解锁等数据。": "解绑后将立即删除家庭账号,感应解锁等数据。",
+  "完成并解绑": "完成并解绑",
+  "是否确定解除绑定": "是否确定解除绑定",
+  "返回首页": "返回首页",
+  "解绑成功!": "解绑成功!",
+  "请选择设备": "Select Device",
+  "当前选择": "当前选择",
+  "租赁设备": "Leased Device",
+  "绑定设备": "Bind Device",
+  "是否确定": "是否确定",
+  "清空当前设备蓝牙相关": "清空当前设备蓝牙相关",
+  "切换成功!": "切换成功!",
+  "由于": "由于",
+  "一些样式及点击事件不支持": "一些样式及点击事件不支持",
+  "气泡内容": "气泡内容",
+  "已驻车": "已驻车",
+  "分钟": "分钟",
+  "更新于": "更新于",
+  "闪灯鸣笛": "闪灯鸣笛",
+  "使用": "使用",
+  "点击事件": "点击事件",
+  "需要填写": "需要填写",
+  "标记点": "标记点",
+  "定时器变量,用于清除定时器": "定时器变量,用于清除定时器",
+  "未知时间": "未知时间",
+  "五秒后重新调用加载车辆位置信息的方法": "五秒后重新调用加载车辆位置信息的方法",
+  "监听页面卸载": "监听页面卸载",
+  "页面卸载时清除定时器": "页面卸载时清除定时器",
+  "确保定时器引用被清除": "确保定时器引用被清除",
+  "默认返回上一个页面再提示报错": "默认返回上一个页面再提示报错",
+  "您确认开启闪灯鸣笛吗": "您确认开启闪灯鸣笛吗",
+  "本人已知晓上述内容": "本人已知晓上述内容",
+  "阅读合同倒计时": "阅读合同倒计时",
+  "秒": "秒",
+  "签名": "签名",
+  "重新签名": "重新签名",
+  "上报小程序账号信息": "上报小程序账号信息",
+  "您当前没有手写签名,是否要进行填写": "您当前没有手写签名,是否要进行填写",
+  "续航": "Range",
+  "骑行里程": "Ride Distance",
+  "骑行时长": "Ride Time",
+  "最大速度": "Max Speed",
+  "平均速度": "Avg Speed",
+  "车架号": "VIN",
+  "设备编号": "Device No.",
+  "车辆总里程": "Total Mileage",
+  "固件详情":"Hardware Firmware",
+  "中控硬件": "Control Hardware",
+  "中控软件": "Control Software",
+  "意见反馈": "Feedback",
+  "问题类型": "Problem Type",
+  "问题描述": "Problem Description",
+  "请详细说明,以便我们解决问题,最多可填写": "请详细说明,以便我们解决问题,最多可填写",
+  "字。": "字。",
+  "问题图片": "问题图片",
+  "提交": "提交",
+  "常用功能":"Common Features",
+  "车辆": "Vehicle",
+  "电柜": "电柜",
+  "应用操作": "应用操作",
+  "其他": "其他",
+  "最多输入": "最多输入",
+  "字": "字",
+  "提交成功": "提交成功",
+  "为保证": "为保证",
+  "感应解锁": "Sensor Unlock",
+  "闪电鸣笛": "Horn Boost",
+  "打开尾箱锁":"",
+  "请先链接蓝牙":"Connect Bluetooth First",
+  "的正常使用,请依次开以下权限,开启后可以显著提高解锁成功率,且不会明显增加手机电量消耗": "的正常使用,请依次开以下权限,开启后可以显著提高解锁成功率,且不会明显增加手机电量消耗",
+  "授权引导": "授权引导",
+  "已开启": "已开启",
+  "未开启": "未开启",
+  "我已开启": "我已开启",
+  "引入": "引入",
+  "是否打开所有需要权限": "是否打开所有需要权限",
+  "位置权限": "位置权限",
+  "打开手机定位,并运行": "打开手机定位,并运行",
+  "始终使用": "始终使用",
+  "电池优化": "电池优化",
+  "打开电池优化设置,": "打开电池优化设置,",
+  "将弗兰克": "将弗兰克",
+  "加入保护名单": "加入保护名单",
+  "后台运行": "后台运行",
+  "打开后台运行权限": "打开后台运行权限",
+  "清选择手动控制": "清选择手动控制",
+  "打开应用锁": "打开应用锁",
+  "打开应用权限锁": "打开应用权限锁",
+  "的": "的",
+  "里编写如下代码": "里编写如下代码",
+  "已授权": "已授权",
+  "已获得授权": "已获得授权",
+  "未获得授权": "未获得授权",
+  "被永久拒绝权限": "被永久拒绝权限",
+  "确定打开": "确定打开",
+  "胎压": "胎压",
+  "选择的车辆控制": "选择的车辆控制",
+  "组件的方法列表": "组件的方法列表",
+  "判断车辆是否在线状态": "判断车辆是否在线状态",
+  "在线调用接口": "在线调用接口",
+  "不在线提示连接蓝牙": "不在线提示连接蓝牙",
+  "成功": "成功",
+  "蓝牙是否已经连接": "蓝牙是否已经连接",
+  "未连接提示去连接": "未连接提示去连接",
+  "已连接下发对应指令": "已连接下发对应指令",
+  "操作成功": "操作成功",
+  "发送": "发送",
+  "指令结束": "指令结束",
+  "当前车辆处于离线,是否前往开启蓝牙配对操作车辆?": "当前车辆处于离线,是否前往开启蓝牙配对操作车辆?",
+  "前往配置更多功能": "前往配置更多功能",
+  "请先开启位置授权": "请先开启位置授权",
+  "的正常使用,请": "的正常使用,请",
+  "开启位置授权": "开启位置授权",
+  "并": "并",
+  "打开精准位置": "打开精准位置",
+  "开关,可提高解锁成功率,且不会明显增加手机电量消耗。": "开关,可提高解锁成功率,且不会明显增加手机电量消耗。",
+  "打开手机定位,并允许": "打开手机定位,并允许",
+  "「始终」": "「始终」",
+  "第": "第",
+  "步": "步",
+  "始终": "始终",
+  "开启请准位置开关": "开启请准位置开关",
+  "精准位置": "精准位置",
+  "组件的属性列表": "组件的属性列表",
+  "续航开新路": "续航开新路",
+  "路遥见实力": "路遥见实力",
+  "全速续航": "全速续航",
+  "极速可达": "极速可达",
+  "了解更多": "了解更多",
+  "全新车型,即将发布!": "全新车型,即将发布!",
+  "更智能、更高效,全新车型即将亮相,敬请期待!": "更智能、更高效,全新车型即将亮相,敬请期待!",
+  "租赁设备编号": "租赁设备编号",
+  "子组件": "子组件",
+  "更新": "更新",
+  "您已逾期": "Activate Vehicle",
+  "请及时续费或归还车辆": ". Please extend rental or return the vehicle at the designated store",
+  "去续费": "去续费",
+  "车辆已开机": "车辆已开机",
+  "车辆已关机": "车辆已关机",
+  "最近骑行": "Recent Rides",
+  "总里程": "总里程",
+  "蓝牙配对成功": "蓝牙配对成功",
+  "请先连接蓝牙": "请先连接蓝牙",
+  "用车人管理": "用车人管理",
+  "个家庭账号": "个家庭账号",
+  "设备信息": "Device Info",
+  "软件版本": "Current Version",
+  "用户车辆列表": "用户车辆列表",
+  "当前车辆编号": "当前车辆编号",
+  "手机型号": "手机型号",
+  "是否打开权限弹窗": "是否打开权限弹窗",
+  "当前是否蓝牙连接或者配对": "当前是否蓝牙连接或者配对",
+  "所有蓝牙配对所需权限是否已开启": "所有蓝牙配对所需权限是否已开启",
+  "分享给好友": "分享给好友",
+  "发送给朋友": "发送给朋友",
+  "蓝牙配对所需权限": "蓝牙配对所需权限",
+  "运行小程序需要隐藏": "运行小程序需要隐藏",
+  "所需权限开启成功": "所需权限开启成功",
+  "前往开启蓝牙配对": "前往开启蓝牙配对",
+  "身份认证提示": "身份认证提示",
+  "尚未完成身份认证,是否进行身份认证": "尚未完成身份认证,是否进行身份认证",
+  "您还未登录,请先登录": "您还未登录,请先登录",
+  "判断逾期": "判断逾期",
+  "如果租": "如果租",
+  "购多个车辆的话可以切换当前车辆": "购多个车辆的话可以切换当前车辆",
+  "判断距离是否超过": "判断距离是否超过",
+  "如果超过": "如果超过",
+  "米,则转换为千米并返回": "米,则转换为千米并返回",
+  "否则直接返回米": "否则直接返回米",
+  "是否是小众租车": "是否是小众租车",
+  "欢迎来到": "欢迎来到",
+  "手机号快捷登录": "手机号快捷登录",
+  "其他手机号登录": "其他手机号登录",
+  "电动车租赁用户协议": "电动车租赁用户协议",
+  "和": "和",
+  "申请获取并验证你的手机号": "申请获取并验证你的手机号",
+  "快捷登录": "快捷登录",
+  "上次提供": "上次提供",
+  "不允许": "不允许",
+  "使用其他号码": "使用其他号码",
+  "初始化未授权": "初始化未授权",
+  "请查阅隐私和协议": "请查阅隐私和协议",
+  "一键授权失败": "一键授权失败",
+  "请使用手机号登录": "请使用手机号登录",
+  "登录成功": "登录成功",
+  "修改密码": "Change Password",
+  "请输入旧密码": "Enter Old Password",
+  "请输入新密码": "Enter New Password",
+  "请再次输入新密码": "Please confirm the new password",
+  "确认修改": "Confirm",
+  "是否确认修改密码?": "是否确认修改密码?",
+  "修改成功": "修改成功",
+  "忘记密码": "Forgot Password",
+  "请输入要重置的邮箱账号": "Enter the Email Address to Reset Password",
+  "重置密码": "重置密码",
+  "重置密码邮件已发送": "重置密码邮件已发送",
+  "去登录": "去登录",
+  "我们向": "We have sent a password reset email to your address",
+  "发送了一封密码重置邮件,请您登录邮箱操作处理。": "Please check your inbox to reset your password.",
+  "请输入有效的邮箱地址": "请输入有效的邮箱地址",
+  "欢迎来到智寻出行": "欢迎来到智寻出行",
+  "邮箱密码登录": "邮箱密码登录",
+  "请输入邮箱账号": "Email",
+  "用户协议": "用户协议",
+  "隐私政策": "隐私政策",
+  "登录": "登录",
+  "没有账号": "没有账号",
+  "立即注册": "立即注册",
+  "其他方式登录": "其他方式登录",
+  "请勾选用户协议和隐私政策": "请勾选用户协议和隐私政策",
+  "账号注册": "账号注册",
+  "请再次输入密码": "Again Password",
+  "注册邮件已发送": "注册邮件已发送",
+  "我们已向": "我们已向",
+  "发送注册邮件,请您登录邮箱点击链接完成注册。": "An activation link has been sent to your email. Click the link to complete registration。",
+  "请输入": "请输入",
+  "位密码,包含字母数字": "位密码,包含字母数字",
+  "两次输入的密码不一致": "两次输入的密码不一致",
+  "注册邮件发送成功": "注册邮件发送成功",
+  "请输入车牌号全称": "请输入车牌号全称",
+  "请输入车牌号": "请输入车牌号",
+  "确认": "确认",
+  "请先输入车牌号": "请先输入车牌号",
+  "温馨提示:各省市因地制宜,制定相关的牌照格式,请按照实际车辆牌照的格式进行填写~": "温馨提示:各省市因地制宜,制定相关的牌照格式,请按照实际车辆牌照的格式进行填写~",
+  "参考格式": "参考格式",
+  "北京": "北京",
+  "未获取到经纬度": "未获取到经纬度",
+  "判断原因是否为微信小程序内部没有授权定位": "判断原因是否为微信小程序内部没有授权定位",
+  "无法获取位置信息,请检查您的微信定位权限设置": "无法获取位置信息,请检查您的微信定位权限设置",
+  "您的手机未授权微信定位权限,请前往手机设置开启权限": "您的手机未授权微信定位权限,请前往手机设置开启权限",
+  "获取当前时间戳(毫秒)": "获取当前时间戳(毫秒)",
+  "此车辆已离线,请选择其他车辆": "此车辆已离线,请选择其他车辆",
+  "车辆正在被使用": "车辆正在被使用",
+  "是本人在使用": "是本人在使用",
+  "已有正在使用的车辆,是否跳转至车辆详情页": "已有正在使用的车辆,是否跳转至车辆详情页",
+  "此车辆正在被使用": "此车辆正在被使用",
+  "预租车型与之前预约车型不一致": "预租车型与之前预约车型不一致",
+  "与预约车型不符": "与预约车型不符",
+  "轴偏移量": "轴偏移量",
+  "点击显示": "点击显示",
+  "常显": "常显",
+  "今天": "Today",
+  "车辆推动报警": "Movement Alert",
+  "车辆正在被人推送,请及时查看": "Vehicle is being moved, please check promptly",
+  "我的消息": "My Messages",
+  "设备消息": "Device Messages",
+  "系统消息": "System Messages",
+  "行驶里程": "Distance",
+  "功率": "Power",
+  "减少碳排放": "减少碳排放",
+  "骑行次数": "骑行次数",
+  "累计功率": "累计功率",
+  "减少排放量": "减少排放量",
+  "总": "total",
+  "年": "year",
+  "月": "month",
+  "周": "week",
+  "请输入绑定的新手机号": "请输入绑定的新手机号",
+  "请输入验证码": "请输入验证码",
+  "秒后再次获取": "秒后再次获取",
+  "获取验证码": "获取验证码",
+  "绑定新手机号": "绑定新手机号",
+  "请输入手机号码": "请输入手机号码",
+  "请检测您的手机号码是否正确": "请检测您的手机号码是否正确",
+  "仪表盘": "Dashboard",
+  "请点击登录": "Please click to log in",
+  "我的车辆": "My Vehicle",
+  "用车人": "Vehicle User",
+  "温馨提示": "Friendly Reminder",
+  "您还未购买换电套餐,是否前往进行换电套餐?": "You have not purchased a battery swap plan yet. Would you like to proceed with purchasing one?",
+  "前往购买": "Go to",
+  "客服中心": "客服中心",
+  "设置": "Settings",
+  "换电":"Battery Swap",
+  "您还未购买车辆,购买车辆才可享受换电套餐": "您还未购买车辆,购买车辆才可享受换电套餐",
+  "您还未绑定车辆!": "您还未绑定车辆!",
+  "未获取到手机号码": "未获取到手机号码",
+  "退出登录": "Logout",
+  "昵称": "NickName",
+  "注册时间": "Register Time",
+  "隐私协议": "Policy",
+  "用户条款": "User Terms",
+  "输入处理": "Input Processing",
+  "延迟处理输入法组合输入": "延迟处理输入法组合输入",
+  "更新值(避免无限触发,需判断)": "更新值(避免无限触发,需判断)",
+  "截断字符串至指定字节": "截断字符串至指定字节",
+  "判断字符是否为双字节(如中文)": "判断字符是否为双字节(如中文)",
+  "您确定要退出当前账号吗?": "您确定要退出当前账号吗?",
+  "号仓门已打开": "Door Open",
+  "请存入更换电池": "请存入更换电池",
+  "取走满电电池": "取走满电电池",
+  "并关好仓门": "并关好仓门",
+  "请": "please",
+  "归还": "return",
+  "取出": "take",
+  "电池并关上仓门": "电池并关上仓门",
+  "请取出电池并关上仓门": "请取出电池并关上仓门",
+  "归还完成后电柜会自动打开可租仓门": "Cabinet Opens Automatically After Return",
+  "自动为您匹配最高电量电池": "自动为您匹配最高电量电池",
+  "即将跳转至首页,祝您骑行愉快": "即将跳转至首页,祝您骑行愉快",
+  "回到首页": "Back to Home",
+  "联系门店": "联系门店",
+  "仅为示例": "仅为示例",
+  "待支付": "待支付",
+  "待取车": "待取车",
+  "待激活": "待激活",
+  "使用中": "In Use",
+  "已逾期": "Activate Vehicle",
+  "还车申请中": "还车申请中",
+  "还车中": "还车中",
+  "车辆已归还": "车辆已归还",
+  "订单已支付": "订单已支付",
+  "订单未支付": "订单未支付",
+  "已完结": "Finished",
+  "支付中": "Paying",
+  "支付成功": "支付成功",
+  "支付失败": "支付失败",
+  "支付取消": "支付取消",
+  "线下待审核": "线下待审核",
+  "线下审核拒绝": "线下审核拒绝",
+  "下单时间": "OrderTime",
+  "有效期至": "Valid Until",
+  "有效时长": "有效时长",
+  "免费换电数": "免费换电数",
+  "订单类型": "订单类型",
+  "购车": "购车",
+  "租车": "Rent",
+  "申请中": "申请中",
+  "审核失败": "审核失败",
+  "退款失败": "退款失败",
+  "已退款": "Refunded ",
+  "套餐金额": "套餐金额",
+  "订单金额": "Order Amount",
+  "租车购车": "租车购车",
+  "请于": "PickUp your vehicle by ",
+  "到门店取车": "到门店取车",
+  "请上传车辆图片激活车辆": "请上传车辆图片激活车辆",
+  "待门店确认": "Pending Store Confirmation",
+  "等待门店取车": "等待门店取车",
+  "已完成": "Completed",
+  "租期剩余": "租期剩余",
+  "逾期时长": "逾期时长",
+  "租借周期": "租借周期",
+  "逾期金额": "逾期金额",
+  "收起": "收起",
+  "展开": "展开",
+  "租借周期:购买": "租借周期:购买",
+  "订单信息": "订单信息",
+  "订单编号": "Order No.",
+  "支付时间": "Payment Time",
+  "支付方式": "Payment Method",
+  "微信支付": "微信支付",
+  "线下支付": "Offline Pay",
+  "支付宝支付": "支付宝支付",
+  "钱包余额支付": "钱包余额支付",
+  "租车金额": "租车金额",
+  "租车押金": "租车押金",
+  "订单结束后随时退": "订单结束后随时退",
+  "自行去门店取还": "自行去门店取还",
+  "未知地址": "未知地址",
+  "重量": "Weight",
+  "换电信息": "换电信息",
+  "共": "Total",
+  "本单可享": "本单可享",
+  "次免费换电数,超出后需单独支付": "次免费换电数,超出后需单独支付",
+  "自费换电": "自费换电",
+  "本单您可享受": "本单您可享受",
+  "次免费换电,": "次免费换电,",
+  "当前免费换电剩余": "当前免费换电剩余",
+  "次,超出后需要单独支付换电费用": "次,超出后需要单独支付换电费用",
+  "取还时间": "取还时间",
+  "逾期规则": "Late Policy",
+  "逾期后还可用车吗": "逾期后还可用车吗",
+  "如果逾期将触发智能锁车逻辑,可能导致您无法正常用车,请及时续费或联系商家处理。": "如果逾期将触发智能锁车逻辑,可能导致您无法正常用车,请及时续费或联系商家处理。",
+  "逾期费计算标准是什么": "逾期费计算标准是什么",
+  "小时租逾期费": "小时租逾期费",
+  "每小时费用": "每小时费用",
+  "逾期小时;当日还": "逾期小时;当日还",
+  "季租逾期费": "季租逾期费",
+  "每天费用": "每天费用",
+  "逾期天数;如果不满": "逾期天数;如果不满",
+  "小时按": "小时按",
+  "小时算,不满": "小时算,不满",
+  "天按": "天按",
+  "天算,最终收取的逾期费以门店确认的费用为准": "天算,最终收取的逾期费以门店确认的费用为准",
+  "逾期后续租如何收费": "逾期后续租如何收费",
+  "逾期后及时续租不收取逾期费,逾期时长将从续租订单的用车时间中抵扣": "逾期后及时续租不收取逾期费,逾期时长将从续租订单的用车时间中抵扣",
+  "结束订单": "结束订单",
+  "扫码绑定": "扫码绑定",
+  "去上传": "去上传",
+  "到店还车": "到店还车",
+  "选择取消原因": "Select Cancel Reason",
+  "行程变更无需用车": "Plan Changed, No Car Needed",
+  "修改订单信息": "Update Order Info",
+  "不想要了": "No Longer Needed",
+  "确认取消": "确认取消",
+  "车辆价格": "车辆价格",
+  "逾期支付金额": "逾期支付金额",
+  "逾期费用计算": "逾期费用计算",
+  "车型不匹配!": "车型不匹配!",
+  "车辆未展示!": "车辆未展示!",
+  "请扫描正确的二维码!": "请扫描正确的二维码!",
+  "识别中": "识别中",
+  "季": "季",
+  "取还时间展示": "取还时间展示",
+  "剩余租期判断": "剩余租期判断",
+  "判断逾期状态": "判断逾期状态",
+  "如果逾期要交逾期费用": "如果逾期要交逾期费用",
+  "跳转到上传车辆图片再支付逾期费用还车": "跳转到上传车辆图片再支付逾期费用还车",
+  "提交还车图片": "提交还车图片",
+  "取消订单": "Cancel Order",
+  "您是否需要取消该订单": "您是否需要取消该订单",
+  "是": "是",
+  "否": "否",
+  "预约": "预约",
+  "非预约": "非预约",
+  "支付失败,请重试": "支付失败,请重试",
+  "保险金": "保险金",
+  "租金": "Rental Fee",
+  "保险": "保险",
+  "有保险的时候": "有保险的时候",
+  "为免押": "为免押",
+  "为总金额": "为总金额",
+  "押金": "Deposit",
+  "时": "时",
+  "无保险": "无保险",
+  "金额": "金额",
+  "周期数": "周期数",
+  "周期价格": "周期价格",
+  "跳转换电记录": "跳转换电记录",
+  "我的套餐": "我的套餐",
+  "适用电池": "适用电池",
+  "车辆编号": "车辆编号",
+  "小米": "小米",
+  "卡号": "IC No",
+  "生效中": "Active",
+  "待生效": "Pending",
+  "已结束": "已结束",
+  "前往购买套餐": "Go to Purchase Plan",
+  "返回上一页": "返回上一页",
+  "请输入手机号": "请输入手机号",
+  "重新获取": "重新获取",
+  "计算属性用于判断是否可以登录": "计算属性用于判断是否可以登录",
+  "权限设置": "Permission Settings",
+  "查看实时位置": "View Location",
+  "使用换电": "Use Battery Swap",
+  "默认设置": "Default Settings",
+  "远程开关锁": "Remote Lock/Unlock",
+  "座桶锁": "座桶锁",
+  "确认添加": "Confirm",
+  "删除成员": "删除成员",
+  "确定删除这个成员吗?": "确定删除这个成员吗?",
+  "删除中": "",
+  "添加成功!": "添加成功!",
+  "确认订单": "Confirm Order",
+  "选择取车时间": "选择取车时间",
+  "共计": "共计",
+  "车辆押金": "车辆押金",
+  "需要支付": "需要支付",
+  "元押金,诺无车损、违章及逾期,还车后可退": "元押金,诺无车损、违章及逾期,还车后可退",
+  "前往门店取还": "前往门店取还",
+  "门店距您": "门店距您",
+  "确认下单": "确认下单",
+  "价格明细": "价格明细",
+  "车辆租金": "车辆租金",
+  "支付金额": "支付金额",
+  "导航到店": "导航到店",
+  "租车订单已提交": "租车订单已提交",
+  "到": "到",
+  "取车": "取车",
+  "订单详情": "订单详情",
+  "选择预约订单时间": "选择预约订单时间",
+  "单价": "单价",
+  "租赁订单号": "租赁订单号",
+  "结算总金额": "结算总金额",
+  "拍照车牌号": "拍照车牌号",
+  "拍照时请留意照片的清晰度,便于系统提取车牌号": "拍照时请留意照片的清晰度,便于系统提取车牌号",
+  "重拍": "重拍",
+  "使用照片": "使用照片",
+  "手动输入车牌号": "手动输入车牌号",
+  "开了定位权限": "开了定位权限",
+  "休闲鞋": "休闲鞋",
+  "数据加载中,请稍等": "数据加载中,请稍等",
+  "无法获取位置信息,请检查您的定位权限设置": "无法获取位置信息,请检查您的定位权限设置",
+  "您的手机未授权定位权限,请前往手机设置开启权限": "您的手机未授权定位权限,请前往手机设置开启权限",
+  "车牌": "车牌",
+  "读取图片数据": "读取图片数据",
+  "款车型": "款车型",
+  "城市代码": "城市代码",
+  "我的位置": "我的位置",
+  "取车时间": "PickupTime",
+  "还车时间": "Return Time",
+  "租借时长": "RentalDuration",
+  "租借时长单位": "租借时长单位",
+  "经度": "经度",
+  "纬度": "纬度",
+  "周期单位": "周期单位",
+  "选中城市": "选中城市",
+  "是否为当前城市": "是否为当前城市",
+  "还车方式": "还车方式",
+  "是否免押": "是否免押",
+  "租": "Rent",
+  "位置是否改变": "位置是否改变",
+  "加上距离数量门店数据": "加上距离数量门店数据",
+  "判断当前是否有租赁周期类型": "判断当前是否有租赁周期类型",
+  "车辆类型": "车辆类型",
+  "租借类型": "租借类型",
+  "地图控件": "地图控件",
+  "请输入搜索内容": "请输入搜索内容",
+  "清空": "清空",
+  "搜索": "搜索",
+  "门店": "Pickup Store",
+  "换电柜": "Swap Cabinet",
+  "筛选": "筛选",
+  "上下文": "上下文",
+  "是否处于搜索状态": "是否处于搜索状态",
+  "点击图标跳转": "点击图标跳转",
+  "骑行": "骑行",
+  "附近门店列表": "附近门店列表",
+  "附近机柜列表": "附近机柜列表",
+  "将": "将",
+  "移动至中心点": "移动至中心点",
+  "已移动至中心点": "已移动至中心点",
+  "线上选择用车方案生成待支付订单": "线上选择用车方案生成待支付订单",
+  "导航到店向商家支付订单金额": "导航到店向商家支付订单金额",
+  "支付完成后直接现场取车": "支付完成后直接现场取车",
+  "短租": "短租",
+  "长租": "长租",
+  "出售": "Sell",
+  "购": "Buy",
+  "平均时速": "平均时速",
+  "减少碳排量": "减少碳排量",
+  "暂无骑行数据!": "暂无骑行数据!",
+  "共享用户": "Shared User",
+  "家人、朋友长期共用车辆,授权账户可以使用感应解锁,寻车定位,查看设置等功能;": "Family/Friends Share – Authorized accounts can use functions like unlock, locate, and settings.",
+  "您还未绑定车辆": "您还未绑定车辆"
+}

+ 852 - 0
output3.json

@@ -0,0 +1,852 @@
+{
+  "关于我们": "About Us",
+  "弗兰克公司": "Frank Inc.",
+  "版权所有": "All Rights Reserved",
+  "我的订单": "My Orders",
+  "车辆信息": "Bike Info",
+  "逾期费用:": "lafe fee",
+  "车辆编号:": "Vehicle No:",
+  "车辆名称:": "Vehicle Name:",
+  "设备": "Device",
+  "服务": "Service",
+  "活动": "Activity",
+  "我的": "Mine",
+  "车型:": "Model:",
+  "续航:": "Range:",
+  "重量:": "Weight:",
+  "照片:": "Photo:",
+  "门店信息": "Store Info",
+  "门店名称:": "Store Name:",
+  "门店地址:": "Store Address:",
+  "车辆照片": "Vehicle Photo",
+  "归还车辆": "Return Vehicle",
+  "激活车辆": "Activate Vehicle",
+  "还车成功": "Return Success",
+  "还车": "Return",
+  "请上传车辆照片": "Upload Vehicle Photo",
+  "未获取到门店位置!": "Store Location Not Found!",
+  "数组": "Array",
+  "车辆激活成功": "Activation Success",
+  "活动中心": "Event Center",
+  "暂无可参与的活动": "No Events Available",
+  "添加成员": "Add Member",
+  "请输入被邀人邮箱号": "Please Enter Invite Account",
+  "下一步": "Next",
+  "该用户不存在!": "User Not Found!",
+  "免费": "Free",
+  "次": "Times",
+  "车辆换电": "Swap Battery",
+  "响铃找车": "Find Vehicle",
+  "开座桶锁": "Open Seat Lock",
+  "关闭头盔锁": "Close Helmet Lock",
+  "解锁": "Unlock",
+  "上锁": "Lock",
+  "行驶轨迹": "Track",
+  "车辆位置": "Vehicle Location",
+  "拖车服务": "Towing",
+  "关闭车辆": "Turn Off",
+  "启动车辆": "Start Vehicle",
+  "我要还车": "Return Vehicle",
+  "剩余租期": "Remaining Lease",
+  "查看订单": "View Order",
+  "日": "D",
+  "小时": "H",
+  "分": "M",
+  "到期后将无法用车": "Expiry: No Usage",
+  "已到期": "Expired",
+  "续租": "Renew",
+  "还车到门店": "Return to Store",
+  "系统会根据您的定位判断您是否已到还车位置,如您已经到达门店,请点击「我已到店」按钮,待门店确认还车后,即可还车成功。": "系统会根据您的定位判断您是否已到还车位置,如您已经到达门店,请点击「我已到店」按钮,待门店确认还车后,即可还车成功。",
+  "我已到店": "Arrived at store",
+  "附近可还门店": "Nearby return stores",
+  "选择续租方案": "Choose renewal plan",
+  "时租": "Hourly",
+  "日租": "Daily",
+  "周租": "Weekly",
+  "租车时长": "Rent duration",
+  "天": "Day",
+  "优惠券": "Coupon",
+  "折": "Discount",
+  "骑行保障服务": "Riding protection",
+  "保障须知": "Protection terms",
+  "含行程延误保障": "Includes trip delay protection",
+  "元": "Yuan",
+  "商家赠送": "Merchant gift",
+  "配套服务": "Supporting services",
+  "头盔": "Helmet",
+  "手机支架": "Phone holder",
+  "已阅读并同意": "Read and Agree",
+  "《租赁用户协议》": "Rental agreement",
+  "明细": "Details",
+  "支付": "Payment",
+  "授权免押": "Authorization for no deposit",
+  "暂无车辆": "No vehicles available",
+  "是否返回首页": "Return to homepage?",
+  "车辆状态(是否上锁)": "Status (locked or not)",
+  "初始状态": "Initial state",
+  "如果是激活页面过来的。后端接口第一时间无法获取数据。需要再延迟获取一次": "如果是激活页面过来的。后端接口第一时间无法获取数据。需要再延迟获取一次",
+  "首页": "Home",
+  "查询车辆关键参数": "Vehicle Info",
+  "获取地址失败,请授权重新打开": "Failed to get address, please authorize",
+  "获取当前时间": "Get Time",
+  "默认返回首页再提示报错": "Return home and show error",
+  "您确定开启响铃找车?": "Start bell to find car?",
+  "车辆已开始鸣笛": "Car honking",
+  "您确定打开座桶锁?": "Open seat box lock?",
+  "打开座桶": "Open Seat",
+  "滑动开机": "Slide to Power On",
+  "开机中": "Powering On",
+  "关机中": "Powering Off",
+  "滑动关机": "Slide to Power Off",
+  "座桶锁已打开": "Seat box unlocked",
+  "您确定给车辆上锁?": "Lock the vehicle?",
+  "正在上锁": "Locking",
+  "已上锁": "Locked",
+  "您确定给车辆解锁?": "Unlock the vehicle?",
+  "正在解锁": "Unlocking",
+  "已解锁": "Unlocked",
+  "取消": "Cancel",
+  "确定": "Confirm",
+  "已取消": "Cancelled",
+  "其他都需要带车牌号": "License plate needed for others",
+  "锁车": "Lock Car",
+  "启动": "Start",
+  "车辆提示": "Car Alert",
+  "确认关闭车辆": "Confirm to turn off car",
+  "确认需要启动车辆": "Confirm to start car",
+  "开启": "Enable",
+  "关闭": "Disable",
+  "正在关闭车辆": "Turning off car",
+  "正在启动车辆": "Starting car",
+  "车辆已关闭": "Car off",
+  "车辆已启动": "Car on",
+  "操作超时": "Timeout",
+  "电池信息": "Battery Info",
+  "电池": "Battery",
+  "剩余电量": "Battery Left",
+  "电压": "Voltage",
+  "温度": "Temperature",
+  "换电套餐": "Swap Plan",
+  "适用类型": "Model",
+  "5秒换电,瞬间满电,畅享骑行新体验!": "5s swap, full power, ride on!",
+  "适用电池:": "Applicable battery:",
+  "当前购买为虚拟": "Virtual purchase",
+  "卡": "Card",
+  "如想要体验实体": "For physical card",
+  "卡功能,前往最近的门店领取": "Pick up card at store",
+  "立即购买": "Buy Now",
+  "请先绑定车辆!": "Bind vehicle first",
+  "提交中": "Submitting",
+  "换电记录": "Swap History",
+  "开始换电": "Start Swap",
+  "换电中": "Swapping",
+  "换电成功": "Swap Success",
+  "换电失败": "Swap Failed",
+  "未知": "Unknown",
+  "换电单号": "Swap Order",
+  "归还电池": "Return Battery",
+  "借出电池": "Borrow Battery",
+  "换电类型": "Swap Type",
+  "机柜换电": "Cabinet Swap",
+  "门店换电": "Store Swap",
+  "电柜名称": "Cabinet Name",
+  "开启感应解锁": "Enable Proximity Unlock",
+  "是否配对改设备": "Pair with Device?",
+  "配对": "Pair",
+  "点击下方": "Click Below",
+  "开始配对": "Start Pairing",
+  "请在系统弹窗中选择": "Select in system popup",
+  "以完成功能开启。": "To enable feature.",
+  "提示信息": "Tip Info",
+  "使用感应解锁功能时,请务必保证手机蓝牙功能开启,在蓝牙列表中忽略此设备会导致感应解锁失败": "Ensure Bluetooth is on. Ignoring device in Bluetooth list will cause failure.",
+  "测试指令!!!别删除": "Test Command!!! Do not delete",
+  "关闭靠近解锁": "Disable Proximity Unlock",
+  "跳转解绑配对": "Go to Unpair",
+  "靠近解锁": "Proximity Unlock",
+  "升级": "Upgrade",
+  "感应解锁已开启": "Proximity Unlock Enabled",
+  "注意:请勿在手机蓝牙中忽略“电动车蓝牙": "Warning: Do not ignore 'e-bike Bluetooth' in Bluetooth list",
+  "设备,否则感应解锁功能将无法使用": "Device, or unlock feature won't work",
+  "机柜信息传输完成": "Cabinet Info Transfer Complete",
+  "初始化": "Initializing",
+  "连接蓝牙": "Connect Bluetooth",
+  "下发配对指令": "Send Pairing Command",
+  "会断开连接": "Will Disconnect",
+  "直接再次连接": "Reconnect Directly",
+  "记得不要提示可以蓝牙断开连接": "Do not prompt Bluetooth disconnection",
+  "点击配对": "Click to Pair",
+  "调用配对": "Invoke Pairing",
+  "确认配对": "Confirm Pairing",
+  "断开蓝牙": "Disconnect Bluetooth",
+  "不走逻辑": "No Logic",
+  "蓝牙未启用": "Bluetooth Disabled",
+  "请先打开蓝牙": "Please Turn On Bluetooth",
+  "开始升级": "Start Upgrade",
+  "结束?????": "End????",
+  "蓝牙未连接": "Bluetooth Not Connected",
+  "蓝牙连接断开": "Bluetooth Disconnected",
+  "提示": "Tip",
+  "重新连接": "Re-connect",
+  "蓝牙连接中断,是否重新连接?": "Bluetooth connection interrupted, reconnect?",
+  "蓝牙连接成功": "Bluetooth Connected",
+  "电动车蓝牙": "E-bike Bluetooth",
+  "蓝牙配对请求": "Bluetooth Pairing Request",
+  "想与您配对,请确保显示的配对密钥为": "Wants to pair, ensure displayed key is",
+  "关闭蓝牙连接": "Disconnect Bluetooth",
+  "切换正常工厂模式": "Switch to Normal Factory Mode",
+  "切换工厂模式以后蓝牙断开": "Bluetooth disconnects after factory mode switch",
+  "重新连接蓝牙": "Reconnect Bluetooth",
+  "接近解锁下发成功": "Proximity Unlock Sent Successfully",
+  "下发打开接近解锁指令": "Send Proximity Unlock Command",
+  "获取接近解锁下发成功": "Proximity Unlock Command Sent Successfully",
+  "是否是蓝牙类型列表里面的": "Is it in the Bluetooth type list?",
+  "打开蓝牙连接": "Open Bluetooth Connection",
+  "监听蓝牙设备连接状态变化事件": "Listen for Bluetooth connection status change",
+  "观察周围是否有其他骑手连接,请等待对方完成": "Check if other riders are connected, wait for them",
+  "或": "Or",
+  "微信是否开启了蓝牙权限": "Has WeChat enabled Bluetooth permissions?",
+  "微信是否开启了蓝牙权限!!": "Has WeChat enabled Bluetooth permissions!!",
+  "连接失败,请尝试重新连接": "Connection failed, try reconnecting",
+  "蓝牙未打开或请在右上角设置授权小程序使用蓝牙": "Bluetooth is off, or enable Bluetooth in settings",
+  "我知道了": "Got it",
+  "蓝牙连接未成功": "Bluetooth connection failed",
+  "当前机柜未找到符合的蓝牙类型": "No compatible Bluetooth type found for this cabinet",
+  "开启感应解锁后,携带手机靠近车辆并按": "After enabling proximity unlock, bring phone close and press",
+  "键即可开机": "to turn on",
+  "按键解锁": "Button Unlock",
+  "手机接近车辆后,长按": "Press and hold after phone is near vehicle",
+  "键即可解锁": "to unlock",
+  "灵敏度设置": "Sensitivity Settings",
+  "关闭感应解锁": "Disable Proximity Unlock",
+  "距离建议适中,设置过近会降低成功率,设置过远可能会有风险": "Recommended distance is moderate, too close may reduce success rate, too far may be risky",
+  "最近": "Closest",
+  "适中": "Moderate",
+  "最远": "Farthest",
+  "左": "Left",
+  "设置灵敏度指令成功": "Sensitivity setting successful",
+  "关闭接近解锁成功": "Proximity Unlock disabled successfully",
+  "无可用电池": "No available batteries",
+  "营业中": "Open",
+  "已休息": "Resting",
+  "直线距您": "Straight-line Distance",
+  "千米": "km",
+  "米": "m",
+  "导航": "Navigation",
+  "格口详情": "Box Detail",
+  "电柜编号:": "Cabinet ID:",
+  "已预约": "Reserved",
+  "没有预约": "Not Reserved",
+  "空仓或者仓门不可用": "Empty or unavailable box",
+  "空仓": "Empty Box",
+  "满电或者电量未满": "Full or not fully charged",
+  "电池可用": "Battery Available",
+  "待充满": "Charging Required",
+  "电池列表": "Battery List",
+  "存储蓝牙状态": "Store Bluetooth Status",
+  "机柜详情": "Cabinet Details",
+  "离线": "Offline",
+  "在线": "Online",
+  "钱包余额": "Wallet Balance",
+  "扫码机柜": "Scan Cabinet",
+  "车牌号": "License Plate",
+  "可用电池数": "Available Battery Count",
+  "蓝牙信息": "Bluetooth Info",
+  "蓝牙换电需要的数据": "Data required for Bluetooth swap",
+  "如果本地有存储的定位信息,则直接使用": "Use stored location info if available",
+  "领取电池成功": "Battery Retrieved Successfully",
+  "获取机柜信息": "Retrieve Cabinet Info",
+  "计算可用电池数": "Calculate Available Battery Count",
+  "导航去机柜": "Navigate to Cabinet",
+  "设备数据": "Device Data",
+  "将传入的时间转换为分钟": "Convert the given time to minutes",
+  "判断当前时间是否在指定范围内": "Check if the current time is within the specified range",
+  "仓体": "Cabinet Body",
+  "月租": "Monthly",
+  "年租": "Yearly",
+  "分租": "Sub-lease",
+  "季租": "Quarterly",
+  "购买": "Buy",
+  "免费换电次数": "Free Swap Count",
+  "日租享": "Daily Rental Enjoyment",
+  "次免费换电数,超出后需要单独支付换电费用;": "Free swaps, extra swaps will require payment;",
+  "我要用车": "I want to use the vehicle",
+  "获取直线距离": "Get Straight-line Distance",
+  "您是否要拨打电话": "Do you want to call?",
+  "更多功能": "More Features",
+  "固定导航栏": "Fixed Navigation Bar",
+  "其他功能": "Other Features",
+  "长按拖动可调整顺序,可增减固定导航栏内容": "Long press to adjust order, add or remove items from fixed navigation bar",
+  "解除绑定": "Unbind",
+  "开机": "Slide to Turn On",
+  "开启车辆": "Start Vehicle",
+  "关机": "Shutdown",
+  "您确认": "Are you sure?",
+  "吗": "?",
+  "处理修改之后的数据": "Process modified data",
+  "输入注册账号的密码即可解绑": "Enter the registration account password to unbind",
+  "请输入密码": "Enter Password",
+  "解绑后,您将失去当前设备的控制权,其他人可以连接绑定您的设备。": "After unbinding, you will lose control of the device, and others can connect and bind your device.",
+  "解绑后将立即删除家庭账号,感应解锁等数据。": "Unbinding will immediately delete family account and proximity unlock data.",
+  "完成并解绑": "Finish and Unbind",
+  "是否确定解除绑定": "Are you sure you want to unbind?",
+  "返回首页": "Return to Home",
+  "解绑成功!": "Unbind Successful!",
+  "请选择设备": "Select Device",
+  "当前选择": "Current Selection",
+  "租赁设备": "Leased Device",
+  "绑定设备": "Bind Device",
+  "是否确定": "Are you sure?",
+  "清空当前设备蓝牙相关": "Clear current device Bluetooth data",
+  "切换成功!": "Switch successful!",
+  "由于": "Due to",
+  "一些样式及点击事件不支持": "Some styles and click events are not supported",
+  "气泡内容": "Bubble content",
+  "已驻车": "Parked",
+  "分钟": "Minutes",
+  "更新于": "Updated at",
+  "闪灯鸣笛": "Flash light & Horn",
+  "使用": "Use",
+  "点击事件": "Click Event",
+  "需要填写": "Required",
+  "标记点": "Mark point",
+  "定时器变量,用于清除定时器": "Timer variable, used to clear the timer",
+  "未知时间": "Unknown time",
+  "五秒后重新调用加载车辆位置信息的方法": "Re-call method to load vehicle location in 5 seconds",
+  "监听页面卸载": "Listen for page unload",
+  "页面卸载时清除定时器": "Clear timer when page unloads",
+  "确保定时器引用被清除": "Ensure timer reference is cleared",
+  "默认返回上一个页面再提示报错": "Default return to previous page then show error",
+  "您确认开启闪灯鸣笛吗": "Are you sure to turn on flash light & horn?",
+  "本人已知晓上述内容": "I acknowledge the above content",
+  "阅读合同倒计时": "Contract reading countdown",
+  "秒": "s",
+  "签名": "Signature",
+  "重新签名": "Resign",
+  "上报小程序账号信息": "Report mini-program account information",
+  "您当前没有手写签名,是否要进行填写": "You do not have a handwritten signature, do you want to fill it?",
+  "续航": "Range",
+  "骑行里程": "Ride Distance",
+  "骑行时长": "Ride Time",
+  "最大速度": "Max Speed",
+  "平均速度": "Avg Speed",
+  "车架号": "VIN",
+  "设备编号": "Device No.",
+  "车辆总里程": "Total Mileage",
+  "固件详情": "Firmware Details",
+  "中控硬件": "Control Hardware",
+  "中控软件": "Control Software",
+  "意见反馈": "Feedback",
+  "问题类型": "Problem Type",
+  "问题描述": "Problem Description",
+  "请详细说明,以便我们解决问题,最多可填写": "Please describe in detail to help us solve the problem, max",
+  "字。": "characters.",
+  "问题图片": "Problem Image",
+  "提交": "Submit",
+  "常用功能": "Common Features",
+  "车辆": "Vehicle",
+  "电柜": "Battery Cabinet",
+  "应用操作": "App Operations",
+  "其他": "Others",
+  "最多输入": "Max Input",
+  "字": "characters",
+  "提交成功": "Submit Success",
+  "为保证": "To ensure",
+  "感应解锁": "Sensor Unlock",
+  "闪电鸣笛": "Flash Horn",
+  "打开尾箱锁": "Open trunk lock",
+  "请先链接蓝牙": "Connect Bluetooth First",
+  "的正常使用,请依次开以下权限,开启后可以显著提高解锁成功率,且不会明显增加手机电量消耗": "For normal use, please enable the following permissions to improve unlock success rate without significant battery drain",
+  "授权引导": "Authorization Guide",
+  "已开启": "Enabled",
+  "未开启": "Disabled",
+  "我已开启": "I have enabled",
+  "引入": "Introduce",
+  "是否打开所有需要权限": "Open all required permissions?",
+  "位置权限": "Location Permission",
+  "打开手机定位,并运行": "Enable phone location and run",
+  "始终使用": "Always use",
+  "电池优化": "Battery Optimization",
+  "打开电池优化设置,": "Open Battery Optimization Settings",
+  "将弗兰克": "Frank",
+  "加入保护名单": "Add to Whitelist",
+  "后台运行": "Background Running",
+  "打开后台运行权限": "Open Background Permission",
+  "清选择手动控制": "Clear Manual Control",
+  "打开应用锁": "Open App Lock",
+  "打开应用权限锁": "Open App Permission Lock",
+  "的": "of",
+  "里编写如下代码": "Write the following code inside",
+  "已授权": "Authorized",
+  "已获得授权": "Authorization Obtained",
+  "未获得授权": "Authorization Not Obtained",
+  "被永久拒绝权限": "Permission Permanently Denied",
+  "确定打开": "Confirm Open",
+  "胎压": "Tire Pressure",
+  "选择的车辆控制": "Selected Vehicle Control",
+  "组件的方法列表": "Component Method List",
+  "判断车辆是否在线状态": "Check Vehicle Online Status",
+  "在线调用接口": "Call Interface When Online",
+  "不在线提示连接蓝牙": "Offline Prompt to Connect Bluetooth",
+  "成功": "Success",
+  "蓝牙是否已经连接": "Is Bluetooth Connected",
+  "未连接提示去连接": "Not Connected, Prompt to Connect",
+  "已连接下发对应指令": "Connected, Send Command",
+  "操作成功": "Operation Successful",
+  "发送": "Send",
+  "指令结束": "Command End",
+  "当前车辆处于离线,是否前往开启蓝牙配对操作车辆?": "Vehicle Offline, Go to Start Bluetooth Pairing?",
+  "前往配置更多功能": "Go to Configure More Features",
+  "请先开启位置授权": "Please Enable Location Authorization First",
+  "的正常使用,请": "For Normal Use, Please",
+  "开启位置授权": "Enable Location Authorization",
+  "并": "and",
+  "打开精准位置": "Enable Precise Location",
+  "开关,可提高解锁成功率,且不会明显增加手机电量消耗。": "Switch can improve unlock success rate without significant battery drain.",
+  "打开手机定位,并允许": "Enable Phone Location and Allow",
+  "「始终」": "Always",
+  "第": "Step",
+  "步": "Step",
+  "始终": "Always",
+  "开启请准位置开关": "Enable Precise Location Switch",
+  "精准位置": "Precise Location",
+  "组件的属性列表": "Component Properties List",
+  "续航开新路": "New Path for Range",
+  "路遥见实力": "Distance Reveals Strength",
+  "全速续航": "Full-Speed Range",
+  "极速可达": "Max Speed Achievable",
+  "了解更多": "Learn More",
+  "全新车型,即将发布!": "New Model Coming Soon!",
+  "更智能、更高效,全新车型即将亮相,敬请期待!": "Smarter, More Efficient, New Model Coming Soon!",
+  "租赁设备编号": "Leased Device ID",
+  "子组件": "Subcomponent",
+  "更新": "Update",
+  "您已逾期": "You are Overdue",
+  "请及时续费或归还车辆": "Please Extend Rental or Return the Vehicle",
+  "去续费": "Go to Extend Rental",
+  "车辆已开机": "Vehicle Powered On",
+  "车辆已关机": "Vehicle Powered Off",
+  "最近骑行": "Recent Rides",
+  "总里程": "Total Mileage",
+  "蓝牙配对成功": "Bluetooth Pairing Successful",
+  "请先连接蓝牙": "Please Connect Bluetooth First",
+  "用车人管理": "User Management",
+  "个家庭账号": "Family Accounts",
+  "设备信息": "Device Info",
+  "软件版本": "Current Version",
+  "用户车辆列表": "User Vehicle List",
+  "当前车辆编号": "Current Vehicle ID",
+  "手机型号": "Phone Model",
+  "是否打开权限弹窗": "Enable Permission Pop-Up?",
+  "当前是否蓝牙连接或者配对": "Is Bluetooth Connected or Paired?",
+  "所有蓝牙配对所需权限是否已开启": "Have All Bluetooth Pairing Permissions Been Enabled?",
+  "分享给好友": "Share with Friends",
+  "发送给朋友": "Send to Friends",
+  "蓝牙配对所需权限": "Bluetooth Pairing Permissions",
+  "运行小程序需要隐藏": "Running App Requires Hidden",
+  "所需权限开启成功": "Required Permissions Enabled Successfully",
+  "前往开启蓝牙配对": "Go to Enable Bluetooth Pairing",
+  "身份认证提示": "Identity Authentication Prompt",
+  "尚未完成身份认证,是否进行身份认证": "Identity authentication not completed, proceed with authentication?",
+  "您还未登录,请先登录": "You are not logged in, please log in first",
+  "判断逾期": "Check overdue",
+  "如果租": "If renting",
+  "购多个车辆的话可以切换当前车辆": "If buying multiple vehicles, you can switch the current vehicle",
+  "判断距离是否超过": "Check if distance exceeds",
+  "如果超过": "If exceeds",
+  "米,则转换为千米并返回": "meters, then convert to kilometers and return",
+  "否则直接返回米": "Otherwise, return meters directly",
+  "是否是小众租车": "Is this a niche rental service?",
+  "欢迎来到": "Welcome to",
+  "手机号快捷登录": "Phone number quick login",
+  "其他手机号登录": "Login with other phone number",
+  "电动车租赁用户协议": "Electric vehicle rental user agreement",
+  "和": "and",
+  "申请获取并验证你的手机号": "Request and verify your phone number",
+  "快捷登录": "Quick login",
+  "上次提供": "Last provided",
+  "不允许": "Not allowed",
+  "使用其他号码": "Use other number",
+  "初始化未授权": "Initialization unauthorized",
+  "请查阅隐私和协议": "Please refer to privacy and agreement",
+  "一键授权失败": "One-click authorization failed",
+  "请使用手机号登录": "Please use phone number to log in",
+  "登录成功": "Login successful",
+  "修改密码": "Change password",
+  "请输入旧密码": "Enter old password",
+  "请输入新密码": "Enter new password",
+  "请再次输入新密码": "Please confirm the new password",
+  "确认修改": "Confirm modification",
+  "是否确认修改密码?": "Confirm password change?",
+  "修改成功": "Change successful",
+  "忘记密码": "Forgot password",
+  "请输入要重置的邮箱账号": "Enter the email address to reset password",
+  "重置密码": "Reset password",
+  "重置密码邮件已发送": "Password reset email sent",
+  "去登录": "Go Login",
+  "我们向": "We have sent",
+  "发送了一封密码重置邮件,请您登录邮箱操作处理。": "A password reset email has been sent, please check your inbox.",
+  "请输入有效的邮箱地址": "Please enter a valid email address",
+  "欢迎来到智寻出行": "Welcome to ZhiXun Travel",
+  "邮箱密码登录": "Email password login",
+  "请输入邮箱账号": "Enter email address",
+  "用户协议": "User agreement",
+  "隐私政策": "Privacy policy",
+  "登录": "Login",
+  "没有账号": "No account",
+  "立即注册": "Register now",
+  "其他方式登录": "Other login methods",
+  "请勾选用户协议和隐私政策": "Please check agreement and privacy policy",
+  "账号注册": "Account registration",
+  "请再次输入密码": "Please re-enter password",
+  "注册邮件已发送": "Registration email sent",
+  "我们已向": "We have sent",
+  "发送注册邮件,请您登录邮箱点击链接完成注册。": "Registration email sent, please check your inbox to complete registration.",
+  "请输入": "Please enter",
+  "位密码,包含字母数字": "character password, including letters and numbers",
+  "两次输入的密码不一致": "Passwords do not match",
+  "注册邮件发送成功": "Registration email sent successfully",
+  "请输入车牌号全称": "Please enter full license plate number",
+  "请输入车牌号": "Please enter license plate number",
+  "确认": "Confirm",
+  "请先输入车牌号": "Please enter license plate number first",
+  "温馨提示:各省市因地制宜,制定相关的牌照格式,请按照实际车辆牌照的格式进行填写~": "Friendly reminder: Different provinces and cities have different license plate formats, please follow the actual format.",
+  "参考格式": "Reference format",
+  "北京": "Beijing",
+  "未获取到经纬度": "Latitude and longitude not obtained",
+  "判断原因是否为微信小程序内部没有授权定位": "Check if the issue is due to the lack of location authorization in the WeChat mini-program",
+  "无法获取位置信息,请检查您的微信定位权限设置": "Unable to retrieve location information, please check your WeChat location permissions",
+  "您的手机未授权微信定位权限,请前往手机设置开启权限": "Your phone has not authorized WeChat location permissions, please enable them in phone settings",
+  "获取当前时间戳(毫秒)": "Get current timestamp (milliseconds)",
+  "此车辆已离线,请选择其他车辆": "This vehicle is offline, please choose another vehicle",
+  "车辆正在被使用": "The vehicle is in use",
+  "是本人在使用": "I am using it",
+  "已有正在使用的车辆,是否跳转至车辆详情页": "There is a vehicle in use, do you want to go to the vehicle details page?",
+  "此车辆正在被使用": "This vehicle is in use",
+  "预租车型与之前预约车型不一致": "Pre-rental model does not match the previously reserved model",
+  "与预约车型不符": "Does not match the reserved model",
+  "轴偏移量": "Axle offset",
+  "点击显示": "Click to display",
+  "常显": "Always visible",
+  "今天": "Today",
+  "车辆推动报警": "Vehicle movement alert",
+  "车辆正在被人推送,请及时查看": "Vehicle is being moved, please check promptly",
+  "我的消息": "My Messages",
+  "设备消息": "Device Messages",
+  "系统消息": "System Messages",
+  "行驶里程": "Mileage",
+  "功率": "Power",
+  "减少碳排放": "Reduce carbon emissions",
+  "骑行次数": "Ride Count",
+  "累计功率": "Total Power",
+  "减少排放量": "Emissions Reduction",
+  "总": "total",
+  "年": "year",
+  "月": "month",
+  "周": "week",
+  "请输入绑定的新手机号": "Please enter the new phone number to bind",
+  "请输入验证码": "Please enter the verification code",
+  "秒后再次获取": "Get again after seconds",
+  "获取验证码": "Get Verification Code",
+  "绑定新手机号": "Bind New Phone Number",
+  "请输入手机号码": "Please enter phone number",
+  "请检测您的手机号码是否正确": "Please check if your phone number is correct",
+  "仪表盘": "Dashboard",
+  "请点击登录": "Please click to log in",
+  "我的车辆": "My Vehicle",
+  "用车人": "Vehicle User",
+  "温馨提示": "Friendly Reminder",
+  "您还未购买换电套餐,是否前往进行换电套餐?": "You have not purchased a battery swap plan yet. Would you like to proceed with purchasing one?",
+  "前往购买": "Go to Purchase",
+  "客服中心": "Customer",
+  "设置": "Settings",
+  "换电": "Battery Swap",
+  "您还未购买车辆,购买车辆才可享受换电套餐": "You have not purchased a vehicle, a vehicle must be purchased to enjoy the battery swap plan",
+  "您还未绑定车辆!": "You have not bound a vehicle!",
+  "未获取到手机号码": "Phone number not obtained",
+  "退出登录": "Logout",
+  "昵称": "NickName",
+  "注册时间": "Register Time",
+  "隐私协议": "Privacy Policy",
+  "用户条款": "User Terms",
+  "输入处理": "Input Processing",
+  "延迟处理输入法组合输入": "Delay input method combination input",
+  "更新值(避免无限触发,需判断)": "Update value (avoid infinite triggers, needs checking)",
+  "截断字符串至指定字节": "Truncate string to specified bytes",
+  "判断字符是否为双字节(如中文)": "Check if character is double-byte (e.g., Chinese)",
+  "您确定要退出当前账号吗?": "Are you sure you want to log out of the current account?",
+  "号仓门已打开": "Door Open",
+  "请存入更换电池": "Please insert replacement battery",
+  "取走满电电池": "Take fully charged battery",
+  "并关好仓门": "And close the door",
+  "请": "please",
+  "归还": "Return",
+  "取出": "Take Out",
+  "电池并关上仓门": "Battery and close the door",
+  "请取出电池并关上仓门": "Please remove the battery and close the door",
+  "归还完成后电柜会自动打开可租仓门": "Cabinet Opens Automatically After Return",
+  "自动为您匹配最高电量电池": "Automatically match the highest charged battery",
+  "即将跳转至首页,祝您骑行愉快": "Redirecting to homepage, wish you happy riding",
+  "回到首页": "Back to Home",
+  "联系门店": "Contact Store",
+  "仅为示例": "For example",
+  "待支付": "Pending Payment",
+  "待取车": "Pending Pickup",
+  "待激活": "Pending Activation",
+  "使用中": "In Use",
+  "已逾期": "Overdue",
+  "还车申请中": "Return Application Pending",
+  "还车中": "Returning Vehicle",
+  "车辆已归还": "Vehicle Returned",
+  "订单已支付": "Order Paid",
+  "订单未支付": "Order Not Paid",
+  "已完结": "Finished",
+  "支付中": "Paying",
+  "支付成功": "Payment Successful",
+  "支付失败": "Payment Failed",
+  "支付取消": "Payment Cancelled",
+  "线下待审核": "Offline Pending Review",
+  "线下审核拒绝": "Offline Review Rejected",
+  "下单时间": "Order Time",
+  "有效期至": "Valid Until",
+  "有效时长": "Valid Duration",
+  "免费换电数": "Free Battery Swaps",
+  "订单类型": "Order Type",
+  "购车": "Purchase Vehicle",
+  "租车": "Rent Vehicle",
+  "申请中": "Pending Application",
+  "审核失败": "Review Failed",
+  "退款失败": "Refund Failed",
+  "已退款": "Refunded",
+  "套餐金额": "Plan Amount",
+  "订单金额": "Order Amount",
+  "租车购车": "Rent or Purchase",
+  "请于": "By",
+  "到门店取车": "Pick up at the store",
+  "请上传车辆图片激活车辆": "Please upload vehicle picture to activate vehicle",
+  "待门店确认": "Pending Store Confirm",
+  "等待门店取车": "Waiting store pick up vehicle",
+  "已完成": "Completed",
+  "租期剩余": "Remaining Rental Period",
+  "逾期时长": "Overdue Duration",
+  "租借周期": "Rental Period",
+  "逾期金额": "Overdue Amount",
+  "收起": "Collapse",
+  "展开": "Expand",
+  "租借周期:购买": "Rental Period: Purchase",
+  "订单信息": "Order Information",
+  "订单编号": "Order No.",
+  "支付时间": "Payment Time",
+  "支付方式": "Payment Method",
+  "微信支付": "WeChat Pay",
+  "线下支付": "Offline Pay",
+  "支付宝支付": "Alipay",
+  "钱包余额支付": "Wallet Balance Payment",
+  "租车金额": "Rental Amount",
+  "租车押金": "Rental Deposit",
+  "订单结束后随时退": "Return anytime after order ends",
+  "自行去门店取还": "Pick up and return at the store",
+  "未知地址": "Unknown Address",
+  "重量": "Weight",
+  "换电信息": "Battery Swap Information",
+  "共": "Total",
+  "本单可享": "This order includes",
+  "次免费换电数,超出后需单独支付": "free battery swaps, additional will incur extra charges",
+  "自费换电": "Self-paid Battery Swap",
+  "本单您可享受": "This order offers",
+  "次免费换电,": "free battery swap,",
+  "当前免费换电剩余": "Remaining free swaps",
+  "次,超出后需要单独支付换电费用": "times, extra swaps will incur a charge",
+  "取还时间": "Pickup and Return Time",
+  "逾期规则": "Late Policy",
+  "逾期后还可用车吗": "Can I still use the vehicle after overdue?",
+  "如果逾期将触发智能锁车逻辑,可能导致您无法正常用车,请及时续费或联系商家处理。": "If overdue, the smart lock will be triggered, and you may not be able to use the vehicle. Please renew or contact the merchant.",
+  "逾期费计算标准是什么": "What is the late fee calculation standard?",
+  "小时租逾期费": "Hourly rental late fee",
+  "每小时费用": "Hourly Fee",
+  "逾期小时;当日还": "Overdue hours; return same day",
+  "季租逾期费": "Seasonal rental late fee",
+  "每天费用": "Daily Fee",
+  "逾期天数;如果不满": "Overdue days; if less than",
+  "小时按": "Calculated by hours",
+  "小时算,不满": "Calculated by hours, less than",
+  "天按": "Calculated by days",
+  "天算,最终收取的逾期费以门店确认的费用为准": "Calculated by days, final late fee subject to store confirmation",
+  "逾期后续租如何收费": "How is the fee charged for subsequent rentals after overdue?",
+  "逾期后及时续租不收取逾期费,逾期时长将从续租订单的用车时间中抵扣": "If you renew immediately after overdue, no late fee will be charged, overdue time will be deducted from the renewal order’s usage time.",
+  "结束订单": "End Order",
+  "扫码绑定": "Scan to Bind",
+  "去上传": "Go to Upload",
+  "到店还车": "Return vehicle to the store",
+  "选择取消原因": "Select Cancellation Reason",
+  "行程变更无需用车": "Trip changed, no car needed",
+  "修改订单信息": "Update Order Info",
+  "不想要了": "No longer needed",
+  "确认取消": "Confirm Cancellation",
+  "车辆价格": "Vehicle Price",
+  "逾期支付金额": "Overdue Payment Amount",
+  "逾期费用计算": "Overdue Fee Calculation",
+  "车型不匹配!": "Model mismatch!",
+  "车辆未展示!": "Vehicle not displayed!",
+  "请扫描正确的二维码!": "Please scan the correct QR code!",
+  "识别中": "Recognizing",
+  "季": "Season",
+  "取还时间展示": "Pickup and Return Time Display",
+  "剩余租期判断": "Remaining Rental Period Check",
+  "判断逾期状态": "Check Overdue Status",
+  "如果逾期要交逾期费用": "Late fee applies if overdue",
+  "跳转到上传车辆图片再支付逾期费用还车": "Redirect to upload vehicle image, then pay overdue fee and return vehicle",
+  "提交还车图片": "Submit Return Vehicle Image",
+  "取消订单": "Cancel Order",
+  "您是否需要取消该订单": "Do you want to cancel this order?",
+  "是": "Yes",
+  "否": "No",
+  "预约": "Reservation",
+  "非预约": "Non-Reservation",
+  "支付失败,请重试": "Payment failed, please try again",
+  "保险金": "Insurance Fee",
+  "租金": "Rental Fee",
+  "保险": "Insurance",
+  "有保险的时候": "When insured",
+  "为免押": "For deposit-free",
+  "为总金额": "For total amount",
+  "押金": "Deposit",
+  "时": "Hour",
+  "无保险": "No Insurance",
+  "金额": "Amount",
+  "周期数": "Cycle Count",
+  "周期价格": "Cycle Price",
+  "跳转换电记录": "Jump to Battery Swap Record",
+  "我的套餐": "My Plan",
+  "适用电池": "Applicable Batteries",
+  "车辆编号": "Vehicle ID",
+  "小米": "Xiaomi",
+  "卡号": "IC No.",
+  "生效中": "Active",
+  "待生效": "Pending",
+  "已结束": "Ended",
+  "前往购买套餐": "Go to Purchase Plan",
+  "返回上一页": "Back to Previous Page",
+  "请输入手机号": "Please enter phone number",
+  "重新获取": "Get again",
+  "计算属性用于判断是否可以登录": "Calculated property to check if login is allowed",
+  "权限设置": "Permission Settings",
+  "查看实时位置": "View Real-Time Location",
+  "使用换电": "Use Battery Swap",
+  "默认设置": "Default Settings",
+  "远程开关锁": "Remote Lock/Unlock",
+  "座桶锁": "Seat Bucket Lock",
+  "确认添加": "Confirm",
+  "删除成员": "Delete Member",
+  "确定删除这个成员吗?": "Are you sure you want to delete this member?",
+  "删除中": "Deleting",
+  "添加成功!": "Added Successfully!",
+  "确认订单": "Confirm Order",
+  "选择取车时间": "Select Pickup Time",
+  "共计": "Total",
+  "车辆押金": "Vehicle Deposit",
+  "需要支付": "Amount to Pay",
+  "元押金,诺无车损、违章及逾期,还车后可退": "Deposit, refundable upon return if no damage, violations, or overdue.",
+  "前往门店取还": "Go to Store to Pick Up/Return",
+  "门店距您": "Store is X km away",
+  "确认下单": "Confirm Order",
+  "价格明细": "Price Breakdown",
+  "车辆租金": "Vehicle Rental Fee",
+  "支付金额": "Payment Amount",
+  "导航到店": "Navigate to Store",
+  "租车订单已提交": "Rental Order Submitted",
+  "到": "To",
+  "取车": "Pick Up",
+  "订单详情": "Order Details",
+  "选择预约订单时间": "Select Reservation Time",
+  "单价": "Unit Price",
+  "租赁订单号": "Rental Order No.",
+  "结算总金额": "Total Settlement Amount",
+  "拍照车牌号": "Take Photo of License Plate",
+  "拍照时请留意照片的清晰度,便于系统提取车牌号": "Please ensure the photo is clear for the system to read the license plate.",
+  "重拍": "Retake",
+  "使用照片": "Use Photo",
+  "手动输入车牌号": "Manually Enter License Plate",
+  "开了定位权限": "Location Permission Enabled",
+  "休闲鞋": "Casual Shoes",
+  "数据加载中,请稍等": "Data is loading, please wait",
+  "无法获取位置信息,请检查您的定位权限设置": "Unable to retrieve location, please check your location permission settings.",
+  "您的手机未授权定位权限,请前往手机设置开启权限": "Your phone has not authorized location services, please enable it in settings.",
+  "车牌": "License Plate",
+  "读取图片数据": "Reading Image Data",
+  "款车型": "Model Type",
+  "城市代码": "City Code",
+  "我的位置": "My Location",
+  "取车时间": "Pickup Time",
+  "还车时间": "Return Time",
+  "租借时长": "Rental Duration",
+  "租借时长单位": "Rental Duration Unit",
+  "经度": "Longitude",
+  "纬度": "Latitude",
+  "周期单位": "Period Unit",
+  "选中城市": "Selected City",
+  "是否为当前城市": "Is this the current city?",
+  "还车方式": "Return Method",
+  "是否免押": "Is Deposit-Free?",
+  "租": "Rent",
+  "位置是否改变": "Has the location changed?",
+  "加上距离数量门店数据": "Add distance-based store data",
+  "判断当前是否有租赁周期类型": "Check if there is a rental period type",
+  "车辆类型": "Vehicle Type",
+  "租借类型": "Rental Type",
+  "地图控件": "Map Control",
+  "请输入搜索内容": "Please enter search content",
+  "清空": "Clear",
+  "搜索": "Search",
+  "门店": "Pickup Store",
+  "换电柜": "Swap Cabinet",
+  "筛选": "Filter",
+  "上下文": "Context",
+  "是否处于搜索状态": "Is search active?",
+  "点击图标跳转": "Click icon to navigate",
+  "骑行": "Cycling",
+  "附近门店列表": "Nearby Store List",
+  "附近机柜列表": "Nearby Cabinet List",
+  "将": "Move",
+  "移动至中心点": "Move to Center Point",
+  "已移动至中心点": "Moved to Center Point",
+  "线上选择用车方案生成待支付订单": "Online vehicle selection creates a pending payment order",
+  "导航到店向商家支付订单金额": "Navigate to store to pay the order amount",
+  "支付完成后直接现场取车": "Pay and pick up vehicle on-site",
+  "短租": "Short Rent",
+  "长租": "Long Rent",
+  "出售": "Sell",
+  "购": "Buy",
+  "平均时速": "Average Speed",
+  "减少碳排量": "Reduce Carbon Emissions",
+  "暂无骑行数据!": "No cycling data available!",
+  "共享用户": "Shared User",
+  "家人、朋友长期共用车辆,授权账户可以使用感应解锁,寻车定位,查看设置等功能;": "Family/Friends Share – Authorized accounts can use functions like unlock, locate, and settings.",
+  "您还未绑定车辆": "You have not bound a vehicle yet.",
+  "车辆激活": "text_825",
+  "车辆品牌:": "text_826",
+  "车辆颜色:": "text_827",
+  "车牌号:": "text_828",
+  "上传照片": "text_829",
+  "你确定要删除吗?": "text_832",
+  "还车成功!": "text_833",
+  "秒换电,瞬间满电,畅享骑行新体验!": "text_835",
+  "不限次数": "text_836",
+  "部分成功": "text_837",
+  "是否切换到车辆": "text_842",
+  "滑动启动": "text_843",
+  "扫码失败,请重新扫码": "text_844",
+  "您还未购买换电套餐,是否前往购买换电套餐?": "text_845",
+  "当前车辆暂未绑定电池": "text_846",
+  "扫码的是机柜": "text_847",
+  "扫码的是车辆": "text_848",
+  "请扫描机柜二维码": "text_849",
+  "信息详情": "text_854",
+  "您还没有设备消息": "text_855",
+  "您还没有系统消息": "text_856",
+  "当前没有可更换的电池,购买车辆绑定电池后才可享受换电套餐": "text_857",
+  "仓门已打开": "text_858",
+  "完成弹窗": "text_859",
+  "祝您骑行愉快": "text_860",
+  "车辆已被租售!": "text_862",
+  "全部": "text_863"
+}

+ 3 - 3
pages/aboutMy/aboutMy.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="container">
-		<navBar name="关于我们"></navBar>
+		<navBar :name="$t('关于我们')"></navBar>
 		<view class="header_view flex-row flex-column">
 			<image class="header_img" :src="app_logo" mode="aspectFit"></image>
 			<view class="header_title">{{appName}}</view>
@@ -8,8 +8,8 @@
 		</view>
 		
 		<view class="company-text-view">
-			<view class=" company-text" style="margin-bottom:16rpx;">弗兰克公司 版权所有</view>
-			<view class=" company-text">@2023 FULANKE CorporationAll Rights Reserved</view>
+			<view class=" company-text" style="margin-bottom:16rpx;">{{ $t('弗兰克公司') }} {{ $t('版权所有') }}</view>
+			<view class=" company-text">@2023 FULANKE Corporation All Rights Reserved</view>
 		</view>
 	</view>
 </template>

+ 28 - 28
pages/activation/activation.vue

@@ -1,41 +1,41 @@
 <template>
 	<view class="">
-		<navBar :name="typePage=='index'?'归还车辆':'车辆激活'" left="0"></navBar>
+		<navBar :name="typePage=='index'?$t('归还车辆'): $t('车辆激活')" left="0"></navBar>
 		<view class="container-view">
 			<view class="return-info">
-				<view class="h5">车辆信息</view>
+				<view class="h5">{{ $t('车辆信息') }}</view>
 				<view v-if="overdueMoney" class="return-top  flex-row flex-between">
-					<view style="align-items: baseline;" class="flex-row">逾期费用:
+					<view style="align-items: baseline;" class="flex-row">{{ $t('逾期费用:') }}
 						<allPrice :amount="(overdueMoney/100)" />
 					</view>
 				</view>
 				<view class="return-top  flex-row flex-between">
-					<view>车辆编号:{{car_sn}}</view>
+					<view>{{ $t('车辆编号:') }}{{car_sn}}</view>
 				</view>
 				<view class="return-top  flex-row flex-between">
-					<view>车辆品牌:{{carInfoData.brand_name}}</view>
+					<view>{{ $t('车辆品牌:') }}{{carInfoData.brand_name}}</view>
 				</view>
 				<view class="return-top  flex-row flex-between">
-					<view>车辆颜色:{{carInfoData.color_name}}</view>
+					<view>{{ $t('车辆颜色:') }}{{carInfoData.color_name}}</view>
 				</view>
 				<view v-if="carInfoData.license_plate_number" class="return-top  flex-row flex-between">
-					<view>车牌号:{{carInfoData.license_plate_number}}</view>
+					<view>{{ $t('车牌号:') }}{{carInfoData.license_plate_number}}</view>
 				</view>
 				<view class="return-top  flex-row flex-between">
-					<view>车辆名称:{{carInfoData.car_name}}</view>
+					<view>{{ $t('车辆名称:') }}{{carInfoData.car_name}}</view>
 				</view>
 				<view class="return-top  flex-row flex-between">
-					<view>车型:{{carInfoData.model_name}}</view>
+					<view>{{ $t('车型:') }}{{carInfoData.model_name}}</view>
 				</view>
 				<view class="return-top  flex-row flex-between">
-					<view>续航:{{(carInfoData.endurance / 1000).toFixed(2)}}km</view>
+					<view>{{ $t('续航:') }}{{(carInfoData.endurance / 1000).toFixed(2)}}km</view>
 				</view>
 				<view class="return-top  flex-row flex-between">
-					<view>重量:{{(carInfoData.weight / 1000).toFixed(2)}}kg</view>
+					<view>{{ $t('重量:') }}{{(carInfoData.weight / 1000).toFixed(2)}}kg</view>
 				</view>
 				
 				<view class="return-top  flex-row ">
-					<view>照片:</view>
+					<view>{{ $t('照片:') }}</view>
 					<view style="display: flex;align-items: center;" class="">
 						<image style="margin-right: 10rpx;" v-for="(item,index) of carInfoData.model_images"
 							:key="index" class="img" :src="item" mode="aspectFit"></image>
@@ -43,17 +43,17 @@
 				</view>
 			</view>
 			<view v-if="shopInfo.shop_name" class="return-info">
-				<view class="h5">门店信息</view>
+				<view class="h5">{{ $t('门店信息') }}</view>
 				<view class="return-top  flex-row flex-between">
-					<view>门店名称:{{shopInfo.shop_name}}</view>
+					<view>{{ $t('门店名称:') }}{{shopInfo.shop_name}}</view>
 				</view>
 				<view class="return-top  flex-row flex-between">
-					<view>门店地址:{{shopInfo.address}}</view>
+					<view>{{ $t('门店地址:') }}{{shopInfo.address}}</view>
 				</view>
 			</view>
 			<view class="pictures-info">
-				<view>上传照片</view>
-				<!-- <view>这里是关于激活车辆照片的文案描述,这里是关于激活车辆照片的文案描述</view> -->
+				<view>{{ $t('上传照片') }}</view>
+				<!-- <view>{{ $t('这里是关于激活车辆照片的文案描述,这里是关于激活车辆照片的文案描述') }}</view> -->
 				<!-- <uploaders :max="Number(shopList.flk_hire_car_img_num)" :car_info="car_imgs"
 					@update-car-images="handleCarImagesUpdate"></uploaders> -->
 				<view class="list-group">
@@ -61,12 +61,12 @@
 						:key="item.unique">
 						<image v-if="!item.imgUrl"  class="img-item-demo" :src="item.url"></image>
 						<image v-else class="img-item" :src="item.imgUrl" mode="aspectFit"></image>
-						<view class="img_text">{{ item.title? item.title : '车辆照片'}}</view>
+						<view class="img_text">{{ item.title? item.title : $t('车辆照片')}}</view>
 						<view v-if="!item.imgUrl" class="empity-item">+</view>
 					</view>
 				</view>
-				<view v-if="isReturnCar" @tap="submitReturn" class="pictures-btn">归还车辆</view>
-				<view v-else @tap="submitEnabled" class="pictures-btn">激活车辆</view>
+				<view v-if="isReturnCar" @tap="submitReturn" class="pictures-btn">{{ $t('归还车辆') }}</view>
+				<view v-else @tap="submitEnabled" class="pictures-btn">{{ $t('激活车辆') }}</view>
 			</view>
 			<PayTypeModel @closeShow="()=>isShowToBuy=false" @payToOrder="payToOrder" :free_price="totalPrice"
 				:isShowToBuy="isShowToBuy" />
@@ -123,7 +123,7 @@
 			this.isReturnCar = options.isReturnCar
 			if (options.isReturnCar) {
 				uni.setNavigationBarTitle({
-					title: '归还车辆'
+					title: this.$t('归还车辆')
 				})
 				this.shopInfoFn()
 			}
@@ -157,8 +157,8 @@
 		methods: {
 			async bindDelImage(index){
 				let res = await uni.showModal({
-					title: '提示',
-					content: '你确定要删除吗?',
+					title: this.$t('提示'),
+					content: this.$t('你确定要删除吗?'),
 					showCancel: true,
 				})
 				if (res[1].confirm) {
@@ -199,7 +199,7 @@
 				})
 				if (data.code == 200) {
 					uni.removeStorageSync('car_info')
-					common.simpleToast('还车成功!')
+					common.simpleToast(this.$t('还车成功!'))
 					setTimeout(() => {
 						uni.switchTab({
 							url: `/pages/index/index`,
@@ -231,7 +231,7 @@
 						return item
 					}
 				})
-				if (this._image_list.length < this.shopList.flk_hire_return_car_img.length) return common.simpleToast('请上传车辆照片')
+				if (this._image_list.length < this.shopList.flk_hire_return_car_img.length) return common.simpleToast(this.$t('请上传车辆照片'))
 				if (this.totalPrice > 0) {
 					this.isShowToBuy = true
 				} else {
@@ -251,7 +251,7 @@
 					if (data.data.list.length > 0) {
 						this.shopInfo = data.data.list[0]
 					} else {
-						common.simpleToast('未获取到门店位置!')
+						common.simpleToast(this.$t('未获取到门店位置!'))
 					}
 				} else {
 					common.simpleToast(data.msg)
@@ -313,7 +313,7 @@
 						return item
 					}
 				})
-				if (_image_list.length < this.shopList.flk_hire_return_car_img.length) return common.simpleToast('请上传车辆照片')
+				if (_image_list.length < this.shopList.flk_hire_return_car_img.length) return common.simpleToast(this.$t('请上传车辆照片'))
 				const pData = {
 					car_sn: this.car_sn,
 					sub_sn: this.sub_sn,
@@ -321,7 +321,7 @@
 				}
 				http.postApi(config.API_FLK_CAR_ASSIGNMENT, pData, (resp) => {
 					if (resp.data.code === 200) {
-						common.simpleToast('车辆激活成功')
+						common.simpleToast(this.$t('车辆激活成功'))
 						setTimeout(function() {
 							uni.switchTab({
 								url: `/pages/index/index?plate_number=${me.car_sn}`,

+ 2 - 2
pages/activity/activity.vue

@@ -1,9 +1,9 @@
 <template>
 	<view class="">
-		<navBar name="活动中心" type="active" ></navBar>
+		<navBar :name="$t('活动中心')" type="active" ></navBar>
 		<view class="container-view flex-row">
 			<img style="width: 352rpx;height: 352rpx;" src="https://qiniu.bms16.com/Fn0mFwx4EHDzQiCypHM7HgiL4uuP" alt="">
-			<view class="active-text">暂无可参与的活动</view>
+			<view class="active-text">{{ $t('暂无可参与的活动') }}</view>
 			<CustomTabbar curt-tab="active"/>
 		</view>
 	</view>

+ 4 - 4
pages/addUser/addUser.vue

@@ -1,11 +1,11 @@
 <template>
 	<view class="add-user-view">
-		<navBar :name="'添加成员'" left="0"/>
+		<navBar :name="$t('添加成员')" left="0"/>
 		<view class="flex-row email-input-view">
-			<input class="email-input-style" type="email" v-model="email" placeholder="请输入被邀人邮箱号"  placeholder-style="font-size: 32rpx; font-weight: 400; color: #BAC1D0;">
+			<input class="email-input-style" type="email" v-model="email" :placeholder="$t('请输入被邀人邮箱号')"  placeholder-style="font-size: 32rpx; font-weight: 400; color: #BAC1D0;">
 			<img class="clear-btn" src="https://qiniu.bms16.com/Fjpf2YnHUK1_CFf20kKRvjX9YdC3" alt="">
 		</view>
-		<view @click="nextFn" class="next-btn" :class="{'next-btn-i':!isEmailFn(email)}">下一步</view>
+		<view @click="nextFn" class="next-btn" :class="{'next-btn-i':!isEmailFn(email)}">{{ $t('下一步') }}</view>
 	</view>
 </template>
 
@@ -40,7 +40,7 @@
 							url:`/pages/powerSetting/powerSetting?email=${this.email}&headimg=${data.data.headimg}&nickname=${data.data.nickname}&isSet=1`
 						})
 					}else{
-						msg('该用户不存在!')
+						msg(this.$t('该用户不存在!'))
 					}
 				}else{
 					msg(data.msg)

+ 68 - 68
pages/battery/battery.vue

@@ -22,23 +22,23 @@
 						data-url="/pages/exchangeCar/exchangeCar" data-index="1"
 						class="flex-column my_function position">
 						<view v-if="(orderInfo.order_info.gift_exchange_num - orderInfo.order_info.used_exchange_num)>0"
-							class="red_tip">免费 <text
+							class="red_tip">{{ $t('免费') }} <text
 								style="font-size: 28rpx;margin: 0 2rpx;">{{orderInfo.order_info.gift_exchange_num - orderInfo.order_info.used_exchange_num}}</text>
-							次</view>
+							{{ $t('') }}</view>
 						<image class="my_icon" src="https://qiniu.bms16.com/FgR9qwTgatlAzamYdcFngFU4_ydj"></image>
-						<view class="my_title">车辆换电</view>
+						<view class="my_title">{{ $t('车辆换电') }}</view>
 					</view>
 					<view v-if="orderInfo.third_device_type == 'TBTKC'" @tap="clickCarCommand" data-command="FINDCAR" class="flex-column my_function">
 						<image class="my_icon" src="https://zxappfile.bms16.com/zx_client/find_car.png"></image>
-						<view class="my_title">响铃找车</view>
+						<view class="my_title">{{ $t('响铃找车') }}</view>
 					</view>
 					<view  v-if="orderInfo.third_device_type == 'TBTKC'" @tap="clickCarCommand" data-command="OPENSEATLOCK" class="flex-column my_function">
 						<image class="my_icon" src="https://zxappfile.bms16.com/zx_client/seat_lock.png"></image>
-						<view class="my_title">开座桶锁</view>
+						<view class="my_title">{{ $t('开座桶锁') }}</view>
 					</view>
 					<!-- 	<view @tap="clickCarCommand" data-command="helmet" class="flex-column my_function">
 						<image class="my_icon_1" src="https://zxappfile.bms16.com/zx_client/helmet.png"></image>
-						<view class="my_title">关闭头盔锁</view>
+						<view class="my_title">{{ $t('关闭头盔锁') }}</view>
 					</view> -->
 					<view 
 						@tap="clickCarCommand($event, true)" 
@@ -47,22 +47,22 @@
 						class="flex-column my_function"
 					>
 						<image class="my_icon" :src="protect_state ? lockIcon : onLockIcon"></image>
-						<view class="my_title">{{ protect_state ? '解锁' : '上锁'}}</view>
+						<view class="my_title">{{ protect_state ?  $t('解锁') : $t('上锁') }}</view>
 					</view>
 					<view @tap="navToPage" data-url="/pages/travelingTrack/travelingTrack" data-index="2"
 						class="flex-column my_function">
 						<image class="my_icon" src="https://qiniu.bms16.com/Fj61bkq6KYkfA9QdbLfpVUj3Nm5Q"></image>
-						<view class="my_title">行驶轨迹</view>
+						<view class="my_title">{{ $t('行驶轨迹') }}</view>
 					</view>
 					<view @tap="navToPage" data-url="/pages/carLocation/carLocation" data-index="3"
 						class="flex-column my_function">
 						<image class="my_icon" src="https://qiniu.bms16.com/Fg_eny6c-tiDVy1iTFyyWzmUj4ho"></image>
-						<view class="my_title">车辆位置</view>
+						<view class="my_title">{{ $t('车辆位置') }}</view>
 					</view>
 					<view v-if="orderInfo.drag_car_service" @tap="navToPage" data-url="/pages/towingCar/towingCar"
 						data-index="4" class="flex-column my_function">
 						<image class="my_icon" src="https://qiniu.bms16.com/FsG5bN2bg-MXLXZehQ33TsYPfrH8"></image>
-						<view class="my_title">拖车服务</view>
+						<view class="my_title">{{ $t('拖车服务') }}</view>
 					</view>
 				</view>
 
@@ -71,47 +71,47 @@
 				<view class="battery-btn flex-row">
 					<view v-if="orderInfo.is_on == 1" @tap="bindCarStatus" :data-car="orderInfo.is_on">
 						<!-- <img class="img_car_on" src="https://qiniu.bms16.com/FtoO8li2ncvlGsjggXY7gMtaIAWt" /> -->
-						关闭车辆
+						{{ $t('关闭车辆') }}
 					</view>
 					<view v-else-if="orderInfo.is_on == 0||orderInfo.is_on == 2" @tap="bindCarStatus"
 						:data-car="orderInfo.is_on">
 						<!-- <img class="lock_img" src="https://qiniu.bms16.com/Fq7SWg4flipex4HXuDxsxL88AN5s" /> -->
-						启动车辆
+						{{ $t('启动车辆') }}
 					</view>
 
-					<view @tap="bindReturnCar">我要还车</view>
+					<view @tap="bindReturnCar">{{ $t('我要还车') }}</view>
 				</view>
 			</view>
 			<view class="">
 				<view class="battery-second flex-row flex-between">
-					<view>剩余租期</view>
-					<view @tap="navToPage" data-url="/pages/orderStatus/orderStatus" data-index="5">查看订单</view>
+					<view>{{ $t('剩余租期') }}</view>
+					<view @tap="navToPage" data-url="/pages/orderStatus/orderStatus" data-index="5">{{ $t('查看订单') }}</view>
 				</view>
 			</view>
 			<view class="battery-bottom flex-row flex-between">
 				<view v-if="orderInfo.time" class="bottom-time flex-row">
 					{{orderInfo.time.day > 0 ? orderInfo.time.day :'' }}<text
-						v-if="orderInfo.time.day>0">日</text>{{orderInfo.time.hour > 0 ? orderInfo.time.hour :'' }}<text
-						v-if="orderInfo.time.hour>0">小时</text>{{orderInfo.time.minute > 0 ? orderInfo.time.minute :'' }}<text
-						v-if="orderInfo.time.minute>0">分</text>
-					<view style="font-weight: 400;">到期后将无法用车</view>
+						v-if="orderInfo.time.day>0">{{ $t('') }}</text>{{orderInfo.time.hour > 0 ? orderInfo.time.hour :'' }}<text
+						v-if="orderInfo.time.hour>0">{{ $t('小时') }}</text>{{orderInfo.time.minute > 0 ? orderInfo.time.minute :'' }}<text
+						v-if="orderInfo.time.minute>0">{{ $t('') }}</text>
+					<view style="font-weight: 400;">{{ $t('到期后将无法用车') }}</view>
 				</view>
 				<view v-else class="bottom-time flex-row">
-					已到期
-					<view>到期后将无法用车</view>
+					{{ $t('已到期') }}
+					<view>{{ $t('到期后将无法用车') }}</view>
 				</view>
-				<view @tap="bindRenewHire">续租</view>
+				<view @tap="bindRenewHire">{{ $t('续租') }}</view>
 			</view>
 			<view v-if="isShowReturnCar" class="return-box">
 				<view class="return-item">
 					<view class="return-title flex-row flex-between">
-						<view>还车到门店</view>
+						<view>{{ $t('还车到门店') }}</view>
 						<view @tap="isShowReturnCar = false" style="font-size: 60rpx;">×</view>
 					</view>
-					<view class="return-text">系统会根据您的定位判断您是否已到还车位置,如您已经到达门店,请点击「我已到店」按钮,待门店确认还车后,即可还车成功。</view>
+					<view class="return-text">{{ $t('系统会根据您的定位判断您是否已到还车位置,如您已经到达门店,请点击「我已到店」按钮,待门店确认还车后,即可还车成功。') }}</view>
 					<view class="return-btn flex-row">
-						<view @tap="toRurnCarPage">我已到店</view>
-						<view @tap="toNearbyStorePage">附近可还门店</view>
+						<view @tap="toRurnCarPage">{{ $t('我已到店') }}</view>
+						<view @tap="toNearbyStorePage">{{ $t('附近可还门店') }}</view>
 					</view>
 				</view>
 			</view>
@@ -119,35 +119,35 @@
 			<view v-if="isShowRenewHire" class="renew-box">
 				<scroll-view class="renew-item" scroll-y :show-scrollbar='true' :enhanced='true'>
 					<view class="renew-title flex-row flex-between">
-						<view>选择续租方案</view>
+						<view>{{ $t('选择续租方案') }}</view>
 						<view @tap="isShowRenewHire = false" style="font-size: 60rpx;">×</view>
 					</view>
 					<view class="plan-info">
 						<view class="plan-type flex-row flex-between">
 							<view @tap="bindChangeStatus" data-status="0"
 								:class="isSelectStatus == 0?'ptyped-item':'ptype-item'">
-								<view class="ptype-title">时租</view>
+								<view class="ptype-title">{{ $t('时租') }}</view>
 								<view :class="isSelectStatus == 0?'ptyped-text':'ptype-text'">
 									¥<text>8</text>
 								</view>
 							</view>
 							<view @tap="bindChangeStatus" data-status="1"
 								:class="isSelectStatus == 1?'ptyped-item':'ptype-item'">
-								<view class="ptype-title">日租</view>
+								<view class="ptype-title">{{ $t('日租') }}</view>
 								<view :class="isSelectStatus == 1?'ptyped-text':'ptype-text'">
 									¥<text>48</text>
 								</view>
 							</view>
 							<view @tap="bindChangeStatus" data-status="2"
 								:class="isSelectStatus == 2?'ptyped-item':'ptype-item'">
-								<view class="ptype-title">周租</view>
+								<view class="ptype-title">{{ $t('周租') }}</view>
 								<view :class="isSelectStatus == 2?'ptyped-text':'ptype-text'">
 									¥<text>208</text>
 								</view>
 							</view>
 						</view>
 						<view class="plan-time flex-row flex-between">
-							<view>租车时长/天</view>
+							<view>{{ $t('租车时长') }}/{{ $t('') }}</view>
 							<view class="quantity-count flex-row">
 								<view class="count-btn fbtn" @tap.stop.prevent="bindMinus">-</view>
 								<input @input="bindInput" @blur="bindBlur" type="number" :value="count" />
@@ -155,17 +155,17 @@
 							</view>
 						</view>
 						<view class="coupon-info flex-row flex-between">
-							<view>优惠券</view>
+							<view>{{ $t('优惠券') }}</view>
 							<view>
-								9.8 折
+								9.8 {{ $t('') }}
 								<img src="https://qiniu.bms16.com/Fjw9OKXT_2aZ1iPStF941RoawSy_" />
 							</view>
 						</view>
 					</view>
 					<view class="guarantee-info">
 						<view class="guarantee-title flex-row flex-between">
-							<view>骑行保障服务</view>
-							<view>保障须知</view>
+							<view>{{ $t('骑行保障服务') }}</view>
+							<view>{{ $t('保障须知') }}</view>
 						</view>
 						<view class="flex-row flex-between">
 							<view @tap="clickSelectGuarantee" v-for="(item,index) in guaranteeList" :key="index"
@@ -182,12 +182,12 @@
 										<view>{{items.price}}</view>
 									</view>
 									<view style="color: #828DA2;text-align: center;font-size: 24rpx;">
-										含行程延误保障
+										{{ $t('含行程延误保障') }}
 									</view>
 									<view class="guarantee-border"></view>
 									<view class="guarantee-bottom flex-row flex-column">
-										<view>1.3元/天</view>
-										<view v-if="index==0" :class="isSelectGuarantee==0?'blue-t':'black-t'">商家赠送
+										<view>1.3{{ $t('') }}/{{ $t('') }}</view>
+										<view v-if="index==0" :class="isSelectGuarantee==0?'blue-t':'black-t'">{{ $t('商家赠送') }}
 										</view>
 										<view v-if="index!=0">
 											<img
@@ -199,10 +199,10 @@
 						</view>
 					</view>
 					<view class="assort-info">
-						<view>配套服务</view>
+						<view>{{ $t('配套服务') }}</view>
 						<view class="assort-text flex-row">
-							<view>头盔×1</view>
-							<view>手机支架×1</view>
+							<view>{{ $t('头盔') }}×1</view>
+							<view>{{ $t('手机支架') }}×1</view>
 						</view>
 					</view>
 
@@ -210,22 +210,22 @@
 						<view class="payment-top flex-row">
 							<img
 								:src="isArgee?'https://qiniu.bms16.com/FhWimtmWybKlYMB6mgIReVWArbfq':'https://qiniu.bms16.com/FkmDjxBNZhFGFU5inza2usdtDlX8'" />
-							已阅读并同意
-							<text>《小众电动车租赁用户协议》</text>
+							{{ $t('已阅读并同意') }}
+							<text>{{ $t('《小众电动车租赁用户协议》') }}</text>
 						</view>
 						<view class="payment-bottom flex-row flex-between">
 							<view class="bottom-left flex-row">
 								<view>¥92.23</view>
-								<view>明细<img src="https://qiniu.bms16.com/FmEDQp82D5k9lkHMEcCoCeLO8ZQL" /></view>
+								<view>{{ $t('明细') }}<img src="https://qiniu.bms16.com/FmEDQp82D5k9lkHMEcCoCeLO8ZQL" /></view>
 							</view>
-							<view @tap="navToPage" data-url="/pages/orderStatus/orderStatus">支付·授权免押</view>
+							<view @tap="navToPage" data-url="/pages/orderStatus/orderStatus">{{ $t('支付') }}·{{ $t('授权免押') }}</view>
 						</view>
 					</view>
 				</scroll-view>
 			</view>
 
 		</view>
-		<view v-else class="no-car">暂无车辆</view>
+		<view v-else class="no-car">{{ $t('暂无车辆') }}</view>
 	</view>
 
 </template>
@@ -376,7 +376,7 @@
 						uni.setStorageSync('user_current_location', me.myLocation)
 					},
 					fail: function(res) {
-						common.simpleToast('获取地址失败,请授权重新打开')
+						common.simpleToast(this.$t('获取地址失败,请授权重新打开'))
 					}
 				})
 				// this.loadCarInfo()
@@ -514,26 +514,26 @@
 
 				const commandTips = {
 					FINDCAR: {
-						title: "响铃找车",
-						desc: "您确定开启响铃找车?",
-						success: "车辆已开始鸣笛"
+						title: this.$t('响铃找车'),
+						desc: this.$t('您确定开启响铃找车?'),
+						success: this.$t('车辆已开始鸣笛')
 					},
 					OPENSEATLOCK: {
-						title: "开座桶锁",
-						desc: "您确定打开座桶锁?",
-						success: "座桶锁已打开"
+						title: this.$t('开座桶锁'),
+						desc: this.$t('您确定打开座桶锁?'),
+						success: this.$t('座桶锁已打开')
 					},
 					SAFEON: {
-						title: "上锁",
-						desc: "您确定给车辆上锁?",
+						title: this.$t('上锁'),
+						desc: this.$t('您确定给车辆上锁?'),
 						optTxt: '正在上锁...',
-						success: "已上锁"
+						success: this.$t('已上锁')
 					},
 					SAFEOFF: {
-						title: "解锁",
-						desc: "您确定给车辆解锁?",
+						title: this.$t('解锁'),
+						desc: this.$t('您确定给车辆解锁?'),
 						optTxt: '正在解锁...',
-						success: "已解锁"
+						success: this.$t('已解锁')
 					}
 				}
 
@@ -546,8 +546,8 @@
 				uni.showModal({
 					title: tipTitle,
 					content: tipDesc,
-					cancelText: '取消',
-					confirmText: '确定',
+					cancelText: this.$t('取消'),
+					confirmText: this.$t('确定'),
 					success: function(res) {
 						if (res.confirm) {
 							const pData = {
@@ -571,7 +571,7 @@
 								}
 							})
 						} else if (res.cancel) {
-							// common.simpleToast('已取消')
+							// common.simpleToast(this.$t('已取消'))
 						}
 					},
 					fail: function(res) {
@@ -637,10 +637,10 @@
 				const CUR_IS_ON = (is_on - 0) == 1 
 				// is_on :0 2 :锁车  1 :启动
 				uni.showModal({
-					title: '车辆提示',
+					title: this.$t('车辆提示'),
 					content: CUR_IS_ON ? '确认关闭车辆?' : '确认需要启动车辆?',
-					cancelText: '取消',
-					confirmText: '确定',
+					cancelText: this.$t('取消'),
+					confirmText: this.$t('确定'),
 					success: function(res) {
 						if (res.confirm) {
 							const pData = {
@@ -650,12 +650,12 @@
 							http.postApi(config.API_DAYHIRE_CAR_LOCK, pData, function(resp) {
 								if (resp.data.code === 200) {
 									const text = CUR_IS_ON ? '正在关闭车辆...' : '正在启动车辆...';
-									const resultText = CUR_IS_ON ? '车辆已关闭' : '车辆已启动';
+									const resultText = CUR_IS_ON ? this.$t('车辆已关闭') : this.$t('车辆已启动');
 									common.simpleToast(text, 4000)
 									setTimeout(() => {
 										me.loadCarInfo().then(res => {
 											// console.log(me.initialIsOn, res.is_on)
-											// const TEXT = me.initialIsOn === res.is_on ? '操作超时' : resultText
+											// const TEXT = me.initialIsOn === res.is_on ? this.$t('操作超时') : resultText
 											// me.setData({
 											// 	initialIsOn: res.is_on
 											// })
@@ -667,7 +667,7 @@
 								}
 							})
 						} else if (res.cancel) {
-							common.simpleToast('已取消')
+							common.simpleToast(this.$t('已取消'))
 						}
 					},
 					fail: function(res) {

+ 5 - 5
pages/batteryDetail/batteryDetail.vue

@@ -1,24 +1,24 @@
 <template>
 	<view class="battery-detail-main">
-		<navBar name="电池信息"  bgColor="#CFD1DE"></navBar>
+		<navBar :name="$t('电池信息')"  bgColor="#CFD1DE"></navBar>
 		<view class=" quantity-count">{{electricQuantity || 0}}<text class="quantity-text">%</text></view>
 		<view v-for="(item,index) of list" :key="index" class="battery-list-view">
 			<view class="battery-list flex-row flex-between">
-				<view class="battery-name">No.{{index + 1}}电池</view>
+				<view class="battery-name">No.{{index + 1}}{{ $t('电池') }}</view>
 				<view class="battery-id">MAC ID:{{item.battery_sn}}</view>
 			</view>
 			<view class="flex-row flex-around">
 				<view class="battery-device-info">
 					<view class="quantity-info">{{item.electric_quantity || 0}} <text class="quantity-text-1">%</text></view>
-					<view class="battery-info-text">剩余电量</view>
+					<view class="battery-info-text">{{ $t('剩余电量') }}</view>
 				</view>
 				<view class="battery-device-info">
 					<view class="quantity-info">{{(item.voltage).toFixed(2) || 0}}<text class="quantity-text-1"></text></view>
-					<view class="battery-info-text">电压</view>
+					<view class="battery-info-text">{{ $t('电压') }}</view>
 				</view>
 				<view class="battery-device-info">
 					<view class="quantity-info">{{item.battery_temp[0] || 0}} <text class="quantity-text-1">℃</text></view>
-					<view class="battery-info-text">温度</view>
+					<view class="battery-info-text">{{ $t('温度') }}</view>
 				</view>
 			</view>
 		</view>

+ 14 - 14
pages/batteryPackage/batteryPackage.vue

@@ -1,18 +1,18 @@
 <template>
 	<view class="battery-package-main">
-		<navBar bgColor="#fff" name="换电套餐" />
+		<navBar bgColor="#fff" :name="$t('换电套餐')" />
 		
 		<view class="package-icon-view flex-row">
 			<img src="https://qiniu.bms16.com/FqF7erLOB8OutmFnre7-mbTkwpZr" alt="">
-			<view class="package-icon-text flex-row">5秒换电,瞬间满电,畅享骑行新体验!</view>
+			<view class="package-icon-text flex-row">5{{ $t('秒换电,瞬间满电,畅享骑行新体验!') }}</view>
 		</view>
 		<view v-for="(item,index) of list" @click="selectItem(item)" :key="index" class="package-list-view" :class="{'active' : item.package_code == form.package_code }">
-			<view class="package-num-view flex-row"><text class="package-num">{{item.total_day || 0}}</text> 天 <text
-					class="package-num">{{(item.total_num || 0)=== 0 ? '不限次数' : item.total_num + '次'}}</text></view>
+			<view class="package-num-view flex-row"><text class="package-num">{{item.total_day || 0}}</text> {{ $t('') }} <text
+					class="package-num">{{(item.total_num || 0)=== 0 ? $t('不限次数') : item.total_num + $t('次')}}</text></view>
 			<view class="flex-row flex-between align-baseline">
-				<view v-if="item.tag.child_tag_name" class="apply-battery">适用电池:<text class="apply-battery-num">{{ !!Number(item.tag.main_tag_name) ? item.tag.main_tag_name + "V" : item.tag.main_tag_name}}{{!!Number(item.tag.child_tag_name) ? item.tag.child_tag_name + "Ah" : item.tag.child_tag_name }}</text></view>
+				<view v-if="item.tag.child_tag_name" class="apply-battery">{{ $t('适用电池:') }}<text class="apply-battery-num">{{ !!Number(item.tag.main_tag_name) ? item.tag.main_tag_name + "V" : item.tag.main_tag_name}}{{!!Number(item.tag.child_tag_name) ? item.tag.child_tag_name + "Ah" : item.tag.child_tag_name }}</text></view>
 				
-				<view v-else class="apply-battery">适用电池:<text class="apply-battery-num">{{ item.tag.main_tag_name }}</text></view>
+				<view v-else class="apply-battery">{{ $t('适用电池:') }}<text class="apply-battery-num">{{ item.tag.main_tag_name }}</text></view>
 				<view class="flex-row align-baseline">
 					<!-- <text class="package-price">${{item.viewShowMoney || '0.00'}}</text> -->
 					<text class="symbol-style">
@@ -25,10 +25,10 @@
 			</view>
 		</view>
 <!-- 		<view class="package-list-view">
-			<view class="package-num-view flex-row"><text class="package-num">10</text> 天 <text
-					class="package-num">10</text> 次</view>
+			<view class="package-num-view flex-row"><text class="package-num">10</text> {{ $t('') }} <text
+					class="package-num">10</text> {{ $t('') }}</view>
 			<view class="flex-row flex-between align-baseline">
-				<view class="apply-battery">适用电池:<text class="apply-battery-num">48v20Ah</text></view>
+				<view class="apply-battery">{{ $t('适用电池:') }}<text class="apply-battery-num">48v20Ah</text></view>
 				<view class="flex-row align-baseline">
 					<text class="package-price">$35.9</text>
 					<text class="symbol-style">
@@ -41,13 +41,13 @@
 			</view>
 		</view> -->
 		<view class="flex-row package-tip" style="flex-direction: column;">
-			<view class="flex-row" style="margin-bottom: 16rpx;">当前购买为虚拟IC卡</view>
-			<view class="flex-row">如想要体验实体IC卡功能,前往最近的门店领取IC卡</view>
+			<view class="flex-row" style="margin-bottom: 16rpx;">{{ $t('当前购买为虚拟') }}IC{{ $t('') }}</view>
+			<view class="flex-row">{{ $t('如想要体验实体') }}IC{{ $t('卡功能,前往最近的门店领取') }}IC{{ $t('') }}</view>
 		</view>
 		<view style="height: 200rpx;">
 			
 		</view>
-		<view v-if="form.package_code" @click="isShowToBuy = true"  class="pay-btn">立即购买</view>
+		<view v-if="form.package_code" @click="isShowToBuy = true"  class="pay-btn">{{ $t('立即购买') }}</view>
 		<payTypeModel @closeShow='isShowToBuy = false' :free_price='form.price' :isShowToBuy='isShowToBuy' @payToOrder='submit'></payTypeModel>
 	</view>
 </template>
@@ -84,12 +84,12 @@ import { fenToYuan, msg } from '../../utils/util.js';
 			async submit(payType){
 				this.form.pay_type = payType
 				if(!this.form.car_sn){
-					msg('请先绑定车辆!')
+					msg(this.$t('请先绑定车辆!'))
 					return
 				}
 				uni.showLoading({
 					mask:true,
-					title:'提交中...'
+					title:this.$t('提交中...')
 				})
 				let {
 					data

+ 14 - 14
pages/batteryRecord/batteryRecord.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="container-view">
-		<navBar name="换电记录" type="noBottom"></navBar>
+		<navBar :name="$t('换电记录')" type="noBottom"></navBar>
 		<view class="order-type-view flex-row flex-between">
 			<view v-if="car_info.car_sn" @click="srcFn(`/pages/carList/carList`)" class="car-model-list flex-row">
 				<view class="car-model-text">{{car_info.car_name}}</view><img class="right-corner-icon"
@@ -9,33 +9,33 @@
 		</view>
 		<view v-for="(item,index) of list" :key="index" class="batteryList">
 			<view class="header">
-				<view v-if="item.status == 1" class="h5">开始换电</view>
-				<view v-if="item.status == 2" class="h5">换电中</view>
-				<view v-if="item.status == 3" class="h5">换电成功</view>
-				<view v-if="item.status == 4" class="h5">换电失败</view>
-				<view v-if="item.status == 5" class="h5">部分成功</view>
-				<view v-if="item.status == 0" class="h5">未知</view>
+				<view v-if="item.status == 1" class="h5">{{ $t('开始换电') }}</view>
+				<view v-if="item.status == 2" class="h5">{{ $t('换电中') }}</view>
+				<view v-if="item.status == 3" class="h5">{{ $t('换电成功') }}</view>
+				<view v-if="item.status == 4" class="h5">{{ $t('换电失败') }}</view>
+				<view v-if="item.status == 5" class="h5">{{ $t('部分成功') }}</view>
+				<view v-if="item.status == 0" class="h5">{{ $t('未知') }}</view>
 				<view class="time">{{item.ctime}}</view>
 			</view>
 			<view class="dl">
-				<view class="dt">换电单号</view>
+				<view class="dt">{{ $t('换电单号') }}</view>
 				<view class="dd">{{item.order_sn}}</view>
 			</view>
 			<view class="dl">
-				<view class="dt">归还电池</view>
+				<view class="dt">{{ $t('归还电池') }}</view>
 				<view class="dd">{{item.btn_battery}}</view>
 			</view>
 			<view class="dl">
-				<view class="dt">借出电池</view>
+				<view class="dt">{{ $t('借出电池') }}</view>
 				<view class="dd">{{item.bor_battery}}</view>
 			</view>
 			<view class="dl">
-				<view class="dt">换电类型</view>
-				<view v-if="item.type == 0" class="dd">机柜换电</view>
-				<view v-if="item.type == 1" class="dd">门店换电</view>
+				<view class="dt">{{ $t('换电类型') }}</view>
+				<view v-if="item.type == 0" class="dd">{{ $t('机柜换电') }}</view>
+				<view v-if="item.type == 1" class="dd">{{ $t('门店换电') }}</view>
 			</view>
 			<view class="dl">
-				<view class="dt">电柜名称</view>
+				<view class="dt">{{ $t('电柜名称') }}</view>
 				<view class="dd">{{item.dev_name}}</view>
 			</view>
 			<!-- <image class="top" src="https://qiniu.bms16.com/FpVjOP5pZY1gXcCcS3TwI0GkywEe" mode=""></image> -->

+ 37 - 38
pages/bluetoothUnlock/bluetoothPair.vue

@@ -1,33 +1,32 @@
 <template>
 	<view class="bluetoothPair-page">
-		<navBar name="开启感应解锁"></navBar>
+		<navBar :name="$t('开启感应解锁')"></navBar>
 		<view class="car-wrap">
 			<view class="name">{{car_info.model_name}}</view>
 			<image :src="QINIU_URL + 'Fi6CPKj4-raA86oizhL3PiXD4DkH'" class="car-img" />
 			<view>
-				<viwe class="pair-title">是否配对改设备</viwe>
+				<viwe class="pair-title">{{ $t('是否配对改设备') }}</viwe>
 				<view class="pair-options">
-					<view class="btn cancle">取消</view>
-					<view class="btn confirm">配对</view>
+					<view class="btn cancle">{{ $t('取消') }}</view>
+					<view class="btn confirm">{{ $t('配对') }}</view>
 				</view>
 			</view>
 		</view>
 		<view class="pair-desc">
-			点击下方 “ <text class="t">开始配对</text>”,请在系统弹窗中选择 “<text class="t">配对</text>”,以完成功能开启。
+			{{ $t('点击下方') }} “ <text class="t">{{ $t('开始配对') }}</text>”,{{ $t('请在系统弹窗中选择') }} “<text class="t">{{ $t('配对') }}</text>”,{{ $t('以完成功能开启。') }}
 		</view>
 		<view class="pair-tips">
-			<view class="title">提示信息</view>
-			<view class="text">使用感应解锁功能时,请务必保证手机蓝牙功能开启,在蓝牙列表中忽略此设备会导致感应解锁失败</view>
+			<view class="title">{{ $t('提示信息') }}</view>
+			<view class="text">{{ $t('使用感应解锁功能时,请务必保证手机蓝牙功能开启,在蓝牙列表中忽略此设备会导致感应解锁失败') }}</view>
 		</view>
 
-		<!-- 测试指令!!!别删除 -->
-		<view class="pair-btn" style="bottom: 240rpx;" @tap="nearCloseUnlockBtn">关闭靠近解锁</view>
-		<!-- <view class="pair-btn" style="bottom: 240rpx;" @tap="nearTest">跳转解绑配对</view> -->
-		<!-- <view class="pair-btn" style="bottom: 240rpx;" @tap="nearUnlockBtn">靠近解锁</view> -->
-		<!-- <view class="pair-btn" style="bottom: 140rpx;" @tap="otaUpgrade">OTA升级</view> -->
-		<view class="pair-btn" @tap="initiateBluetoothPairing">开始配对</view>
-		<CenterDialog confirmText="配对" ref="centerDialog" />
-		<!-- <Notice v-model="showNotice" title="感应解锁已开启" btnText="关闭" type="bluetoothPail" text='注意:请勿在手机蓝牙中忽略“电动车蓝牙02"设备,否则感应解锁功能将无法使用' /> -->
+		<!-- {{ $t('测试指令!!!别删除') }} -->
+		<!-- <view class="pair-btn" style="bottom: 240rpx;" @tap="nearCloseUnlockBtn">{{ $t('关闭靠近解锁') }}</view> -->
+		<!-- <view class="pair-btn" style="bottom: 240rpx;" @tap="nearTest">{{ $t('跳转解绑配对') }}</view> -->
+		<!-- <view class="pair-btn" style="bottom: 240rpx;" @tap="nearUnlockBtn">{{ $t('靠近解锁') }}</view> -->
+		<!-- <view class="pair-btn" style="bottom: 140rpx;" @tap="otaUpgrade">OTA{{ $t('升级') }}</view> -->
+		<view class="pair-btn" @tap="initiateBluetoothPairing">{{ $t('开始配对') }}</view>
+		<CenterDialog :confirmText="$t('配对')" ref="centerDialog" />
 	</view>
 </template>
 
@@ -79,7 +78,7 @@
 				bluetooth.initBluetooth()
 				this.bluetoothClose()
 			}else{
-				common.simpleToast('蓝牙未启用,请先打开蓝牙')
+				common.simpleToast(this.$t('蓝牙未启用')+','+this.$t('请先打开蓝牙'))
 			}
 			
 		},
@@ -87,10 +86,10 @@
 			otaUpgrade(){
 				const me=this
 				common.loading()
-				console.log('开始升级');
+				console.log(this.$t('开始升级'));
 				bluetooth.sendOTACommand(this.car_sn, (res) => {
 						// uni.hideLoading();
-						// console.log('结束?????');
+						// console.log(this.$t('结束?????'));
 						
 						bluetooth.onConnectionStateChange(this.car_sn, 'index', (res) => {
 							uni.hideLoading();
@@ -99,9 +98,9 @@
 								console.log('蓝牙连接断开11111');
 								if(!res.connected){
 									uni.showModal({
-										title: '提示',
-										confirmText: '重新连接',
-										content: '蓝牙连接中断,是否重新连接?',
+										title: this.$t('提示'),
+										confirmText: this.$t('重新连接'),
+										content: this.$t('蓝牙连接中断,是否重新连接?'),
 										success: function(res) {
 											if (res.confirm) {
 												me.loadBluetooth();
@@ -112,7 +111,7 @@
 								// common.simpleToast('蓝牙连接断开1111', 2000)
 							} else {
 								console.log('蓝牙连接成功2222');
-								common.simpleToast('蓝牙连接成功', 2000)
+								common.simpleToast(this.$t('蓝牙连接成功'), 2000)
 							}
 						});
 						// if (!res.connected) {
@@ -124,10 +123,10 @@
 					});
 			},
 			 initiateBluetoothPairing() {
-				const deviceName = '电动车蓝牙';
+				const deviceName = this.$t('电动车蓝牙');
 				const pairingCode = '1234567890';
 				// this.$refs.centerDialog.open({
-				// 	title: '蓝牙配对请求',
+				// 	title: this.$t('蓝牙配对请求'),
 				// 	content: `<span style="color:#060809;font-weight:bold">${deviceName}</span>
     //             想与您配对,请确保显示的配对密钥为
     //             <span style="color:#060809;font-weight:bold">${pairingCode}</span>`
@@ -141,7 +140,7 @@
 				bluetooth.closeDevice(
 					this.car_sn,
 					() => {
-						console.log('关闭蓝牙连接');
+						console.log(this.$t('关闭蓝牙连接'));
 						// this.setData({
 						// 	bt_loading: false
 						// });
@@ -172,12 +171,12 @@
 			},
 			nearUnlockBtn(){
 				bluetooth.nearUnlock(this.car_sn, (res) => {
-						console.log('接近解锁下发成功');
+						console.log(this.$t('接近解锁下发成功'));
 					});
 			},
 			nearCloseUnlockBtn(){
 				bluetooth.nearCloseUnlock(this.car_sn, (res) => {
-						console.log('接近解锁下发成功');
+						console.log(this.$t('接近解锁下发成功'));
 					});
 			},
 			isBluetoothLock(mac_id){
@@ -185,7 +184,7 @@
 				bluetooth.getNearUnlockSet(mac_id, 'index',(res)=>{
 					
 					//下发打开接近解锁指令
-					console.log('获取接近解锁下发成功');
+					console.log(this.$t('获取接近解锁下发成功'));
 				})
 			},
 			loadBluetooth() {
@@ -217,7 +216,7 @@
 								
 								if (!res.connected &&!('lockType' in app.globalData.nearLockInfo)) {
 									// 蓝牙连接断开
-									console.log('蓝牙连接断开');
+									console.log(this.$t('蓝牙连接断开'));
 									if (!me.isReconnecting) { // 检查标志位
 										me.isReconnecting = true; // 设置标志位
 										setTimeout(() => {
@@ -226,7 +225,7 @@
 										}, 100);
 									}
 								} else {
-									console.log('蓝牙连接成功');
+									console.log(this.$t('蓝牙连接成功'));
 									// uni.hideLoading();
 									me.isBluetoothLock(device.mac_id)
 									
@@ -248,8 +247,8 @@
 								// 	var showContent = "连接失败,请尝试重新连接55555"
 								// }
 								// uni.showModal({
-								// 	title: '提示',
-								// 	confirmText: '重新连接',
+								// 	title: this.$t('提示'),
+								// 	confirmText: this.$t('重新连接'),
 								// 	content: showContent,
 								// 	success: function(res) {
 								// 		if (res.confirm) {
@@ -264,8 +263,8 @@
 								// console.log('蓝牙未打开或请在右上角设置授权小程序使用蓝牙66666');
 								uni.hideLoading();
 								uni.showModal({
-									title: '提示',
-									confirmText: '我知道了',
+									title: this.$t('提示'),
+									confirmText: this.$t('我知道了'),
 									content: '蓝牙未打开或请在右上角设置授权小程序使用蓝牙66666',
 									success: function(res) {
 										if (res.confirm) {
@@ -278,13 +277,13 @@
 					}, );
 				} else {
 					//蓝牙连接未成功
-					console.log('当前机柜未找到符合的蓝牙类型');
+					console.log(this.$t('当前机柜未找到符合的蓝牙类型'));
 					uni.hideLoading();
 					// uni.showModal({
-					// 	confirmText: '我知道了',
-					// 	content: '当前机柜未找到符合的蓝牙类型',
+					// 	confirmText: this.$t('我知道了'),
+					// 	content: this.$t('当前机柜未找到符合的蓝牙类型'),
 					// 	showCancel: false,
-					// 	title: '提示',
+					// 	title: this.$t('提示'),
 					// 	complete: (res) => {}
 					// });
 				}

+ 11 - 11
pages/bluetoothUnlock/unlockSet.vue

@@ -1,14 +1,14 @@
 <template>
 	<view class="unlockSet-page">
-		<navBar name="开启感应解锁" left="0"></navBar>
+		<navBar :name="$t('开启感应解锁')" left="0"></navBar>
 		<view class="lock-img"></view>
 		<view class="main">
-			<view class="primary-text">开启感应解锁后,携带手机靠近车辆并按Auto 键即可开机</view>
+			<view class="primary-text">{{ $t('开启感应解锁后,携带手机靠近车辆并按') }}Auto {{ $t('键即可开机') }}</view>
 			<view class="car-option-wrap">
 				<view class="img"></view>
 				<view class="opt-text-wrap">
 					<view class="text">{{ $t('按键解锁') }}</view>
-					<view class="sub-text">手机接近车辆后,长按Auto键即可解锁</view>
+					<view class="sub-text">{{ $t('手机接近车辆后,长按') }}Auto{{ $t('键即可解锁') }}</view>
 				</view>
 			</view>
 			<view class="sensitivity-set" @tap="openSensitivityDialog">
@@ -19,8 +19,8 @@
 
 		<u-popup v-model="showSensitivityDialog" mode="bottom" border-radius="28" @close="close">
 			<view class="popup-content">
-				<view class="title">灵敏度设置</view>
-				<view class="text">距离建议适中,设置过近会降低成功率,设置过远可能会有风险</view>
+				<view class="title">{{ $t('灵敏度设置') }}</view>
+				<view class="text">{{ $t('距离建议适中,设置过近会降低成功率,设置过远可能会有风险') }}</view>
 				<!-- <slider v-model="sensitivityValue" @change="changeValue"   height="16" :step="1" :min="0" :max="4" activeColor="#060809" backgroundColor="#F1F3F4" block-color="#060809" block-size="20"></slider> -->
 				<!-- <u-slider v-model="sensitivityValue"  height="16"  :step="1"  activeColor="#060809" backgroundColor="#F1F3F4" block-color="#060809"></u-slider> -->
 
@@ -30,9 +30,9 @@
 					<view class="slider-bg"></view>
 				</view>
 				<view class="flex-row step-text">
-					<text>最近</text>
-					<text>适中</text>
-					<text>最远</text>
+					<text>{{ $t('最近') }}</text>
+					<text>{{ $t('适中') }}</text>
+					<text>{{ $t('最远') }}</text>
 				</view>
 				<!-- <slider v-model="sensitivityValue" @change="changeValue"   height="16rpx" :step="1" :min="0" :max="4" activeColor="#060809" backgroundColor="#F1F3F4" block-color="#8A6DE9" block-size="20"></slider> -->
 				<!-- <u-slider v-model="sensitivityValue" height="16rpx" inactive-color="#F1F3F4" active-color="#060809" :step="1" :min="0" :max="4"></u-slider> -->
@@ -72,7 +72,7 @@
 				this.end = pageX
 				if(this.start > this.Move ){
 					if((this.start - this.Move) > 20){
-						console.log('左')
+						console.log(this.$t('左'))
 						if(this.sensitivityValue==0) return
 						this.sensitivityValue --
 						this.changeValue()
@@ -99,14 +99,14 @@
 				const car_sn = uni.getStorageSync('car_info').car_sn
 				common.loading();
 				bluetooth.setSensitivity(car_sn, value, () => {
-					console.log('设置灵敏度指令成功');
+					console.log(this.$t('设置灵敏度指令成功'));
 				})
 			},
 			closeNeerUnlock(){
 				const car_sn = uni.getStorageSync('car_info').car_sn
 				common.loading();
 				bluetooth.nearCloseUnlock(car_sn,()=>{
-					console.log('关闭接近解锁成功');
+					console.log(this.$t('关闭接近解锁成功'));
 				})
 			}
 		}

+ 16 - 16
pages/cabinetDetail/cabinetDetail.vue

@@ -17,7 +17,7 @@
 			</view>
 
 			<view v-if="tagList.length==0" class="no_battery">
-					无可用电池
+					{{ $t('无可用电池') }}
 				</view>
 				<view class="flex-row" style="justify-content: center;">
 					<view class="icon-box flex-row">
@@ -35,7 +35,7 @@
 					<view class="flex-row">
 						<img class="icon_grid"
 							:src="!isWorkTimer ? 'https://zxappfile.bms16.com/zx_admin/cab_timer.png' : 'https://zxappfile.bms16.com/zx_admin/cab_timer_work.png'">
-						<view :class="isWorkTimer ? 'grid_text_1' : 'grid_text_rest' ">{{isWorkTimer ? '营业中' : '已休息'}}
+						<view :class="isWorkTimer ? 'grid_text_1' : 'grid_text_rest' ">{{isWorkTimer ? $t('营业中'): t('已休息')}}
 						</view>
 					</view>
 					<view class="grid_text_2">
@@ -45,21 +45,21 @@
 				<view @tap="navToCabinet" class="right_grid flex-between">
 					<view>
 						<view class="cab_distance">
-							直线距您{{cabinetInfo.distance>1?(cabinetInfo.distance+'千米'):(cabinetInfo.distance*1000+'米')}}
+							{{ $t('直线距您') }}{{cabinetInfo.distance>1?(cabinetInfo.distance+$t('千米')):(cabinetInfo.distance*1000+$t('米'))}}
 						</view>
 						<view class="cab_address">{{cabinetInfo.address}}</view>
 					</view>
 					<view>
 						<img class="icon_grid_1" src="https://zxappfile.bms16.com/zx_admin/cab_nav.png">
-						<view class="grid_nav">导航</view>
+						<view class="grid_nav">{{ $t('导航') }}</view>
 					</view>
 				</view>
 			</view>
 		</view>
 		<view class="battery-list-view">
 			<view class="battery-title flex-row flex-between">
-				<text class="blod-text">格口详情</text>
-				<text class="cabinet-ref">电柜编号:<text class="cabinet-ref-text"> {{cabinetInfo.dev_id}}</text></text>
+				<text class="blod-text">{{ $t('格口详情') }}</text>
+				<text class="cabinet-ref">{{ $t('电柜编号:') }}<text class="cabinet-ref-text"> {{cabinetInfo.dev_id}}</text></text>
 			</view>
 			<view class="battery-list-main flex-row flex-start">
 				<view class="battery-list" v-for="(item, index) in batteryList" :key="item.unique">
@@ -75,12 +75,12 @@
 									<img class="status-img" src="https://zxappfile.bms16.com/zx_admin/reservation.png"
 										alt="">
 								</view>
-								<view class="tip-text tip-text-g1">已预约</view>
+								<view class="tip-text tip-text-g1">{{ $t('已预约') }}</view>
 							</view>
 						</block> -->
-					<!-- 没有预约-->
+					<!-- {{ $t('没有预约') }}-->
 					<!-- <block v-else> -->
-					<!-- 空仓或者仓门不可用-->
+					<!-- {{ $t('空仓或者仓门不可用') }}-->
 					<view v-if="!item.cabinet_battery_sn||(item.fault_reason&&item.fault_reason.length>0)"
 						:class="(item.fault_reason&&item.fault_reason.length>0)?'battery-list-s':'battery-list-g'">
 						<!-- <view class="namber-view flex-row">
@@ -108,12 +108,12 @@
 						</view>
 						<!-- <view class="battery-ref">124513215</view> -->
 						<view v-if="!item.cabinet_battery_sn&&!(item.fault_reason&&item.fault_reason.length>0)"
-							class="tip-text tip-text-g">空仓</view>
+							class="tip-text tip-text-g">{{ $t('空仓') }}</view>
 						<view v-if="item.fault_reason&&item.fault_reason.length>0" class="tip-text tip-text-u">
 							{{item.fault_reason[0]}}
 						</view>
 					</view>
-					<!-- 满电或者电量未满 -->
+					<!-- {{ $t('满电或者电量未满') }} -->
 					<view v-else :class="(item.is_full_soc==1)?'battery-list-b':'battery-list-o'">
 						<view class="namber-view flex-row flex-between">
 							<view :class="(item.is_full_soc==1)?'namber namber-b':'namber namber-o'">{{item.box_sn}}
@@ -131,8 +131,8 @@
 								<!-- 0168 8256 9608 -->
 							</view>
 						</view>
-						<view v-if="item.is_full_soc==1" class="tip-text tip-text-b">电池可用</view>
-						<view v-else class="tip-text tip-text-o">待充满</view>
+						<view v-if="item.is_full_soc==1" class="tip-text tip-text-b">{{ $t('电池可用') }}</view>
+						<view v-else class="tip-text tip-text-o">{{ $t('待充满') }}</view>
 					</view>
 					<!-- </block> -->
 				</view>
@@ -266,9 +266,9 @@
 			getBindBattery(packInfo) {
 				this.loadNowCabinetDetail(this.dev_id, this.myLocation, packInfo.order_sn, (bindSuccess) => {
 					uni.showModal({
-						title: '提示',
-						content: '领取电池成功',
-						confirmText: '确定',
+						title: this.$t('提示'),
+						content: this.$t('领取电池成功'),
+						confirmText: this.$t('确定'),
 						showCancel: false,
 						success: function(res) {
 							if (res.confirm) {

+ 15 - 15
pages/carDetail/carDetail.vue

@@ -21,29 +21,29 @@
 			<view style="flex-wrap: wrap;justify-content: flex-start;" class="flex-row car-detail-time">
 				<view v-for="(item,index) in car_detail.rental_setting" :key="index" @click="tapSelectType(item)"
 					:class="['time-unit',selectType==item.hire_duration_unit? 'time-unit-i':'']">
-					<text v-if="item.hire_duration_unit==1">日租</text>
-					<text v-if="item.hire_duration_unit==2">月租</text>
-					<text v-if="item.hire_duration_unit==3">年租</text>
-					<text v-if="item.hire_duration_unit==4">时租</text>
-					<text v-if="item.hire_duration_unit==5">分租</text>
-					<text v-if="item.hire_duration_unit==6">周租</text>
-					<text v-if="item.hire_duration_unit==7">季租</text>
+					<text v-if="item.hire_duration_unit==1">{{ $t('日租') }}</text>
+					<text v-if="item.hire_duration_unit==2">{{ $t('月租') }}</text>
+					<text v-if="item.hire_duration_unit==3">{{ $t('年租') }}</text>
+					<text v-if="item.hire_duration_unit==4">{{ $t('时租') }}</text>
+					<text v-if="item.hire_duration_unit==5">{{ $t('分租') }}</text>
+					<text v-if="item.hire_duration_unit==6">{{ $t('周租') }}</text>
+					<text v-if="item.hire_duration_unit==7">{{ $t('季租') }}</text>
 				</view>
 
 				<view v-if="car_detail.sell_price != 0" @click="tapSelectType({hire_duration_unit:100,hire_price:car_detail.sell_price})"
 					:data-select_type="100" :data-price="car_detail.sell_price"
-					:class="['time-unit',selectType==100? 'time-unit-i':'']">购买</view>
+					:class="['time-unit',selectType==100? 'time-unit-i':'']">{{ $t('购买') }}</view>
 			</view>
 		</view>
 		<!-- <view class="free-num-model">
 			<view class="flex-row flex-between">
 				<view class="free-num-view">
 					<img style="width: 40rpx;height: 40rpx;" src="https://qiniu.bms16.com/FtlfBtBE5-TeTI5EdrciX_u8u_Sx" alt="">
-					<text class="free-num-text">免费换电次数</text>
+					<text class="free-num-text">{{ $t('免费换电次数') }}</text>
 				</view>
-				<view class="free-num-time">1 次/日</view>
+				<view class="free-num-time">1 {{ $t('') }}/{{ $t('') }}</view>
 			</view>
-			<view class="free-num-tip">日租享1次免费换电数,超出后需要单独支付换电费用;</view>
+			<view class="free-num-tip">{{ $t('日租享') }}1{{ $t('次免费换电数,超出后需要单独支付换电费用;') }}</view>
 		</view> -->
 		<useGuidance />
 		<view class="card-car-detail">
@@ -83,11 +83,11 @@
 			</view>
 		</view>
 		<view class="nodes">
-			<rich-text v-if="car_detail.desc" :nodes="car_detail.desc"></rich-text>
+			<rich-text v-if="car_detail.model_desc" :nodes="car_detail.model_desc"></rich-text>
 		</view>
 		<view style="height: 150rpx;"></view>
 		<view class="use-car-view flex-row">
-			<view @tap="useCarBtn" class="use-car-btn">我要用车</view>
+			<view @tap="useCarBtn" class="use-car-btn">{{ $t('我要用车') }}</view>
 		</view>
 		<carPlan v-if="showCarPlan" @changeSelectType="changeSelectType" @closeShowMore="closeShowMore" :params="params"
 			:selectType="selectType" />
@@ -183,8 +183,8 @@
 				const phone = this.car_detail.link_phone
 				// const phone = 18170410707
 				uni.showModal({
-					content: `您是否要拨打电话${phone}?`,
-					confirmText: '确定',
+					content: `${this.$t('您是否要拨打电话')+phone}?`,
+					confirmText: this.$t('确定'),
 					success: (res) => {
 						if (res.confirm) {
 							uni.makePhoneCall({

+ 1 - 1
pages/carFunctionSet/more.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="zx-container car-function-set-more">
-		<navBar name="更多功能" left="0"></navBar>
+		<navBar :name="$t('更多功能')" left="0"></navBar>
 		<view style='margin-top: 20rpx;' class="fn-wrap">
 			<view class="title">
 				{{ $t('固定导航栏') }}

+ 5 - 5
pages/carFunctionSet/unbind.vue

@@ -1,6 +1,6 @@
 <template>
 	<view>
-		<navBar name="解除绑定" bgColor="#fff"></navBar>
+		<navBar :name="$t('解除绑定')" bgColor="#fff"></navBar>
 		<view class="zx-container unbind-page">
 		  <view class="zx-wrap car-info-wrap">
 		    <image :src="carInfo.model_images" class="car-img" />
@@ -21,11 +21,11 @@
 		    <view class="title">{{ $t('提示信息') }}</view>
 		    <view class="text">
 		      <text>1、</text>
-		      解绑后,您将失去当前设备的控制权,其他人可以连接绑定您的设备。
+		      {{ $t('解绑后,您将失去当前设备的控制权,其他人可以连接绑定您的设备。') }}
 		    </view>
 		    <view class="text">
 		      <text>2、</text>
-		      解绑后将立即删除家庭账号,感应解锁等数据。
+		      {{ $t('解绑后将立即删除家庭账号,感应解锁等数据。') }}
 		    </view>
 		  </view>
 		  <view
@@ -93,14 +93,14 @@
         this.showConfirm = true
       },
       async unbindSubmit() {
-        console.log('解除绑定', this.passwd)
+        console.log(this.$t('解除绑定'), this.passwd)
         let { data } = await request.postApi(config.API_FLK_CAR_UNBIND_CAR, {
           car_sn: this.carInfo.car_sn,
           passwd: this.passwd
         })
         if (data.code == 200) {
           //返回首页
-          common.simpleToast('解绑成功!')
+          common.simpleToast(this.$t('解绑成功!'))
           setTimeout(()=> {
             uni.switchTab({
               url: `/pages/index/index`,

+ 7 - 7
pages/carList/carList.vue

@@ -1,6 +1,6 @@
 <template>
 	<view>
-	<navBar name="请选择设备" type="select"/>
+	<navBar :name="$t('请选择设备')" type="select"/>
 	<view class="car-list">
 		<view v-for="(item,index) of carList" :key="index" @click="clickItem(item)"  :class="['car-list-card',  car_info.car_sn == item.car_sn?'car-list-card-i' :'']">
 		    <view class="flex-row">
@@ -12,17 +12,17 @@
 			<image class="img" :src="item.model_images" mode="aspectFit"></image>
 			<view v-if="car_info.car_sn == item.car_sn" class="select">
 				<image class="icon1" src="/static/resource/images/gyq_select.png" mode=""></image>
-				<text>当前选择</text>
+				<text>{{ $t('当前选择') }}</text>
 			</view>
 		</view>
 		<!-- <view class="options">
-			<view @click="navCarDetail" class="btn btn-left">{{ $t('租赁设备') }}</view>
-			<view class="btn btn-right">{{ $t('绑定设备') }}</view>
+			<view @click="navCarDetail" class="btn btn-left">{{ $t('{{ $t('租赁设备') }}') }}</view>
+			<view class="btn btn-right">{{ $t('{{ $t('绑定设备') }}') }}</view>
 		</view> -->
 		<!-- <Confirm
         v-model="showConfirm"
         :dialog-info="{
-          text: $t('是否切换到车辆' + clickItemData.car_name ),
+          text: $t('{{ $t('是否切换到车辆') }}' + clickItemData.car_name ),
           showCancelButton: true
         }"
         @confirm="unbindSubmit"
@@ -98,7 +98,7 @@
 						app.globalData.connectionState={}
 						
 						me.bluetoothClose()
-						common.simpleToast('切换成功!')
+						common.simpleToast(this.$t('切换成功!'))
 						setTimeout(()=> {
 							uni.navigateBack({
 								delta:1
@@ -132,7 +132,7 @@
 				bluetooth.closeDevice(
 					this.car_info.car_sn,
 					() => {
-						console.log('关闭蓝牙连接');
+						console.log(this.$t('关闭蓝牙连接'));
 						// this.setData({
 						// 	bt_loading: false
 						// });

+ 12 - 12
pages/carLocation/carLocation.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="">
-		<navBar name="车辆位置"></navBar>
+		<navBar :name="$t('车辆位置')"></navBar>
 		<!-- #ifndef APP -->
 		<map @touchmove="hiddenNav" @markertap="showNav" style="width: 100%; height: calc(100vh - 506rpx);" :latitude="latitude"
 			:longitude="longitude" :markers="markers" show-location>
@@ -12,19 +12,19 @@
 			longitude:car_info.longitude,
 		}'></googleMap>
 		<!-- #endif -->
-		<!-- 由于cover-view一些样式及点击事件不支持 -->
-		<!-- 气泡内容 -->
+		<!-- {{ $t('由于') }}cover-view{{ $t('一些样式及点击事件不支持') }} -->
+		<!-- {{ $t('气泡内容') }} -->
 		<view v-if="is_show_nav" class="block-view">
 			<view class="custom-bubble-name">{{address}}</view>
 			<view class="flex-row" style="justify-content: flex-end;">
 				<!-- <view class="flex-row block-car-time align-center">
 					<img style="width: 52rpx;height: 52rpx;" src="https://qiniu.bms16.com/FhKkijkN__9UzhYNgamBFSggIlYo" alt="">
-					<text class="car-time-text">已驻车 <text class="car-time-text-b">9</text>分钟</text>
+					<text class="car-time-text">{{ $t('已驻车') }} <text class="car-time-text-b">9</text>{{ $t('分钟') }}</text>
 				</view> -->
 				<view class="" @tap="navAddress"><img style="width: 112rpx;height: 64rpx;" src="https://qiniu.bms16.com/Fts38M35doVjK09GfOza5qD-wwkK" alt=""></view>
 			</view>
-			<view v-if="car_info.heart_time" class="updata-time">更新于 {{car_info.heart_time}} </view>
-			<view @tap="findCar"  class="car-config-btn">闪灯鸣笛</view>
+			<view v-if="car_info.heart_time" class="updata-time">{{ $t('更新于') }} {{car_info.heart_time}} </view>
+			<view @tap="findCar"  class="car-config-btn">{{ $t('闪灯鸣笛') }}</view>
 		</view>
 	</view>
 </template>
@@ -65,7 +65,7 @@ import googleMap from "@/component/googleMap/googleMap";
 			car_info.latitude = `${car_info.latitude}`
 			car_info.longitude = `${car_info.longitude}`
 			this.car_info = car_info
-			this.car_info.heart_time = this.car_info.heart_time ?  dayjs(this.car_info.heart_time*1000).format('YYYY-MM-DD hh:mm:ss') : '未知时间'
+			this.car_info.heart_time = this.car_info.heart_time ?  dayjs(this.car_info.heart_time*1000).format('YYYY-MM-DD hh:mm:ss') : this.$t('未知时间')
 			this.init()
 			// this.longitude = {
 			// 	longitude:car_info.longitude,
@@ -189,15 +189,15 @@ import googleMap from "@/component/googleMap/googleMap";
 			findCar(){
 				const me=this
 				uni.showModal({
-					title: '提示',
-					content: '您确认开启闪灯鸣笛吗',
+					title: this.$t('提示'),
+					content: this.$t('您确认开启闪灯鸣笛吗'),
 					showCancel: true,
-					cancelText: '取消',
-					confirmText: '确定',
+					cancelText: this.$t('取消'),
+					confirmText: this.$t('确定'),
 					success: function(res) {
 						if (res.confirm) {
 							me.setData({
-								popText:'闪灯鸣笛',
+								popText:this.$t('闪灯鸣笛'),
 								cmdType:'findCar',
 							})
 							me.tapBlueToothCmd('',true)

+ 5 - 5
pages/contract/contract.vue

@@ -3,15 +3,15 @@
 		<rich-text class="rich_text" :nodes="htmlContent"></rich-text>
 		<view class="bottom_view flex-row flex-between">
 			<view v-if="isAgree&&isBottom" @tap="clickAgreeContract" class="click_view">
-				本人已知晓上述内容
+				{{ $t('本人已知晓上述内容') }}
 			</view>
 			<view v-if="!isAgree&&isBottom" class="click_view_gray">
-				阅读合同倒计时{{countdownTime}}秒
+				{{ $t('阅读合同倒计时') }}{{countdownTime}}{{ $t('') }}
 			</view>
 	
 			<view v-if="orderSign == 1" @tap="clickWriteSign" class="write_sign" style="background-color: #ffffff;">
 				<image class="write_sign_img" src="https://qiniu.bms16.com/appsrc%2Fhire%2Fwrite_sign.png" />
-				<view class="sign_view">{{orderSignUrl == ''?'签名':'重新签名'}}</view>
+				<view class="sign_view">{{orderSignUrl == ''?$t('签名'):$t('重新签名')}}</view>
 			</view>
 		</view>
 	</view>
@@ -114,8 +114,8 @@
 			clickAgreeContract() {
 				// if (this.orderSign == 1 && this.orderSignUrl == '') {
 				// 	uni.showModal({
-				// 		title: '提示',
-				// 		content: '您当前没有手写签名,是否要进行填写',
+				// 		title: this.$t('提示'),
+				// 		content: this.$t('您当前没有手写签名,是否要进行填写'),
 				// 		showCancel: true,
 				// 		success: function(res) {
 				// 			if (res.confirm) {

+ 6 - 6
pages/dashboard/dashboard.vue

@@ -19,7 +19,7 @@
 				<view :style="{width:(((infoList.remain_mail || 0) / (infoList.endurance /1000) || 0) * 100) + '%'}"
 					class="is_progress"></view>
 				<view class="text">
-					<text style="margin-left: 20rpx;">续航</text>
+					<text style="margin-left: 20rpx;">{{ $t('续航') }}</text>
 					<!-- <text style="margin-left: 16rpx;"> {{(infoList.remain_mail || 0/1000).toFixed(0) || 0}}km </text> -->
 					<text style="margin-left: 16rpx;"> {{ infoList.remain_mail > 0 ? infoList.remain_mail : 0 }}km </text>
 					
@@ -85,22 +85,22 @@
 				if (data.code == 200) {
 					this.infoList = data.data.data
 					this.infoList.list = [{
-							label: '骑行里程',
+							label: this.$t('骑行里程'),
 							prop: this.infoList.current_mail || 0,
 							unit: 'km'
 						},
 						{
-							label: '骑行时长',
-							prop: (this.infoList.current_time / 60 /60).toFixed(2) || 0,
+							label: this.$t('骑行时长'),
+							prop: (this.infoList.current_time / 60 /60).toFixed(1) || 0,
 							unit: 'h'
 						},
 						{
-							label: '最大速度',
+							label: this.$t('最大速度'),
 							prop: this.infoList.max_speed || 0,
 							unit: 'km/h'
 						},
 						{
-							label: '平均速度',
+							label: this.$t('平均速度'),
 							prop: this.infoList.avg_speed || 0,
 							unit: 'km/h'
 						},

+ 5 - 5
pages/deviceInfo/deviceInfo.vue

@@ -4,27 +4,27 @@
 		<view class="device-name">{{list.car_name}}</view>
 		<view class="block-card">
 			<view class="info-view">
-				<view class="info-title">车架号</view>
+				<view class="info-title">{{ $t('车架号') }}</view>
 				<view class="info-value">{{list.frame_no}}</view>
 			</view>
 			<view class="info-view">
-				<view class="info-title">设备编号</view>
+				<view class="info-title">{{ $t('设备编号') }}</view>
 				<view class="info-value">{{car_sn}}</view>
 			</view>
 			<view class="info-view">
-				<view class="info-title">车辆总里程</view>
+				<view class="info-title">{{ $t('车辆总里程') }}</view>
 				<view class="info-value">{{(Number(list.total_mil) / 1000).toFixed(2)}}km</view>
 			</view>
 		</view>
 		<view class="flex-row">
 			<view class="block-card-1" style="margin-right: 18rpx;">
 				<img class="info-icon" src="https://qiniu.bms16.com/FoyFReERWQ5jmqQIk0Aj9V7SWGR2" alt="">
-				<view class="info-text">中控硬件</view>
+				<view class="info-text">{{ $t('中控硬件') }}</view>
 				<view class="info-vosion">{{list.control_hardware}}</view>
 			</view>
 			<view class="block-card-1">
 				<img class="info-icon" src="https://qiniu.bms16.com/Fvf3btY0699U2P65cRxYGDBADNHr" alt="">
-				<view class="info-text">中控软件</view>
+				<view class="info-text">{{ $t('中控软件') }}</view>
 				<view class="info-vosion">{{list.control_software}}</view>
 			</view>
 		</view>

+ 15 - 15
pages/feedback/index.vue

@@ -1,8 +1,8 @@
 <template>
 	<view class="container">
-		<navBar name="意见反馈" left="0"></navBar>
+		<navBar :name="$t('意见反馈')" left="0"></navBar>
 		<view style="display: flex;">
-			<text class="title">问题类型</text>
+			<text class="title">{{ $t('问题类型') }}</text>
 			<text style="color: red; margin-left: 10rpx;">*</text>
 		</view>
 		<view class="title-wrapper">
@@ -12,20 +12,20 @@
 		</view>
 		<view style="margin: 64rpx 0;">
 			<view style="display: flex;">
-				<text class="title">问题描述</text>
+				<text class="title">{{ $t('问题描述') }}</text>
 				<text style="color: red; margin-left: 10rpx;">*</text>
 			</view>
 			<view class="text-description-input">
 				<textarea :enableNative="false" @input="inputContent" :value="content"
-					placeholder-class="description-placeholder" placeholder="请详细说明,以便我们解决问题,最多可填写300字。"
+					placeholder-class="description-placeholder" :placeholder="$t('请详细说明,以便我们解决问题,最多可填写')+300+$t('字。')"
 					maxlength="300"></textarea>
 			</view>
 		</view>
 		<view>
 			<view class="title-img">
-				<!-- <view class="title-img-text">问题图片</view> -->
+				<!-- <view class="title-img-text">{{ $t('问题图片') }}</view> -->
 				<view style="display: flex;">
-					<text class="title">问题图片</text>
+					<text class="title">{{ $t('问题图片') }}</text>
 					<text style="color: red; margin-left: 10rpx;">*</text>
 				</view>
 				<view class="img-text">{{ imgList.length }} / 3</view>
@@ -46,9 +46,9 @@
 
 		</view>
 		<view class="submit-btn-view">
-			<view v-if="typeId != '' && imgList.length != 0 && content != ''" class="submit" @tap="submitFeedback">提交
+			<view v-if="typeId != '' && imgList.length != 0 && content != ''" class="submit" @tap="submitFeedback">{{ $t('提交') }}
 			</view>
-			<view v-else class="submit-btn">提交</view>
+			<view v-else class="submit-btn">{{ $t('提交') }}</view>
 		</view>
 	</view>
 </template>
@@ -66,23 +66,23 @@
 			return {
 				typeList: [{
 						type_id: 1,
-						type_name: '车辆'
+						type_name: this.$t('车辆')
 					},
 					{
 						type_id: 2,
-						type_name: '电池'
+						type_name: this.$t('电池')
 					},
 					{
 						type_id: 3,
-						type_name: '电柜'
+						type_name: this.$t('电柜')
 					},
 					{
 						type_id: 4,
-						type_name: '应用操作'
+						type_name: this.$t('应用操作')
 					},
 					{
 						type_id: 5,
-						type_name: '其他'
+						type_name: this.$t('其他')
 					},
 				],
 				typeId: '',
@@ -131,7 +131,7 @@
 			inputContent(e) {
 				const content_text = e.detail.value
 				if (content_text.length >= 300) {
-					common.simpleToast('最多输入300字');
+					common.simpleToast(this.$t('最多输入')+300+this.$t('字'));
 				} else {
 					this.setData({
 						content: content_text
@@ -177,7 +177,7 @@
 						// that.setData({
 						// 	isDiabled:true
 						// })
-						common.simpleToast('提交成功')
+						common.simpleToast(this.$t('提交成功'))
 						setTimeout(() => {
 							wx.navigateBack({
 								delta: 1 // 返回上一级页面

+ 8 - 8
pages/index/components/AndroidUnlockAuth.vue

@@ -3,7 +3,7 @@
     <view class="dialog-content">
       <view class="title">{{ $t('开启感应解锁') }}</view>
       <view class="tips">
-        为保证 感应解锁 的正常使用,请依次开以下权限,开启后可以显著提高解锁成功率,且不会明显增加手机电量消耗
+        {{ $t('为保证') }} {{ $t('感应解锁') }} {{ $t('的正常使用,请依次开以下权限,开启后可以显著提高解锁成功率,且不会明显增加手机电量消耗') }}
       </view>
       <view class="authorization-wrap">
         <view class="corner-mark">{{ $t('授权引导') }}</view>
@@ -60,10 +60,10 @@ export default {
   //   authStepList() {
   //     const lang = v => this.$t(v)
   //     return [
-  //       { title: ('位置权限'), type: 'location', desc: '打开手机定位,并运行APP始终使用' },
-  //       { title: ('电池优化'), type: 'battery', desc: '打开电池优化设置, 将弗兰克APP加入保护名单' },
-  //       // { title: ('后台运行'), type: 'backstage', desc: '打开后台运行权限 清选择手动控制' },
-  //       // { title: ('打开应用锁'), type: 'appLock', desc: '打开应用权限锁' }
+  //       { title: (this.$t('位置权限')), type: 'location', desc: '打开手机定位,并运行APP始终使用' },
+  //       { title: (this.$t('电池优化')), type: 'battery', desc: '打开电池优化设置, 将弗兰克APP加入保护名单' },
+  //       // { title: (this.$t('后台运行')), type: 'backstage', desc: '打开后台运行权限 清选择手动控制' },
+  //       // { title: (this.$t('打开应用锁')), type: 'appLock', desc: this.$t('打开应用权限锁') }
   //     ]
   //   }
   // },
@@ -87,11 +87,11 @@ export default {
       return result == AUTHORIZ
       // var strStatus
       // if (result == 1) {
-      //   strStatus = "已获得授权"
+      //   strStatus = this.$t('已获得授权')
       // } else if (result == 0) {
-      //   strStatus = "未获得授权"
+      //   strStatus = this.$t('未获得授权')
       // } else {
-      //   strStatus = "被永久拒绝权限"
+      //   strStatus = this.$t('被永久拒绝权限')
       // }
       // permision.gotoAppPermissionSetting()
       // uni.showModal({

+ 12 - 12
pages/index/components/IosUnlockAuth.vue

@@ -1,22 +1,22 @@
 <template>
     <u-popup v-model="showDialog" mode="bottom" border-radius="28" @close="close">
         <view class="dialog-content">
-            <view class="title">请先开启位置授权</view>
-            <view class="tips">为保证 感应解锁 的正常使用,请 开启位置授权 并 打开精准位置 开关,可提高解锁成功率,且不会明显增加手机电量消耗。</view>
+            <view class="title">{{ $t('请先开启位置授权') }}</view>
+            <view class="tips">{{ $t('为保证') }} {{ $t('感应解锁') }} {{ $t('的正常使用,请') }} {{ $t('开启位置授权') }} {{ $t('') }} {{ $t('打开精准位置') }} {{ $t('开关,可提高解锁成功率,且不会明显增加手机电量消耗。') }}</view>
             <view class="authorization-wrap">
-                <view class="corner-mark">授权引导</view>
+                <view class="corner-mark">{{ $t('授权引导') }}</view>
                  <view class="step-item">
                     <view class="address-title-view flex-row">
                     	<image style="width: 62rpx;height: 84rpx;" src="https://qiniu.bms16.com/Fve-wxQ2MHOLXoQ3IZ7QdcKoLlwW" mode=""></image>
 						<view class="address-title">
-							<view>位置权限</view>
-							<view class="address-text-tip">打开手机定位,并允许APP <text style="color: #0A59F7;">「始终」</text>使用</view>
+							<view>{{ $t('位置权限') }}</view>
+							<view class="address-text-tip">{{ $t('打开手机定位,并允许') }}APP <text style="color: #0A59F7;">{{ $t('「始终」') }}</text>{{ $t('使用') }}</view>
 						</view>
 					</view>
 					<view v-for="(item, idx) in authStepList" :key="idx" @tap="enablePermissions(item)" class="permission-set-view">
 					<!-- <view class="permission-set-view" style="margin-bottom: 42rpx;"> -->
 						<view class="icon-step"><image style="width: 160rpx;height: 78rpx;" src="https://qiniu.bms16.com/FvTiAtpG8QOlJxGrNquB-yI396Be" /></view>
-						<view class="step-text">第<text style="font-size: 40rpx; font-weight: 600;margin: 0 6rpx;"> {{ idx+1 }} </text>步</view>
+						<view class="step-text">{{ $t('') }}<text style="font-size: 40rpx; font-weight: 600;margin: 0 6rpx;"> {{ idx+1 }} </text>{{ $t('') }}</view>
 						<view class="permission-tip-view flex-row flex-between">
 							<view class="permission-tip flex-row">
 								{{ item.desc }}
@@ -28,27 +28,27 @@
 						</view>
 						<view class="permission-top-view">{{ item.title }}</view>
 						<view v-if="item.type=='awalysLocation'" class="permission-one flex-row flex-between">
-							<text class="alaways-text">始终</text>
+							<text class="alaways-text">{{ $t('始终') }}</text>
 							<image class="check-icon" src="https://qiniu.bms16.com/Fj595k1vS6PArDsvoPTkO8PcyqRc" mode=""></image>
 						</view>
 					</view>
 					<!-- <view class="permission-set-view">
 						<view class="icon-step"><image style="width: 160rpx;height: 78rpx;" src="https://qiniu.bms16.com/FvTiAtpG8QOlJxGrNquB-yI396Be" /></view>
-						<view class="step-text">第<text style="font-size: 40rpx; font-weight: 600;margin: 0 6rpx;"> 2 </text>步</view>
+						<view class="step-text">{{ $t('') }}<text style="font-size: 40rpx; font-weight: 600;margin: 0 6rpx;"> 2 </text>{{ $t('') }}</view>
 						<view class="permission-tip-view flex-row flex-between">
 							<view class="permission-tip flex-row">
-								开启请准位置开关
+								{{ $t('开启请准位置开关') }}
 								<image style="width: 28rpx;height: 28rpx;" src="https://qiniu.bms16.com/FrLjB8R1kL_AQNJjWUaKcDkLC-8O" />
 							</view>
 							<view :class="['turn-on-switch', state && 'is-open']">
-								{{ state ? $t('已开启') : $t('未开启') }}
+								{{ state ? $t('{{ $t('已开启') }}') : $t('{{ $t('未开启') }}') }}
 							</view>
 						</view>
-						<view class="permission-top-view">精准位置</view>
+						<view class="permission-top-view">{{ $t('精准位置') }}</view>
 					</view> -->
                  </view>
             </view>
-            <view class="btn" @tap="linkTo" >我已开启</view>
+            <view class="btn" @tap="linkTo" >{{ $t('我已开启') }}</view>
         </view>
     </u-popup>
 </template>

+ 45 - 36
pages/index/components/control/control.vue

@@ -13,7 +13,7 @@
 		<view class="flex-row power-view">
 			<!-- <view class="power-on-off flex-row" >
 				<view :style="sliderStyle" @touchstart="touchStart" @touchmove="touchMove" @touchend="touchEnd" class="power-on-btn"><image style="width: 52rpx;height: 52rpx;" src="https://qiniu.bms16.com/Fkovrpq1bexe-Unal_VJREbLUhdu" mode=""></image></view>
-				<view class="power-on-text" >滑动启动</view>
+				<view class="power-on-text" >{{ $t('滑动启动') }}</view>
 			</view> -->
 			<custom-switch @changEnd='changEnd'  :width="'400rpx'"
 				:height="'96rpx'"  :modelValue="switchValue" :fetchData="loadData"></custom-switch>
@@ -21,9 +21,9 @@
 				
 			<!-- <custom-switch :defaultPosition="'right'" :width="'400rpx'" 
 			    :height="'96rpx'"  v-model="switchValue" :fetchData="loadData"></custom-switch> -->
-			<view @tap="navToInputPages" class="car-change-battery flex-row">
+			<view v-if="authority_list.indexOf(5) == -1" @tap="navToInputPages" class="car-change-battery flex-row">
 				<view class="car-change-btn"><image style="width: 80rpx;height: 80rpx;" src="https://qiniu.bms16.com/FgvnT-msLbL5RHjl6fvNlM0kab5N" mode=""></image></view>
-				<view class="car-change-text">车辆换电</view>
+				<view class="car-change-text">{{ $t('车辆换电') }}</view>
 			</view>
 		</view>
 		<view v-if="popupControlShow" class="show-modal">
@@ -37,17 +37,17 @@
 			</view>
 		</view>
 		<!-- <u-popup v-model="popupControlShow" mode="center" border-radius="30" height="30%" length="60%">
-			<view class="popup-title">开启车辆</view>
-			<view class="popup-content">确定打开</view>
+			<view class="popup-title">{{ $t('开启车辆') }}</view>
+			<view class="popup-content">{{ $t('确定打开') }}</view>
 			<view class="flex-row">
-				<view class="sure-btn cencel-btn" @tap="closePopup">取消</view>
-				<view class="sure-btn ok-btn" >确定</view>
+				<view class="sure-btn cencel-btn" @tap="closePopup">{{ $t('取消') }}</view>
+				<view class="sure-btn ok-btn" >{{ $t('确定') }}</view>
 			</view>
 		</u-popup> -->
 		<!-- <view v-if="isShowMore" class="show-more">
 			<view class="more-info">
 				<view class="flex-row flex-between model-title">
-					<view>{{$t("更多功能")}}</view>
+					<view>{{$t("{{ $t('更多功能') }}")}}</view>
 					<view>
 						<image style="width: 32rpx;height: 32rpx;" @tap="isShowMore = false"
 							src="https://qiniu.bms16.com/FtoTEHOJiUf_gjPCJGGHMsAtHI5M" />
@@ -56,19 +56,19 @@
 				<view style="height: 300rpx;">
 					<view data-url="test" @tap="navUrl" class="more-item flex-row">
 						<img class="more-img" src="https://qiniu.bms16.com/FgxiD-W96FGvgyLI_kXUfWVDYLQ9" alt="">
-						<text>{{$t("胎压")}}</text>
+						<text>{{$t("{{ $t('胎压') }}")}}</text>
 					</view>
 					<view class="more-item flex-row">
 						<img class="more-img" src="https://qiniu.bms16.com/FgxiD-W96FGvgyLI_kXUfWVDYLQ9" alt="">
-						<text>{{$t("电池信息")}}</text>
+						<text>{{$t("{{ $t('电池信息') }}")}}</text>
 					</view>
 					<view @tap="navCarLocation" class="more-item flex-row">
 						<img class="more-img" src="https://qiniu.bms16.com/FgxiD-W96FGvgyLI_kXUfWVDYLQ9" alt="">
-						<text>{{$t("导航")}}</text>
+						<text>{{$t("{{ $t('导航') }}")}}</text>
 					</view>
 				</view>
 				<view class="lift-btn-view">
-					<view class="lift-btn">{{$t("解除绑定")}}</view>
+					<view class="lift-btn">{{$t("{{ $t('解除绑定') }}")}}</view>
 				</view>
 			</view>
 		</view>
@@ -111,6 +111,7 @@ export default {
 			switchValue: {state:false,time:0},
 			isShowMore:false,
 			car_line:false,
+			authority_list:[]
 			// startX: 0, // 滑块开始滑动的初始位置
 			// moveX: 0, // 滑块滑动的距离
 			// unlocked: false, // 是否解锁成功的标志
@@ -123,11 +124,12 @@ export default {
 	      return {
 	        transform: `translateX(${this.moveX}px)`
 	      };
-	    }
+	    },
 	},
 	mounted() {
 		// this.contrilList = getFunctionTag().activeTag
 		// setTimeout(()=>{
+			this.authority_list=uni.getStorageSync('car_info').authority_list
 			this.switchValue.state=uni.getStorageSync('car_info').acc_state==1
 		// },50)
 		
@@ -144,11 +146,20 @@ export default {
 		changEnd(e){
 			this.switchValue = JSON.parse(e)
 			if(this.switchValue.type==1){
-				const car_sn= uni.getStorageSync('car_info').car_sn
-				this.$emit('loadCarDetail',car_sn)
+				this.callApiThreeTimes()
 			}
 			console.log(this.switchValue)
 		},
+		callApiThreeTimes() {
+			const apiCall = (attempt) => {
+				const car_sn= uni.getStorageSync('car_info').car_sn
+				this.$emit('loadCarDetail',car_sn)
+			};
+
+			apiCall(1);
+			// setTimeout(() => apiCall(2), 200);
+			// setTimeout(() => apiCall(3), 200);
+		},
 		tapOpen(e){
 				const item = e.currentTarget.dataset.item;
 				this.changClick(item)
@@ -172,11 +183,11 @@ export default {
 				http.postApi(config.API_FLK_CAR_SWITCH, pData, (resp) => {
 					uni.hideLoading();
 					if (resp.data.code === 200) {
-						common.simpleToast(me.popText + '成功');
+						common.simpleToast(me.popText + this.$t('成功'));
 						const activeTag = me.contrilList.map(item => {
 							if('isLock' in item){
 								item.isTurnOn = (item.isTurnOn == 1) ? 0 : 1
-								item.name = i18n.t((item.isTurnOn == 1) ? '关机' : '开机')
+								item.name = i18n.t((item.isTurnOn == 1) ? this.$t('关机') : this.$t('开机'))
 							}
 							return item
 						})
@@ -215,16 +226,16 @@ export default {
 						me.loadGeneralQRData(res.result)
 					},
 					fail() {
-						me.$msg('扫码失败,请重新扫码')
+						me.$msg(this.$t('扫码失败,请重新扫码'))
 					}
 				})
 			}else if(exchange_need_package==1){
 				uni.showModal({
-					title: '温馨提示',
-					content: '您还未购买换电套餐,是否前往购买换电套餐?',
+					title: this.$t('温馨提示'),
+					content: this.$t('您还未购买换电套餐,是否前往购买换电套餐?'),
 					showCancel: true,
-					cancelText: '取消',
-					confirmText: '前往购买',
+					cancelText: this.$t('取消'),
+					confirmText: this.$t('前往购买'),
 					success: function(res) {
 						if (res.confirm) {
 							uni.navigateTo({
@@ -237,7 +248,7 @@ export default {
 					complete: function(res) {},
 				})
 			}else if(exchange_need_package==-1){
-				this.$msg('当前车辆暂未绑定电池')
+				this.$msg(this.$t('当前车辆暂未绑定电池'))
 			}
 			
 		},
@@ -246,14 +257,12 @@ export default {
 			let objOpt = this.$paramsObj(options)
 			
 			if (objOpt.d) {
-				console.log('扫码的是机柜')
 				uni.navigateTo({
 					url: `/pages/cabinetDetail/cabinetDetail?dev_id=${objOpt.d}`,
 				})
 				return
 			} else {
-				console.log('扫码的是车辆')
-				this.$msg('请扫描机柜二维码')
+				this.$msg(this.$t('请扫描机柜二维码'))
 				return
 			}
 		},
@@ -272,12 +281,12 @@ export default {
 								const me=this
 								http.postApi(config.API_FLK_CAR_SWITCH, pData, (resp) => {
 									if (resp.data.code === 200) {
-										//const textStr = (this.switchValue==0)?'开机':'关机'
+										//const textStr = (this.switchValue==0)?this.$t('开机'):this.$t('关机')
 	
 										// const activeTag = me.contrilList.map(item => {
 										// 	if('isLock' in item){
 										// 		item.isTurnOn = (item.isTurnOn == 1) ? 0 : 1
-										// 		item.name = i18n.t((item.isTurnOn == 1) ? '关机' : '开机')
+										// 		item.name = i18n.t((item.isTurnOn == 1) ? this.$t('关机') : this.$t('开机'))
 										// 	}
 										// 	return item
 										// })
@@ -385,10 +394,10 @@ export default {
 		// 			http.postApi(config.API_FLK_CAR_SWITCH, pData, (resp) => {
 		// 				uni.hideLoading();
 		// 				if (resp.data.code === 200) {
-		// 					common.simpleToast(me.popText + '成功');
+		// 					common.simpleToast(me.popText + this.$t('成功'));
 		// 					const activeTag=me.contrilList.map(item=>{
 		// 						item.isTurnOn=(item.isTurnOn==1)?0:1
-		// 						item.name=i18n.t((item.isTurnOn==1)?'关机':'开机')
+		// 						item.name=i18n.t((item.isTurnOn==1)?this.$t('关机'):this.$t('开机'))
 		// 						return item
 		// 					})
 		// 					const tag=getFunctionTag().tag
@@ -410,7 +419,7 @@ export default {
 		// 			http.postApi(config.API_FLK_CAR_REMOTE_CONTROL, pData, (resp) => {
 		// 				uni.hideLoading();
 		// 				if (resp.data.code === 200) {
-		// 					common.simpleToast(me.popText + '成功');
+		// 					common.simpleToast(me.popText + this.$t('成功'));
 		// 				} else {
 		// 					common.simpleToast(resp.data.msg);
 		// 				}
@@ -435,18 +444,18 @@ export default {
 		// 				command('900000997', () => {
 		// 					uni.hideLoading();
 		// 					if(this.cmdType=='openSeatBag'||this.cmdType=='openTailBox'){
-		// 						common.simpleToast('操作成功');
+		// 						common.simpleToast(this.$t('操作成功'));
 		// 					}
 		// 					console.log(`发送${this.popText}指令结束`);
 		// 				});
 		// 			}
 		// 		}else{
 		// 			uni.showModal({
-		// 				title: '提示',
-		// 				content: '当前车辆处于离线,是否前往开启蓝牙配对操作车辆?',
+		// 				title: this.$t('提示'),
+		// 				content: this.$t('当前车辆处于离线,是否前往开启蓝牙配对操作车辆?'),
 		// 				showCancel: true,
-		// 				cancelText: '取消',
-		// 				confirmText: '确定',
+		// 				cancelText: this.$t('取消'),
+		// 				confirmText: this.$t('确定'),
 		// 				success: function(res) {
 		// 					if (res.confirm) {
 		// 						me.$emit('toBluetooth')

+ 3 - 3
pages/index/components/mapCard/mapCard.vue

@@ -4,7 +4,7 @@
 		<view :style="{width:'100%',height: height?'258rpx':'140rpx'}" class="map">
 			<cover-view  class="top-car-location">
 				<cover-image class='img' style="width: 36rpx;height: 36rpx;" src="https://qiniu.bms16.com/FrKY7Ex5za22plr39ddIsJcjFVpi" ></cover-image>
-				<cover-view class="text">车辆位置</cover-view>
+				<cover-view class="text">{{ $t('车辆位置') }}</cover-view>
 			</cover-view>
 			<googleMap keyId="1" width='100%' :height="height?'258rpx':'140rpx'" v-if="car_info.latitude"  :mapData="{type:3}" :myLocations='{
 				longitude:car_info.longitude,
@@ -18,7 +18,7 @@
 			:latitude="car_info.latitude" scale="16" show-location :style="{width:'100%',height: height?'258rpx':'140rpx'}" :markers="carLocation">
 			<view class="top-car-location flex-row">
 				<img style="width: 36rpx;height: 36rpx;" src="https://qiniu.bms16.com/FrKY7Ex5za22plr39ddIsJcjFVpi" alt="">
-				<text>车辆位置</text>
+				<text>{{ $t('车辆位置') }}</text>
 			</view>
 		</map>
 		<!-- #endif -->
@@ -37,7 +37,7 @@
 		},
 		data() {
 			return {
-				carAddress:'未知',
+				carAddress:this.$t('未知'),
 				carLocation:[]
 			};
 		},

+ 13 - 13
pages/index/components/unleasedPages/unleasedPages.vue

@@ -18,19 +18,19 @@
 			<view class="car-model-step">
 				<view style="padding-top: 80rpx;margin-bottom: 60rpx;">
 					<view class="recommend-car-name w_100 text-center">{{moder_info.model_name}}</view>
-					<view class="recommend-car-tip w_100 text-center line2">{{moder_info.title||'续航开新路 路遥见实力'}}</view>
+					<view class="recommend-car-tip w_100 text-center line2">{{moder_info.title || $t('续航开新路') + $t('路遥见实力')}}</view>
 					<!-- <view class="car-speed-view">
 						<view class="car-speed">72 <text class="company">km</text></view>
-						<text>全速续航</text>
+						<text>{{ $t('全速续航') }}</text>
 					</view> -->
 					<!-- <view class="car-speed-view">
 						<view class="car-speed">52 <text class="company">km/h</text></view>
-						<text>极速可达</text>
+						<text>{{ $t('极速可达') }}</text>
 					</view> -->
 				</view>
 				<view class="flex-row" @tap="navCarDetail" style="justify-content: center;">
 					<view class="more-btn flex-row">
-						<view class="more-btn-text">了解更多</view>
+						<view class="more-btn-text">{{ $t('了解更多') }}</view>
 						<img class="more-btn-img" src="https://qiniu.bms16.com/Fi2Lg800Mc1MhCnvHT1DkvOEdJB1" alt="">
 					</view>
 				</view>
@@ -39,8 +39,8 @@
 					</view>
 				</view>
 				<view class="flex-row flex-around">
-					<view @tap="navCarDetail" class="lease-btn">租赁设备</view>
-					<view class="binding-btn">绑定设备</view>
+					<view @tap="navCarDetail" class="lease-btn">{{ $t('租赁设备') }}</view>
+					<view class="binding-btn">{{ $t('绑定设备') }}</view>
 				</view>
 			</view>
 		</view>
@@ -52,28 +52,28 @@
 			</view>
 			<view class="car-model-step">
 				<view style="padding-top: 80rpx;margin-bottom: 60rpx;">
-					<view class="recommend-car-name w_100 text-center">全新车型,即将发布!</view>
-					<view class="recommend-car-tip w_100 text-center line2">更智能、更高效,全新车型即将亮相,敬请期待!</view>
+					<view class="recommend-car-name w_100 text-center">{{ $t('全新车型,即将发布!') }}</view>
+					<view class="recommend-car-tip w_100 text-center line2">{{ $t('更智能、更高效,全新车型即将亮相,敬请期待!') }}</view>
 					<!-- <view class="car-speed-view">
 						<view class="car-speed">72 <text class="company">km</text></view>
-						<text>全速续航</text>
+						<text>{{ $t('全速续航') }}</text>
 					</view> -->
 					<!-- <view class="car-speed-view">
 						<view class="car-speed">52 <text class="company">km/h</text></view>
-						<text>极速可达</text>
+						<text>{{ $t('极速可达') }}</text>
 					</view> -->
 					
 				</view>
 				<view class="flex-row" @tap="navCarDetail1" style="justify-content: center;">
 					<view class="more-btn flex-row">
-						<view class="more-btn-text">了解更多</view>
+						<view class="more-btn-text">{{ $t('了解更多') }}</view>
 						<img class="more-btn-img" src="https://qiniu.bms16.com/Fi2Lg800Mc1MhCnvHT1DkvOEdJB1" alt="">
 					</view>
 				</view>
 				<view style="height: 160rpx;"></view>
 				<view class="flex-row flex-around">
-					<view @tap="navCarDetail1" class="lease-btn">租赁设备</view>
-					<view class="binding-btn">绑定设备</view>
+					<view @tap="navCarDetail1" class="lease-btn">{{ $t('租赁设备') }}</view>
+					<view class="binding-btn">{{ $t('绑定设备') }}</view>
 				</view>
 			</view>
 		</view>

+ 1 - 1
pages/index/homeNotRent.vue

@@ -17,7 +17,7 @@
           <swiper-item v-for="(item, index) in descArr" :key="index">
             <view class="swiper-item">
                 {{ item.speed }}
-                <view class="more-btn">了解更多</view>
+                <view class="more-btn">{{ $t('了解更多') }}</view>
             </view>
           </swiper-item>
         </swiper>

+ 2 - 1
pages/index/index.css

@@ -193,7 +193,8 @@
 	font-weight: 600;
 	font-size: 28rpx;
 	color: #060809;
-	width: 220rpx;
+	min-width: 220rpx;
+	padding: 0 20rpx;
 	height: 62rpx;
 	justify-content: center;
 	align-items: center;

+ 8 - 8
pages/index/index.vue

@@ -29,19 +29,19 @@
 					</view>
 					<view v-if="isOverdueShow" class="overdue-view flex-row flex-between">
 						<view class="overdue-view-text flex-row">
-							<text class="overdue-text-left">您已逾期
+							<text class="overdue-text-left">{{$t("您已逾期")}}
 								<text class="overdue-num">
 									<block v-if="orderInfo.hire_duration_time">
 										{{orderInfo.hire_duration_time.day > 0 ? orderInfo.hire_duration_time.day :'' }}<text
-											v-if="orderInfo.hire_duration_time.day>0">日</text>{{orderInfo.hire_duration_time.hour > 0 ? orderInfo.hire_duration_time.hour :'' }}<text
-											v-if="orderInfo.hire_duration_time.hour>0">小时</text>{{orderInfo.hire_duration_time.minute > 0 ? orderInfo.hire_duration_time.minute :'' }}<text
-											v-if="orderInfo.hire_duration_time.minute>0">分</text>
+											v-if="orderInfo.hire_duration_time.day>0">{{$t("")}}</text>{{orderInfo.hire_duration_time.hour > 0 ? orderInfo.hire_duration_time.hour :'' }}<text
+											v-if="orderInfo.hire_duration_time.hour>0">{{$t("小时")}}</text>{{orderInfo.hire_duration_time.minute > 0 ? orderInfo.hire_duration_time.minute :'' }}<text
+											v-if="orderInfo.hire_duration_time.minute>0">{{$t("")}}</text>
 									</block>
 								</text>
 							</text>
-							<text style="font-size: 24rpx;opacity: 0.5;">请及时续费或归还车辆</text>
+							<text style="font-size: 24rpx;opacity: 0.5;">{{$t("请及时续费或归还车辆")}}</text>
 						</view>
-						<view @click="routerLink('/pages/order/order')" class="renew-btn">去续费</view>
+						<view @click="routerLink('/pages/order/order')" class="renew-btn">{{$t("去续费")}}</view>
 					</view>
 					<view class="car-img-view" >
 						<view v-if="!car_info.sold_time" class="flex-row flex-between" style="align-items: center;">
@@ -49,7 +49,7 @@
 									style="font-size: 28rpx;font-weight: 500;">%</text></text>
 							<view @tap.stop="tapReturnCar" class="return-car-btn flex-row">
 								<image style="width: 46rpx;height: 46rpx;" src="https://qiniu.bms16.com/FtyG7Gq2QBaVVrZmTnmZFzXhE5nN" mode=""></image>
-								<view style="margin-left: 12rpx;">我要还车</view>
+								<view style="margin-left: 12rpx;">{{$t("我要还车")}}</view>
 							</view>
 						</view>
 						<view class="quantity-view flex-row">
@@ -90,7 +90,7 @@
 									<view class="flex-row align-center">
 										<img style="width: 36rpx;height: 36rpx;"
 											src="https://qiniu.bms16.com/FkrcMCV__HraZ0W0NBNdEZPIlwss" alt="">
-										<text class="margin_l_8">{{isTrackOrAll?'最近骑行':'总里程'}}</text>
+										<text class="margin_l_8">{{isTrackOrAll?$t("最近骑行"):$t("总里程")}}</text>
 									</view>
 									<view @tap.stop="isTrackOrAll=!isTrackOrAll"><img
 											style="width: 24rpx;height: 20rpx;"

+ 16 - 16
pages/login/login.vue

@@ -1,20 +1,20 @@
 <template>
 	<view class="container">
 		<view class="bg-img">
-			<view>欢迎来到{{appConfig.app_name}}</view>
+			<view>{{ $t('欢迎来到') }}{{appConfig.app_name}}</view>
 		</view>
 		<view class="content-box">
-			<view @tap="clickGetLoginInfo">手机号快捷登录</view>
-			<view @tap="navToPage" data-url="/pages/phoneLogin/phoneLogin">其他手机号登录</view>
+			<view @tap="clickGetLoginInfo">{{ $t('手机号快捷登录') }}</view>
+			<view @tap="navToPage" data-url="/pages/phoneLogin/phoneLogin">{{ $t('其他手机号登录') }}</view>
 			<view class="contract-item flex-row">
 				<view @tap="bindContractInfo">
 					<img class="check-icon"
 						:src="contract_id==1?'https://qiniu.bms16.com/FjLudtM29xwqgJh5kUKR9kyhK0Lu':'https://qiniu.bms16.com/FuQZipm9g7wX6CyGQBCjK2RTXfbW'" />
 				</view>
-				<view @tap="bindContractInfo" style="padding-left: 8rpx;">已阅读并同意
+				<view @tap="bindContractInfo" style="padding-left: 8rpx;">{{ $t('已阅读并同意') }}
 					<text style="color:#0074FF"
-						@click.native.stop="bindContractToAgreement">{{'《' + appConfig.app_name + '电动车租赁用户协议》'}}</text>和
-					<text style="color:#0074FF" @click.native.stop="bindContractToPrivacy">《隐私协议》</text>
+						@click.native.stop="bindContractToAgreement">{{'《' + appConfig.app_name + $t('电动车租赁用户协议》')}}</text>{{ $t('') }}
+					<text style="color:#0074FF" @click.native.stop="bindContractToPrivacy">《{{ $t('隐私协议') }}》</text>
 				</view>
 			</view>
 		</view>
@@ -25,14 +25,14 @@
 					<img :src="appConfig.app_logo" class="mini_logo_img" mode="widthFix" />
 					<view class="mini_app_name">{{appConfig.app_name}}</view>
 				</view>
-				<view class="mark_view">申请获取并验证你的手机号</view>
-				<view class="mark_lable">快捷登录</view>
+				<view class="mark_view">{{ $t('申请获取并验证你的手机号') }}</view>
+				<view class="mark_lable">{{ $t('快捷登录') }}</view>
 				<view @tap="clickFastLogin" class="mark_btn">
 					<view class="last_phone">{{openUser.maskPhone}}</view>
-					<view class="last_phone_mark">上次提供</view>
+					<view class="last_phone_mark">{{ $t('上次提供') }}</view>
 				</view>
-				<view @tap="clickNoAllow" class="mark_btn_no">不允许</view>
-				<view @tap="clickOtherPhone" class="other_text">使用其他号码</view>
+				<view @tap="clickNoAllow" class="mark_btn_no">{{ $t('不允许') }}</view>
+				<view @tap="clickOtherPhone" class="other_text">{{ $t('使用其他号码') }}</view>
 			</view>
 		</view>
 	</view>
@@ -120,7 +120,7 @@
 
 			clickGetLoginInfo() {
 				if (this.contract_id === 0) {
-					common.simpleToast('请查阅隐私和协议')
+					common.simpleToast(this.$t('请查阅隐私和协议'))
 					return;
 				}
 				const me = this
@@ -134,7 +134,7 @@
 							uni.hideLoading()
 							if (resp.data.code == 200) {
 								if (resp.data.data.user === null) {
-									common.simpleToast('一键授权失败,请使用手机号登录')
+									common.simpleToast(me.$t('一键授权失败')+','+me.$t('请使用手机号登录'))
 									uni.navigateTo({
 										url: '/pages/phoneLogin/phoneLogin',
 									})
@@ -146,7 +146,7 @@
 									})
 								}
 							} else {
-								common.simpleToast('一键授权失败,请使用手机号登录')
+								common.simpleToast(me.$t('一键授权失败')+','+me.$t('请使用手机号登录'))
 								uni.navigateTo({
 									url: '/pages/phoneLogin/phoneLogin',
 								})
@@ -181,7 +181,7 @@
 									open_data: encryptionCode
 								}
 								storage.setUserToken(response.data.data.baseInfo.token)
-								common.simpleToast('登录成功')
+								common.simpleToast(this.$t('登录成功'))
 								uni.reLaunch({
 									url: '/pages/index/index',
 								})
@@ -197,7 +197,7 @@
 									})
 								}
 							} else {
-								common.simpleToast('一键授权失败,请使用手机号登录')
+								common.simpleToast(me.$t('一键授权失败')+','+me.$t('请使用手机号登录'))
 								uni.navigateTo({
 									url: '/pages/phoneLogin/login',
 								})

+ 1 - 1
pages/loginRegister/changePassword.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="">
-		<navBar name="修改密码"></navBar>
+		<navBar :name="$t('修改密码')"></navBar>
 		<view class="changePassword-page">
 			
 		    <ZxInput

+ 2 - 2
pages/loginRegister/forgetPassword.vue

@@ -1,6 +1,6 @@
 <template>
     <view class="forgetPassword-page">
-		<navBar name="忘记密码"  left="0" bgColor="transparent"></navBar>
+		<navBar :name="$t('忘记密码')"  left="0" bgColor="transparent"></navBar>
         <zx-input
             v-model="email"
             :placeholder="$t('请输入要重置的邮箱账号')"
@@ -40,7 +40,7 @@ export default {
     },
     computed: {
         noticeText({ email }) {
-            return `我们已向 <span style="color: #0A59F7;">${email}</span> 发送了一封密码重置邮件,请您登录邮箱操作处理。`
+            return `${this.$t('我们已向')} <span style="color: #0A59F7;">${email}</span> ${this.$t('发送了一封密码重置邮件,请您登录邮箱操作处理。')}`
         }
     },
     methods: {

+ 3 - 3
pages/loginRegister/login.vue

@@ -2,7 +2,7 @@
     <view class="zx-page-linear login-page">
 		<navBar type="login" left="0" bgColor="transparent"></navBar>
       <view class="title-wrap">
-        <view class="title">{{ $t('欢迎来到FRANCO MORINI') }}</view>
+        <view class="title">{{ $t('欢迎来到') }}FRANCO MORINI</view>
         <view class="sub-title">{{ $t('邮箱密码登录') }}</view>
       </view>
       <view class="main">
@@ -37,7 +37,7 @@
           </view>
           <view class="split-line"/>
           <view class="register" @tap="routerLink('/pages/loginRegister/register')">
-            {{ $t('没有账号 立即注册') }}
+            {{ $t('没有账号') + ' ' + $t('立即注册') }}
           </view>
         </view>
 <!--        <view class="other-type-login">
@@ -115,7 +115,7 @@
             const { baseInfo } = res.body.data
             storage.setUserInfoData(baseInfo)
 			uni.setStorageSync('storage_user_token', baseInfo.token);
-            common.simpleToast('登录成功')
+            common.simpleToast(this.$t('登录成功'))
             uni.reLaunch({
               url: '/pages/index/index',
             })

+ 2 - 2
pages/loginRegister/register.vue

@@ -1,6 +1,6 @@
 <template>
     <view class="register-page">
-		<navBar name="账号注册" left="0" bgColor="transparent"></navBar>
+		<navBar :name="$t('账号注册')" left="0" bgColor="transparent"></navBar>
 		<view style="height: 20rpx;"></view>
         <ZxInput
             v-model="form.email"
@@ -34,7 +34,7 @@
             type="register"
 			@close='close'
             :email="form.email"
-            :text="`我们已向 <span>${this.form.email}</span> 发送注册邮件,请您登录邮箱点击链接完成注册。`"
+            :text="`${ $t('我们已向') } <span>${this.form.email}</span> ${ $t('发送注册邮件,请您登录邮箱点击链接完成注册。') }`"
             v-model="isSendSucceed"
         />
     </view>

+ 17 - 17
pages/manualInput/manualInput.vue

@@ -1,14 +1,14 @@
 <template>
 	<view class="container-view">
-		<!-- <input class="input" type="text" placeholder="请输入车牌号全称" placeholder-style="color:#BAC1D0;"> -->
+		<!-- <input class="input" type="text" :placeholder="$t('请输入车牌号全称')" placeholder-style="color:#BAC1D0;"> -->
 		<input @input="onInput" @blur="inputBlur" @confirm="handleConfirm" :value="hideValue" class="input" type="text"
-			:focus="hideFocus" placeholder="请输入车牌号" placeholder-style="color:#BAC1D0;">
+			:focus="hideFocus" :placeholder="$t('请输入车牌号')" placeholder-style="color:#BAC1D0;">
 		<view :class="['confirm-btn', !hideValue && 'btn-disable']" @tap="handleConfirmHandle">
-			{{ hideValue ? '确认' : '请先输入车牌号' }}
+			{{ hideValue ? $t('确认') : $t('请先输入车牌号') }}
 		</view>
-		<!-- <view class="input-text">温馨提示:各省市因地制宜,制定相关的牌照格式,请按照实际车辆牌照的格式进行填写~</view>
-		<view class="title">参考格式</view>
-		<view class="content-view">北京<text>123456</text></view> -->
+		<!-- <view class="input-text">{{ $t('温馨提示:各省市因地制宜,制定相关的牌照格式,请按照实际车辆牌照的格式进行填写~') }}</view>
+		<view class="title">{{ $t('参考格式') }}</view>
+		<view class="content-view">{{ $t('北京') }}<text>123456</text></view> -->
 	</view>
 </template>
 
@@ -93,7 +93,7 @@
 			},
 			handleConfirmHandle() {
 				if (!this.hideValue) {
-					common.simpleToast('请先输入车牌号')
+					common.simpleToast(this.$t('请先输入车牌号'))
 					return
 				}
 				this.handleConfirm()
@@ -105,9 +105,9 @@
 					wx.getSetting({
 						success(res) {
 							if (res.authSetting["scope.userLocation"] == false) { // 判断原因是否为微信小程序内部没有授权定位
-								common.simpleToast('无法获取位置信息,请检查您的微信定位权限设置')
+								common.simpleToast(this.$t('无法获取位置信息,请检查您的微信定位权限设置'))
 							} else {
-								common.simpleToast('您的手机未授权微信定位权限,请前往手机设置开启权限')
+								common.simpleToast(this.$t('您的手机未授权微信定位权限,请前往手机设置开启权限'))
 							}
 							me.hideFocus = true
 						}
@@ -115,7 +115,7 @@
 					return
 				}
 				if (this.hideValue == '') {
-					common.simpleToast('请输入车牌号')
+					common.simpleToast(this.$t('请输入车牌号'))
 					this.hideFocus = true
 				} else {
 					this.hideFocus = false
@@ -137,7 +137,7 @@
 						const timestamp = Date.now(); // 获取当前时间戳(毫秒)
 						const isOffline = (Math.floor(timestamp / 1000) - resp.data.data.last_comm_time) > 1800
 						if (resp.data.data.last_comm_time === 0 || isOffline) {
-							common.simpleToast('此车辆已离线,请选择其他车辆')
+							common.simpleToast(this.$t('此车辆已离线,请选择其他车辆'))
 						} else {
 							let carInfo = JSON.stringify(resp.data.data)
 							const car_model = resp.data.data.model_info.car_model
@@ -147,10 +147,10 @@
 							if (resp.data.data.has_owner) { //车辆正在被使用
 								if (resp.data.data.is_mine) { //是本人在使用
 									wx.showModal({
-										title: '提示',
-										content: '已有正在使用的车辆,是否跳转至车辆详情页?',
-										cancelText: '取消',
-										confirmText: '确定',
+										title: this.$t('提示'),
+										content: this.$t('已有正在使用的车辆,是否跳转至车辆详情页')+'?',
+										cancelText: this.$t('取消'),
+										confirmText: this.$t('确定'),
 										success: function(res) {
 											this.isReturnHome = false
 											uni.navigateTo({
@@ -163,12 +163,12 @@
 										complete: function(res) {},
 									})
 								} else {
-									common.simpleToast('此车辆正在被使用')
+									common.simpleToast(this.$t('此车辆正在被使用'))
 								}
 							} else {
 								if (me.order_sn != '') {
 									if (this.order_model_id != model_id) { // 预租车型与之前预约车型不一致
-										common.simpleToast('与预约车型不符')
+										common.simpleToast(this.$t('与预约车型不符'))
 									} else {
 										this.isReturnHome = false
 										uni.navigateTo({

+ 1 - 1
pages/message/detail.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="container">
-		<navBar name="信息详情"></navBar>
+		<navBar :name="$t('信息详情')"></navBar>
 		<view class="title">{{info.title}}</view>
 		<view>{{info.overview}}</view>
 		<image v-if="info.cover" :src="info.cover" class="img" mode="aspectFit" />

+ 4 - 4
pages/message/index.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="message-page">
-		<navBar :name="isSys === '0' ? '设备信息' : '我的消息'"></navBar>
+		<navBar :name="isSys === '0' ? $t('设备信息') : $t('我的消息')"></navBar>
 		<view v-if="isSys==='0' && deviceList.length>0">
 			<view class="device-msg-wrap base-wrap" v-for="(item, index) in deviceList" :key="index"
 				@tap="toDeviceMsgPage(item)">
@@ -22,7 +22,7 @@
 		</view>
 		<view v-if="isSys==='0' && deviceList.length === 0"
 			style="display: flex;align-items: center;justify-content: center;height: 80vh;">
-			您还没有设备消息
+			{{ $t('您还没有设备消息') }}
 		</view>
 
 		<view v-if="isSys==='1' && sysMsgList.length > 0 " style="margin-top: 20rpx;" class="sys-msg-wrap base-wrap">
@@ -39,7 +39,7 @@
 						<view v-if="item.read == 0" class="dot"></view>
 						{{ item.title }}
 					</view>
-					<view v-if="item.type === 1" class="btn">绑定设备</view>
+					<view v-if="item.type === 1" class="btn">{{ $t('绑定设备') }}</view>
 				</view>
 				<view class="time">{{ formatTimestamp(item.ctime)}}</view>
 				<view class="dtl">{{ item.overview }}</view>
@@ -48,7 +48,7 @@
 
 		<view v-if="isSys==='1' && sysMsgList.length === 0 "
 			style="display: flex;align-items: center;justify-content: center;height: 80vh;">
-			您还没有系统消息
+			{{ $t('您还没有系统消息') }}
 		</view>
 	</view>
 </template>

+ 5 - 5
pages/message/location.vue

@@ -175,15 +175,15 @@
 			findCar() {
 				const me = this
 				uni.showModal({
-					title: '提示',
-					content: '您确认开启闪灯鸣笛吗',
+					title: this.$t('提示'),
+					content: this.$t('您确认开启闪灯鸣笛吗'),
 					showCancel: true,
-					cancelText: '取消',
-					confirmText: '确定',
+					cancelText: this.$t('取消'),
+					confirmText: this.$t('确定'),
 					success: function(res) {
 						if (res.confirm) {
 							me.setData({
-								popText: '闪灯鸣笛',
+								popText: this.$t('闪灯鸣笛'),
 								cmdType: 'findCar',
 							})
 							me.tapBlueToothCmd('', true)

+ 13 - 13
pages/mileageStatistics/index.vue

@@ -51,7 +51,7 @@
         class="list-item"
       >
         <view class="row top-row">
-          <view>行驶里程
+          <view>{{ $t('行驶里程') }}
             <u-count-to
               :start-val="0"
               :end-val="54"
@@ -63,9 +63,9 @@
           <view>2024-12-04 16:15</view>
         </view>
         <view class="row bottom-row">
-          <text>功率: 30wh</text>
-          <text>减少碳排放: 40g</text>
-          <text>骑行时长: 00:20:31</text>
+          <text>{{ $t('功率') }}: 30wh</text>
+          <text>{{ $t('减少碳排放') }}: 40g</text>
+          <text>{{ $t('骑行时长') }}: 00:20:31</text>
         </view>
       </view>
     </view>
@@ -95,10 +95,10 @@ export default {
     statisticsEnum() {
       const t = v => this.$t(v)
       return [
-        { label: t('骑行次数'), unit: t('次'), prop: 'num' },
-        { label: t('累计功率'), unit: 'wh', prop: 'power' },
-        { label: t('减少排放量'), unit: 'g', prop: 'reduceEmissions' },
-        { label: t('骑行时长'), unit: '天', prop: 'cyclingDuration' }
+        { label: t(this.$t('骑行次数')), unit: t(this.$t('次')), prop: 'num' },
+        { label: t(this.$t('累计功率')), unit: 'wh', prop: 'power' },
+        { label: t(this.$t('减少排放量')), unit: 'g', prop: 'reduceEmissions' },
+        { label: t(this.$t('骑行时长')), unit: this.$t('天'), prop: 'cyclingDuration' }
       ]
     }
   },
@@ -111,11 +111,11 @@ export default {
   methods: {
     _initQueryTypes() {
       this.queryTypes = [
-        { label: '总', type: '0' },
-        { label: '年', type: '1' },
-        { label: '月', type: '2' },
-        { label: '周', type: '3' },
-        { label: '日', type: '4' }
+        { label: this.$t('总'), type: '0' },
+        { label: this.$t('年'), type: '1' },
+        { label: this.$t('月'), type: '2' },
+        { label: this.$t('周'), type: '3' },
+        { label: this.$t('日'), type: '4' }
       ]
     },
     changeType(type) {

+ 9 - 9
pages/modifyPhone/modifyPhone.vue

@@ -3,21 +3,21 @@
 		<form @submit="bindModifyPhone">
 			<view class="form-container">
 				<view class="form-item">
-					<input type="number" name="phone" @input="inputPhone" placeholder="请输入绑定的新手机号" />
+					<input type="number" name="phone" @input="inputPhone" :placeholder="$t('请输入绑定的新手机号')" />
 				</view>
 				<view class="form-item flex-row flex-between">
-					<input type="number" name="verify_code" placeholder="请输入验证码" @input="inputVerifyCode" />
+					<input type="number" name="verify_code" :placeholder="$t('请输入验证码')" @input="inputVerifyCode" />
 					<view class="send-code">
 						<form @submit="bindGetVerifyCode">
 							<button class="def-btn-verify" form-type="submit">
-								<text v-if="codeGetting"> {{curTime}}秒后再次获取</text>
-								<text v-else>获取验证码</text>
+								<text v-if="codeGetting"> {{curTime}}{{ $t('秒后再次获取') }}</text>
+								<text v-else>{{ $t('获取验证码') }}</text>
 							</button>
 						</form>
 					</view>
 				</view>
 				<view class="form-btn">
-					<button class="login-btn" form-type="submit">绑定新手机号</button>
+					<button class="login-btn" form-type="submit">{{ $t('绑定新手机号') }}</button>
 				</view>
 			</view>
 		</form>
@@ -62,11 +62,11 @@
 				if (this.codeGetting)
 					return
 				if (!this.phone) {
-					common.alert('提示', '请输入手机号码');
+					common.alert(this.$t('提示'), this.$t('请输入手机号码'));
 					return;
 				}
 				if (!common.isPhone(this.phone)) {
-					common.alert('提示', '请检测您的手机号码是否正确');
+					common.alert(this.$t('提示'), this.$t('请检测您的手机号码是否正确'));
 					return;
 				}
 
@@ -96,7 +96,7 @@
 					if (response.data.code === 200) {
 
 					} else {
-						common.alert('提示', response.data.msg);
+						common.alert(this.$t('提示'), response.data.msg);
 					}
 				})
 			},
@@ -119,7 +119,7 @@
 				}
 				http.postApi(config.API_MODIFY_PHONE, pData, function(resp) {
 					if (resp.data.code === 200) {
-						common.simpleToast('修改成功')
+						common.simpleToast(this.$t('修改成功'))
 						setTimeout(function() {
 							uni.reLaunch({
 								url: '/pages/index/index',

+ 2 - 2
pages/moreInfo/moreInfo.vue

@@ -12,7 +12,7 @@
 						style="width: 80rpx;height: 80rpx;" mode="aspectFit"></image>
 				</view>
 				<view class="text">
-					仪表盘
+					{{ $t('仪表盘') }}
 				</view>
 				<image src="https://qiniu.bms16.com/FqnbZ2iKHmzCGJA8XD30sf5g_CAm" style="width: 28rpx;height: 28rpx;"
 					mode="aspectFit"></image>
@@ -23,7 +23,7 @@
 						style="width: 80rpx;height: 80rpx;" mode="aspectFit"></image>
 				</view>
 				<view class="text">
-					设备信息
+					{{ $t('设备信息') }}
 				</view>
 				<image src="https://qiniu.bms16.com/FqnbZ2iKHmzCGJA8XD30sf5g_CAm" style="width: 28rpx;height: 28rpx;"
 					mode="aspectFit"></image>

+ 23 - 23
pages/my/my.vue

@@ -15,7 +15,7 @@
 		</view>
 		<view class="user-info-wrap" @tap="loginHandle">
 			<image :src="userInfo.headimg || defaultAvatarUrl" class="head-img" />
-			<view class="user-name">{{ userInfo.nickname || '请点击登录' }}</view>
+			<view class="user-name">{{ userInfo.nickname || $t('请点击登录') }}</view>
 			<view v-if="userInfo.user_name" class="e-mail">
 				{{ userInfo.user_name }}
 			</view>
@@ -75,10 +75,10 @@ var request = require('@/common/request.js');
 				defaultAvatarUrl: defaultHeadImg,
 				comboDialoginfo: {
 					showConfirm: false,
-					title: '温馨提示',
+					title: this.$t('温馨提示'),
 					opType: 'combo',
-					text: '您还未购买换电套餐,是否前往进行换电套餐?',
-					confirmBtnText: '前往购买',
+					text: this.$t('您还未购买换电套餐,是否前往进行换电套餐?'),
+					confirmBtnText: this.$t('前往购买'),
 					showCancelButton: false
 				},
 				userInfo: {}
@@ -87,40 +87,40 @@ var request = require('@/common/request.js');
 		computed: {
 			// commonTabs() {
 			//   return [
-			//     { name: `${this.$t('我的车辆')}`, url: '/pages/dashboard/dashboard', icon: 'Fp6G-Kzb-YUGkP2WR-kjTlIbbTj1' },
-			//     { name: `${this.$t('用车人')}`, url: '/pages/userManagement/userManagement', icon: 'FnxGW52BCkTkK9HxsTdVrghU7B4D' },
-			//     { name: `${this.$t('换电套餐')}`, jumpCheck: 'combo', url: '', icon: 'FsOsd1SxYDHDm00aiwrTib_k0Mbr' }
+			//     { name: `${this.$t(this.$t('我的车辆'))}`, url: '/pages/dashboard/dashboard', icon: 'Fp6G-Kzb-YUGkP2WR-kjTlIbbTj1' },
+			//     { name: `${this.$t(this.$t('用车人'))}`, url: '/pages/userManagement/userManagement', icon: 'FnxGW52BCkTkK9HxsTdVrghU7B4D' },
+			//     { name: `${this.$t(this.$t('换电套餐'))}`, jumpCheck: 'combo', url: '', icon: 'FsOsd1SxYDHDm00aiwrTib_k0Mbr' }
 			//   ]
 			// },
 			baseTabs() {
 				const lang = t => this.$t(t)
 				return [{
-						name: `${lang('我的订单')}`,
+						name: `${this.$t('我的订单')}`,
 						url: '/pages/order/order',
 						icon: 'FkLJGLo1faYtJWhW4Q0gt5dphI7g',
 						isLogin:1
 					},
 					{
-						name: `${lang('换电记录')}`,
+						name: `${this.$t('换电记录')}`,
 						url: '/pages/batteryRecord/batteryRecord',
 						icon: 'FnSjwcN7Mcpa-WA7Cqx2cGTvX2V1',
 						isLogin:1
 					},
+					//   { name: `${lang(this.$t('关于我们'))}`, url: '/pages/bluetoothUnlock/unlockSet', icon: 'Fmin1_DG6ZkENCdsI1qJZJpDNkhQ' },
 					{
-						name: `${lang('意见反馈')}`,
-						url: '/pages/feedback/index',
-						icon: 'Fh1tuCqkBQ1A20WTsiizSR9w4tQ4'
-					},
-					//   { name: `${lang('关于我们')}`, url: '/pages/bluetoothUnlock/unlockSet', icon: 'Fmin1_DG6ZkENCdsI1qJZJpDNkhQ' },
-					{
-						name: `${lang('客服中心')}`,
+						name: `${this.$t('客服中心')}`,
 						url: '',
 						statues:'service',
 						icon: 'FhA9TUbTMF0e7ma6NZXqPrkscN6l',
 						isLogin:1
 					},
 					{
-						name: `${lang('设置')}`,
+						name: `${this.$t('意见反馈')}`,
+						url: '/pages/feedback/index',
+						icon: 'Fh1tuCqkBQ1A20WTsiizSR9w4tQ4'
+					},
+					{
+						name: `${this.$t('设置')}`,
 						url: '/pages/my/set',
 						icon: 'Fu3f2iRi5BspRfbVLPcw8ryWc4lu'
 					}
@@ -179,15 +179,15 @@ var request = require('@/common/request.js');
 			checkHandle_combo() {
 				
 				if(!this.car_info.sold_time){
-					this.$msg('您还未购买车辆,购买车辆才可享受换电套餐')
+					this.$msg(this.$t('您还未购买车辆,购买车辆才可享受换电套餐'))
 					return
 				}
 				if(!this.car_info.battery_tag_info.tag_code){
-					this.$msg('当前没有可更换的电池,购买车辆绑定电池后才可享受换电套餐')
+					this.$msg(this.$t('当前没有可更换的电池,购买车辆绑定电池后才可享受换电套餐'))
 					return
 				}
 				if(!this.car_info.car_sn){
-					this.$msg('您还未绑定车辆!')
+					this.$msg(this.$t('您还未绑定车辆!'))
 					return
 				}
 				if(this.car_info.exchange_package_info){
@@ -219,12 +219,12 @@ var request = require('@/common/request.js');
 				if(statues){
 					let _this = this
 					if(!_this.shopInfo.link_phone){
-						this.$msg("未获取到手机号码")
+						this.$msg(this.$t('未获取到手机号码'))
 						return
 					}
 					uni.showModal({
-						content: `您是否要拨打电话${_this.shopInfo.link_phone}?`,
-						confirmText: '确定',
+						content: `${this.$t('您是否要拨打电话')}${_this.shopInfo.link_phone}?`,
+						confirmText: this.$t('确定'),
 						success: (res) => {
 							if (res.confirm) {
 								uni.makePhoneCall({

+ 13 - 12
pages/my/set.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="set-page">
-		<navBar name="设置" left="0"></navBar>
+		<navBar :name="$t('设置')" left="0"></navBar>
 		<image @click="editAvatarFn" :src="userInfo.headimg || defaultHeadImg" class="head-img" />
 		<view class="list-wrap">
 			<view v-for="(item, index) in list" :key="index" class="item" @tap="routerLink(item.url)">
@@ -21,7 +21,7 @@
 				</view>
 			</view>
 		</view>
-		<view class="zx-form-btn fix-bottom-btn logout-btn" @tap="handleQuit">退出登录</view>
+		<view class="zx-form-btn fix-bottom-btn logout-btn" @tap="handleQuit">{{ $t('退出登录') }}</view>
 	</view>
 </template>
 
@@ -45,31 +45,31 @@
 				userInfo: {},
 				app_version: '',
 				list: [{
-						title: '昵称',
+						title: this.$t('昵称'),
 						url: '',
 						textProp: 'nickname'
 					},
 					{
-						title: '注册时间',
+						title: this.$t('注册时间'),
 						textProp: 'registrationTime',
 						hideArrow: true
 					},
 					{
-						title: '修改密码',
+						title: this.$t('修改密码'),
 						url: '/pages/loginRegister/changePassword'
 					},
 					{
-						title: '关于我们',
+						title: this.$t('关于我们'),
 						url: '/pages/aboutMy/aboutMy',
 						textProp: 'version',
 						hideArrow: true
 					},
 					{
-						title: '隐私协议',
+						title: this.$t('隐私协议'),
 						url: '/pages/contract/contract?contract_id=270'
 					},
 					{
-						title: '用户条款',
+						title: this.$t('用户条款'),
 						url: '/pages/contract/contract?contract_id=102'
 					}
 				]
@@ -154,11 +154,11 @@
 			},
 			handleQuit() {
 				uni.showModal({
-					title: '提示',
-					content: '您确定要退出当前账号吗?',
+					title: this.$t('提示'),
+					content: this.$t('您确定要退出当前账号吗?'),
 					showCancel: true,
-					cancelText: '取消',
-					confirmText: '确定',
+					cancelText: this.$t('取消'),
+					confirmText: this.$t('确定'),
 					success: function(res) {
 						if (res.confirm) {
 							storage.clearStorage()
@@ -193,6 +193,7 @@
 			height: 174rpx;
 			margin: 0 auto 40rpx;
 			border-radius: 50%;
+			margin-top: 60rpx;
 		}
 
 		.list-wrap {

+ 17 - 17
pages/openCabinet/openCabinet.vue

@@ -5,19 +5,19 @@
 		</view>
 		<view class="explain-view">
 			<view class="explain-num-view flex-row">
-				<!-- <text><text class="explain-num">{{empty_door_id}} </text>号仓门已打开</text> -->
-				<text>仓门已打开</text>
-				<!-- <text v-if="list.status == 2">换电中</text>
-				<text v-if="list.status == 3">换电成功</text>
-				<text v-if="list.status == 4">换电失败</text> -->
+				<!-- <text><text class="explain-num">{{empty_door_id}} </text>{{ $t('号仓门已打开') }}</text> -->
+				<text>{{ $t('仓门已打开') }}</text>
+				<!-- <text v-if="list.status == 2">{{ $t('换电中') }}</text>
+				<text v-if="list.status == 3">{{ $t('换电成功') }}</text>
+				<text v-if="list.status == 4">{{ $t('换电失败') }}</text> -->
 			</view>
-			<view class="explain-text">请存入更换电池,取走满电电池,并关好仓门</view>
-			<!-- <view class="explain-text">请 归还 / 取出 电池并关上仓门</view> -->
-			<!-- <view class="explain-text">请取出电池并关上仓门</view> -->
-			<!-- <view class="explain-text-grap">归还完成后电柜会自动打开可租仓门</view> -->
-			<!-- <view class="explain-text-grap">自动为您匹配最高电量电池</view> -->
+			<view class="explain-text">{{ $t('请存入更换电池') +','+ $t('取走满电电池') +','+ $t('并关好仓门') }}</view>
+			<!-- <view class="explain-text">{{ $t('') }} {{ $t('归还') }} / {{ $t('取出') }} {{ $t('电池并关上仓门') }}</view> -->
+			<!-- <view class="explain-text">{{ $t('请取出电池并关上仓门') }}</view> -->
+			<!-- <view class="explain-text-grap">{{ $t('归还完成后电柜会自动打开可租仓门') }}</view> -->
+			<!-- <view class="explain-text-grap">{{ $t('自动为您匹配最高电量电池') }}</view> -->
 		</view>
-		<!-- 完成弹窗 -->
+		<!-- {{ $t('完成弹窗') }} -->
 		<view v-if="isOverModal" class="modal-group">
 			<view class="payment-info-main">
 				<view class="payment-info-top flex-row">
@@ -26,17 +26,17 @@
 					<img v-if="list.status==4" class="check-icon" src="https://qiniu.bms16.com/FmGcOOZZm09nx9lH3lez7D3DYHKn" alt="">
 				</view>
 				<view v-if="list.status==3" class="open-result-view">
-					<view class="open-result flex-row">换电成功</view>
-					<view class="open-result-tip flex-row">祝您骑行愉快</view>
+					<view class="open-result flex-row">{{ $t('换电成功') }}</view>
+					<view class="open-result-tip flex-row">{{ $t('祝您骑行愉快') }}</view>
 				</view>
 				<view v-if="list.status==4" class="open-result-view">
-					<view class="open-result flex-row">换电失败</view>
+					<view class="open-result flex-row">{{ $t('换电失败') }}</view>
 					<view class="open-result-tip flex-row">{{list.fail_reason}}</view>
 				</view>
 				<view class="over-btn-view">
-					<view v-if="list.status==3" @tap="tapToIndex" class="over-btn flex-row">回到首页</view>
-					<view v-if="list.status==4" @tap="connectStore" class="over-btn flex-row">联系门店</view>
-					<view v-if="list.status==4" @click="srcFn(`/pages/index/index`)" class="over-btn flex-row">确认</view>
+					<view v-if="list.status==3" @tap="tapToIndex" class="over-btn flex-row">{{ $t('回到首页') }}</view>
+					<view v-if="list.status==4" @tap="connectStore" class="over-btn flex-row">{{ $t('联系门店') }}</view>
+					<view v-if="list.status==4" @click="srcFn(`/pages/index/index`)" class="over-btn flex-row">{{ $t('确认') }}</view>
 				</view>
 			</view>
 		</view>

+ 58 - 58
pages/order/order.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="container-view">
-		<navBar name="我的订单" ></navBar>
+		<navBar :name="$t('我的订单')" ></navBar>
 		<!-- <view v-if="selectOrderType == 0" class="order-type-view flex-row flex-between">
 			<view v-if="car_info.car_sn && selectOrderType == 0" @click="srcFn(`/pages/carList/carList`)" class="car-model-list flex-row">
 				<view class="car-model-text">{{car_info.car_name}}</view><img class="right-corner-icon"
@@ -36,48 +36,48 @@
 
 				<block v-if="selectOrderType == 0">
 					<view v-if="item.package_type == 1">
-						{{item.total_day}}天
+						{{item.total_day}}{{ $t('') }}
 					</view>
 					<view v-if="item.package_type == 2">
-						{{item.num}}次
+						{{item.num}}{{ $t('') }}
 					</view>
 					<view v-if="item.package_type == 3">
-						{{item.total_day}}天{{item.num}}次
+						{{item.total_day}}{{ $t('') }}{{item.num}}{{ $t('') }}
 					</view>
 				</block>
 
 				<view v-if="item.finally == 1 && selectOrderType == 1">
-					<view class="card card-k" v-if="item.order_status == 0">待支付</view>
-					<view class="card card-k" v-if="item.order_status == 1">待取车</view>
-					<view class="card card-k" v-else-if="item.order_status == 2">待激活</view>
-					<view class="card card-b" v-else-if="item.order_status == 3">使用中</view>
-					<view class="card card-r" v-else-if="item.order_status == 4">已逾期</view>
-					<view class="card card-k" v-else-if="item.order_status == 5">还车申请中</view>
-					<view class="card card-k" v-else-if="item.order_status == 6">还车中</view>
-					<view class="card card-k" v-else-if="item.order_status == 7">车辆已归还</view>
-					<view class="card card-k" v-else-if="item.order_status == 8 ">订单已支付,已取消</view>
-					<view class="card card-k" v-else-if=" item.order_status == 9">订单未支付,已取消</view>
-					<view class="card card-k" v-else-if=" item.order_status == 10">已完结</view>
+					<view class="card card-k" v-if="item.order_status == 0">{{ $t('待支付') }}</view>
+					<view class="card card-k" v-if="item.order_status == 1">{{ $t('待取车') }}</view>
+					<view class="card card-k" v-else-if="item.order_status == 2">{{ $t('待激活') }}</view>
+					<view class="card card-b" v-else-if="item.order_status == 3">{{ $t('使用中') }}</view>
+					<view class="card card-r" v-else-if="item.order_status == 4">{{ $t('已逾期') }}</view>
+					<view class="card card-k" v-else-if="item.order_status == 5">{{ $t('还车申请中') }}</view>
+					<view class="card card-k" v-else-if="item.order_status == 6">{{ $t('还车中') }}</view>
+					<view class="card card-k" v-else-if="item.order_status == 7">{{ $t('车辆已归还') }}</view>
+					<view class="card card-k" v-else-if="item.order_status == 8 ">{{ $t('订单已支付') }},{{ $t('已取消') }}</view>
+					<view class="card card-k" v-else-if=" item.order_status == 9">{{ $t('订单未支付') }},{{ $t('已取消') }}</view>
+					<view class="card card-k" v-else-if=" item.order_status == 10">{{ $t('已完结') }}</view>
 				</view>
 
 				<view v-if="item.finally != 1 && selectOrderType == 1">
-					<view class="card card-k" v-if="item.pay_status == 0">待支付</view>
-					<view class="card card-k" v-else-if="item.pay_status == 1">支付中</view>
-					<view class="card card-k" v-else-if="item.pay_status == 2">支付成功</view>
-					<view class="card card-r" v-else-if="item.pay_status == 3">支付失败</view>
-					<view class="card card-k" v-else-if="item.pay_status == 4">支付取消</view>
-					<view class="card card-b" v-else-if="item.pay_status == 5">线下待审核</view>
-					<view class="card card-k" v-else-if="item.pay_status == 6">线下审核拒绝</view>
+					<view class="card card-k" v-if="item.pay_status == 0">{{ $t('待支付') }}</view>
+					<view class="card card-k" v-else-if="item.pay_status == 1">{{ $t('支付中') }}</view>
+					<view class="card card-k" v-else-if="item.pay_status == 2">{{ $t('支付成功') }}</view>
+					<view class="card card-r" v-else-if="item.pay_status == 3">{{ $t('支付失败') }}</view>
+					<view class="card card-k" v-else-if="item.pay_status == 4">{{ $t('支付取消') }}</view>
+					<view class="card card-b" v-else-if="item.pay_status == 5">{{ $t('线下待审核') }}</view>
+					<view class="card card-k" v-else-if="item.pay_status == 6">{{ $t('线下审核拒绝') }}</view>
 				</view>
 
 				<view v-if="selectOrderType == 0">
-					<view class="card card-k" v-if="item.pay_status == 0">待支付</view>
-					<view class="card card-k" v-else-if="item.pay_status == 1">支付中</view>
-					<view class="card card-k" v-else-if="item.pay_status == 2">支付成功</view>
-					<view class="card card-r" v-else-if="item.pay_status == 3">支付失败</view>
-					<view class="card card-k" v-else-if="item.pay_status == 4">支付取消</view>
-					<view class="card card-b" v-else-if="item.pay_status == 5">线下待审核</view>
-					<view class="card card-k" v-else-if="item.pay_status == 6">线下审核拒绝</view>
+					<view class="card card-k" v-if="item.pay_status == 0">{{ $t('待支付') }}</view>
+					<view class="card card-k" v-else-if="item.pay_status == 1">{{ $t('支付中') }}</view>
+					<view class="card card-k" v-else-if="item.pay_status == 2">{{ $t('支付成功') }}</view>
+					<view class="card card-r" v-else-if="item.pay_status == 3">{{ $t('支付失败') }}</view>
+					<view class="card card-k" v-else-if="item.pay_status == 4">{{ $t('支付取消') }}</view>
+					<view class="card card-b" v-else-if="item.pay_status == 5">{{ $t('线下待审核') }}</view>
+					<view class="card card-k" v-else-if="item.pay_status == 6">{{ $t('线下审核拒绝') }}</view>
 				</view>
 
 			</view>
@@ -86,76 +86,76 @@
 				<view class="bottom-item">
 					<block v-if="selectOrderType == 1">
 						<view class="item-label-view flex-row">
-							<view class="item-label">订单编号</view>
+							<view class="item-label">{{ $t('订单编号') }}</view>
 							<view class="item-value">{{ item.sub_sn }}</view>
 						</view>
 						<view class="item-label-view flex-row">
-							<view class="item-label">下单时间</view>
+							<view class="item-label">{{ $t('下单时间') }}</view>
 							<view class="item-value">{{ tools.formatTime(item.ctime) }}</view>
 						</view>
 						<view v-if="item.hire_end_time && item.order_type != 3" class="item-label-view flex-row">
-							<view class="item-label">有效期至</view>
+							<view class="item-label">{{ $t('有效期至') }}</view>
 							<view class="item-value">{{ tools.formatTime(item.hire_end_time) }}</view>
 						</view>
 
 						<view v-if="item.hire_duration_time && item.order_type != 3" class="item-label-view flex-row">
-							<view class="item-label">有效时长</view>
+							<view class="item-label">{{ $t('有效时长') }}</view>
 							<view class="item-value">
 								{{ item.hire_duration_time.day > 0 ? item.hire_duration_time.day : '' }}<text
-									v-if="item.hire_duration_time.day > 0">日</text>{{ item.hire_duration_time.hour > 0 ?
-									item.hire_duration_time.hour : '' }}<text v-if="item.hire_duration_time.hour > 0">小时</text>{{ item.hire_duration_time.minute > 0 ?
-									item.hire_duration_time.minute : '' }}<text v-if="item.hire_duration_time.minute > 0">分</text>
+									v-if="item.hire_duration_time.day > 0">{{ $t('') }}</text>{{ item.hire_duration_time.hour > 0 ?
+									item.hire_duration_time.hour : '' }}<text v-if="item.hire_duration_time.hour > 0">{{ $t('小时') }}</text>{{ item.hire_duration_time.minute > 0 ?
+									item.hire_duration_time.minute : '' }}<text v-if="item.hire_duration_time.minute > 0">{{ $t('') }}</text>
 							</view>
 						</view>
 					</block>
 					<block v-if="selectOrderType == 0">
 						<view class="item-label-view flex-row">
-							<view class="item-label">下单时间</view>
+							<view class="item-label">{{ $t('下单时间') }}</view>
 							<view class="item-value">{{ tools.formatTime(item.ctime) }}</view>
 						</view>
 						<view v-if="item.expire_time" class="item-label-view flex-row">
-							<view class="item-label">有效期至</view>
+							<view class="item-label">{{ $t('有效期至') }}</view>
 							<view class="item-value">{{ tools.formatTime(item.expire_time) }}</view>
 						</view>
 						<view v-if="item.package_type != 2 && item.expire_time" class="item-label-view flex-row">
-							<view class="item-label">有效时长</view>
+							<view class="item-label">{{ $t('有效时长') }}</view>
 							<view class="item-value">
 								{{calculateRemainingDays(item.expire_time)}}<text
-									style="color: #9FA7B7;">/{{item.total_day}}天</text>
+									style="color: #9FA7B7;">/{{item.total_day}}{{ $t('') }}</text>
 							</view>
 						</view>
 						<view v-if="item.package_type == 1" class="item-label-view flex-row">
-							<view class="item-label">免费换电数</view>
-							<!-- <view class="item-value">{{item.last_num}}次</view> -->
-							<view class="item-value">不限次数</view>
+							<view class="item-label">{{ $t('免费换电数') }}</view>
+							<!-- <view class="item-value">{{item.last_num}}{{ $t('') }}</view> -->
+							<view class="item-value">{{ $t('不限次数') }}</view>
 						</view>
 						<view v-if="item.package_type == 2" class="item-label-view flex-row">
-							<view class="item-label">免费换电数</view>
-							<view class="item-value">{{item.last_num}}/{{item.num}}次</view>
+							<view class="item-label">{{ $t('免费换电数') }}</view>
+							<view class="item-value">{{item.last_num}}/{{item.num}}{{ $t('') }}</view>
 						</view>
 						<view v-if="item.package_type == 3" class="item-label-view flex-row">
-							<view class="item-label">免费换电数</view>
-							<view class="item-value">{{item.total_day}}天/{{item.last_num}}次</view>
+							<view class="item-label">{{ $t('免费换电数') }}</view>
+							<view class="item-value">{{item.total_day}}{{ $t('') }}/{{item.last_num}}{{ $t('') }}</view>
 						</view>
 
 					</block>
 
 					<view v-if="selectOrderType==1" class="item-label-view flex-row">
-						<view class="item-label">订单类型</view>
-						<view class="item-value">{{ item.order_type==3?'购车':'租车' }}</view>
+						<view class="item-label">{{ $t('订单类型') }}</view>
+						<view class="item-value">{{ item.order_type==3?$t('购车'):$t('租车') }}</view>
 					</view>
 
 					<view v-if="selectOrderType==0" class="flex-row button-config-view">
-						<view v-if="item.order_refund_status == 1" class="return-money">申请中</view>
-						<view v-if="item.order_refund_status == 2" class="return-money">审核失败</view>
-						<view v-if="item.order_refund_status == 3" class="return-money">退款失败</view>
-						<view v-if="item.order_refund_status == 4" class="return-money">已退款</view>
-						<view class="item-value">套餐金额$ <text
+						<view v-if="item.order_refund_status == 1" class="return-money">{{ $t('申请中') }}</view>
+						<view v-if="item.order_refund_status == 2" class="return-money">{{ $t('审核失败') }}</view>
+						<view v-if="item.order_refund_status == 3" class="return-money">{{ $t('退款失败') }}</view>
+						<view v-if="item.order_refund_status == 4" class="return-money">{{ $t('已退款') }}</view>
+						<view class="item-value">{{ $t('套餐金额') }}$ <text
 								class="money-style">{{(item.package_money / 100).toFixed(2)}}</text></view>
 					</view>
 					<view v-if="selectOrderType==1" class="flex-row button-config-view">
-						<view class="order-money">订单金额 $ {{(item.money / 100).toFixed(2)}}</view>
-						<view v-if="item.order_status == 2" class="activation-btn">激活车辆</view>
+						<view class="order-money">{{ $t('订单金额') }} $ {{(item.money / 100).toFixed(2)}}</view>
+						<view v-if="item.order_status == 2" class="activation-btn">{{ $t('激活车辆') }}</view>
 					</view>
 				</view>
 			</view>
@@ -184,11 +184,11 @@
 				selectOrderType: 1,
 				orderTypes: [{
 						value: 0,
-						text: '换电套餐'
+						text: this.$t('换电套餐')
 					},
 					{
 						value: 1,
-						text: '租车购车'
+						text: this.$t('租车购车')
 					}
 				],
 				start_id:0,

+ 11 - 7
pages/orderStatus/orderStatus.css

@@ -457,10 +457,14 @@
 	color: #060809;
 	font-size: 28rpx;
 	background-color: #EBECEC;
-	height: 60rpx;
-	line-height: 60rpx;
+	height: 80rpx;
+	line-height: 80rpx;
 	border-radius: 40rpx;
 	padding: 0 20rpx;
+	display: flex;
+	flex-grow: 1;
+	justify-content: center;
+	align-items: center;
 	/* padding-top: 24rpx;
 	padding-bottom: 24rpx; */
 	text-align: center;
@@ -486,8 +490,8 @@
 .sesame-btn {
 	color: #ffffff;
 	font-size: 28rpx;
-	height: 60rpx;
-	line-height: 60rpx;
+	height: 80rpx;
+	line-height: 80rpx;
 	background-color: #060809;
 	padding: 0 20rpx;
 	border-radius: 40rpx;
@@ -587,7 +591,7 @@
 
 .payment-info {
 	background-color: #ffffff;
-	padding: 24rpx 32rpx 30rpx;
+	padding: 28rpx 32rpx 38rpx;
 	width: 100%;
 	position: fixed;
 	left: 0;
@@ -991,8 +995,8 @@
 .link-phone-btn {
 	color: #ffffff;
 	font-size: 28rpx;
-	height: 60rpx;
-	line-height: 60rpx;
+	height: 80rpx;
+	line-height: 80rpx;
 	background-color: #060809;
 	border-radius: 40rpx;
 	padding: 0 20rpx;

+ 129 - 129
pages/orderStatus/orderStatus.vue

@@ -6,28 +6,28 @@
 			<navBar bgColor="transparent" left="0"></navBar>
 			<view>
 				<view v-if="orderInfo.pay_status!=2">
-					<view class="get-time-view flex-row" v-if="orderInfo.pay_status == 0">待支付</view>
-					<view class="get-time-view flex-row" v-else-if="orderInfo.pay_status == 1">支付中</view>
-					<view class="get-time-view flex-row" v-else-if="orderInfo.pay_status == 3">支付失败</view>
-					<view class="get-time-view flex-row" v-else-if="orderInfo.pay_status == 4">支付取消</view>
-					<view class="get-time-view flex-row" v-else-if="orderInfo.pay_status == 5">线下待审核</view>
-					<view class="get-time-view flex-row" v-else-if="orderInfo.pay_status == 6">线下审核拒绝</view>
+					<view class="get-time-view flex-row" v-if="orderInfo.pay_status == 0">{{ $t('待支付') }}</view>
+					<view class="get-time-view flex-row" v-else-if="orderInfo.pay_status == 1">{{ $t('支付中') }}</view>
+					<view class="get-time-view flex-row" v-else-if="orderInfo.pay_status == 3">{{ $t('支付失败') }}</view>
+					<view class="get-time-view flex-row" v-else-if="orderInfo.pay_status == 4">{{ $t('支付取消') }}</view>
+					<view class="get-time-view flex-row" v-else-if="orderInfo.pay_status == 5">{{ $t('线下待审核') }}</view>
+					<view class="get-time-view flex-row" v-else-if="orderInfo.pay_status == 6">{{ $t('线下审核拒绝') }}</view>
 				</view>
 				<block v-if="orderInfo.pay_status == 2">
-					<view :class="['get-time-view', 'flex-row', 'blue-text']" v-if="orderInfo.order_status == 3">使用中...
+					<view :class="['get-time-view', 'flex-row', 'blue-text']" v-if="orderInfo.order_status == 3">{{ $t('使用中') }}...
 					</view>
-					<view :class="['get-time-view', 'flex-row', 'red-text']" v-if="orderInfo.order_status == 4">已逾期
+					<view :class="['get-time-view', 'flex-row', 'red-text']" v-if="orderInfo.order_status == 4">{{ $t('已逾期') }}
 					</view>
-					<view class="get-time-view flex-row" v-if="orderInfo.order_status == 2">请上传车辆图片激活车辆</view>
-					<view class="get-time-view flex-row" v-if="orderInfo.order_status == 5">待门店确认</view>
-					<view class="get-time-view flex-row" v-if="orderInfo.order_status == 6">还车中,等待门店取车</view>
-					<view class="get-time-view flex-row" v-if="orderInfo.order_status == 7">已完成</view>
+					<view class="get-time-view flex-row" v-if="orderInfo.order_status == 2">{{ $t('请上传车辆图片激活车辆') }}</view>
+					<view class="get-time-view flex-row" v-if="orderInfo.order_status == 5">{{ $t('待门店确认') }}</view>
+					<view class="get-time-view flex-row" v-if="orderInfo.order_status == 6">{{ $t('还车中') }},{{ $t('等待门店取车') }}</view>
+					<view class="get-time-view flex-row" v-if="orderInfo.order_status == 7">{{ $t('已完成') }}</view>
 					<view class="get-time-view flex-row"
-						v-if="orderInfo.order_status == 8||orderInfo.order_status == 9">已取消</view>
-					<view class="get-time-view flex-row" v-if="orderInfo.order_status == 1 "><text>请于</text><text
-						class="get-car-time">{{tools.formatTimeSecond( orderInfo.pick_up_time)}}</text><text>到门店取车</text>
+						v-if="orderInfo.order_status == 8||orderInfo.order_status == 9">{{ $t('已取消') }}</view>
+					<view class="get-time-view flex-row" v-if="orderInfo.order_status == 1 "><text>{{ $t('请于') }}</text><text
+							class="get-car-time">{{tools.formatTimeSecond( orderInfo.pick_up_time)}}</text><text>{{ $t('到门店取车') }}</text>
 					</view>
-					<view v-if="orderInfo.order_status == 10">已完结</view>
+					<view v-if="orderInfo.order_status == 10">{{ $t('已完结') }}</view>
 				</block>
 
 			</view>
@@ -40,18 +40,18 @@
 							<block v-else>{{Number(orderInfo.hire_cycle) * (orderInfo.hire_duration)}}</block>
 						</view>
 						
-						<view>{{(orderInfo.order_status == 2 || orderInfo.order_status == 3)?'租期剩余':(orderInfo.order_status == 4 ? '逾期时长':'租借周期')}}·<text style="opacity: 0.4;">{{leaseUnits(orderInfo.hire_duration_unit)}}</text></view>
+						<view>{{((orderInfo.order_status == 2) || orderInfo.order_status == 3)?$t('租期剩余'):(orderInfo.order_status == 4 ? $t('逾期时长'):$t('租借周期'))}}·<text style="opacity: 0.4;">{{leaseUnits(orderInfo.hire_duration_unit)}}</text></view>
 						
 						<!-- <view v-if="(orderInfo.order_status == 2&&orderInfo.hire_type==2) || orderInfo.order_status == 3">
-							租期剩余·天</view>
-						<view v-else-if="orderInfo.order_status == 4 " class="red-status">逾期时长·天</view>
-						<view v-else>租借周期·天</view> -->
+							{{ $t('租期剩余') }}·{{ $t('') }}</view>
+						<view v-else-if="orderInfo.order_status == 4 " class="red-status">{{ $t('逾期时长') }}·{{ $t('') }}</view>
+						<view v-else>{{ $t('租借周期') }}·{{ $t('') }}</view> -->
 					</view>
 					<view v-if="orderInfo.order_status != 4||orderInfo.overdue_money==0" class="money-item">
 						<view>
 							{{((orderInfo.hire_money + orderInfo.deposit) / 100).toFixed(2)}}
 						</view>
-						<view>订单金额<text style="opacity: 0.4;">·$</text></view>
+						<view>{{ $t('订单金额') }}<text style="opacity: 0.4;">·$</text></view>
 					</view>
 
 					<view v-if="orderInfo.order_status == 4&&orderInfo.overdue_money!=0" class="money-item">
@@ -59,11 +59,11 @@
 							{{(orderInfo.money / 100).toFixed(2)}}
 							<!-- {{(orderInfo.overdue_money / 100).toFixed(2)}} -->
 						</view>
-						<view style="color:#F95151">逾期金额·$</view>
+						<view style="color:#F95151">{{ $t('逾期金额') }}·$</view>
 					</view>
 
 					<view @tap="bindExpanded">
-						<text>{{isExpanded?'收起':'展开'}}</text>
+						<text>{{isExpanded?$t('收起'): $t('展开')}}</text>
 						<img
 							:src="isExpanded?'https://qiniu.bms16.com/FvRah8ro91B_TUVEmInBq6n69W2f':'https://qiniu.bms16.com/FtbxPP0aXYG8hyJTEJfNTXa_Puuc'" />
 					</view>
@@ -71,17 +71,17 @@
 				
 				<view v-if="orderInfo.order_type == 3" class="flex-row flex-between">
 					<view class="money-item">
-						<view></view>
-						<view>租借周期:购买</view>
+						<view>{{$t('购买')}}</view>
+						<view>{{ $t('租借周期') }}:</view>
 					</view>
 					<view class="money-item">
 						<view :class="orderInfo.order_status == 4?'red-status':''">
-							{{orderInfo.order_status == 4?tools.toFix(over_fee/100):tools.toFix(orderInfo.money / 100)}}<text>元</text>
+							{{orderInfo.order_status == 4?tools.toFix(over_fee/100):tools.toFix(orderInfo.money / 100)}}<text>{{ $t('') }}</text>
 						</view>
-						<view>订单金额</view>
+						<view>{{ $t('订单金额') }}</view>
 					</view>
 					<view @tap="bindExpanded">
-						<text>{{isExpanded?'收起':'展开'}}</text>
+						<text>{{isExpanded?$t('收起'):$t('展开')}}</text>
 						<img
 							:src="isExpanded?'https://qiniu.bms16.com/FvRah8ro91B_TUVEmInBq6n69W2f':'https://qiniu.bms16.com/FtbxPP0aXYG8hyJTEJfNTXa_Puuc'" />
 					</view>
@@ -90,32 +90,32 @@
 				<view v-if="isExpanded" class="dashed-border"></view>
 				
 				<view v-if="isExpanded">
-					<view class="big-text">订单信息</view>
+					<view class="big-text">{{ $t('订单信息') }}</view>
 					<view class="sn-content flex-row flex-between">
-						<view class="sn-title">订单编号</view>
+						<view class="sn-title">{{ $t('订单编号') }}</view>
 						<view class="sn-text">{{orderInfo.sub_sn}}</view>
 					</view>
 					<view class="sn-content flex-row flex-between">
-						<view class="sn-title">下单时间</view>
+						<view class="sn-title">{{ $t('下单时间') }}</view>
 						<view class="sn-text">{{tools.formatTime(orderInfo.ctime)}}</view>
 					</view>
 					<view v-if="orderInfo.pay_time" class="sn-content flex-row flex-between">
-						<view class="sn-title">支付时间</view>
+						<view class="sn-title">{{ $t('支付时间') }}</view>
 						<view class="sn-text">{{tools.formatTime(orderInfo.pay_time)}}</view>
 					</view>
 					<view class="sn-content flex-row flex-between">
-						<view class="sn-title">支付方式</view>
-						<view v-if="orderInfo.pay_type == 0" class="sn-text">微信支付</view>
-						<view v-if="orderInfo.pay_type == 1" class="sn-text">线下支付</view>
-						<view v-if="orderInfo.pay_type == 2" class="sn-text">支付宝支付</view>
-						<view v-if="orderInfo.pay_type == 9" class="sn-text">钱包余额支付</view>
+						<view class="sn-title">{{ $t('支付方式') }}</view>
+						<view v-if="orderInfo.pay_type == 0" class="sn-text">{{ $t('微信支付') }}</view>
+						<view v-if="orderInfo.pay_type == 1" class="sn-text">{{ $t('线下支付') }}</view>
+						<view v-if="orderInfo.pay_type == 2" class="sn-text">{{ $t('支付宝支付') }}</view>
+						<view v-if="orderInfo.pay_type == 9" class="sn-text">{{ $t('钱包余额支付') }}</view>
 					</view>
 					<view v-if="orderInfo.order_type != 3" class="sn-content flex-row flex-between">
-						<view class="sn-title">租车金额</view>
+						<view class="sn-title">{{ $t('租车金额') }}</view>
 						<view class="sn-text">$ {{tools.toFix(orderInfo.hire_money/100)}}</view>
 					</view>
 					<view v-if="orderInfo.order_type != 3" class="sn-content flex-row flex-between">
-						<view class="sn-title">租车押金</view>
+						<view class="sn-title">{{ $t('租车押金') }}</view>
 						<view class="sn-text"><text class="grey-text"></text> $
 							{{tools.toFix(orderInfo.deposit/100)}}
 						</view>
@@ -125,14 +125,14 @@
 		</view>
 		<view class="car-info">
 			<view class="flex-row flex-between" style="margin-bottom: 40rpx;">
-				<text>自行去门店取还</text>
+				<text>{{ $t('自行去门店取还') }}</text>
 				<text class="distance-num">{{orderInfo.distance}}m</text>
 			</view>
 			<view class="flex-row store-img-view">
 				<img src="https://qiniu.bms16.com/FrwDlFZdSMiBgqnqDjB19PiDUmuu" alt="">
 				<view style="width: calc(100% - 180rpx);margin-left: 24rpx;">
 					<view class="store-name">{{orderInfo.shop_name}}</view>
-					<view class="store-name-address">{{orderInfo.address || '未知地址'}}</view>
+					<view class="store-name-address">{{orderInfo.address || $t('未知地址')}}</view>
 					<view class="flex-row flex-between align-center">
 						<view class="flex-row time-style align-center">
 							<img v-if="orderInfo.work_begin_time && orderInfo.work_end_time"
@@ -148,16 +148,16 @@
 			</view>
 		</view>
 		<view class="car-info">
-			<view>车辆信息</view>
+			<view>{{ $t('车辆信息') }}</view>
 			<view class="car-top flex-row flex-between">
 				<view>
 					<view class="top-flex">
 						<view>{{orderInfo.model_name}}</view>
 						<view>
-							续航{{(orderInfo.endurance /1000).toFixed(0)}}km|重量{{(orderInfo.weight / 1000).toFixed(0)}}kg
+							{{ $t('续航') }}{{(orderInfo.endurance /1000).toFixed(0)}}km|{{ $t('重量') }}{{(orderInfo.weight / 1000).toFixed(0)}}kg
 						</view>
 					</view>
-					<!-- //配套服务 -->
+					<!-- //{{ $t('配套服务') }} -->
 					<view class="serviceList">
 						<view v-for="(item,index) of orderInfo.service_list" :key="index" class="tag">
 							{{item}}
@@ -171,30 +171,30 @@
 				<view class="flex-row flex-between">
 					<view class="exchange-info-title flex-row align-center">
 						<img style="width: 40rpx;height: 40rpx;" src="https://qiniu.bms16.com/Fj_ifr41AqH2PijZBdOBa3SCxADg" alt="">
-						<text style="margin-left: 16rpx;">换电信息</text>
+						<text style="margin-left: 16rpx;">{{ $t('换电信息') }}</text>
 					</view>
 					<view @tap="navToExchange" class="flex-row" style="margin-bottom: 28rpx;">
-						<view class="exchange-button">共3次</view>
+						<view class="exchange-button">{{ $t('') }}3{{ $t('') }}</view>
 						<image src="https://qiniu.bms16.com/FpIN7AVzFU75slFlX-SIdnSEmn1k" style="width: 28rpx;height: 28rpx;" />
 					</view>
 				</view>			
-				<view class="exchange-content">本单可享3次免费换电数,超出后需单独支付</view>
-				<view class="exchange-content">自费换电:S1/次</view> -->
-			<!-- <view class="exchange-content">本单您可享受{{orderInfo.gift_exchange_num}}次免费换电,
-				当前免费换电剩余{{(orderInfo.gift_exchange_num - orderInfo.used_exchange_num) > 0 ? (orderInfo.gift_exchange_num - orderInfo.used_exchange_num) : '0' }}次,超出后需要单独支付换电费用
+				<view class="exchange-content">{{ $t('本单可享') }}3{{ $t('次免费换电数,超出后需单独支付') }}</view>
+				<view class="exchange-content">{{ $t('自费换电') }}:S1/{{ $t('') }}</view> -->
+			<!-- <view class="exchange-content">{{ $t('本单您可享受') }}{{orderInfo.gift_exchange_num}}{{ $t('次免费换电,') }}
+				{{ $t('当前免费换电剩余') }}{{(orderInfo.gift_exchange_num - orderInfo.used_exchange_num) > 0 ? (orderInfo.gift_exchange_num - orderInfo.used_exchange_num) : '0' }}{{ $t('次,超出后需要单独支付换电费用') }}
 				</view> -->
 			<!-- </view> -->
 		</view>
 
-		<view v-if="orderInfo.hire_begin_time!=0&&orderInfo.hire_end_time!=0" class="return-info">
+		<view v-if="(orderInfo.hire_begin_time!=0&&orderInfo.hire_end_time!=0)||orderInfo.order_type!=3" class="return-info">
 			<view class="return-top flex-row flex-between">
-				<view>取还时间</view>
+				<view>{{ $t('取还时间') }}</view>
 				<view>
-					<!-- 共3天{{orderInfo.hire_return_time.day > 0 ? orderInfo.hire_return_time.day :'' }}<text
-						v-if="orderInfo.hire_return_time.day>0">日</text>{{orderInfo.hire_return_time.hour > 0 ? orderInfo.hire_return_time.hour :'' }}<text
-						v-if="orderInfo.hire_return_time.hour>0">小时</text>{{orderInfo.hire_return_time.minute > 0 ? orderInfo.hire_return_time.minute :'' }}<text
-						v-if="orderInfo.hire_return_time.minute>0">分</text> -->
-					共{{hireDurationUnitsFn(orderInfo.total_hire_time,orderInfo.hire_duration_unit)}}{{leaseUnits(orderInfo.hire_duration_unit)}}
+					<!-- {{ $t('') }}3{{ $t('') }}{{orderInfo.hire_return_time.day > 0 ? orderInfo.hire_return_time.day :'' }}<text
+						v-if="orderInfo.hire_return_time.day>0">{{ $t('') }}</text>{{orderInfo.hire_return_time.hour > 0 ? orderInfo.hire_return_time.hour :'' }}<text
+						v-if="orderInfo.hire_return_time.hour>0">{{ $t('小时') }}</text>{{orderInfo.hire_return_time.minute > 0 ? orderInfo.hire_return_time.minute :'' }}<text
+						v-if="orderInfo.hire_return_time.minute>0">{{ $t('') }}</text> -->
+					{{ $t('') }}{{hireDurationUnitsFn(orderInfo.total_hire_time,orderInfo.hire_duration_unit)}}{{leaseUnits(orderInfo.hire_duration_unit)}}
 				</view>
 			</view>
 			<view class="return-bottom flex-row">
@@ -210,18 +210,18 @@
 
 		<view v-if="orderInfo.order_status==2||orderInfo.order_status==3||orderInfo.order_status==4"
 			class="overdue-info">
-			<view>逾期规则</view>
+			<view>{{ $t('逾期规则') }}</view>
 			<view class="overdue-one">
-				<view>1. 逾期后还可用车吗?</view>
-				<view>如果逾期将触发智能锁车逻辑,可能导致您无法正常用车,请及时续费或联系商家处理。</view>
+				<view>1. {{ $t('逾期后还可用车吗') }}?</view>
+				<view>{{ $t('如果逾期将触发智能锁车逻辑,可能导致您无法正常用车,请及时续费或联系商家处理。') }}</view>
 			</view>
 			<view class="overdue-two">
-				<view>2. 逾期费计算标准是什么?</view>
-				<view>小时租逾期费=每小时费用*逾期小时;当日还/日/周/月/季租逾期费=每天费用*逾期天数;如果不满1小时按1小时算,不满1天按1天算,最终收取的逾期费以门店确认的费用为准</view>
+				<view>2. {{ $t('逾期费计算标准是什么') }}?</view>
+				<view>{{ $t('小时租逾期费') }}={{ $t('每小时费用') }}*{{ $t('逾期小时;当日还') }}/{{ $t('') }}/{{ $t('') }}/{{ $t('') }}/{{ $t('季租逾期费') }}={{ $t('每天费用') }}*{{ $t('逾期天数;如果不满') }}1{{ $t('小时按') }}1{{ $t('小时算,不满') }}1{{ $t('天按') }}1{{ $t('天算,最终收取的逾期费以门店确认的费用为准') }}</view>
 			</view>
 			<view class="overdue-thr">
-				<view>3. 逾期后续租如何收费?</view>
-				<view>逾期后及时续租不收取逾期费,逾期时长将从续租订单的用车时间中抵扣</view>
+				<view>3. {{ $t('逾期后续租如何收费') }}?</view>
+				<view>{{ $t('逾期后及时续租不收取逾期费,逾期时长将从续租订单的用车时间中抵扣') }}</view>
 			</view>
 		</view>
 		<view class="inset-bottom"></view>
@@ -229,89 +229,89 @@
 			<view class="payment-info flex-row">
 				<view
 					v-if="(orderInfo.order_status == 0 ||orderInfo.order_status == 1 || orderInfo.pay_status == 5 || orderInfo.pay_status == 0) && orderInfo.order_type != 3"
-					class="cancel" @tap="clickCancel">结束订单</view>
-				<view @tap="callStorePhone" class="link-phone-btn">联系门店</view>
+					class="cancel" @tap="clickCancel">{{$t('结束订单')}}</view>
+				<view @tap="callStorePhone" class="link-phone-btn">{{$t('联系门店')}}</view>
 			</view>
 		</block>
 		<block v-if="orderInfo.pay_status == 2">
 			<view class="payment-info flex-row">
-					<!-- 待激活 -->
+					<!-- 待激活 待取车-->
 					<view class="grow_1" v-if="orderInfo.order_status == 0 ||orderInfo.order_status == 1">
 						<view
 							v-if="(orderInfo.order_status == 0 ||orderInfo.order_status == 1 || orderInfo.pay_status == 5 || orderInfo.pay_status == 0) && orderInfo.order_type != 3"
-							class="cancel" @tap="clickCancel">结束订单</view>
-							<view v-if="orderInfo.order_status == 1" @tap="navToScan" class="sesame-btn ">扫码绑定</view>
-							<view v-if="orderInfo.order_status == 2" @tap="navToScan" class="sesame-btn ">去上传</view>
+							class="cancel" @tap="clickCancel">{{$t('结束订单')}}</view>
+							<view  @tap="callStorePhone" class="deposit-btn">{{$t('联系门店')}}</view>
+							<view v-if="orderInfo.order_status == 1" @tap="navToScan" class="sesame-btn ">{{$t('扫码绑定')}}</view>
+							<view v-if="orderInfo.order_status == 2" @tap="navToScan" class="sesame-btn ">{{$t('去上传')}}</view>
 					</view>
 					<!-- 使用中、已逾期 -->
 					<view class="grow_1" v-if="(orderInfo.order_status == 3||orderInfo.order_status == 4) && orderInfo.order_type != 3 && orderInfo.pay_status != 5">
-						<view  @tap="callStorePhone" class="cancel">联系门店</view>
-						<view @tap="tapReturnCar" class="deposit-btn">到店还车</view>
-						<view  @tap="bindRenew" class="sesame-btn">续租</view>
+						<view  @tap="callStorePhone" class="cancel">{{$t('联系门店')}}</view>
+						<view @tap="tapReturnCar" class="deposit-btn">{{$t('到店还车')}}</view>
+						<view  @tap="bindRenew" class="sesame-btn">{{$t('续租')}}</view>
 					</view>
 					<!-- 待门店确认、已取消、已完成 -->
 					<view class="grow_1" v-if="(orderInfo.order_status == 5||orderInfo.order_status == 6||orderInfo.order_status == 7||orderInfo.order_status == 8||orderInfo.order_status == 9)">
-						<view  @tap="callStorePhone" class="link-phone-btn">联系门店</view>
+						<view  @tap="callStorePhone" class="link-phone-btn">{{$t('联系门店')}}</view>
 					</view>	
 			</view>
 		</block>
 		<!-- <view class="payment-info flex-row flex-between">
 			<view v-if="orderInfo.order_status == 1 || orderInfo.pay_status == 5" class="flex-row"> 
 				<view v-if="orderInfo.order_type != 3"
-					class="cancel" @tap="clickCancel">结束订单
+					class="cancel" @tap="clickCancel">{{ $t('结束订单') }}
 				</view>
-				<view @tap="callStorePhone" class="deposit-btn ">联系门店</view>
+				<view @tap="callStorePhone" class="deposit-btn ">{{ $t('联系门店') }}</view>
 			</view>
 			<view v-if="orderInfo.order_status == 1" class="flex-row"> 
-				<view @tap="callStorePhone" class="deposit-btn ">联系门店</view>
-				<view @tap="navToScan" class="sesame-btn ">扫码绑定</view>
+				<view @tap="callStorePhone" class="deposit-btn ">{{ $t('联系门店') }}</view>
+				<view @tap="navToScan" class="sesame-btn ">{{ $t('扫码绑定') }}</view>
 			</view>
 
 			<view v-if="orderInfo.order_status == 2" class="flex-row">
-				<view @tap="callStorePhone" class="deposit-btn ">联系门店</view>
-				<view @tap="navToScan" class="sesame-btn ">去上传</view>
+				<view @tap="callStorePhone" class="deposit-btn ">{{ $t('联系门店') }}</view>
+				<view @tap="navToScan" class="sesame-btn ">{{ $t('去上传') }}</view>
 			</view>
 
 			<view
 				v-else-if="(orderInfo.order_status == 3||orderInfo.order_status == 4) && orderInfo.order_type != 3 && orderInfo.pay_status != 5"
 				class="flex-row"> 
-				<view @tap="callStorePhone" class="cancel">联系门店</view>
-				<view @tap="tapReturnCar" class="deposit-btn">到店还车</view>
-				<view @tap="bindRenew" class="sesame-btn">续租</view>
+				<view @tap="callStorePhone" class="cancel">{{ $t('联系门店') }}</view>
+				<view @tap="tapReturnCar" class="deposit-btn">{{ $t('到店还车') }}</view>
+				<view @tap="bindRenew" class="sesame-btn">{{ $t('续租') }}</view>
 			</view>
 
 			<view v-else-if="orderInfo.order_status == 5||orderInfo.order_status == 6" @tap="callStorePhone"
 				class="pay-btn">
-				联系门店</view> 
-			<view v-else-if="orderInfo.order_status == 7" @tap="callStorePhone" class="pay-btn">联系门店</view>
+				{{ $t('联系门店') }}</view> 
+			<view v-else-if="orderInfo.order_status == 7" @tap="callStorePhone" class="pay-btn">{{ $t('联系门店') }}</view>
 			
 
 			<view v-if="orderInfo.order_type == 3 && (orderInfo.order_status == 3||orderInfo.order_status == 4)"
-				@tap="callStorePhone" class="pay-btn">联系门店</view>
+				@tap="callStorePhone" class="pay-btn">{{ $t('联系门店') }}</view>
 		</view> -->
 
 		<view v-if="isShowCancel" class="cancel-b">
 			<view class="cancel-box">
 				<view class="cancel-title flex-row flex-between">
-					<view>选择取消原因</view>
+					<view>{{ $t('选择取消原因') }}</view>
 					<view @tap="isShowCancel = false" style="font-size: 60rpx;">×</view>
 				</view>
-				<view @click="reason = '行程变更无需用车'" class="cancel-item flex-row flex-between">
-					<view>行程变更无需用车</view>
-					<img
-						:src="reason == '行程变更无需用车'?'https://qiniu.bms16.com/FhWimtmWybKlYMB6mgIReVWArbfq':'https://qiniu.bms16.com/Fh0JH6_QbiXYmVy7FNYnDkVIGvLC'" />
+				<view @click="reason = $t('行程变更无需用车')" class="cancel-item flex-row flex-between">
+					<view>{{ $t('行程变更无需用车') }}</view>
+					<img :src="reason == $t('行程变更无需用车') ? 'https://qiniu.bms16.com/FhWimtmWybKlYMB6mgIReVWArbfq':'https://qiniu.bms16.com/Fh0JH6_QbiXYmVy7FNYnDkVIGvLC'" />
 				</view>
-				<view @click="reason = '修改订单信息'" class="cancel-item flex-row flex-between">
-					<view>修改订单信息</view>
+				<view @click="reason = $t('修改订单信息')" class="cancel-item flex-row flex-between">
+					<view>{{ $t('修改订单信息') }}</view>
 					<img
-						:src="reason == '修改订单信息'?'https://qiniu.bms16.com/FhWimtmWybKlYMB6mgIReVWArbfq':'https://qiniu.bms16.com/Fh0JH6_QbiXYmVy7FNYnDkVIGvLC'" />
+						:src="reason == $t('修改订单信息') ?'https://qiniu.bms16.com/FhWimtmWybKlYMB6mgIReVWArbfq':'https://qiniu.bms16.com/Fh0JH6_QbiXYmVy7FNYnDkVIGvLC'" />
 				</view>
-				<view @click="reason = '不想要了'" class="cancel-item flex-row flex-between">
-					<view>不想要了</view>
+				<view @click="reason = $t('不想要了')" class="cancel-item flex-row flex-between">
+					<view>{{ $t('不想要了') }}</view>
 					<img
-						:src="reason == '不想要了'?'https://qiniu.bms16.com/FhWimtmWybKlYMB6mgIReVWArbfq':'https://qiniu.bms16.com/Fh0JH6_QbiXYmVy7FNYnDkVIGvLC'" />
+						:src="reason == $t('不想要了') ?'https://qiniu.bms16.com/FhWimtmWybKlYMB6mgIReVWArbfq':'https://qiniu.bms16.com/Fh0JH6_QbiXYmVy7FNYnDkVIGvLC'" />
 				</view>
-				<view @click="bindCancel" class="cancel_btn">确认取消</view>
+				<view @click="bindCancel" class="cancel_btn">{{ $t('确认取消') }}</view>
 			</view>
 		</view>
 
@@ -368,7 +368,7 @@
 				charge_standard: {},
 				isShowCancel: false,
 				order_sn: '',
-				reason: '行程变更无需用车',
+				reason: this.$t('行程变更无需用车'),
 				orderInfo: {},
 				shop_image: [],
 				isExpanded: false,
@@ -488,24 +488,24 @@
 					if (data.data.model_id == this.orderInfo.model_id) {
 						return true
 					} else {
-						common.simpleToast('车型不匹配!')
+						common.simpleToast(this.$t('车型不匹配!'))
 						return false
 					}
 
 					if (data.data.is_hire == 1) {
 						return true
 					} else {
-						common.simpleToast('车辆已被租售!')
+						common.simpleToast(this.$t('车辆已被租售!'))
 						return false
 					}
 					if (data.data.is_display == 1) {
 						return true
 					} else {
-						common.simpleToast('车辆未展示!')
+						common.simpleToast(this.$t('车辆未展示!'))
 						return false
 					}
 				} else {
-					common.simpleToast('请扫描正确的二维码!')
+					common.simpleToast(this.$t('请扫描正确的二维码!'))
 					return false
 				}
 				return false
@@ -522,7 +522,7 @@
 					if (!await this.carDetFn(car_sn)) return
 				}
 				uni.showLoading({
-					title: '识别中....',
+					title: this.$t('识别中')+'....',
 					mask: true
 				})
 				setTimeout(() => {
@@ -554,19 +554,19 @@
 
 			hireDurationUnitFn(type) {
 				if (type == 1) {
-					return '天'
+					return this.$t('天')
 				} else if (type == 2) {
-					return '月'
+					return this.$t('月')
 				} else if (type == 3) {
-					return '年'
+					return this.$t('年')
 				} else if (type == 4) {
-					return '小时'
+					return this.$t('小时')
 				} else if (type == 5) {
-					return '分钟'
+					return this.$t('分钟')
 				} else if (type == 6) {
-					return '周'
+					return this.$t('周')
 				} else if (type == 7) {
-					return '季'
+					return this.$t('季')
 				}
 			},
 			hireDurationUnitsFn(time, type) {
@@ -727,11 +727,11 @@
 			async bindCancel() {
 				const me = this
 				let res = await uni.showModal({
-					title: '取消订单',
-					content: '您是否需要取消该订单',
-					confirmText: '是',
+					title: this.$t('取消订单'),
+					content: this.$t('您是否需要取消该订单'),
+					confirmText: this.$t('是'),
 					confirmColor: '#0074FF',
-					cancelText: '否',
+					cancelText: this.$t('否'),
 					cancelColor: '#191D23',
 				});
 				if (res[1].confirm) {
@@ -782,8 +782,8 @@
 				const me = this
 				const phone = me.shopInfo.link_phone
 				uni.showModal({
-					content: `您是否要拨打电话${phone}?`,
-					confirmText: '确定',
+					content: `${this.$t('您是否要拨打电话')}${phone}?`,
+					confirmText: this.$t('确定'),
 					success: (res) => {
 						if (res.confirm) {
 							uni.makePhoneCall({
@@ -889,7 +889,7 @@
 							.last_comm_time) > 1800
 						me.plate_number = resp.data.data.license_plate_number
 						if (resp.data.data.last_comm_time === 0 || isOffline) {
-							common.simpleToast('此车辆已离线,请选择其他车辆')
+							common.simpleToast(this.$t('此车辆已离线,请选择其他车辆'))
 						} else {
 							let carInfo = JSON.stringify(resp.data.data)
 							const car_model = resp.data.data.model_info.car_model
@@ -899,10 +899,10 @@
 							if (resp.data.data.has_owner) { //车辆正在被使用
 								if (resp.data.data.is_mine) { //是本人在使用
 									wx.showModal({
-										title: '提示',
-										content: '已有正在使用的车辆,是否跳转至车辆详情页?',
-										cancelText: '取消',
-										confirmText: '确定',
+										title: this.$t('提示'),
+										content: this.$t('已有正在使用的车辆,是否跳转至车辆详情页')+'?',
+										cancelText: this.$t('取消'),
+										confirmText: this.$t('确定'),
 										success: function(res) {
 											this.isReturnHome = false
 											uni.navigateTo({
@@ -914,12 +914,12 @@
 										complete: function(res) {},
 									})
 								} else {
-									common.simpleToast('此车辆正在被使用')
+									common.simpleToast(this.$t('此车辆正在被使用'))
 								}
 							} else {
 								if (me.order_sn && me.order_sn != '') {
 									if (this.orderInfo.model_id != model_id) { // 预租车型与之前预约车型不一致
-										common.simpleToast('与预约车型不符')
+										common.simpleToast(this.$t('与预约车型不符'))
 									} else {
 										this.isReturnHome = false
 										uni.navigateTo({
@@ -974,14 +974,14 @@
 							tradeNO: resp.data.data.trade_no,
 							success: function(res) {
 								if (res.resultCode == 9000) {
-									common.simpleToast('支付成功');
+									common.simpleToast(this.$t('支付成功'));
 								}
 								setTimeout(function() {
 									me.bindOrderInfo()
 								}, 1000)
 							},
 							fail: function(res) {
-								common.simpleToast('支付失败,请重试')
+								common.simpleToast(this.$t('支付失败,请重试'))
 							},
 						})
 						//#endif
@@ -989,12 +989,12 @@
 						var payParams = JSON.parse(resp.data.data.payParams);
 						user.wxPay(me.order_sn, payParams, function(isSuccess) {
 							if (isSuccess) {
-								common.simpleToast('支付成功')
+								common.simpleToast(this.$t('支付成功'))
 								setTimeout(function() {
 									me.bindOrderInfo()
 								}, 1000)
 							} else {
-								common.simpleToast('支付失败,请重试')
+								common.simpleToast(this.$t('支付失败,请重试'))
 							}
 						});
 						//#endif
@@ -1077,7 +1077,7 @@
 				this.bindOrderInfo()
 			},
 			navToExchange() {
-				console.log('跳转换电记录');
+				console.log(this.$t('跳转换电记录'));
 				uni.navigateTo({
 					url: '/pages/exchangeRecord/exchangeRecord' +
 						'?order_sn=' + this.orderInfo.order_sn

+ 20 - 20
pages/package/package.vue

@@ -10,11 +10,11 @@
 						<img class="left-img" src="https://qiniu.bms16.com/Fpf25Lkkrx05pvLw08mksVQKAQWf" />
 					</view>
 					<view class="left-second flex-row">
-						<view style="margin-right: 32rpx;">适用电池:<text>{{car_info.battery_tag_info.main_tag_name ? (car_info.battery_tag_info.main_tag_name) : ''}}{{car_info.battery_tag_info.child_tag_name ? '/' + car_info.battery_tag_info.child_tag_name : ''}}</text></view>
-						<!-- <view>押金:<text>$5.0</text></view> -->
+						<view style="margin-right: 32rpx;">{{ $t('适用电池') }}:<text>{{car_info.battery_tag_info.main_tag_name ? (car_info.battery_tag_info.main_tag_name) : ''}}{{car_info.battery_tag_info.child_tag_name ? '/' + car_info.battery_tag_info.child_tag_name : ''}}</text></view>
+						<!-- <view>{{ $t('押金') }}:<text>$5.0</text></view> -->
 					</view>
 					<view class="left-third">
-						<view>车辆编号:<text>{{car_info.car_sn}}</text></view>
+						<view>{{ $t('车辆编号') }}:<text>{{car_info.car_sn}}</text></view>
 					</view>
 				</view>
 				<img class="card-right" src="https://qiniu.bms16.com/FuOJQxzypa-NginyHGdsWlzwnB8z" />
@@ -24,46 +24,46 @@
 			<view class="package-view" v-for="item in hireOrderList">
 				<view class="top-view flex-row flex-between">
 					<view class="top-title" v-if="item.package_type == 1">
-						{{item.total_day}}天
+						{{item.total_day}}{{ $t('') }}
 					</view>
 					<view class="top-title" v-if="item.package_type == 2">
-						{{item.num}}次
+						{{item.num}}{{ $t('') }}
 					</view>
 					<view class="top-title" v-if="item.package_type == 3">
-						{{item.total_day}}天{{item.num}}次
+						{{item.total_day}}{{ $t('') }}{{item.num}}{{ $t('') }}
 					</view>
-					<view v-if="item.package_status==1" class="card-text card-b">生效中</view>
-					<view v-if="item.package_status==0" class="card-text card-o">待生效</view>
-					<view v-if="item.package_status==2" class="card-text card-o">已结束</view>
+					<view v-if="item.package_status==1" class="card-text card-b">{{ $t('生效中') }}</view>
+					<view v-if="item.package_status==0" class="card-text card-o">{{ $t('待生效') }}</view>
+					<view v-if="item.package_status==2" class="card-text card-o">{{ $t('已结束') }}</view>
 				</view>
 				<view class="package-item" style="margin-bottom: 32rpx;">
-					<view v-if="item.expire_time != 0" class="item-title">有效期至</view>
+					<view v-if="item.expire_time != 0" class="item-title">{{ $t('有效期至') }}</view>
 					<view class="item-info">{{tools.formatTime(item.expire_time)}}</view>
 				</view>
 				<view v-if="item.package_type != 2" class="package-item" style="margin-bottom: 32rpx;">
-					<view class="item-title">有效时长</view>
+					<view class="item-title">{{ $t('有效时长') }}</view>
 					<view class="item-info">
 						{{ item.expire_time != 0 ? calculateRemainingDays(item.expire_time) : item.total_day }}<text
-							style="color: #9FA7B7;">/{{item.total_day}}天</text>
+							style="color: #9FA7B7;">/{{item.total_day}}{{ $t('') }}</text>
 					</view>
 				</view>
 				<view v-if="item.package_type == 1" class="package-item">
-					<view class="item-title">免费换电数</view>
-					<!-- <view style="color: #060809;" class="item-info">{{item.last_num}}次</view> -->
-					<view style="color: #060809;" class="item-info">不限次数</view>
+					<view class="item-title">{{ $t('免费换电数') }}</view>
+					<!-- <view style="color: #060809;" class="item-info">{{item.last_num}}{{ $t('') }}</view> -->
+					<view style="color: #060809;" class="item-info">{{ $t('不限次数') }}</view>
 				</view>
 				<view v-if="item.package_type == 2" class="package-item">
-					<view class="item-title">免费换电数</view>
-					<view class="item-info">{{item.last_num}} <text style="color: #9FA7B7;">/{{item.num}}次</text></view>
+					<view class="item-title">{{ $t('免费换电数') }}</view>
+					<view class="item-info">{{item.last_num}} <text style="color: #9FA7B7;">/{{item.num}}{{ $t('') }}</text></view>
 				</view>
 				<view v-if="item.package_type == 3" class="package-item">
-					<view class="item-title">免费换电数</view>
-					<view style="color: #060809;" class="item-info">{{item.total_day}}天/{{item.last_num}}次</view>
+					<view class="item-title">{{ $t('免费换电数') }}</view>
+					<view style="color: #060809;" class="item-info">{{item.total_day}}{{ $t('') }}/{{item.last_num}}{{ $t('') }}</view>
 				</view>
 			</view>
 		</view>
 		<view style="height: 200rpx;"></view>
-		<view @click='srcFn' class="packageBtn">前往购买套餐</view>
+		<view @click='srcFn' class="packageBtn">{{ $t('前往购买套餐') }}</view>
 	</view>
 </template>
 <script module="tools" lang="wxs" src="@/pages/common/wxs/tools.wxs"></script>

+ 13 - 13
pages/phoneLogin/phoneLogin.vue

@@ -2,28 +2,28 @@
 	<view class="container">
 		<view class="content-top">
 			<img src="https://qiniu.bms16.com/FikV2SyfTEYQCgXjObAwwtkK27Hk" />
-			<view>欢迎来到{{appConfig.app_name}}</view>
+			<view>{{ $t('欢迎来到') }}{{appConfig.app_name}}</view>
 		</view>
 		<view class="content-input flex-row flex-between">
-			<input type="number" name="phone" @input="inputPhone" placeholder="请输入手机号" placeholder-style="color:#CBD1DD" />
+			<input type="number" name="phone" @input="inputPhone" :placeholder="$t('请输入手机号')" placeholder-style="color:#CBD1DD" />
 			<view @tap="bindGetVerifyCode" class="send-code">
-				<text v-if="codeGetting" class="g-text">重新获取 ·{{curTime}}S </text>
-				<text v-else class="b-text">获取验证码</text>
+				<text v-if="codeGetting" class="g-text">{{ $t('重新获取') }} ·{{curTime}}S </text>
+				<text v-else class="b-text">{{ $t('获取验证码') }}</text>
 			</view>
 		</view>
 		<view class="content-input">
-			<input type="number" name="verify_code" @input="inputVerifyCode" placeholder="请输入验证码" placeholder-style="color:#CBD1DD" />
+			<input type="number" name="verify_code" @input="inputVerifyCode" :placeholder="$t('请输入验证码')" placeholder-style="color:#CBD1DD" />
 		</view>
-		<view v-if="contract_id==1&&phone.length==11&&verify_code.length==4" @tap="bindLoginSubmit" class="submit-btn">登录</view>
-		<view v-else class="disable-btn">登录</view>
+		<view v-if="contract_id==1&&phone.length==11&&verify_code.length==4" @tap="bindLoginSubmit" class="submit-btn">{{ $t('登录') }}</view>
+		<view v-else class="disable-btn">{{ $t('登录') }}</view>
 		
 		<view class="contract-item flex-row">
 			<view @tap="bindContractInfo">
 				<img class="check-icon" :src="contract_id==1?'https://qiniu.bms16.com/FjLudtM29xwqgJh5kUKR9kyhK0Lu':'https://qiniu.bms16.com/FuQZipm9g7wX6CyGQBCjK2RTXfbW'" />
 			</view>
-			<view @tap="bindContractInfo" style="padding-left: 8rpx;">已阅读并同意 
-				<text style="color:#0074FF" @click.native.stop="bindContractToAgreement">{{'《' + appConfig.app_name + '电动车租赁用户协议》'}}</text>和
-				<text style="color:#0074FF" @click.native.stop="bindContractToPrivacy">《隐私协议》</text>
+			<view @tap="bindContractInfo" style="padding-left: 8rpx;">{{ $t('已阅读并同意') }} 
+				<text style="color:#0074FF" @click.native.stop="bindContractToAgreement">{{'《' + appConfig.app_name + $t('电动车租赁用户协议') + '》'}}</text>{{ $t('') }}
+				<text style="color:#0074FF" @click.native.stop="bindContractToPrivacy">《{{ $t('隐私协议') }}》</text>
 			</view>
 		</view>
 	</view>
@@ -86,11 +86,11 @@
 					return
 				}
 				if (!this.phone) {
-					common.simpleToast('请输入手机号码');
+					common.simpleToast(this.$t('请输入手机号码'));
 					return;
 				}
 				if (!common.isPhone(this.phone)) {
-					common.simpleToast('请检测您的手机号码是否正确');
+					common.simpleToast(this.$t('请检测您的手机号码是否正确'));
 					return;
 				}
 				this.setData({
@@ -196,7 +196,7 @@
 								}
 				
 								storage.setUserToken(resp.data.data.baseInfo.token)
-								common.simpleToast('登录成功')
+								common.simpleToast(this.$t('登录成功'))
 								uni.reLaunch({
 									url: '/pages/index/index',
 								})

+ 14 - 14
pages/powerSetting/powerSetting.vue

@@ -1,17 +1,17 @@
 <template>
 		<view class="power-setting-main">
-			<navBar name="权限设置" bgColor="transparent"></navBar>
+			<navBar :name="$t('权限设置')" bgColor="transparent"></navBar>
 			<view class="flex-row power-setting-head">
 				<image class="head-img" :src="headimg" mode="aspectFit"></image>
 				<view class="head-name">{{nickname}}</view>
 				<text class="head-email">{{form.email}}</text>
 			</view>
 			<view class="setting-card" style="margin-bottom: 20rpx;">
-				<view class="setting-card-name">权限设置</view>
+				<view class="setting-card-name">{{ $t('权限设置') }}</view>
 				<view @click="selctFn(4)" class="setting-card-list flex-row">
 					<img src="https://qiniu.bms16.com/FgFEr3CUA43kd7yVCDcK4F7v9_zx" alt="">
 					<view class="setting-list-text flex-row flex-between">
-						<text>查看实时位置</text>
+						<text>{{ $t('查看实时位置') }}</text>
 						<img v-if="form.authority_list.indexOf(4) == -1" class="setting-list-arrow"
 							src="https://qiniu.bms16.com/FrA97op1dwM9XWH1ocqnF5FFlqoY" alt="">
 						<img v-else class="setting-list-arrow" src="https://qiniu.bms16.com/FuA5w59wrvsisg3bGhe3hQ2dR3Bk"
@@ -21,7 +21,7 @@
 				<view @click="selctFn(5)" class="setting-card-list flex-row">
 					<img src="https://qiniu.bms16.com/FmcZqGTnt64_v2xpgNbqS9Fa-fwy" alt="">
 					<view class="setting-list-text flex-row flex-between">
-						<text>使用换电</text>
+						<text>{{ $t('使用换电') }}</text>
 						<!-- <img class="setting-list-arrow" src="https://qiniu.bms16.com/FuA5w59wrvsisg3bGhe3hQ2dR3Bk" alt=""> -->
 						<img v-if="form.authority_list.indexOf(5) == -1" class="setting-list-arrow"
 							src="https://qiniu.bms16.com/FrA97op1dwM9XWH1ocqnF5FFlqoY" alt="">
@@ -31,22 +31,22 @@
 				</view>
 			</view>
 			<view class="setting-card" style="margin-bottom: 32rpx;">
-				<view class="setting-card-name">默认设置</view>
+				<view class="setting-card-name">{{ $t('默认设置') }}</view>
 				<view class="setting-card-list flex-row">
 					<img src="https://qiniu.bms16.com/FsUxQz3DwHIj_vt3fY25Twmjfpek" alt="">
-					<view class="setting-list-text flex-row">远程开关锁</view>
+					<view class="setting-list-text flex-row">{{ $t('远程开关锁') }}</view>
 				</view>
 				<view class="setting-card-list flex-row">
 					<img src="https://qiniu.bms16.com/FuCNZSqsoMxn2ha-njRW3zC2ORTz" alt="">
-					<view class="setting-list-text flex-row">座桶锁</view>
+					<view class="setting-list-text flex-row">{{ $t('座桶锁') }}</view>
 				</view>
 				<view class="setting-card-list flex-row">
 					<img src="https://qiniu.bms16.com/Fs7i3i_LBM7Zpxyj7Ad7_Kc_8z-J" alt="">
-					<view class="setting-list-text flex-row">感应解锁</view>
+					<view class="setting-list-text flex-row">{{ $t('感应解锁') }}</view>
 				</view>
 			</view>
-			<view v-if="isSet" @tap="submit" class="check-btn add-btn">确认添加</view>
-			<view v-else @tap="delSubmit" class="check-btn del-btn">删除成员</view>
+			<view v-if="isSet" @tap="submit" class="check-btn add-btn">{{ $t('确认添加') }}</view>
+			<view v-else @tap="delSubmit" class="check-btn del-btn">{{ $t('删除成员') }}</view>
 		</view>
 </template>
 
@@ -106,7 +106,7 @@
 			},
 			async delSubmit() {
 				let res = await uni.showModal({
-					content:'确定删除这个成员吗?'
+					content:this.$t('确定删除这个成员吗?')
 				})
 				if(!res[1].confirm) return
 				let {
@@ -117,7 +117,7 @@
 				})
 				uni.showLoading({
 					mask:true,
-					title:'删除中...'
+					title:this.$t('删除中')+'...'
 				})
 				msg(data.msg)
 				if(data.code == 200){
@@ -131,13 +131,13 @@
 			async submit() {
 				uni.showLoading({
 					mask: true,
-					title: '提交中...'
+					title: this.$t('提交中')+'...'
 				})
 				let {
 					data
 				} = await http.postApi(config.API_FLK_CAR_ADD_SHARE_USER, this.form)
 				if (data.code == 200) {
-					msg("添加成功!")
+					msg(this.$t('添加成功!'))
 					setTimeout(() => {
 						uni.navigateBack({
 							delta: 2

+ 27 - 27
pages/purchaseOrder/purchaseOrder.vue

@@ -1,8 +1,8 @@
 <template>
 	<view class="container-view">
-		<navBar name="确认订单" left="0"></navBar>
+		<navBar :name="$t('确认订单')" left="0"></navBar>
 		<view class="select-time-view">
-			<view class="flex-row">选择取车时间</view>
+			<view class="flex-row">{{ $t('选择取车时间') }}</view>
 			<view @tap="tapSelectTime" class="flex-row align-center" style="margin-bottom:20rpx ;">
 				<text class="select-time-text">{{takeCar}}</text>
 				<img style="width: 28rpx;height: 28rpx;" src="https://qiniu.bms16.com/FpbKGisSPfL9r8a7QkZCYXolhu1Y"
@@ -19,7 +19,7 @@
 							src="https://qiniu.bms16.com/FlMiRsUF-KZyevFCZDP9DwffOlag" alt="">
 					</view>
 					<view class="car-information">{{leaseUnitsResult}}
-						共计{{tools.countToDay(modelInfo.count,modelInfo.selectType)}}天</view>
+						{{ $t('共计') }}{{tools.countToDay(modelInfo.count,modelInfo.selectType)}}{{ $t('') }}</view>
 					<allPrice v-if="modelInfo.selectType == 100" :amount="modelInfo.sell_price / 100"></allPrice>
 					<allPrice v-else :amount="price"></allPrice>
 				</view>
@@ -35,16 +35,16 @@
 
 		<view v-if="modelInfo.selectType != 100" class="deposit-info">
 			<view class="deposit-info-title flex-row flex-between">
-				<text>车辆押金</text>
+				<text>{{ $t('车辆押金') }}</text>
 				<text>${{modelInfo.deposit/100}}</text>
 			</view>
-			<view class="deposit-info-text">需要支付{{modelInfo.deposit/100}}元押金,诺无车损、违章及逾期,还车后可退</view>
+			<view class="deposit-info-text">{{ $t('需要支付') }}{{modelInfo.deposit/100}}{{ $t('元押金,诺无车损、违章及逾期,还车后可退') }}</view>
 		</view>
 
 		<view class="method-info">
 			<view class="flex-row flex-between" style="margin-bottom: 40rpx;">
-				<view class="font_32">前往门店取还</view>
-				<view class="font_32">门店距您 <text class="distance-num">{{modelInfo.distance}}</text></view>
+				<view class="font_32">{{ $t('前往门店取还') }}</view>
+				<view class="font_32">{{ $t('门店距您') }} <text class="distance-num">{{modelInfo.distance}}</text></view>
 			</view>
 			<view @tap="navAddress" class="shop-bg flex-row flex-between">
 				<view class="shop-name-view">
@@ -56,7 +56,7 @@
 				<view class="nav-btn flex-row">
 					<img style="width: 48rpx;height: 48rpx;" src="https://zxappfile.bms16.com/zx_admin/cab_nav.png"
 						alt="">
-					<view style="margin-top: 12rpx;font-size: 24rpx;">导航</view>
+					<view style="margin-top: 12rpx;font-size: 24rpx;">{{ $t('导航') }}</view>
 				</view>
 			</view>
 		</view>
@@ -68,11 +68,11 @@
 			<view class="payment-bottom flex-row flex-between">
 				<view style="margin-right: 20rpx;" class="bottom-left flex-row">
 					<allPrice :amount="totalPrice"></allPrice>
-					<view v-if="modelInfo.selectType != 100" @tap="bindDetail" class="all-money">明细
+					<view v-if="modelInfo.selectType != 100" @tap="bindDetail" class="all-money">{{ $t('明细') }}
 							<image class="img" src="https://qiniu.bms16.com/Fvl1d-AWRvwY_ehNrw7bMZOK6LBZ" mode=""></image>
 							</view>
 				</view>
-				<view @tap="navToPage">确认下单</view>
+				<view @tap="navToPage">{{ $t('确认下单') }}</view>
 			</view>
 		</view>
 		
@@ -80,14 +80,14 @@
 			<view class="detail-info">
 				<view class="pay-money">
 					<view class="flex-row flex-between" style="margin-bottom: 46rpx;">
-						<view>价格明细</view>
+						<view>{{ $t('价格明细') }}</view>
 						<view>
 							<image style="width: 32rpx;height: 32rpx;" @tap="isShowDetail = false"
 								src="https://qiniu.bms16.com/FtoTEHOJiUf_gjPCJGGHMsAtHI5M" />
 						</view>
 					</view>
 					<view class="flex-row flex-between" style="margin-bottom: 44rpx;">
-						<view>车辆租金</view>
+						<view>{{ $t('车辆租金') }}</view>
 						<view>
 							<!-- ¥{{(leaseTime * price_list[0].hire_price) /100}} -->
 							¥{{price+'x'+modelInfo.count}}
@@ -95,12 +95,12 @@
 						</view>
 					</view>
 					<view class="flex-row flex-between" style="margin-bottom: 44rpx;">
-						<view>车辆押金</view>
+						<view>{{ $t('车辆押金') }}</view>
 						<view>¥{{modelInfo.deposit /100}}</view>
 					</view>
 
 					<view class="detail-money flex-row" style="padding-bottom: 44rpx;">
-						<view style="margin-right: 20rpx;">支付金额</view>
+						<view style="margin-right: 20rpx;">{{ $t('支付金额') }}</view>
 						<allPrice :amount="totalPrice"></allPrice>
 					</view>
 				</view>
@@ -108,11 +108,11 @@
 					<view class="payment-bottom flex-row flex-between">
 						<view style="margin-right: 20rpx;" class="bottom-left flex-row">
 							<allPrice :amount="totalPrice"></allPrice>
-							<view @tap="isShowDetail = false" class="all-money">明细
+							<view @tap="isShowDetail = false" class="all-money">{{ $t('明细') }}
 									<image class="img"  src="https://qiniu.bms16.com/FkzZI0r5jO-c2JRahNkZW2pHb9dR" mode=""></image>
 									</view>
 						</view>
-						<view @tap="navToPage">确认下单</view>
+						<view @tap="navToPage">{{ $t('确认下单') }}</view>
 					</view>
 				</view>
 			</view>
@@ -122,14 +122,14 @@
 		<view v-if="isShowReturnCar" class="return-box">
 			<view class="return-item">
 				<view class="return-title flex-row flex-between">
-					<view>还车到门店</view>
+					<view>{{ $t('还车到门店') }}</view>
 					<view @tap="isShowReturnCar = false" class="close-view"><img style="width: 24rpx;height: 24rpx;"
 							src="https://qiniu.bms16.com/FoWVlo-Nmx6wTDpsL2Rf9_BamU7L" alt=""></view>
 				</view>
-				<view class="return-text">系统会根据您的定位判断您是否已到还车位置,如您已经到达门店,请点击「我已到店」按钮,待门店确认还车后,即可还车成功。</view>
+				<view class="return-text">{{ $t('系统会根据您的定位判断您是否已到还车位置,如您已经到达门店,请点击「我已到店」按钮,待门店确认还车后,即可还车成功。') }}</view>
 				<view class="return-btn flex-row">
-					<view @tap="toRurnCarPage">导航到店</view>
-					<view @tap="toNearbyStorePage">我已到店</view>
+					<view @tap="toRurnCarPage">{{ $t('导航到店') }}</view>
+					<view @tap="toNearbyStorePage">{{ $t('我已到店') }}</view>
 				</view>
 			</view>
 		</view>
@@ -138,13 +138,13 @@
 				<view style="text-align: center;margin-bottom: 120rpx;">
 					<img style="width: 88rpx;height: 88rpx;" src="https://qiniu.bms16.com/Fqb-i2uJWlZOg8EvUXHr_1qhlndf"
 						alt="">
-					<view class="check-order-text">租车订单已提交</view>
-					<view>请于 <text class="get-car-time">{{takeCar}}</text> 到 <text
-							class="get-car-name">{{modelInfo.shop_name}}</text> 取车</view>
+					<view class="check-order-text">{{ $t('租车订单已提交') }}</view>
+					<view>{{ $t('请于') }} <text class="get-car-time">{{takeCar}}</text> {{ $t('') }} <text
+							class="get-car-name">{{modelInfo.shop_name}}</text> {{ $t('取车') }}</view>
 				</view>
 				<view class="return-btn flex-row">
-					<view @tap="toIndexPage">我知道了</view>
-					<view @tap="toOrderInfo">订单详情</view>
+					<view @tap="toIndexPage">{{ $t('我知道了') }}</view>
+					<view @tap="toOrderInfo">{{ $t('订单详情') }}</view>
 				</view>
 			</view>
 		</view>
@@ -322,7 +322,7 @@
 				uni.hideLoading();
 				if (data.code == 200) {
 					if (!data.data.need_pay) {
-						common.simpleToast(this.$t('支付成功'));
+						common.simpleToast(this.$t(this.$t('支付成功')));
 						this.order_sn = data.data.order_sn;
 						this.sub_sn = data.data.sub_sn;
 						this.setData({
@@ -341,7 +341,7 @@
 					uni.hideLoading();
 					if (resp.data.code === 200) {
 						if (!resp.data.data.need_pay) {
-							common.simpleToast(me, me.$t('支付成功'));
+							common.simpleToast(this.$t('支付成功'));
 							me.order_sn = resp.data.data.order_sn;
 							me.sub_sn = resp.data.data.sub_sn;
 							me.setData({

+ 18 - 18
pages/scanCar/scanCar.vue

@@ -3,9 +3,9 @@
 		<view class="clap-info">
 			<view class="flex-row">
 				<view><img class="clap-img" src="https://qiniu.bms16.com/Fn80rw2jge0oUlkYH-Ac6HzQVVvz" /></view>
-				<view class="clap-title">拍照车牌号</view>
+				<view class="clap-title">{{ $t('拍照车牌号') }}</view>
 			</view>
-			<view class="clap-text">拍照时请留意照片的清晰度,便于系统提取车牌号</view>
+			<view class="clap-text">{{ $t('拍照时请留意照片的清晰度,便于系统提取车牌号') }}</view>
 			<camera v-if="src==''" class="camera" :flash="flashValue" device-position="back" mode="normal"></camera>
 			<!-- <camera v-if="src==''" class="camera" :flash="flashValue" device-position="back" mode="scanCode"></camera> -->
 			<view v-else>
@@ -21,15 +21,15 @@
 							src="https://qiniu.bms16.com/FncX5x6TJ3SqRmvz9YwkwmEYkCgq" /></view>
 				</view>
 				<view v-else class="flex-row">
-					<button @tap="bindRetake" class="retake flex-row">重拍</button>
-					<button @tap="bindUsePhoto" class="use-photo flex-row">使用照片</button>
+					<button @tap="bindRetake" class="retake flex-row">{{ $t('重拍') }}</button>
+					<button @tap="bindUsePhoto" class="use-photo flex-row">{{ $t('使用照片') }}</button>
 				</view>
 			</view>
 		</view>
 		<view @tap="navToPage" class="input-info flex-row flex-between">
 			<view class="flex-row">
 				<view><img class="input-img" src="https://qiniu.bms16.com/Fmjwred5RFltqVGpxlP33MWim689" /></view>
-				<view class="input-title">手动输入车牌号</view>
+				<view class="input-title">{{ $t('手动输入车牌号') }}</view>
 			</view>
 			<view><img class="right-img" src="https://qiniu.bms16.com/FpIN7AVzFU75slFlX-SIdnSEmn1k" /></view>
 		</view>
@@ -39,8 +39,8 @@
 				<view @tap="isShowInput=false" class="close">×</view>
 				<input :value="plate_number" type="text">
 				<view class="input-button flex-row">
-					<view @tap="isShowInput=false" class="close-button flex-row">取消</view>
-					<view @tap="bindOkPhoto" class="use-button flex-row">确定</view>
+					<view @tap="isShowInput=false" class="close-button flex-row">{{ $t('取消') }}</view>
+					<view @tap="bindOkPhoto" class="use-button flex-row">{{ $t('确定') }}</view>
 				</view>
 			</view>
 		</view> -->
@@ -188,13 +188,13 @@
 			navToPage() {
 				const me = this
 				if (!me.loading) {
-					common.simpleToast('数据加载中,请稍等')
+					common.simpleToast(this.$t('数据加载中,请稍等'))
 				} else {
 					if ((!me.myLocation.longitude) && (!me.myLocation.latitude)) { // 未获取到经纬度
 						if (me.userLocation == false) { // 判断原因是否为微信小程序内部没有授权定位
-							common.simpleToast('无法获取位置信息,请检查您的定位权限设置')
+							common.simpleToast(this.$t('无法获取位置信息,请检查您的定位权限设置'))
 						} else {
-							common.simpleToast('您的手机未授权定位权限,请前往手机设置开启权限')
+							common.simpleToast(this.$t('您的手机未授权定位权限,请前往手机设置开启权限'))
 						}
 						return
 					}
@@ -230,9 +230,9 @@
 				const me = this
 				if ((!this.myLocation.longitude) && (!this.myLocation.latitude)) { // 未获取到经纬度
 					if (me.userLocation == false) { // 判断原因是否为微信小程序内部没有授权定位
-						common.simpleToast('无法获取位置信息,请检查您的定位权限设置')
+						common.simpleToast(this.$t('无法获取位置信息,请检查您的定位权限设置'))
 					} else {
-						common.simpleToast('您的手机未授权定位权限,请前往手机设置开启权限')
+						common.simpleToast(this.$t('您的手机未授权定位权限,请前往手机设置开启权限'))
 					}
 					return
 				}
@@ -283,7 +283,7 @@
 						const timestamp = Date.now(); // 获取当前时间戳(毫秒)  
 						const isOffline = (Math.floor(timestamp / 1000) - resp.data.data.last_comm_time) > 1800
 						if (resp.data.data.last_comm_time === 0 || isOffline) {
-							common.simpleToast('此车辆已离线,请选择其他车辆')
+							common.simpleToast(this.$t('此车辆已离线,请选择其他车辆'))
 						} else {
 							let carInfo = JSON.stringify(resp.data.data)
 							const car_model = resp.data.data.model_info.car_model
@@ -293,10 +293,10 @@
 							if (resp.data.data.has_owner) { //车辆正在被使用
 								if (resp.data.data.is_mine) { //是本人在使用
 									uni.showModal({
-										title: '提示',
+										title: this.$t('提示'),
 										content: '已有正在使用的车辆,是否跳转至车辆详情页?',
-										cancelText: '取消',
-										confirmText: '确定',
+										cancelText: this.$t('取消'),
+										confirmText: this.$t('确定'),
 										success: function(res) {
 											this.isReturnHome = false
 											uni.navigateTo({
@@ -308,12 +308,12 @@
 										complete: function(res) {},
 									})
 								} else {
-									common.simpleToast('此车辆正在被使用')
+									common.simpleToast(this.$t('此车辆正在被使用'))
 								}
 							} else {
 								if (me.order_sn != '') {
 									if (this.order_model_id != model_id) { // 预租车型与之前预约车型不一致
-										common.simpleToast('与预约车型不符')
+										common.simpleToast(this.$t('与预约车型不符'))
 									} else {
 										this.isReturnHome = false
 										uni.navigateTo({

+ 7 - 7
pages/service/components/carRentalList/carRentalList.vue

@@ -15,7 +15,7 @@
 						</view>
 						<view class="align-c tag">
 							<text class="card-center-num">{{item.model_list.length}}</text>
-							款车型
+							{{ $t('款车型') }}
 						</view>
 					</view>
 				</view>
@@ -31,7 +31,7 @@
 							<view class="bottom-item">
 								<view>{{item.model_list[0].model_name}}</view>
 								<view>
-									续航{{ tools.formatDistance(item.model_list[0].endurance-0) }}|重量{{ tools.formatWeight(item.model_list[0].weight-0) }}
+									{{ $t('续航') }}{{ tools.formatDistance(item.model_list[0].endurance-0) }}|{{ $t('重量') }}{{ tools.formatWeight(item.model_list[0].weight-0) }}
 								</view>
 								<view class="flex-row flex-between">
 									<view class="bottom-text">
@@ -58,7 +58,7 @@
 							<view class="bottom-item">
 								<view>{{ items.model_name }}</view>
 								<view>
-									续航{{ tools.formatDistance(items.endurance-0) }}|重量{{ tools.formatWeight(items.weight-0) }}
+									{{ $t('续航') }}{{ tools.formatDistance(items.endurance-0) }}{{ $t('|重量') }}{{ tools.formatWeight(items.weight-0) }}
 								</view>
 								<view class="flex-row flex-between">
 									<view class="bottom-text">
@@ -66,7 +66,7 @@
 											style="margin-left: 10rpx;">¥</text><text>{{(items.hire_price /100).toFixed(2)}}</text>
 									</view>
 									<view v-if="items.sell_price && isBuy" class="bottom-text">
-										购买<text
+										{{ $t('购买') }}<text
 											style="margin-left: 10rpx;">¥</text><text>{{(items.sell_price /100).toFixed(2)}}</text>
 									</view>
 								</view>
@@ -196,8 +196,8 @@
 			},
 			callFn(tel) {
 				uni.showModal({
-					content: `您是否要拨打电话${tel}?`,
-					confirmText: '确定',
+					content: `${this.$t('您是否要拨打电话')}${tel}?`,
+					confirmText: this.$t('确定'),
 					success: (res) => {
 						if (res.confirm) {
 							uni.makePhoneCall({
@@ -210,7 +210,7 @@
 			curType() {
 				// const obj = LEASE_TYPE_ARR.find(v => v.value == this.duration_unit)
 				// return obj && obj.label
-				return '租'
+				return this.$t('租')
 			},
 			async navToStore(admin_id) {
 				const url = '/pages/storeDetails/storeDetails?admin_id=' + admin_id

+ 2 - 2
pages/service/components/leaseType/leaseType.vue

@@ -2,7 +2,7 @@
     <view class="container-view-contril">
 		<u-popup zIndex='9999' v-model="showLeaseType" :mask-close-able='false' :closeable="false" mode="bottom" border-radius="32">
 		    <view class="bottom-popup">
-		        <view class="title">{{ selectType == 'cabinet' ? '车辆类型' : '租借类型' }}</view>
+		        <view class="title">{{ selectType == 'cabinet' ? $t('车辆类型') : $t('租借类型')}}</view>
 		        <scroll-view style="max-height: 700rpx;" scroll-y>
 		        	<view class="item-wrap">
 		        	    <template v-if="selectType == 'cabinet'">
@@ -29,7 +29,7 @@
 		        	        		</view>
 		        	        	</view>
 		        	        	<view class="bugFlex">
-		        	        		  <view class="title">购买</view>
+		        	        		  <view class="title">{{ $t('购买') }}</view>
 		        	        		  <u-switch v-model="buy"></u-switch>
 		        	        	</view>
 		        	        </view>

+ 10 - 10
pages/service/service.vue

@@ -21,7 +21,7 @@
 		</view>
 		<!-- #endif -->
 
-		<!-- 地图控件 -->
+		<!-- {{ $t('地图控件') }} -->
 	<!-- 	<cover-view @click="isSearch = false" :class="[
         'control-icon-view',
         'flex-row',
@@ -36,13 +36,13 @@
 			<view v-if="isSearch" class="search-view flex-row">
 				<view class="search-input-view">
 					<img class="search-icon" src="https://qiniu.bms16.com/FgvJrOE8Lps7tyNL86SOZKbLT1uH" alt="" />
-					<input v-model="inputSearchValue" type="text" class="search-input" placeholder="请输入搜索内容"
+					<input v-model="inputSearchValue" type="text" class="search-input" :placeholder="$t('请输入搜索内容')"
 						placeholder-class="input-placeholder" :focus="isFocused" @focus="handleFocus"
 						@blur="handleBlur" />
 					<img v-if="isFocused" @tap="clearSearch" class="search-close-icon"
-						src="https://qiniu.bms16.com/FhKzwftEPo70kloqIVxKH7g0pD6I" alt="清空" />
+						src="https://qiniu.bms16.com/FhKzwftEPo70kloqIVxKH7g0pD6I" />
 				</view>
-				<view v-if="isFocused" @tap="tapSearch" :class="['search-btn', isFocused ? 'search-btn-i' : '']">搜索
+				<view v-if="isFocused" @tap="tapSearch" :class="['search-btn', isFocused ? 'search-btn-i' : '']">{{ $t('搜索') }}
 				</view>
 			</view>
 			<view class="flex-row flex-between" style="margin-bottom: 40rpx">
@@ -50,24 +50,24 @@
 					<view @tap="tapSelectType" data-type="store" :class="[
               'store-type',
               selectType === 'store' ? 'store-type-i' : 'store-type-s',
-            ]">门店</view>
+            ]">{{ $t('门店') }}</view>
 					<view @tap="tapSelectType" data-type="cabinet" :class="[
               'cabinet-type',
               selectType === 'cabinet' ? 'cabinet-type-i' : 'cabinet-type-s',
-            ]">换电柜</view>
+            ]">{{ $t('换电柜') }}</view>
 				</view>
 				<view class="config-view flex-row">
 					<view @click='openSelectType' class="flex-row selectFlex">
-						<text v-if="selectType === 'store'" class="text">{{leaseUnitsResult}}{{isBuy ? "+购买" : ''}}</text>
-						<text v-if="selectType === 'cabinet'" class="text">{{cabinetType ? cabinetType : '全部'}}</text>
+						<text v-if="selectType === 'store'" class="text">{{leaseUnitsResult}}{{isBuy ? $t('购买') : ''}}</text>
+						<text v-if="selectType === 'cabinet'" class="text">{{cabinetType ? cabinetType : $t('全部')}}</text>
 						<u-icon v-if="showLeaseType" name="arrow-down" color="#9FA7B7" size="26"></u-icon>
 						<u-icon v-else name="arrow-up" color="#9FA7B7" size="26"></u-icon>
 					</view>
 					<view class="seach-img" @tap="openSearch"><img
-							src="https://qiniu.bms16.com/FiWnFuZm5vWQ_Si3CEYLGJnVhSal" alt="搜索" /></view>
+							src="https://qiniu.bms16.com/FiWnFuZm5vWQ_Si3CEYLGJnVhSal" /></view>
 					<!-- <view @tap="openSelectType" class="screen-img"><img
 							:src="'https://qiniu.bms16.com/'+(shop_type!=''?'FikPWd13ENc2SWnC3q1n5F22uUDs':'FpElQHM5NbxHDjz1LrwaHYN668LR')"
-							alt="筛选" /></view> -->
+							alt="{{ $t('筛选') }}" /></view> -->
 				</view>
 			</view>
 			<CarRentalList :isBuy='isBuy' :shopType='shopType' :activeMarkersId='activeMarkersId' v-if="selectType === 'store'" :near_store_list="nearCabinetList" />

+ 14 - 14
pages/storeDetails/storeDetails.vue

@@ -23,7 +23,7 @@
 						{{item.title}}
 					</view>
 					<view class="store-num-type"> <text class="store-num">{{storeInfo.model_list.length || 0}}</text>
-						款车型
+						{{ $t('款车型') }}
 					</view>
 					<view class="store-phone" @tap="tapPhone"><img style="width: 84rpx;height: 64rpx;"
 							src="https://qiniu.bms16.com/Ft0YA1JYmq66hdoeEN-PgBHy5vLa" alt=""></view>
@@ -34,7 +34,7 @@
 							<img style="width: 40rpx;height: 40rpx;"
 								:src="!isWorkTimer ? 'https://zxappfile.bms16.com/zx_admin/cab_timer.png' : 'https://zxappfile.bms16.com/zx_admin/cab_timer_work.png'">
 							<view :class="isWorkTimer ? 'grid_text_1' : 'grid_text_rest' ">
-								{{isWorkTimer ? '营业中' : '已休息'}}
+								{{isWorkTimer ? $t('营业中') : $t('已休息')}}
 							</view>
 						</view>
 						<!-- <view v-if="storeInfo.work_begin_time" class="grid_text_2">
@@ -47,13 +47,13 @@
 					<view @tap="bindToNav" class="right_grid flex-between">
 						<view>
 							<view class="cab_distance">
-								直线距您 {{storeInfo.distance}}
+								{{ $t('直线距您') }} {{storeInfo.distance}}
 							</view>
 							<view class="cab_address">{{storeInfo.address}}</view>
 						</view>
 						<view>
 							<img class="icon_grid_1" src="https://zxappfile.bms16.com/zx_admin/cab_nav.png">
-							<view class="grid_nav">导航</view>
+							<view class="grid_nav">{{ $t('导航') }}</view>
 						</view>
 					</view>
 				</view>
@@ -88,17 +88,17 @@
 					<view class="step-tip-text">
 						<image class="step-num-1" src="https://qiniu.bms16.com/Fm4gMRmW6UOwLcU-eW8LDLNfiUJe"
 							mode='aspectFill'>
-						</image>线上选择用车方案生成待支付订单
+						</image>{{ $t('线上选择用车方案生成待支付订单') }}
 					</view>
 					<view class="step-tip-text">
 						<image class="step-num-2" src="https://qiniu.bms16.com/FvYN7SxOYIhXEqSAJZrQIBQuTx79"
 							mode='aspectFill'>
-						</image>导航到店向商家支付订单金额
+						</image>{{ $t('导航到店向商家支付订单金额') }}
 					</view>
 					<view class="step-tip-text">
 						<image class="step-num-3" src="https://qiniu.bms16.com/FhZ7w0X8iVuxFPdetEF9C3YYkJ7Z"
 							mode='aspectFill'>
-						</image>支付完成后直接现场取车
+						</image>{{ $t('支付完成后直接现场取车') }}
 					</view>
 				</view>
 			</view>
@@ -106,11 +106,11 @@
 
 
 			<!-- 	<view class="unit-type-view">
-				<view @click="status = 0;modelListsFn()" class="unit-type " :class="{'unit-type-i' : status == 0}">短租
+				<view @click="status = 0;modelListsFn()" class="unit-type " :class="{'unit-type-i' : status == 0}">{{ $t('短租') }}
 				</view>
-				<view @click="status = 1;modelListsFn()" class="unit-type" :class="{'unit-type-i' : status == 1}">长租
+				<view @click="status = 1;modelListsFn()" class="unit-type" :class="{'unit-type-i' : status == 1}">{{ $t('长租') }}
 				</view>
-				<view @click="status = 2;modelListsFn()" class="unit-type " :class="{'unit-type-i' : status == 2}">出售
+				<view @click="status = 2;modelListsFn()" class="unit-type " :class="{'unit-type-i' : status == 2}">{{ $t('出售') }}
 				</view>
 			</view> -->
 
@@ -127,13 +127,13 @@
 					<image class="car-img" :src="item.model_images[0]" mode="aspectFit"></image>
 					<view class="car-info">
 						<view class="car-name flex-row">{{item.model_name}}</view>
-						<view class="car-model-info">续航{{item.endurance}}km|重量{{item.weight}}kg</view>
+						<view class="car-model-info">{{ $t('续航') }}{{item.endurance}}km{{ $t('|重量') }}{{item.weight}}kg</view>
 						<view class="flex-row flex-between">
 							<view class="unit-type-price flex-row">
 								<text style="margin-right: 8rpx;">{{typeArrFn(tagId)}}</text>
 								<priceTool :price="Number(item.money)" :font_size="40" />
 							</view>
-							<view class="lease-btn">购/租</view>
+							<view class="lease-btn">{{ $t('') }}/{{ $t('') }}</view>
 						</view>
 					</view>
 				</view>
@@ -296,8 +296,8 @@
 			tapPhone() {
 				const me = this
 				uni.showModal({
-					content: `您是否要拨打电话${me.storeInfo.link_phone}?`,
-					confirmText: '确定',
+					content: `${this.$t('您是否要拨打电话')}${me.storeInfo.link_phone}?`,
+					confirmText: this.$t('确定'),
 					success: (res) => {
 						if (res.confirm) {
 							me.clearTimer()

+ 8 - 8
pages/travelingTrack/travelingTrack.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="container-view">
-		<navBar :name="'最近骑行'" />
+		<navBar :name="$t('最近骑行')" />
 		<!-- #ifdef MP-WEIXIN -->
 		<map class="my_app" id="myMap" :longitude="myLocation.longitude" :latitude="myLocation.latitude" :scale="scale"
 			:markers="markers" :enable-satellite="mapParams.enableSatellite" :enable-traffic="mapParams.enableTraffic"
@@ -22,7 +22,7 @@
 			<view class="info-top flex-row flex-between">
 				<view class="top-left f">
 					<view>{{carInfo.car_name}}</view>
-					<view>车牌号:{{carInfo.license_plate_number}}</view>
+					<view>{{ $t('车牌号:') }}{{carInfo.license_plate_number}}</view>
 				</view>
 				<view>
 					<image class="img"
@@ -45,19 +45,19 @@
 			<view class="info-bottom flex-row flex-between">
 				<view class="bottom-item">
 					<view>{{trackInfo.total_mil}}<text>km</text></view>
-					<view>行驶里程</view>
+					<view>{{ $t('行驶里程') }}</view>
 				</view>
 				<view class="bottom-item">
 					<view>{{tools.toFix((trackInfo.total_time || 0) / 60 / 60)}}<text>h</text></view>
-					<view>骑行时长</view>
+					<view>{{ $t('骑行时长') }}</view>
 				</view>
 				<view class="bottom-item">
 					<view>{{trackInfo.avg_speed}}<text>km/h</text></view>
-					<view>平均时速</view>
+					<view>{{ $t('平均时速') }}</view>
 				</view>
 				<!-- <view class="bottom-item">
 					<view>40.0<text>g</text></view>
-					<view>减少碳排量</view>
+					<view>{{ $t('减少碳排量') }}</view>
 				</view> -->
 			</view>
 		</view>
@@ -81,7 +81,7 @@
 		data() {
 			return {
 				mapShow:false,
-				time:'未知',
+				time:this.$t('未知'),
 				carInfo: {},
 				id: 0, // 使用 marker点击事件 需要填写id
 				title: 'map',
@@ -154,7 +154,7 @@
 					})
 					
 					if(this.pointsList.length < 1){
-						common.simpleToast('暂无骑行数据!')
+						common.simpleToast(this.$t('暂无骑行数据!'))
 						setTimeout(function() {
 							uni.navigateBack({
 								delta: 1

+ 4 - 4
pages/userManagement/userManagement.vue

@@ -1,12 +1,12 @@
 <template>
 	<view class="">
-		<navBar name="共享用户" />
+		<navBar :name="$t('共享用户')" />
 		<view class="user-card">
 			<view class="flex-row align-center user-card-heard">
 				<img style="width: 48rpx;height: 48rpx;" src="https://qiniu.bms16.com/FieeNq75ybyjIzQO6fmNcdTlRsp5" alt="">
-				<text style="margin-left: 16rpx;">共享用户</text>
+				<text style="margin-left: 16rpx;">{{ $t('共享用户') }}</text>
 			</view>
-			<view class="user-card-text">家人、朋友长期共用车辆,授权账户可以使用感应解锁,寻车定位,查看设置等功能;</view>
+			<view class="user-card-text">{{ $t('家人、朋友长期共用车辆,授权账户可以使用感应解锁,寻车定位,查看设置等功能;') }}</view>
 			<!-- <view v-for="(item,index) in userList" :key="index"> -->
 			<view @click="srcFn(`/pages/powerSetting/powerSetting?id=${item.target_user_id}`)" v-for="(item,index) of list" :key="index" class="user-list flex-row align-center">
 				<image class="user-heard-img" :src="item.headimg" mode="aspectFill"></image>
@@ -18,7 +18,7 @@
 			</view>
 			<view @click="addUser" class="flex-row user-card-btn align-center">
 				<img style="width: 20rpx;height: 20rpx;" src="https://qiniu.bms16.com/FvP_5VTgawzExIHW3kJahXAvE04z" alt="">
-				<text style="margin-left: 6rpx;">添加成员</text>
+				<text style="margin-left: 6rpx;">{{ $t('添加成员') }}</text>
 			</view>
 		</view>
 		

+ 4 - 1
utils/util.js

@@ -1,7 +1,9 @@
 import dayjs from 'dayjs'
 import duration from 'dayjs/plugin/duration'
 dayjs.extend(duration);
-
+const systemInfo = uni.getSystemInfoSync();
+// const Language = systemInfo.language == 'zh_CN' ? 'zh' : 'en' // 'zh' | 'en'
+const Language = 'zh' // 'zh' | 'en'
 const formatTime = (date) => {
 	const year = date.getFullYear();
 	const month = date.getMonth() + 1;
@@ -81,6 +83,7 @@ function isEmail(email) {
 }
 
 module.exports = {
+	Language,
 	isEmail,
 	formatTime: formatTime,
 	getLocation,

+ 839 - 0
zh-CN.js

@@ -0,0 +1,839 @@
+// 自动生成的中文字符列表
+module.exports = [
+  "关于我们",
+  "弗兰克公司",
+  "版权所有",
+  "生命周期函数",
+  "监听页面加载",
+  "监听页面显示",
+  "我的订单",
+  "车辆信息",
+  "逾期费用:",
+  "车辆编号:",
+  "车辆名称:",
+  "车型:",
+  "续航:",
+  "重量:",
+  "照片:",
+  "门店信息",
+  "门店名称:",
+  "门店地址:",
+  "车辆照片",
+  "这里是关于激活车辆照片的文案描述,这里是关于激活车辆照片的文案描述",
+  "归还车辆",
+  "激活车辆",
+  "还车成功",
+  "还车",
+  "请上传车辆照片",
+  "未获取到门店位置!",
+  "这里会接收到子组件传来的更新后的图片",
+  "数组",
+  "车辆激活成功",
+  "活动中心",
+  "暂无可参与的活动",
+  "添加成员",
+  "请输入被邀人邮箱号",
+  "下一步",
+  "该用户不存在!",
+  "免费",
+  "次",
+  "车辆换电",
+  "响铃找车",
+  "开座桶锁",
+  "关闭头盔锁",
+  "解锁",
+  "上锁",
+  "行驶轨迹",
+  "车辆位置",
+  "拖车服务",
+  "关闭车辆",
+  "启动车辆",
+  "我要还车",
+  "剩余租期",
+  "查看订单",
+  "日",
+  "小时",
+  "分",
+  "到期后将无法用车",
+  "已到期",
+  "续租",
+  "还车到门店",
+  "系统会根据您的定位判断您是否已到还车位置,如您已经到达门店,请点击「我已到店」按钮,待门店确认还车后,即可还车成功。",
+  "我已到店",
+  "附近可还门店",
+  "选择续租方案",
+  "时租",
+  "日租",
+  "周租",
+  "租车时长",
+  "天",
+  "优惠券",
+  "折",
+  "骑行保障服务",
+  "保障须知",
+  "含行程延误保障",
+  "元",
+  "商家赠送",
+  "配套服务",
+  "头盔",
+  "手机支架",
+  "已阅读并同意",
+  "《小众电动车租赁用户协议》",
+  "明细",
+  "支付",
+  "授权免押",
+  "暂无车辆",
+  "是否返回首页",
+  "车辆状态(是否上锁)",
+  "初始状态",
+  "如果是激活页面过来的。后端接口第一时间无法获取数据。需要再延迟获取一次",
+  "首页",
+  "查询车辆关键参数",
+  "获取地址失败,请授权重新打开",
+  "获取当前时间",
+  "默认返回首页再提示报错",
+  "您确定开启响铃找车?",
+  "车辆已开始鸣笛",
+  "您确定打开座桶锁?",
+  "座桶锁已打开",
+  "您确定给车辆上锁?",
+  "正在上锁",
+  "已上锁",
+  "您确定给车辆解锁?",
+  "正在解锁",
+  "已解锁",
+  "取消",
+  "确定",
+  "已取消",
+  "其他都需要带车牌号",
+  "锁车",
+  "启动",
+  "车辆提示",
+  "确认关闭车辆",
+  "确认需要启动车辆",
+  "开启",
+  "关闭",
+  "正在关闭车辆",
+  "正在启动车辆",
+  "车辆已关闭",
+  "车辆已启动",
+  "操作超时",
+  "电池信息",
+  "电池",
+  "剩余电量",
+  "电压",
+  "温度",
+  "换电套餐",
+  "秒换电,瞬间满电,畅享骑行新体验!",
+  "适用电池:",
+  "当前购买为虚拟",
+  "卡",
+  "如想要体验实体",
+  "卡功能,前往最近的门店领取",
+  "立即购买",
+  "请先绑定车辆!",
+  "提交中",
+  "换电记录",
+  "开始换电",
+  "换电中",
+  "换电成功",
+  "换电失败",
+  "未知",
+  "换电单号",
+  "归还电池",
+  "借出电池",
+  "换电类型",
+  "机柜换电",
+  "门店换电",
+  "电柜名称",
+  "开启感应解锁",
+  "是否配对改设备",
+  "配对",
+  "点击下方",
+  "开始配对",
+  "请在系统弹窗中选择",
+  "以完成功能开启。",
+  "提示信息",
+  "使用感应解锁功能时,请务必保证手机蓝牙功能开启,在蓝牙列表中忽略此设备会导致感应解锁失败",
+  "测试指令!!!别删除",
+  "关闭靠近解锁",
+  "跳转解绑配对",
+  "靠近解锁",
+  "升级",
+  "感应解锁已开启",
+  "注意:请勿在手机蓝牙中忽略“电动车蓝牙",
+  "设备,否则感应解锁功能将无法使用",
+  "机柜信息传输完成",
+  "初始化",
+  "连接蓝牙",
+  "下发配对指令",
+  "会断开连接",
+  "直接再次连接",
+  "记得不要提示可以蓝牙断开连接",
+  "点击配对",
+  "调用配对",
+  "确认配对",
+  "断开蓝牙",
+  "不走逻辑",
+  "蓝牙未启用",
+  "请先打开蓝牙",
+  "开始升级",
+  "结束?????",
+  "蓝牙未连接",
+  "蓝牙连接断开",
+  "提示",
+  "重新连接",
+  "蓝牙连接中断,是否重新连接?",
+  "蓝牙连接成功",
+  "电动车蓝牙",
+  "蓝牙配对请求",
+  "想与您配对,请确保显示的配对密钥为",
+  "关闭蓝牙连接",
+  "切换正常工厂模式",
+  "切换工厂模式以后蓝牙断开",
+  "重新连接蓝牙",
+  "接近解锁下发成功",
+  "下发打开接近解锁指令",
+  "获取接近解锁下发成功",
+  "是否是蓝牙类型列表里面的",
+  "打开蓝牙连接",
+  "监听蓝牙设备连接状态变化事件",
+  "观察周围是否有其他骑手连接,请等待对方完成",
+  "或",
+  "微信是否开启了蓝牙权限",
+  "微信是否开启了蓝牙权限!!",
+  "连接失败,请尝试重新连接",
+  "蓝牙未打开或请在右上角设置授权小程序使用蓝牙",
+  "我知道了",
+  "蓝牙连接未成功",
+  "当前机柜未找到符合的蓝牙类型",
+  "开启感应解锁后,携带手机靠近车辆并按",
+  "键即可开机",
+  "按键解锁",
+  "手机接近车辆后,长按",
+  "键即可解锁",
+  "灵敏度设置",
+  "关闭感应解锁",
+  "距离建议适中,设置过近会降低成功率,设置过远可能会有风险",
+  "最近",
+  "适中",
+  "最远",
+  "左",
+  "设置灵敏度指令成功",
+  "关闭接近解锁成功",
+  "无可用电池",
+  "营业中",
+  "已休息",
+  "直线距您",
+  "千米",
+  "米",
+  "导航",
+  "格口详情",
+  "电柜编号:",
+  "已预约",
+  "没有预约",
+  "空仓或者仓门不可用",
+  "空仓",
+  "满电或者电量未满",
+  "电池可用",
+  "待充满",
+  "电池列表",
+  "存储蓝牙状态",
+  "机柜详情",
+  "离线",
+  "在线",
+  "钱包余额",
+  "扫码机柜",
+  "车牌号",
+  "可用电池数",
+  "蓝牙信息",
+  "蓝牙换电需要的数据",
+  "如果本地有存储的定位信息,则直接使用",
+  "领取电池成功",
+  "获取机柜信息",
+  "计算可用电池数",
+  "导航去机柜",
+  "设备数据",
+  "将传入的时间转换为分钟",
+  "判断当前时间是否在指定范围内",
+  "仓体",
+  "月租",
+  "年租",
+  "分租",
+  "季租",
+  "购买",
+  "免费换电次数",
+  "日租享",
+  "次免费换电数,超出后需要单独支付换电费用;",
+  "我要用车",
+  "获取直线距离",
+  "您是否要拨打电话",
+  "更多功能",
+  "固定导航栏",
+  "其他功能",
+  "长按拖动可调整顺序,可增减固定导航栏内容",
+  "解除绑定",
+  "开机",
+  "开启车辆",
+  "关机",
+  "您确认",
+  "吗",
+  "处理修改之后的数据",
+  "输入注册账号的密码即可解绑",
+  "请输入密码",
+  "解绑后,您将失去当前设备的控制权,其他人可以连接绑定您的设备。",
+  "解绑后将立即删除家庭账号,感应解锁等数据。",
+  "完成并解绑",
+  "是否确定解除绑定",
+  "返回首页",
+  "解绑成功!",
+  "请选择设备",
+  "当前选择",
+  "租赁设备",
+  "绑定设备",
+  "是否确定",
+  "清空当前设备蓝牙相关",
+  "切换成功!",
+  "由于",
+  "一些样式及点击事件不支持",
+  "气泡内容",
+  "已驻车",
+  "分钟",
+  "更新于",
+  "闪灯鸣笛",
+  "使用",
+  "点击事件",
+  "需要填写",
+  "标记点",
+  "定时器变量,用于清除定时器",
+  "未知时间",
+  "五秒后重新调用加载车辆位置信息的方法",
+  "监听页面卸载",
+  "页面卸载时清除定时器",
+  "确保定时器引用被清除",
+  "默认返回上一个页面再提示报错",
+  "您确认开启闪灯鸣笛吗",
+  "本人已知晓上述内容",
+  "阅读合同倒计时",
+  "秒",
+  "签名",
+  "重新签名",
+  "上报小程序账号信息",
+  "您当前没有手写签名,是否要进行填写",
+  "续航",
+  "骑行里程",
+  "骑行时长",
+  "最大速度",
+  "平均速度",
+  "车架号",
+  "设备编号",
+  "车辆总里程",
+  "中控硬件",
+  "中控软件",
+  "意见反馈",
+  "问题类型",
+  "问题描述",
+  "请详细说明,以便我们解决问题,最多可填写",
+  "字。",
+  "问题图片",
+  "提交",
+  "车辆",
+  "电柜",
+  "应用操作",
+  "其他",
+  "最多输入",
+  "字",
+  "提交成功",
+  "返回上一级页面",
+  "为保证",
+  "感应解锁",
+  "的正常使用,请依次开以下权限,开启后可以显著提高解锁成功率,且不会明显增加手机电量消耗",
+  "授权引导",
+  "已开启",
+  "未开启",
+  "我已开启",
+  "引入",
+  "是否打开所有需要权限",
+  "位置权限",
+  "打开手机定位,并运行",
+  "始终使用",
+  "电池优化",
+  "打开电池优化设置,",
+  "将弗兰克",
+  "加入保护名单",
+  "后台运行",
+  "打开后台运行权限",
+  "清选择手动控制",
+  "打开应用锁",
+  "打开应用权限锁",
+  "的",
+  "里编写如下代码",
+  "已授权",
+  "已获得授权",
+  "未获得授权",
+  "被永久拒绝权限",
+  "确定打开",
+  "胎压",
+  "选择的车辆控制",
+  "组件的方法列表",
+  "判断车辆是否在线状态",
+  "在线调用接口",
+  "不在线提示连接蓝牙",
+  "成功",
+  "蓝牙是否已经连接",
+  "未连接提示去连接",
+  "已连接下发对应指令",
+  "操作成功",
+  "发送",
+  "指令结束",
+  "当前车辆处于离线,是否前往开启蓝牙配对操作车辆?",
+  "前往配置更多功能",
+  "请先开启位置授权",
+  "的正常使用,请",
+  "开启位置授权",
+  "并",
+  "打开精准位置",
+  "开关,可提高解锁成功率,且不会明显增加手机电量消耗。",
+  "打开手机定位,并允许",
+  "「始终」",
+  "第",
+  "步",
+  "始终",
+  "开启请准位置开关",
+  "精准位置",
+  "组件的属性列表",
+  "续航开新路",
+  "路遥见实力",
+  "全速续航",
+  "极速可达",
+  "了解更多",
+  "全新车型,即将发布!",
+  "更智能、更高效,全新车型即将亮相,敬请期待!",
+  "租赁设备编号",
+  "子组件",
+  "更新",
+  "您已逾期",
+  "请及时续费或归还车辆",
+  "去续费",
+  "车辆已开机",
+  "车辆已关机",
+  "最近骑行",
+  "总里程",
+  "蓝牙配对成功",
+  "请先连接蓝牙",
+  "用车人管理",
+  "个家庭账号",
+  "设备信息",
+  "软件版本",
+  "用户车辆列表",
+  "当前车辆编号",
+  "手机型号",
+  "是否打开权限弹窗",
+  "当前是否蓝牙连接或者配对",
+  "所有蓝牙配对所需权限是否已开启",
+  "分享给好友",
+  "发送给朋友",
+  "蓝牙配对所需权限",
+  "运行小程序需要隐藏",
+  "所需权限开启成功",
+  "前往开启蓝牙配对",
+  "身份认证提示",
+  "尚未完成身份认证,是否进行身份认证",
+  "您还未登录,请先登录",
+  "判断逾期",
+  "如果租",
+  "购多个车辆的话可以切换当前车辆",
+  "判断距离是否超过",
+  "如果超过",
+  "米,则转换为千米并返回",
+  "否则直接返回米",
+  "是否是小众租车",
+  "欢迎来到",
+  "手机号快捷登录",
+  "其他手机号登录",
+  "电动车租赁用户协议",
+  "和",
+  "《隐私协议》",
+  "申请获取并验证你的手机号",
+  "快捷登录",
+  "上次提供",
+  "不允许",
+  "使用其他号码",
+  "初始化未授权",
+  "请查阅隐私和协议",
+  "一键授权失败",
+  "请使用手机号登录",
+  "登录成功",
+  "修改密码",
+  "请输入旧密码",
+  "请输入新密码",
+  "请再次输入新密码",
+  "确认修改",
+  "是否确认修改密码?",
+  "修改成功",
+  "忘记密码",
+  "请输入要重置的邮箱账号",
+  "重置密码",
+  "重置密码邮件已发送",
+  "去登录",
+  "我们向",
+  "发送了一封密码重置邮件,请您登录邮箱操作处理。",
+  "请输入有效的邮箱地址",
+  "欢迎来到智寻出行",
+  "邮箱密码登录",
+  "请输入邮箱账号",
+  "用户协议",
+  "隐私政策",
+  "登录",
+  "没有账号",
+  "立即注册",
+  "其他方式登录",
+  "请勾选用户协议和隐私政策",
+  "账号注册",
+  "请再次输入密码",
+  "注册邮件已发送",
+  "我们已向",
+  "发送注册邮件,请您登录邮箱点击链接完成注册。",
+  "请输入",
+  "位密码,包含字母数字",
+  "两次输入的密码不一致",
+  "注册邮件发送成功",
+  "请输入车牌号全称",
+  "请输入车牌号",
+  "确认",
+  "请先输入车牌号",
+  "温馨提示:各省市因地制宜,制定相关的牌照格式,请按照实际车辆牌照的格式进行填写~",
+  "参考格式",
+  "北京",
+  "未获取到经纬度",
+  "判断原因是否为微信小程序内部没有授权定位",
+  "无法获取位置信息,请检查您的微信定位权限设置",
+  "您的手机未授权微信定位权限,请前往手机设置开启权限",
+  "获取当前时间戳(毫秒)",
+  "此车辆已离线,请选择其他车辆",
+  "车辆正在被使用",
+  "是本人在使用",
+  "已有正在使用的车辆,是否跳转至车辆详情页",
+  "此车辆正在被使用",
+  "预租车型与之前预约车型不一致",
+  "与预约车型不符",
+  "轴偏移量",
+  "点击显示",
+  "常显",
+  "今天",
+  "车辆推动报警",
+  "车辆正在被人推送,请及时查看",
+  "我的消息",
+  "设备消息",
+  "系统消息",
+  "行驶里程",
+  "功率",
+  "减少碳排放",
+  "骑行次数",
+  "累计功率",
+  "减少排放量",
+  "总",
+  "年",
+  "月",
+  "周",
+  "请输入绑定的新手机号",
+  "请输入验证码",
+  "秒后再次获取",
+  "获取验证码",
+  "绑定新手机号",
+  "请输入手机号码",
+  "请检测您的手机号码是否正确",
+  "仪表盘",
+  "请点击登录",
+  "我的车辆",
+  "用车人",
+  "温馨提示",
+  "您还未购买换电套餐,是否前往进行换电套餐?",
+  "前往购买",
+  "客服中心",
+  "设置",
+  "您还未购买车辆,购买车辆才可享受换电套餐",
+  "您还未绑定车辆!",
+  "未获取到手机号码",
+  "退出登录",
+  "昵称",
+  "注册时间",
+  "隐私协议",
+  "用户条款",
+  "输入处理",
+  "延迟处理输入法组合输入",
+  "更新值(避免无限触发,需判断)",
+  "截断字符串至指定字节",
+  "判断字符是否为双字节(如中文)",
+  "您确定要退出当前账号吗?",
+  "号仓门已打开",
+  "仓门已打开",
+  "请存入更换电池",
+  "取走满电电池",
+  "并关好仓门",
+  "请",
+  "归还",
+  "取出",
+  "电池并关上仓门",
+  "请取出电池并关上仓门",
+  "归还完成后电柜会自动打开可租仓门",
+  "自动为您匹配最高电量电池",
+  "完成弹窗",
+  "即将跳转至首页,祝您骑行愉快",
+  "回到首页",
+  "联系门店",
+  "仅为示例",
+  "待支付",
+  "待取车",
+  "待激活",
+  "使用中",
+  "已逾期",
+  "还车申请中",
+  "还车中",
+  "车辆已归还",
+  "订单已支付",
+  "订单未支付",
+  "已完结",
+  "支付中",
+  "支付成功",
+  "支付失败",
+  "支付取消",
+  "线下待审核",
+  "线下审核拒绝",
+  "下单时间",
+  "有效期至",
+  "有效时长",
+  "免费换电数",
+  "订单类型",
+  "购车",
+  "租车",
+  "申请中",
+  "审核失败",
+  "退款失败",
+  "已退款",
+  "套餐金额",
+  "订单金额",
+  "租车购车",
+  "页面上拉触底事件的处理函数",
+  "页面下拉触底事件的处理函数",
+  "解析到期时间",
+  "计算剩余天数",
+  "请于",
+  "到门店取车",
+  "请上传车辆图片激活车辆",
+  "待门店确认",
+  "等待门店取车",
+  "已完成",
+  "租期剩余",
+  "逾期时长",
+  "租借周期",
+  "逾期金额",
+  "收起",
+  "展开",
+  "租借周期:购买",
+  "订单信息",
+  "订单编号",
+  "支付时间",
+  "支付方式",
+  "微信支付",
+  "线下支付",
+  "支付宝支付",
+  "钱包余额支付",
+  "租车金额",
+  "租车押金",
+  "订单结束后随时退",
+  "自行去门店取还",
+  "未知地址",
+  "重量",
+  "换电信息",
+  "共",
+  "本单可享",
+  "次免费换电数,超出后需单独支付",
+  "自费换电",
+  "本单您可享受",
+  "次免费换电,",
+  "当前免费换电剩余",
+  "次,超出后需要单独支付换电费用",
+  "取还时间",
+  "逾期规则",
+  "逾期后还可用车吗",
+  "如果逾期将触发智能锁车逻辑,可能导致您无法正常用车,请及时续费或联系商家处理。",
+  "逾期费计算标准是什么",
+  "小时租逾期费",
+  "每小时费用",
+  "逾期小时;当日还",
+  "季租逾期费",
+  "每天费用",
+  "逾期天数;如果不满",
+  "小时按",
+  "小时算,不满",
+  "天按",
+  "天算,最终收取的逾期费以门店确认的费用为准",
+  "逾期后续租如何收费",
+  "逾期后及时续租不收取逾期费,逾期时长将从续租订单的用车时间中抵扣",
+  "结束订单",
+  "扫码绑定",
+  "去上传",
+  "到店还车",
+  "选择取消原因",
+  "行程变更无需用车",
+  "修改订单信息",
+  "不想要了",
+  "确认取消",
+  "车辆价格",
+  "逾期支付金额",
+  "逾期费用计算",
+  "车型不匹配!",
+  "车辆未展示!",
+  "请扫描正确的二维码!",
+  "识别中",
+  "季",
+  "取还时间展示",
+  "剩余租期判断",
+  "判断逾期状态",
+  "如果逾期要交逾期费用",
+  "跳转到上传车辆图片再支付逾期费用还车",
+  "提交还车图片",
+  "取消订单",
+  "您是否需要取消该订单",
+  "是",
+  "否",
+  "预约",
+  "非预约",
+  "支付失败,请重试",
+  "计算拖车说明收费价格",
+  "实际距离单位米",
+  "向上取整的公里数",
+  "超出首公里的费用",
+  "将价格拆分为整数部分和小数部分",
+  "保留两位小数",
+  "计算价格",
+  "保险金",
+  "租金",
+  "保险",
+  "有保险的时候",
+  "为免押",
+  "为是否成功开通免押",
+  "为总金额",
+  "押金",
+  "时",
+  "无保险",
+  "金额",
+  "周期数",
+  "周期价格",
+  "跳转换电记录",
+  "我的套餐",
+  "适用电池",
+  "车辆编号",
+  "小米",
+  "卡号",
+  "生效中",
+  "待生效",
+  "已结束",
+  "前往购买套餐",
+  "返回上一页",
+  "请输入手机号",
+  "重新获取",
+  "计算属性用于判断是否可以登录",
+  "权限设置",
+  "查看实时位置",
+  "使用换电",
+  "默认设置",
+  "远程开关锁",
+  "座桶锁",
+  "确认添加",
+  "删除成员",
+  "确定删除这个成员吗?",
+  "删除中",
+  "添加成功!",
+  "确认订单",
+  "选择取车时间",
+  "共计",
+  "车辆押金",
+  "需要支付",
+  "元押金,诺无车损、违章及逾期,还车后可退",
+  "前往门店取还",
+  "门店距您",
+  "确认下单",
+  "价格明细",
+  "车辆租金",
+  "支付金额",
+  "导航到店",
+  "租车订单已提交",
+  "到",
+  "取车",
+  "订单详情",
+  "选择预约订单时间",
+  "单价",
+  "租赁订单号",
+  "结算总金额",
+  "拍照车牌号",
+  "拍照时请留意照片的清晰度,便于系统提取车牌号",
+  "重拍",
+  "使用照片",
+  "手动输入车牌号",
+  "开了定位权限",
+  "休闲鞋",
+  "数据加载中,请稍等",
+  "无法获取位置信息,请检查您的定位权限设置",
+  "您的手机未授权定位权限,请前往手机设置开启权限",
+  "车牌",
+  "前缀",
+  "读取图片数据",
+  "款车型",
+  "城市代码",
+  "我的位置",
+  "取车时间",
+  "还车时间",
+  "租借时长",
+  "租借时长单位",
+  "经度",
+  "纬度",
+  "周期单位",
+  "选中城市",
+  "是否为当前城市",
+  "还车方式",
+  "是否免押",
+  "租",
+  "位置是否改变",
+  "加上距离数量门店数据",
+  "判断当前是否有租赁周期类型",
+  "车辆类型",
+  "租借类型",
+  "地图控件",
+  "请输入搜索内容",
+  "清空",
+  "搜索",
+  "门店",
+  "换电柜",
+  "筛选",
+  "上下文",
+  "是否处于搜索状态",
+  "点击图标跳转",
+  "骑行",
+  "附近门店列表",
+  "附近机柜列表",
+  "将",
+  "移动至中心点",
+  "已移动至中心点",
+  "线上选择用车方案生成待支付订单",
+  "导航到店向商家支付订单金额",
+  "支付完成后直接现场取车",
+  "短租",
+  "长租",
+  "出售",
+  "购",
+  "平均时速",
+  "减少碳排量",
+  "是否开启卫星图",
+  "是否开启实时路况",
+  "路线",
+  "暂无骑行数据!",
+  "接口返回描绘线段",
+  "点收尾标记",
+  "这里的",
+  "只为",
+  "共享用户",
+  "家人、朋友长期共用车辆,授权账户可以使用感应解锁,寻车定位,查看设置等功能;",
+  "您还未绑定车辆"
+]