|
11 | 11 | {% assign site_tagline = site.data.translations[site.active_lang].site.tagline %} |
12 | 12 | {% assign page_title = site.data.translations[site.active_lang].site.page_titles[page.id] | default: page.title | default: site.title %} |
13 | 13 | {% assign localized_page_path = page.url %} |
14 | | - {% if site.active_lang != site.default_lang %} |
| 14 | + {% if site.active_lang %} |
15 | 15 | {% capture localized_page_path %}/{{ site.active_lang }}{{ page.url }}{% endcapture %} |
16 | 16 | {% endif %} |
17 | 17 |
|
|
139 | 139 | {% include footer.html %} |
140 | 140 | <script src="{{ '/assets/js/main.js?v=' | append: asset_revision | relative_url }}"></script> |
141 | 141 | </body> |
| 142 | + <script> |
| 143 | + (function() { |
| 144 | + var supportedLangs = ['en-us', 'zh-cn']; |
| 145 | + var defaultLang = 'en-us'; |
| 146 | + var cookieName = 'preferred_lang'; |
| 147 | + |
| 148 | + function getCookie(name) { |
| 149 | + var match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)')); |
| 150 | + return match ? decodeURIComponent(match[2]) : null; |
| 151 | + } |
| 152 | + |
| 153 | + function setCookie(name, value) { |
| 154 | + var date = new Date(); |
| 155 | + date.setTime(date.getTime() + 10 * 365 * 24 * 60 * 60 * 1000); |
| 156 | + document.cookie = name + '=' + encodeURIComponent(value) + |
| 157 | + '; expires=' + date.toUTCString() + |
| 158 | + '; path=/'; |
| 159 | + } |
| 160 | + |
| 161 | + function getLanguageFromPath(path) { |
| 162 | + for (var i = 0; i < supportedLangs.length; i++) { |
| 163 | + var prefix = '/' + supportedLangs[i]; |
| 164 | + if (path.indexOf(prefix) === 0) { |
| 165 | + return supportedLangs[i]; |
| 166 | + } |
| 167 | + } |
| 168 | + return null; |
| 169 | + } |
| 170 | + |
| 171 | + function removeLanguageFromPath(path) { |
| 172 | + var lang = getLanguageFromPath(path); |
| 173 | + if (lang) { |
| 174 | + return path.replace('/' + lang, ''); |
| 175 | + } |
| 176 | + return path; |
| 177 | + } |
| 178 | + |
| 179 | + (function redirect() { |
| 180 | + var path = window.location.pathname; |
| 181 | + var lang = getCookie(cookieName); |
| 182 | + |
| 183 | + if (!lang) { |
| 184 | + var browserLang = (navigator.language || navigator.userLanguage || '').toLowerCase(); |
| 185 | + for (var i = 0; i < supportedLangs.length; i++) { |
| 186 | + if (browserLang === supportedLangs[i] || browserLang.startsWith(supportedLangs[i].split('-')[0])) { |
| 187 | + lang = supportedLangs[i]; |
| 188 | + break; |
| 189 | + } |
| 190 | + } |
| 191 | + } |
| 192 | + |
| 193 | + if (!lang || supportedLangs.indexOf(lang) === -1) { |
| 194 | + lang = defaultLang; |
| 195 | + } |
| 196 | + |
| 197 | + if (!getCookie(cookieName)) { |
| 198 | + setCookie(cookieName, lang); |
| 199 | + } |
| 200 | + |
| 201 | + var hasLangPrefix = getLanguageFromPath(path) !== null; |
| 202 | + |
| 203 | + if (!hasLangPrefix) { |
| 204 | + var newPath = (path === '/' || path === '') |
| 205 | + ? '/' + lang + '/' |
| 206 | + : '/' + lang + path; |
| 207 | + window.location.replace(newPath); |
| 208 | + } |
| 209 | + })(); |
| 210 | + |
| 211 | + document.addEventListener('DOMContentLoaded', function() { |
| 212 | + var links = document.querySelectorAll('.language-link[data-lang]'); |
| 213 | + links.forEach(function(link) { |
| 214 | + link.addEventListener('click', function(e) { |
| 215 | + // Allow the link to navigate naturally (no e.preventDefault) |
| 216 | + var lang = this.getAttribute('data-lang'); |
| 217 | + setCookie(cookieName, lang); |
| 218 | + }); |
| 219 | + }); |
| 220 | + }); |
| 221 | + })(); |
| 222 | + </script> |
142 | 223 | </html> |
0 commit comments