使用javascript获取当前用户语言

时间:2013-11-28 13:26:25

标签: dynamics-crm-2011 dynamics-crm crm

在CRM 2011中,使用以下代码很容易使用javascript获取当前用户语言:

Xrm.Page.context.getUserLcid();

无论如何使用插件在服务器端做同样的事情吗?

谢谢和最好的问候

3 个答案:

答案 0 :(得分:2)

以下是插件中的示例:

class GetUserLanguage : IPlugin
{

    public void Execute(IServiceProvider serviceProvider)
    {

        //PluginSetup abstracts setup code: http://nicknow.net/dynamics-crm-2011-abstracting-plugin-setup/
        var p = new PluginSetup(serviceProvider);

        var user = p.Context.InitiatingUserId;

        var lcid = RetrieveUserUiLanguageCode(p.Service, user);

    }

    //From the SDK: http://msdn.microsoft.com/en-us/library/hh670609.aspx
    private static int RetrieveUserUiLanguageCode(IOrganizationService service, Guid userId)
    {
        var userSettingsQuery = new QueryExpression("usersettings");
        userSettingsQuery.ColumnSet.AddColumns("uilanguageid", "systemuserid");
        userSettingsQuery.Criteria.AddCondition("systemuserid", ConditionOperator.Equal, userId);
        var userSettings = service.RetrieveMultiple(userSettingsQuery);
        if (userSettings.Entities.Count > 0)
        {
            return (int)userSettings.Entities[0]["uilanguageid"];
        }
        return 0;
    }
}

答案 1 :(得分:0)

我之前使用过几种选择。

  1. 使用插件执行上下文中的userid在systemuser实体上使用Retrieve。不要忘记将列设置为仅获取用户!否则,systemuser可能是对在线环境的大量检索。

  2. 向服务器发出WhoAmI请求。

  3. 我个人使用前者,因为对于使用插件的开发人员来说,检索很常见,但并非所有人都熟悉WhoAmI消息(它来自retrieve:http://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.whoamirequest.aspx

    不幸的是,我没有找到一种方法来获取它而不向服务器发出请求。如果这有帮助,请告诉我!

    尼克

答案 2 :(得分:-1)

我认为,一旦用户选择首选语言环境,您可以使用以下方式进行选择:

Thread.CurrentUICulture.LCID