Skip to content

Instantly share code, notes, and snippets.

@Rplus
Created June 13, 2024 18:20
Show Gist options
  • Save Rplus/9729a17a15c8fa971ff6bc16faf96a43 to your computer and use it in GitHub Desktop.
Save Rplus/9729a17a15c8fa971ff6bc16faf96a43 to your computer and use it in GitHub Desktop.
getUserLanguage from BD2 coupon page
/** 언어 판별 - "쿼리스트링": "내부 언어코드" */
const LANGS = {
en: 'en-us',
us: 'en-us',
ko: 'ko-kr',
kr: 'ko-kr',
ja: 'ja-jp',
jp: 'ja-jp',
cn: 'zh-cn',
'cn-tw': 'zh-tw', // 대만 클라이언트용
zh: 'zh-tw',
tw: 'zh-tw',
};
const SUPPORTED_LANGS = new Set(Object.values(LANGS));
/** @return {string} 쿼리스트링 또는 브라우저에 설정된 언어 중 지원되는 것. en-us 형식 */
function getUserLanguage() {
const qs = new URLSearchParams(location.search);
const maybeLang = qs.get('lang') || '__NONE__';
const lang = maybeLang.toLowerCase(); // 소문자
// @ts-ignore
const langCode = LANGS[lang] || lang;
// 브라우저 언어 코드 첫번째
const userLang =
(window.navigator.languages && window.navigator.languages[0]) ||
window.navigator.language;
// @ts-ignore
const userLangCode = LANGS[userLang.toLowerCase()] || 'en-us';
// 쿼리스트링으로 넘어온 값 우선, 없으면 브라우저 언어 판별
return SUPPORTED_LANGS.has(langCode) ? langCode : userLangCode;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment