i18n.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. // [z-paging]i18n模块
  2. import { initVueI18n } from '@dcloudio/uni-i18n'
  3. import messages from '../../i18n/index.js'
  4. const { t } = initVueI18n(messages)
  5. import u from '.././z-paging-utils'
  6. import c from '.././z-paging-constant'
  7. import interceptor from '../z-paging-interceptor'
  8. export default {
  9. data() {
  10. return {
  11. language: uni.getSystemInfoSync().language
  12. }
  13. },
  14. computed: {
  15. finalLanguage() {
  16. const local = uni.getLocale();
  17. const language = this.language;
  18. return local === 'auto' ? interceptor._handleLanguage2Local(language, this._language2Local(language)) : local;
  19. },
  20. finalRefresherDefaultText() {
  21. return this._getI18nText('zp.refresher.default', this.refresherDefaultText);
  22. },
  23. finalRefresherPullingText() {
  24. return this._getI18nText('zp.refresher.pulling', this.refresherPullingText);
  25. },
  26. finalRefresherRefreshingText() {
  27. return this._getI18nText('zp.refresher.refreshing', this.refresherRefreshingText);
  28. },
  29. finalRefresherCompleteText() {
  30. return this._getI18nText('zp.refresher.complete', this.refresherCompleteText);
  31. },
  32. finalRefresherUpdateTimeTextMap() {
  33. return {
  34. title: t('zp.refresherUpdateTime.title'),
  35. none: t('zp.refresherUpdateTime.none'),
  36. today: t('zp.refresherUpdateTime.today'),
  37. yesterday: t('zp.refresherUpdateTime.yesterday')
  38. };
  39. },
  40. finalLoadingMoreDefaultText() {
  41. return this._getI18nText('zp.loadingMore.default', this.loadingMoreDefaultText);
  42. },
  43. finalLoadingMoreLoadingText() {
  44. return this._getI18nText('zp.loadingMore.loading', this.loadingMoreLoadingText);
  45. },
  46. finalLoadingMoreNoMoreText() {
  47. return this._getI18nText('zp.loadingMore.noMore', this.loadingMoreNoMoreText);
  48. },
  49. finalLoadingMoreFailText() {
  50. return this._getI18nText('zp.loadingMore.fail', this.loadingMoreFailText);
  51. },
  52. finalEmptyViewText() {
  53. return this.isLoadFailed ? this.finalEmptyViewErrorText : this._getI18nText('zp.emptyView.title', this.emptyViewText);
  54. },
  55. finalEmptyViewReloadText() {
  56. return this._getI18nText('zp.emptyView.reload', this.emptyViewReloadText);
  57. },
  58. finalEmptyViewErrorText() {
  59. return this._getI18nText('zp.emptyView.error', this.emptyViewErrorText);
  60. },
  61. finalSystemLoadingText() {
  62. return this._getI18nText('zp.systemLoading.title', this.systemLoadingText);
  63. },
  64. },
  65. methods: {
  66. //获取当前z-paging的语言
  67. getLanguage() {
  68. return this.finalLanguage;
  69. },
  70. //获取国际化转换后的文本
  71. _getI18nText(key, value) {
  72. const dataType = Object.prototype.toString.call(value);
  73. if (dataType === '[object Object]') {
  74. const nextValue = value[this.finalLanguage];
  75. if (nextValue) return nextValue;
  76. } else if (dataType === '[object String]') {
  77. return value;
  78. }
  79. return t(key);
  80. },
  81. //系统language转i18n local
  82. _language2Local(language) {
  83. const formatedLanguage = language.toLowerCase().replace(new RegExp('_', ''), '-');
  84. if (formatedLanguage.indexOf('zh') !== -1) {
  85. if (formatedLanguage === 'zh' || formatedLanguage === 'zh-cn' || formatedLanguage.indexOf('zh-hans') !== -1) {
  86. return 'zh-Hans';
  87. }
  88. return 'zh-Hant';
  89. }
  90. if (formatedLanguage.indexOf('en') !== -1) return 'en';
  91. return language;
  92. }
  93. }
  94. }