Language.vue 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <script setup>
  2. import { reactive, onMounted } from "vue";
  3. import { useRoute, useRouter } from "vue-router";
  4. import { useI18n } from "vue-i18n";
  5. const route = useRoute();
  6. const router = useRouter();
  7. const { t, locale } = useI18n();
  8. onMounted(() => {
  9. let lang = route.params.lang;
  10. console.log("lang >>", lang);
  11. if (lang && lang !== "") {
  12. chooseLang(lang);
  13. }
  14. });
  15. function chooseLang(lang) {
  16. console.log("選擇語言:", lang);
  17. locale.value = lang; // i18n locale
  18. localStorage.setItem("lang", lang);
  19. router.push("/step1");
  20. }
  21. let langList = reactive([
  22. {
  23. lang: "中文",
  24. value: "zh-tw",
  25. },
  26. {
  27. lang: "English",
  28. value: "en-us",
  29. },
  30. {
  31. lang: "日本語",
  32. value: "ja-jp",
  33. },
  34. {
  35. lang: "한국어",
  36. value: "ko-kr",
  37. },
  38. ]);
  39. </script>
  40. <template>
  41. <div class="lang-content">
  42. <div style="position: relative">
  43. <section>
  44. <h3>歡迎來到 AI 明信片</h3>
  45. <p>請選擇您的語言</p>
  46. </section>
  47. <button
  48. v-for="(item, index) in langList"
  49. :key="index"
  50. @click="chooseLang(item.value)"
  51. class="main-btn"
  52. >
  53. {{ item.lang }}
  54. </button>
  55. </div>
  56. </div>
  57. </template>
  58. <style lang="scss">
  59. .lang-content {
  60. width: 100%;
  61. height: 100vh;
  62. padding-top: 4rem;
  63. display: flex;
  64. flex-direction: column;
  65. justify-content: center;
  66. background-color: #231816;
  67. background-size: cover;
  68. background-position: center center;
  69. section {
  70. margin: 2.5rem auto;
  71. color: white;
  72. }
  73. h3 {
  74. font-size: 2rem;
  75. margin-bottom: 1rem;
  76. @media (max-width: 600px) {
  77. font-size: 1.6rem;
  78. }
  79. }
  80. p {
  81. font-size: 1.625rem;
  82. @media (max-width: 600px) {
  83. font-size: 1.5rem;
  84. }
  85. }
  86. .main-btn {
  87. margin: 0 auto 2.5rem;
  88. }
  89. }
  90. </style>