unibest/src/pages/index/i18n.vue

83 lines
1.7 KiB
Vue
Raw Normal View History

<route lang="json">
{
"style": {
"navigationBarTitleText": "%app.name%"
}
}
</route>
2024-01-29 18:59:17 +08:00
2024-01-29 19:14:01 +08:00
<template>
2024-01-29 19:35:37 +08:00
<view class="center flex-col mt-6">
<view class="text-green-500">多语言测试</view>
<view class="m-4">{{ $t('app.name') }}</view>
2024-01-29 20:19:15 +08:00
<view class="text-green-500 mt-12">切换语言 </view>
2024-01-29 19:35:37 +08:00
<view class="uni-list">
<radio-group @change="radioChange" class="radio-group">
<label class="uni-list-cell uni-list-cell-pd" v-for="item in languages" :key="item.value">
<view>
<radio :value="item.value" :checked="item.value === current" />
</view>
<view>{{ item.name }}</view>
</label>
</radio-group>
</view>
2024-01-29 19:14:01 +08:00
2024-01-29 19:35:37 +08:00
<!-- http://localhost:9000/#/pages/index/i18n -->
2024-01-29 20:19:15 +08:00
<button @click="testI18n" class="mt-20 mb-44">测试弹窗</button>
2024-01-29 19:35:37 +08:00
</view>
2024-01-29 19:14:01 +08:00
</template>
2024-01-29 18:59:17 +08:00
<script lang="ts" setup>
import i18n from '@/locale/index'
2024-01-29 18:59:17 +08:00
import { testI18n } from '@/utils/index'
const current = ref(uni.getLocale())
2024-01-29 19:14:01 +08:00
const languages = [
{
value: 'zh-Hans',
2024-01-29 19:14:01 +08:00
name: '中文',
checked: 'true',
},
{
value: 'en',
name: '英文',
},
]
const radioChange = (evt) => {
// console.log(evt)
current.value = evt.detail.value
// 下面2句缺一不可
2024-01-29 19:14:01 +08:00
uni.setLocale(evt.detail.value)
i18n.global.locale = evt.detail.value
2024-01-29 19:14:01 +08:00
}
2024-01-29 18:59:17 +08:00
</script>
2024-01-29 19:35:37 +08:00
<style lang="scss">
.uni-list {
position: relative;
display: flex;
flex-direction: column;
width: 100%;
background-color: #fff;
border-radius: 12px;
}
.radio-group {
width: 200px;
2024-01-29 20:19:15 +08:00
margin: 10px auto;
2024-01-29 19:35:37 +08:00
border-radius: 12px;
}
.uni-list-cell {
position: relative;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
padding: 10px;
background-color: #bcecd1;
}
</style>