默认
发表评论 0
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
多语言适配类问题处理汇总
阅读(4165) | 评论(0 收藏 淘帖
"DK内部已经做了多语言,内置支持中、英、阿拉伯,会跟随系统语言配置自动变更。(https://www.rongcloud.cn/?utm_source=SEO

问题一:App 业务侧语言配置变更如何让 IMKit SDK 同步变更?
SDK 默认仅支持监听系统语言,但提供了接口可以让业务侧调用更新语言配置。您可以看一下 RongConfigurationManager 类相关的方法:

RongConfigurationManager.getInstance().switchLocale()
问题二:如何更新 IMKit SDK中的内置 UI?
需要处理 Activity、Application两部分:

处理 Activity
会话列表和会话页面的Activity使用SDK内置的Activity;
使用自己的Activity装载SDK的页面,继承RongBaseActivity;
使用自己的Activity装载SDK的页面,但不能继承RongBaseActivity,加入代码
Context context = RongConfigurationManager.getInstance().getConfigurationContext(newBase);

处理 Application
加入代码

Context context = LangUtils.getConfigurationContext(base);

问题三:如何将整个IM Kit设置成固定的某一种语言?
假如设置IM Kit为英文环境,无论当前系统语言是否为英文,可以使用如下方案

// 参考RCLocale
LangUtils.RCLocale selectedLocale = LangUtils.RCLocale.LOCALE_US;

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    Resources resources = context.getResources();
    DisplayMetrics dm = resources.getDisplayMetrics();
    Configuration config = resources.getConfiguration();
    LocaleList localeList = new LocaleList(selectedLocale.toLocale());
    LocaleList.setDefault(localeList);
    config.setLocales(localeList);
    resources.updateConfiguration(config, dm);
    LangUtils.saveLocale(context, selectedLocale);
} else {
    RongConfigurationManager.getInstance().switchLocale(selectedLocale, context);
}
LangUtils.RCLocale支持的语言类型

class RCLocale {
    /** 中文 */
    public static final RCLocale LOCALE_CHINA = new RCLocale(""zh"");
    /** 英文 */
    public static final RCLocale LOCALE_US = new RCLocale(""en"");
    /** 阿拉伯 */
    public static final RCLocale LOCALE_ARAB = new RCLocale(""ar"");
}"


即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

上一篇:什么是按日活计费?下一篇:发送、接收消息,界面不及时刷新
推荐方案
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部