switchLanguage.vue 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <template>
  2. <view class="page">
  3. <view class="btn-list">
  4. <view class="language" data-lang="zh-CN" @tap="langChange">
  5. <text>简体中文</text>
  6. <image
  7. v-if="languageSelect == 'zh-CN'"
  8. class="selected"
  9. src="../../static/mine/326.png"
  10. mode=""
  11. ></image>
  12. </view>
  13. <view class="language" data-lang="en-US" @tap="langChange">
  14. <text>English</text>
  15. <image
  16. v-if="languageSelect == 'en-US'"
  17. class="selected"
  18. src="../../static/mine/326.png"
  19. mode=""
  20. ></image>
  21. </view>
  22. <view class="language" data-lang="es-ES" @tap="langChange">
  23. <text>Español</text>
  24. <image
  25. v-if="languageSelect == 'es-ES'"
  26. class="selected"
  27. src="../../static/mine/326.png"
  28. mode=""
  29. ></image>
  30. </view>
  31. <view class="language" data-lang="it-IT" @tap="langChange">
  32. <text>Italiano</text>
  33. <image
  34. v-if="languageSelect == 'it-IT'"
  35. class="selected"
  36. src="../../static/mine/326.png"
  37. mode=""
  38. ></image>
  39. </view>
  40. </view>
  41. </view>
  42. </template>
  43. <script>
  44. export default {
  45. data() {
  46. return {
  47. languageSelect: "",
  48. language: "cn",
  49. };
  50. },
  51. computed: {
  52. i18n() {
  53. return this.$t("index");
  54. },
  55. },
  56. methods: {
  57. update() {
  58. uni.$u.http
  59. .post("/api/member/update", {
  60. lang: this.language,
  61. })
  62. .then((res) => {
  63. this.$u.toast("切换成功");
  64. })
  65. .catch(() => {});
  66. },
  67. langChange(e) {
  68. const { lang } = e.currentTarget.dataset;
  69. uni.setStorageSync("language", lang);
  70. this._i18n.locale = lang;
  71. this.languageSelect = lang;
  72. if (this.languageSelect == "zh-CN") {
  73. this.language = "cn";
  74. } else if (this.languageSelect == "en-US") {
  75. this.language = "en";
  76. } else if (this.languageSelect == "es-ES") {
  77. this.language = "es";
  78. } else if (this.languageSelect == "it-IT") {
  79. this.language = "ita";
  80. }
  81. this.update();
  82. uni.setNavigationBarTitle({
  83. title: this.i18n.switchLanguage,
  84. });
  85. },
  86. },
  87. created() {
  88. this.languageSelect = this._i18n.locale;
  89. uni.setNavigationBarTitle({
  90. title: this.i18n.switchLanguage,
  91. });
  92. },
  93. };
  94. </script>
  95. <style scoped lang="scss">
  96. .page {
  97. padding: 20rpx 24rpx;
  98. .btn-list {
  99. background-color: #fff;
  100. border-radius: 16rpx;
  101. padding: 0 20rpx;
  102. .language {
  103. display: flex;
  104. align-items: center;
  105. justify-content: space-between;
  106. height: 110rpx;
  107. border-bottom: 2rpx solid rgba(151, 151, 151, 0.2);
  108. .selected {
  109. width: 36rpx;
  110. height: 36rpx;
  111. }
  112. }
  113. }
  114. }
  115. </style>