【问题标题】:Set Config Tab and Pinned Tabs(website) culture same as Team in a Teams App Package (C# and Blazor)将配置选项卡和固定选项卡(网站)文化设置为与团队应用程序包中的团队相同(C# 和 Blazor)
【发布时间】:2022-06-20 17:40:37
【问题描述】:

我有一个基于 C# 和 Blazor 构建的 Teams 应用程序包,使用 Microsoft Teams 应用程序项目模板创建。这个网站有配置选项卡的页面,在配置选项卡中选择项目后,有些页面被固定在频道中。我使用了 ASP.net 代码全球化和本地化,它与浏览器语言配合得很好。但不是浏览器语言,我想设置与团队相同的文化(团队中的当前用户语言)。有没有人处理过这个场景并指出我正确的方向。

【问题讨论】:

    标签: c# blazor microsoft-teams teams-toolkit razor-components


    【解决方案1】:

    在您的选项卡中,您可以访问 Teams 上下文对象。有关这方面的更多信息,请参阅here。在上下文对象上是一个locale。这可能足以满足您的需求。

    【讨论】:

    • 除了可以通过getContext API 在您的选项卡中使用之外,您还可以在清单中的 URL 中使用 {locale} 占位符,它们将在启动之前被本地信息替换在团队中。这样,您的服务也可以访问这些内容,并在生成返回给客户端的内容时使用它们。
    • 如果我把清单文件改成这个就足够了:` "configurableTabs": [ { "configurationUrl": "localhost:44357/config?local={locale}", "canUpdateConfiguration": true, "scopes ": ["team", "groupchat"], "context": ["channelTab", "privateChatTab", "meetingChatTab", "meetingDetailsTab", "meetingSidePanel", "meetingStage" ] } ],`
    • 它没有用。我的文化仍然回归到浏览器语言。但是我可以看到 t=in Iframe 设置了正确的文化。我在我的问题中发布屏幕截图,因为我无法在此处发布。当我选择项目或任何事件(如搜索后输入)时,就会发生文化的变化。
    • @user25879 能否请您添加用于检索文化的代码 sn-p ?这个blogpost也可能有相关模式
    • 在配置选项卡中,我没有使用任何代码来获取文化,但在清单文件中,我更新了配置 url 以具有这样的语言环境:“configurationUrl”:“localhost:44357/config ?local={locale}",.因此,当在 Teams 频道中单击添加图标时,我得到了配置选项卡,并且在 Iframe 中得到了正确的文化(由于 Local 参数,这一切都是动态的),但是一旦我点击任何事件(单击或选择),我的语言回退到浏览器语言。
    【解决方案2】:

    我从 OnAfterRenderAsync 中删除了设置文化和选项卡的代码并添加到我的事件中。它奏效了。

    private async void SetSelectedResult(SearchModel selectedItem)
        {
            SetCulture();
            _selectedItem = selectedItem;
            if (_selectedItem != null)
            {
                var settings = new TeamsInstanceSettings
                {
                    SuggestedDisplayName = _selectedItem.Description,
                    EntityId = _selectedItem.ID.ToString(),
                    ContentUrl = $"{NavigationManager.BaseUri}entity/{_selectedItem.ID}/{_selectedItem.EntityType}/{_selectedItem.Division}",
                    WebsiteUrl = $"{NavigationManager.BaseUri}entity/{_selectedItem.ID}/{_selectedItem.EntityType}/{_selectedItem.Division}"
                };
    
                await MicrosoftTeams.InitializeAsync();
                await MicrosoftTeams.RegisterOnSaveHandlerAsync(settings);
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2019-02-22
      • 1970-01-01
      • 1970-01-01
      • 2017-08-19
      • 1970-01-01
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      • 2020-04-21
      相关资源
      最近更新 更多