1

我有一个需要支持英语、西班牙语和俄语的应用程序。

为了检测到这一点,我使用这种方法:

UserLanguage = setLanguage(Locale.getDefault().getDisplayLanguage());

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;
}
4

2 回答 2

5

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

试试这个:

        if(locale.equals("русский")){ 
            UserLanguage="ru";
        }else{
            //I give up.... english??
            UserLanguage="en";
        }

但更好的解决方案是使用 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());
于 2011-11-08T01:08:10.293 回答
5

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

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

res/values/strings.xml
res/values-es/strings.xml
res/values-ru/strings.xml

在每种语言的相应 strings.xml 中使用本地化字符串。您还可以使用绘图、布局和其他可能在区域设置之间更改的 XML 资源来执行此操作。

您可能还想查看专门为 android 提供协作本地化服务的Crowdin 。

于 2011-11-08T01:08:37.687 回答