【问题标题】:How to detect Russian for localizing app in Android如何检测俄语以在 Android 中本地化应用程序
【发布时间】:2011-11-08 01:00:16
【问题描述】:

我的应用需要支持英语、西班牙语和俄语。

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

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

【问题讨论】:

  • 在苏维埃俄罗斯,俄语会检测到你。

标签: android localization internationalization language-detection


【解决方案1】:

对于俄语 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());

【讨论】:

  • 您也可以使用.startsWith(),以防有区域语言环境
  • @Affian,根据developer.android.com/reference/java/util/Locale.html“语言代码是由 ISO 639-1 定义的两个字母的小写 ISO 语言代码(例如“en”)。”使用startsWith 没有意义。
  • @kabuko 哦,在这种情况下,继续
  • 程序将无法使用“русский”进行编译我最终使用了 setLanguage(Locale.getDefault().getLanguage());谢谢!
  • 如果使用UTF-8编码,编译应该没有问题。但这根本没有必要,使用 Locale.getDefault().getLanguage() 会好很多。
【解决方案2】:

首先,查看Android Developers Localization Guide

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-31
    相关资源
    最近更新 更多