MCPcopy Create free account
hub / github.com/ValueCell-ai/valuecell / detect_browser_language

Function detect_browser_language

python/valuecell/utils/i18n_utils.py:20–77  ·  view source on GitHub ↗

Detect preferred language from browser Accept-Language header. Args: accept_language_header: HTTP Accept-Language header value Returns: Best matching supported language code

(accept_language_header: str)

Source from the content-addressed store, hash-verified

18
19
20def detect_browser_language(accept_language_header: str) -> str:
21 """Detect preferred language from browser Accept-Language header.
22
23 Args:
24 accept_language_header: HTTP Accept-Language header value
25
26 Returns:
27 Best matching supported language code
28 """
29 if not accept_language_header:
30 return DEFAULT_LANGUAGE
31
32 # Parse Accept-Language header
33 languages = []
34 for item in accept_language_header.split(","):
35 parts = item.strip().split(";")
36 lang = parts[0].strip()
37
38 # Extract quality value
39 quality = 1.0
40 if len(parts) > 1:
41 q_part = parts[1].strip()
42 if q_part.startswith("q="):
43 try:
44 quality = float(q_part[2:])
45 except ValueError:
46 quality = 1.0
47
48 languages.append((lang, quality))
49
50 # Sort by quality (descending)
51 languages.sort(key=lambda x: x[1], reverse=True)
52
53 # Find best match
54 for lang, _ in languages:
55 # Direct match
56 if lang in SUPPORTED_LANGUAGE_CODES:
57 return lang
58
59 # Handle browser locales to internal locale mapping
60 # TradingView locale codes (internal) are: en, zh_CN, zh_TW, ja, etc.
61 # Browser locales typically look like: en-US, zh-CN, zh-TW, ja-JP
62
63 # 1. Exact map for common variations
64 if lang == "zh-CN" or lang == "zh-Hans":
65 if "zh_CN" in SUPPORTED_LANGUAGE_CODES:
66 return "zh_CN"
67 if lang == "zh-TW" or lang == "zh-HK" or lang == "zh-Hant":
68 if "zh_TW" in SUPPORTED_LANGUAGE_CODES:
69 return "zh_TW"
70 if lang.startswith("ja"):
71 if "ja" in SUPPORTED_LANGUAGE_CODES:
72 return "ja"
73 if lang.startswith("en"):
74 if "en" in SUPPORTED_LANGUAGE_CODES:
75 return "en"
76
77 return DEFAULT_LANGUAGE

Callers 1

detect_languageFunction · 0.85

Calls 1

appendMethod · 0.80

Tested by

no test coverage detected