Selaa lähdekoodia

feat: 地址新增、更新页面多语言

liangan 1 viikko sitten
vanhempi
sitoutus
c9c43deee2
5 muutettua tiedostoa jossa 107 lisäystä ja 28 poistoa
  1. 26 0
      src/locale/bn.json
  2. 26 0
      src/locale/en.json
  3. 26 0
      src/locale/zh-Hans.json
  4. 1 1
      src/pages.json
  5. 28 27
      src/pages/mine/addressBookOperate.vue

+ 26 - 0
src/locale/bn.json

@@ -1,5 +1,31 @@
 {
   "addressBook.title": "ঠিকানা বই",
+  "addressBook.operate.title.add": "ঠিকানা যোগ করুন",
+  "addressBook.operate.title.edit": "ঠিকানা সম্পাদনা করুন",
+  "addressBook.operate.loading": "লোড হচ্ছে...",
+  "addressBook.operate.saving": "সংরক্ষণ করা হচ্ছে...",
+  "addressBook.operate.form.fullName": "পুরো নাম",
+  "addressBook.operate.form.phone": "ফোন নম্বর",
+  "addressBook.operate.form.phone.placeholder": "+88",
+  "addressBook.operate.form.district": "প্রদেশ/জেলা",
+  "addressBook.operate.form.district.placeholder": "অনুগ্রহ করে চয়ন করুন",
+  "addressBook.operate.form.street": "তলা/ইউনিট/রাস্তা",
+  "addressBook.operate.form.street.placeholder": "বিস্তারিত ঠিকানা",
+  "addressBook.operate.form.postcode": "পোস্টকোড",
+  "addressBook.operate.form.postcode.placeholder": "আপনার পোস্টকোড",
+  "addressBook.operate.form.default": "ডিফল্ট",
+  "addressBook.operate.button.save": "সংরক্ষণ",
+  "addressBook.operate.button.update": "আপডেট",
+  "addressBook.operate.error.loadFailed": "ঠিকানার বিবরণ লোড করতে ব্যর্থ",
+  "addressBook.operate.error.emptyName": "পুরো নাম লিখুন",
+  "addressBook.operate.error.emptyPhone": "ফোন নম্বর লিখুন",
+  "addressBook.operate.error.emptyDistrict": "প্রদেশ/জেলা নির্বাচন করুন",
+  "addressBook.operate.error.emptyStreet": "বিস্তারিত ঠিকানা লিখুন",
+  "addressBook.operate.error.emptyPostcode": "পোস্টকোড লিখুন",
+  "addressBook.operate.success.update": "ঠিকানা সফলভাবে আপডেট করা হয়েছে",
+  "addressBook.operate.success.save": "ঠিকানা সফলভাবে সংরক্ষিত হয়েছে",
+  "addressBook.operate.error.saveFailed": "সংরক্ষণ ব্যর্থ, আবার চেষ্টা করুন",
+  "addressBook.operate.error.loadPage": "পৃষ্ঠা লোড করতে ব্যর্থ",
   "addressBook.delete.deleting": "মুছে ফেলা হচ্ছে...",
   "addressBook.delete.success": "ঠিকানা সফলভাবে মুছে ফেলা হয়েছে",
   "addressBook.delete.confirm": "মুছে ফেলা নিশ্চিত করুন",

+ 26 - 0
src/locale/en.json

@@ -1,5 +1,31 @@
 {
   "addressBook.title": "Address Book",
+  "addressBook.operate.title.add": "Add Address",
+  "addressBook.operate.title.edit": "Edit Address",
+  "addressBook.operate.loading": "Loading...",
+  "addressBook.operate.saving": "Saving...",
+  "addressBook.operate.form.fullName": "Full Name",
+  "addressBook.operate.form.phone": "Phone Number",
+  "addressBook.operate.form.phone.placeholder": "+88",
+  "addressBook.operate.form.district": "Privince/District",
+  "addressBook.operate.form.district.placeholder": "Please choose",
+  "addressBook.operate.form.street": "Floor/Unit No./Street",
+  "addressBook.operate.form.street.placeholder": "Detailed address",
+  "addressBook.operate.form.postcode": "Postcode",
+  "addressBook.operate.form.postcode.placeholder": "Your postcode",
+  "addressBook.operate.form.default": "Default",
+  "addressBook.operate.button.save": "Save",
+  "addressBook.operate.button.update": "Update",
+  "addressBook.operate.error.loadFailed": "Failed to load address details",
+  "addressBook.operate.error.emptyName": "Please enter full name",
+  "addressBook.operate.error.emptyPhone": "Please enter phone number",
+  "addressBook.operate.error.emptyDistrict": "Please select province/district",
+  "addressBook.operate.error.emptyStreet": "Please enter detailed address",
+  "addressBook.operate.error.emptyPostcode": "Please enter postcode",
+  "addressBook.operate.success.update": "Address updated successfully",
+  "addressBook.operate.success.save": "Address saved successfully",
+  "addressBook.operate.error.saveFailed": "Save failed, please try again",
+  "addressBook.operate.error.loadPage": "Page load failed",
   "addressBook.delete.deleting": "Deleting...",
   "addressBook.delete.success": "Address deleted successfully",
   "addressBook.delete.confirm": "Confirm Delete",

+ 26 - 0
src/locale/zh-Hans.json

@@ -1,5 +1,31 @@
 {
   "addressBook.title": "地址簿",
+  "addressBook.operate.title.add": "添加地址",
+  "addressBook.operate.title.edit": "编辑地址",
+  "addressBook.operate.loading": "加载中...",
+  "addressBook.operate.saving": "保存中...",
+  "addressBook.operate.form.fullName": "姓名",
+  "addressBook.operate.form.phone": "手机号码",
+  "addressBook.operate.form.phone.placeholder": "+88",
+  "addressBook.operate.form.district": "省/区",
+  "addressBook.operate.form.district.placeholder": "请选择",
+  "addressBook.operate.form.street": "楼层/单元/街道",
+  "addressBook.operate.form.street.placeholder": "详细地址",
+  "addressBook.operate.form.postcode": "邮编",
+  "addressBook.operate.form.postcode.placeholder": "请输入邮编",
+  "addressBook.operate.form.default": "默认",
+  "addressBook.operate.button.save": "保存",
+  "addressBook.operate.button.update": "更新",
+  "addressBook.operate.error.loadFailed": "加载地址详情失败",
+  "addressBook.operate.error.emptyName": "请输入姓名",
+  "addressBook.operate.error.emptyPhone": "请输入手机号码",
+  "addressBook.operate.error.emptyDistrict": "请选择省/区",
+  "addressBook.operate.error.emptyStreet": "请输入详细地址",
+  "addressBook.operate.error.emptyPostcode": "请输入邮编",
+  "addressBook.operate.success.update": "地址更新成功",
+  "addressBook.operate.success.save": "地址保存成功",
+  "addressBook.operate.error.saveFailed": "保存失败,请重试",
+  "addressBook.operate.error.loadPage": "页面加载失败",
   "addressBook.delete.deleting": "删除中...",
   "addressBook.delete.success": "地址删除成功",
   "addressBook.delete.confirm": "确认删除",

+ 1 - 1
src/pages.json

@@ -102,7 +102,7 @@
       "type": "page",
       "layout": "default",
       "style": {
-        "navigationBarTitleText": "Address Book",
+        "navigationBarTitleText": "%addressBook.title%",
         "navigationBarBackgroundColor": "#fff"
       }
     },

+ 28 - 27
src/pages/mine/addressBookOperate.vue

@@ -2,7 +2,7 @@
 {
   layout: 'default',
   style: {
-    navigationBarTitleText: 'Address Book',
+    navigationBarTitleText: '%addressBook.title%',
     navigationBarBackgroundColor: '#fff',
   },
 }
@@ -15,6 +15,7 @@ import { onPageScroll, onReachBottom } from '@dcloudio/uni-app'
 import useZPaging from 'z-paging/components/z-paging/js/hooks/useZPaging.js'
 import { divisionsTreeList } from '@/api/common'
 import { addressAdd, addressDetail, addressUpdate } from '@/api/mine'
+import { t } from '@/locale'
 import { getPageParams, goBack } from '@/utils/page'
 import { toast } from '@/utils/toast'
 
@@ -97,7 +98,7 @@ const originalAddressData = ref<any>(null)
 async function getAddressDetail() {
   try {
     await uni.showLoading({
-      title: 'Loading...',
+      title: t('addressBook.operate.loading'),
     })
 
     const res = await addressDetail({ id: addressId.value })
@@ -130,12 +131,12 @@ async function getAddressDetail() {
       console.log('Display text:', addressDisplayText.value)
     }
     else {
-      toast.error(res.message || 'Failed to load address details')
+      toast.error(res.message || t('addressBook.operate.error.loadFailed'))
     }
   }
   catch (error: any) {
     console.error('Get address detail error:', error)
-    toast.error(error.message || 'Failed to load address details')
+    toast.error(error.message || t('addressBook.operate.error.loadFailed'))
   }
   finally {
     uni.hideLoading()
@@ -147,34 +148,34 @@ async function save() {
   try {
     // 自定义校验
     if (!model.value.realName?.trim()) {
-      toast.info('Please enter full name')
+      toast.info(t('addressBook.operate.error.emptyName'))
       return
     }
 
     if (!model.value.phone?.trim()) {
-      toast.info('Please enter phone number')
+      toast.info(t('addressBook.operate.error.emptyPhone'))
       return
     }
 
     // 在新增模式下必须选择地址,编辑模式下可以使用原有地址
     if (!isEditMode.value && (!model.value.areaCodes || model.value.areaCodes.length === 0)) {
-      toast.info('Please select province/district')
+      toast.info(t('addressBook.operate.error.emptyDistrict'))
       return
     }
 
     if (!model.value.detail?.trim()) {
-      toast.info('Please enter detailed address')
+      toast.info(t('addressBook.operate.error.emptyStreet'))
       return
     }
 
     if (!model.value.postCode?.trim()) {
-      toast.info('Please enter postcode')
+      toast.info(t('addressBook.operate.error.emptyPostcode'))
       return
     }
 
     // 显示加载提示
     await uni.showLoading({
-      title: 'Saving...',
+      title: t('addressBook.operate.saving'),
     })
 
     // 处理地址数据
@@ -221,7 +222,7 @@ async function save() {
     uni.hideLoading()
 
     if (res.code === '200') {
-      toast.success(isEditMode.value ? 'Address updated successfully' : 'Address saved successfully')
+      toast.success(isEditMode.value ? t('addressBook.operate.success.update') : t('addressBook.operate.success.save'))
 
       // 延迟返回上一页
       setTimeout(() => {
@@ -229,13 +230,13 @@ async function save() {
       }, 1500)
     }
     else {
-      toast.error(res.message || 'Save failed, please try again')
+      toast.error(res.message || t('addressBook.operate.error.saveFailed'))
     }
   }
   catch (error: any) {
     uni.hideLoading()
     console.error('Save address error:', error)
-    toast.error(error.message || 'Save failed, please try again')
+    toast.error(error.message || t('addressBook.operate.error.saveFailed'))
   }
 }
 
@@ -253,7 +254,7 @@ onLoad(async (options: any) => {
       addressId.value = params.id
       // 设置页面标题
       uni.setNavigationBarTitle({
-        title: 'Edit Address',
+        title: t('addressBook.operate.title.edit'),
       })
       // 获取地址详情
       await getAddressDetail()
@@ -261,7 +262,7 @@ onLoad(async (options: any) => {
     else {
       // 新增模式
       uni.setNavigationBarTitle({
-        title: 'Add Address',
+        title: t('addressBook.operate.title.add'),
       })
     }
   }
@@ -279,28 +280,28 @@ onLoad(async (options: any) => {
         <wd-cell-group>
           <wd-input
             v-model="model.realName"
-            label="Full Name"
+            :label="t('addressBook.operate.form.fullName')"
             label-width="240rpx"
             custom-label-class="text-28rpx"
             clearable
-            placeholder="Full Name"
+            :placeholder="t('addressBook.operate.form.fullName')"
             required
           />
           <wd-input
             v-model="model.phone"
-            label="Phone Number"
+            :label="t('addressBook.operate.form.phone')"
             label-width="240rpx"
             custom-label-class="text-28rpx"
             clearable
-            placeholder="+88"
+            :placeholder="t('addressBook.operate.form.phone.placeholder')"
             required
           />
-          <wd-cell title="Privince/District" required vertical>
+          <wd-cell :title="t('addressBook.operate.form.district')" required vertical>
             <wd-col-picker
               v-model="model.areaCodes"
               :columns="area"
               clearable
-              placeholder="Please choose"
+              :placeholder="t('addressBook.operate.form.district.placeholder')"
               value-key="name"
               label-key="name"
               :column-change="columnChange"
@@ -311,24 +312,24 @@ onLoad(async (options: any) => {
             />
           </wd-cell>
 
-          <wd-cell title="Floor/Unit No./Street" vertical required>
+          <wd-cell :title="t('addressBook.operate.form.street')" vertical required>
             <wd-textarea
               v-model="model.detail"
               clearable
               auto-height
-              placeholder="Detailed address"
+              :placeholder="t('addressBook.operate.form.street.placeholder')"
             />
           </wd-cell>
           <wd-input
             v-model="model.postCode"
-            label="Postcode"
+            :label="t('addressBook.operate.form.postcode')"
             label-width="240rpx"
             custom-label-class="text-28rpx"
             clearable
-            placeholder="Your postcode"
+            :placeholder="t('addressBook.operate.form.postcode.placeholder')"
             required
           />
-          <wd-cell title="Default">
+          <wd-cell :title="t('addressBook.operate.form.default')">
             <wd-switch v-model="model.isDefault" :active-value="1" :inactive-value="0" size="42rpx" />
           </wd-cell>
         </wd-cell-group>
@@ -337,7 +338,7 @@ onLoad(async (options: any) => {
     <template #bottom>
       <view class="bg-white/60 px-28rpx py-30rpx backdrop-blur-20">
         <wd-button plain block @click="save">
-          {{ isEditMode ? 'Update' : 'Save' }}
+          {{ isEditMode ? t('addressBook.operate.button.update') : t('addressBook.operate.button.save') }}
         </wd-button>
       </view>
     </template>