Как определить русский язык для локализации приложения в Android - PullRequest
1 голос
/ 08 ноября 2011

У меня есть приложение, которое должно поддерживать английский, испанский и русский языки.

Чтобы обнаружить это, я использую этот метод:

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

Ответы [ 2 ]

5 голосов
/ 08 ноября 2011

Во-первых, ознакомьтесь с Руководством по локализации для разработчиков Android

Вы можете достичь многого из того, что вам захочется сделать, воспользовавшись магией XML для Android.Например, скажем, вы хотите иметь локализованные строки.Все, что вам нужно сделать, это создать:

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

с локализованными строками в соответствующем для каждого языка strings.xml.Вы также можете сделать это с помощью Drawables, Layouts и других ресурсов XML, которые могут меняться в зависимости от локали.

Вы также можете проверить Crowdin , который предоставляет услуги совместной локализации специально для Android.

5 голосов
/ 08 ноября 2011

Для русского языка 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());
...