【发布时间】:2021-12-01 22:12:19
【问题描述】:
Chrome、Firefox 和 Edge 似乎都使用操作系统的设置,而不是客户端的“Accept-Language”设置来确定控件中使用的日期格式。我的问题是,我网站的其余部分使用“接受语言”设置来确定日期格式。因此,如果用户的设置在浏览器与操作系统中不一致,这似乎很常见,我可能会在页面上显示一个日期字符串,其中一个位置为 MM/dd/yyyy 格式,输入中为 dd-MM-yyyy同一页面上的元素
现在我不介意采用任何一种方式,只要它是一致的。 如何使浏览器的日期输入和 Blazor 的 .ToString() 使用相同的日期格式,即使浏览器和操作系统具有不同的设置?我在这里看到了有关如何use the Accept-Language header automatically (sent based on client's browser settings) 的说明,但似乎 HTML 输入控件不尊重这一点,而是使用操作系统设置。
我可以将 input[type=date] 控件更改为使用 Accept-Language 设置而不是操作系统设置吗?
假设我不能,可以反过来做吗?如何使我的 Blazor WebAssembly 站点的其余部分使用操作系统的文化作为当前文化,而不是“接受语言”中指定的文化?
这是我的网站的屏幕截图,其中包含相互矛盾的日期格式。我的操作系统 (Windows 10) 设置为“English India”,而我在浏览器中的 Accept-Language 为“en-US”。
对于上面的例子:这是我的 Windows 设置和浏览器客户端设置。
【问题讨论】:
-
您对
type="date"的主张与this demo 直接矛盾。 -
O,但该文档页面似乎对使用 Invariant 文化作为 type= 是错误的。这也使它与我的(自定义)操作系统设置相匹配。除此之外,您的问题似乎是“按设计的”。在您的情况下,省略
type=会如何? -
是的,该页面还指出“使用日期和数字字段类型时,不建议使用 @bind:culture 指定文化,因为 Blazor 提供了在当前文化中呈现值的内置支持。”
-
所以“按照设计”,除非操作系统和浏览器设置匹配,否则输入与字符串中没有相同的日期格式?换句话说,我的网站会不一致,我必须告诉用户修复他们的浏览器设置?他们不会喜欢那样的,嗯,我想知道我能做什么......
-
您的意思是完全避免使用日期选择器?那么这根本就不是约会。我想我必须转移到不使用 input[type=date] HTML 元素格式的 Blazor 日期选择器组件,这将是一种耻辱,因为内置的 HTML 日期选择器是我需要的一切,否则.
标签: html localization blazor blazor-webassembly currentculture