cshenfu
2024-06-27 58aa6e282bb343503be3cb198948328ea3ed7b79
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
// [z-paging]i18n模块
import u from '.././z-paging-utils'
import c from '.././z-paging-constant'
import zI18n from '.././z-paging-i18n'
 
const systemInfo = uni.getSystemInfoSync();
const ZPI18n = {
    props: {
        //i18n国际化设置语言,支持简体中文(zh-cn)、繁体中文(zh-hant-cn)和英文(en)
        language: {
            type: String,
            default: u.gc('language', '')
        },
        //i18n国际化默认是否跟随系统语言,默认为是
        followSystemLanguage: {
            type: Boolean,
            default: u.gc('followSystemLanguage', true)
        },
    },
    data() {
        return {
            tempLanguageUpdateKey: 0,
        }
    },
    computed: {
        tempLanguage() {
            let systemLanguage = false;
            const temp = this.tempLanguageUpdateKey;
            if (this.followSystemLanguage) {
                systemLanguage = systemInfo.language;
            }
            return uni.getStorageSync(c.i18nUpdateKey) || systemLanguage || 'zh-cn';
        },
        finalTempLanguage() {
            return this.language.length ? this.language : this.tempLanguage;
        },
        finalLanguage() {
            let language = this.finalTempLanguage.toLowerCase();
            return zI18n._getPrivateLanguage(language, this.followSystemLanguage);
        },
        finalRefresherDefaultText() {
            return this._getI18nText('refresherDefaultText', this.refresherDefaultText);
        },
        finalRefresherPullingText() {
            return this._getI18nText('refresherPullingText', this.refresherPullingText);
        },
        finalRefresherRefreshingText() {
            return this._getI18nText('refresherRefreshingText', this.refresherRefreshingText);
        },
        finalRefresherCompleteText() {
            return this._getI18nText('refresherCompleteText', this.refresherCompleteText);
        },
        finalLoadingMoreDefaultText() {
            return this._getI18nText('loadingMoreDefaultText', this.loadingMoreDefaultText);
        },
        finalLoadingMoreLoadingText() {
            return this._getI18nText('loadingMoreLoadingText', this.loadingMoreLoadingText);
        },
        finalLoadingMoreNoMoreText() {
            return this._getI18nText('loadingMoreNoMoreText', this.loadingMoreNoMoreText);
        },
        finalLoadingMoreFailText() {
            return this._getI18nText('loadingMoreFailText', this.loadingMoreFailText);
        },
        finalEmptyViewText() {
            return this.isLoadFailed ? this.finalEmptyViewErrorText : this._getI18nText('emptyViewText', this.emptyViewText);
        },
        finalEmptyViewReloadText() {
            return this._getI18nText('emptyViewReloadText', this.emptyViewReloadText);
        },
        finalEmptyViewErrorText() {
            return this._getI18nText('emptyViewErrorText', this.emptyViewErrorText);
        },
    },
    methods: {
        //设置i18n国际化语言
        setI18n(language) {
            zI18n.setLanguage(language);
        },
        //获取当前z-paging的语言
        getLanguage() {
            return this.finalLanguage;
        },
        //获取国际化转换后的文本
        _getI18nText(key, value) {
            const dataType = Object.prototype.toString.call(value);
            if (dataType === '[object Object]') {
                const nextValue = value[this.finalLanguage];
                if (nextValue) return nextValue;
            } else if (dataType === '[object String]') {
                return value;
            }
            return zI18n.t[key][this.finalLanguage];
        },
    }
}
 
export default ZPI18n;