Language.vue 2.2 KB

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