本地化:如何格式化日期和数字
Posted
技术标签:
【中文标题】本地化:如何格式化日期和数字【英文标题】:Localization: How to format dates and numbers 【发布时间】:2020-04-25 19:49:02 【问题描述】:我目前正在开发一个 Web 应用程序,并尝试使该网站具有多种语言。 从用户那里我得到了以下信息:
语言 - 来自$_SERVER['HTTP_ACCEPT_LANGUAGE']
国家 - 来自用户的 IP 地址(使用 API)
现在,网站采用语言并以正确的语言显示页面 - 例如英语或德语。现在我想格式化数字和日期,但我不知道应该用什么来格式化日期,例如:
德国:dd.MM.yyyy 美国:MM/dd/yyyy但是我应该用什么来格式化日期呢?语言还是国家? 如果用户在美国但会说德语怎么办?我应该使用美国格式还是德语格式?
很高兴听到您对此的看法以及您如何处理本地化。
【问题讨论】:
【参考方案1】:您提出的问题已使用语言环境解决。区域设置特定于一种语言,然后可能更特定于地理信息和脚本变体。
CLDR 是与语言环境相关的信息库。例如,您可以使用任何语言查找特定城市的名称,或者查看它们如何格式化特定区域的日期。
您可以将此数据与Globalize.js 库及其date formatting module 结合使用。
请参阅this answer,了解如何使用 Globalize.js 的一般概述。
【讨论】:
好的,听起来不错 - 但是如何获取语言环境?它只是 lang_COUNTRY 所以 en_US 还是 de_DE?当用户选择德语作为语言而我们作为国家时?会是 de_US 吗? 您已经提到的Accept-Language
标头实际上是passes a locale,而不仅仅是一种语言,因此您可以使用它。它传递一个接受的语言环境列表,通常按用户偏好排序。
好的,所以我也可以通过从用户 ip 获取接受语言和国家/地区的语言来生成语言环境,然后生成一个带有 lang_COUNTRY
的语言环境,它将被 globalize.js 使用。如果用户更改了一个部分 - 国家或语言 - 我应该生成这个新的语言环境,然后重新加载或其他什么。我只想明确一点,用户可以根据需要更改语言环境。我认为在 90% 的情况下,它会是一个普通的语言环境,比如 en_US en_GB 或其他东西,但在某些情况下,它可能是 en_DE,所以这不是很常见的 - 我只是想以最好的方式处理这个问题。谢谢
是的,我将为我的网站提供所有支持的语言 - 所以应用程序的所有语言都被翻译成。我只会让他在支持的国家/地区之间进行选择,因为我的应用程序不支持所有语言。
是的,我明白了——我现在查看了一些大型网站,如 google、youtube 和 amazon,并了解他们如何处理它。谢谢,希望我能在这里学到很多东西:P以上是关于本地化:如何格式化日期和数字的主要内容,如果未能解决你的问题,请参考以下文章