如何检测俄语在Android中本地化应用程序

Tim*_*ler 1 android localization internationalization language-detection

我有一个应用程序,需要支持英语,西班牙语和俄语.

为了检测这个,我使用这个方法:

UserLanguage = setLanguage(Locale.getDefault().getDisplayLanguage());
Run Code Online (Sandbox Code Playgroud)

UserLanguage是"en"如果英语,"es"是西班牙语,如果是俄语则需要"ru",否则它将是英语.但是,当我将手机上的区域设置设置为俄语时,则无法检测到.Android网站上的文档没有说明俄语.有帮助吗?

private String setLanguage(String locale){
    //Toast.makeText(context, locale.toString(), Toast.LENGTH_SHORT).show();
    if(locale.equals("English")){
        UserLanguage="en";
    }else{
        if(locale.equals("español")){//espanol
            UserLanguage="es";
        }else{
            if(locale.equals("ru")){//cant compile with true russian
                UserLanguage="ru";
            }else{
                //I give up.... english??
                UserLanguage="en";
            }
        }
    }
    return UserLanguage;
}
Run Code Online (Sandbox Code Playgroud)

mor*_*ium 5

对于俄语Locale.getDefault().getDisplayLanguage()将返回"русский"

试试这个:

        if(locale.equals("???????")){ 
            UserLanguage="ru";
        }else{
            //I give up.... english??
            UserLanguage="en";
        }
Run Code Online (Sandbox Code Playgroud)

但更好的解决方案是使用getLanguage()而不是getDisplayLanguage():

private String setLanguage(String locale){ 
    if (locale.equals("es")){
        mUserLanguage = "es";
    } else if(locale.equals("ru")){
        mUserLanguage = "ru";
    } else { 
        mUserLanguage = "en";
    }
    return UserLanguage;
}

setLanguage(Locale.getDefault().getLanguage());
Run Code Online (Sandbox Code Playgroud)


Jon*_*lis 5

首先,查看Android开发者本地化指南

通过利用Android的XML魔法,您可以实现许多您想要做的事情.例如,假设您想要本地化字符串.你所要做的就是创造:

res/values/strings.xml
res/values-es/strings.xml
res/values-ru/strings.xml
Run Code Online (Sandbox Code Playgroud)

在每种语言的strings.xml中使用本地化字符串.您还可以使用可能在区域设置之间更改的drawable,layouts和其他XML资源来执行此操作.

您还可以查看Crowdin,它专门为Android提供协作本地化服务.