我用Python脚本创建HTML输出。<head>
标签需要一个lang=
属性。
我不想使用Python的locale
包。但locale
(如de_DE
)的值不符合HTML。例如,de_DE
不被W3C验证器接受,但de
可以。
所以我是这样做的:
#!/usr/bin/env python3
import locale
locale_lang = locale.getlocale()[0] # e.g. 'de_DE'
html_lang_value = locale_lang.split('_')[0] # e.g. 'de'
head_tag = f'<head lang="{html_lang_value}">'
print(head_tag) # <head lang="de">
问题是,如果这是一个好主意,将工作在所有的语言?
根据locale.get_locale
文档
请注意,如果语言代码将是以序列形式返回给定区域设置类别的当前设置包含语言代码,编码(…)除了代码
'C'
,语言代码对应于RFC 1766。语言代码和编码可以是None
,如果它们的值不能确定。
'C'
,那么您的locale_lang.split('_')[0]
将是'C'
。您是否允许接受lang
属性值这样的值?更重要的是,语言代码可能是None
,这会使你的代码崩溃,因为你不能使用.split
None
,所以如果你的代码必须可靠地工作,那么你应该准备好将locale_lang
的值获取为None
。