0

我们已经开始使用一些自定义的本地化 html 文件来向我们的用户显示一些本地化的标题等。

根据本文,我们刚刚上传了几个用于渲染的 html 文件。

https://contoso.blob.core.windows.net/{Culture:LanguageName}/myHTML/unified.html

但是,当用户流程以明确的语言环境集(例如&lang=esor UI-locales=es-ES)启动并且我们没有该语言环境的文件时,我们会得到一个错误页面。

AADB2C90002:CORS 资源“ https://anyhelpappreciated.blob.core.windows.net/es/myHTML/unified.html ”返回 404 未找到。

我们已经设置了SupportedLanguages,但是如果显式传递语言环境,这似乎没有任何作用。我不想依赖不向我传递此参数的应用程序。

    <Localization Enabled="true">
      <SupportedLanguages DefaultLanguage="en" MergeBehavior="ReplaceAll">
        <SupportedLanguage>en</SupportedLanguage>
        <SupportedLanguage>de</SupportedLanguage>
        <SupportedLanguage>it</SupportedLanguage>
      </SupportedLanguages>
...

有没有办法防止这种情况?

4

1 回答 1

0

此行为是“设计使然”,无法更改。

https://github.com/MicrosoftDocs/azure-docs/issues/47654

对于本地化,您可以ui_locales从应用程序中提供查询字符串参数 。当您调用 Azure AD B2C 时,您的页面将转换为您指定的区域设置。这种类型的配置使您可以完全控制用户流中的语言,并忽略客户浏览器的语言设置。您可能不需要对客户看到的语言进行这种级别的控制。如果您不提供ui_locales参数,则客户的体验取决于他们的浏览器设置。您仍然可以通过将用户流添加为受支持的语言来控制将其翻译成哪些语言。如果客户的浏览器设置为显示您不想支持的语言,则会显示您在支持的文化中选择作为默认语言的语言。

声明解析器以相同的{Culture:RFC5646}方式工作。含义 如果客户的浏览器设置为显示您不想支持的语言,则您在支持的文化中选择作为默认语言将被发送到 HTML 页面。

ui_locales将不支持的内容发送到 HTML 页面的唯一情况是应用程序ui_locales在查询字符串中传递缺失的内容。在这种情况下,我们认为这是一个应用程序决定,并允许它覆盖支持的文化配置。

因此,请确保您的应用程序仅在ui_locales查询字符串参数中发送支持的语言。

于 2020-03-07T18:58:49.333 回答