【问题标题】:How to make culture setting match the OS setting in Blazor WebAssembly?如何使文化设置与 Blazor WebAssembly 中的操作系统设置相匹配?
【发布时间】: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


【解决方案1】:

我找不到使用本机浏览器<input type="text"/> 执行此操作的方法,因为它似乎使用了使用操作系统设置的操作系统控制。我相信这是大多数浏览器中缺少的功能。

我发现的唯一解决方法是为我的所有日​​期输入切换到第三方 Blazor 组件,例如 RadzenDatePicker。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 2021-03-19
    • 2020-02-21
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多