【发布时间】:2019-04-07 05:57:48
【问题描述】:
{Culture:RFC5646} 返回两个不同的英语值。目前,当用户使用 ProfileEdit 或 SignUpSignIn 时,他们会返回不同的值。
例如:
ProfileEdit 返回:en-us
SignUpSignIn 返回:zh
我在 ContentDefinitions 的 LoadUri 中使用它,以便我们可以将用户重定向到自定义和翻译的 html 页面。但是,对于两个返回值,我必须维护两个目录“/en”和“/en-us”,而不是一个。
我已验证 ContentDefinition 的 LoadURI 的所有父子策略都使用 {Culture:RFC5646}。
我们已经测试了来自不同位置的多个用户。
我研究了 Azure B2C IEF 本地化文档,它参考了语言是如何确定的,但没有阐明为什么使用相同浏览器的同一个用户会返回不同的 {Culture:RFC5646} 值
这是 SignUpSignIn 的内容定义加载 Uri
<ContentDefinition Id="api.localaccountsignup">
<LoadUri>https://*****/b2c/IEF/{Culture:RFC5646}/selfasserted.html</LoadUri> <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
<DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:1.1.0</DataUri>
<Metadata>
<Item Key="DisplayName">Local account sign up page</Item>
</Metadata>
</ContentDefinition>
这是配置文件编辑的代码
<ContentDefinition Id="api.selfasserted.profileupdate">
<LoadUri>https://*****/b2c/IEF/{Culture:RFC5646}/updateprofile.html</LoadUri>
<RecoveryUri>~/common/default_page_error.html</RecoveryUri>
<DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:1.1.0</DataUri>
<Metadata>
<Item Key="DisplayName">Collect information from user page</Item>
</Metadata>
</ContentDefinition>
我想要的是 {Culture:RFC5646} 为同一用户返回相同的值。例如,SignUpSignIn 返回“en-us”,ProfileEdit 返回“en-us”,这样我就可以维护一个目录而不是两个。
【问题讨论】:
-
嗨@Christopher。您是否将
ui_locales请求参数传递给具有不同语言值的授权端点?如果将{Culture:RFC5646}替换为{Culture:LanguageName}(设置为 UI 语言的两个字母 ISO 代码)会怎样? -
@ChrisPadgett 感谢您的回复。我没有通过 ui_locales。我曾考虑过使用 Culture:LanguageName 但是需要使用完整的语言“en-us”
-
所以,一个新的发现。我注意到注册路径继承了与 ProfileEdit 不同的基本配置文件。即使内容定义相同,只要我将其指向新的 BaseProfile,它就会按预期工作。
标签: azure-ad-b2c identity-experience-framework