yoomoney / yookassa-android-sdk

This library allows implementing payment acceptance into mobile apps on Android. It works as an extension to the YooMoney API.
https://yookassa.ru/developers/payment-forms/android-sdk
MIT License
39 stars 22 forks source link

Проблема с переводами #34

Closed KirillArtemenko closed 4 years ago

KirillArtemenko commented 5 years ago

Подготовил переводы на другие языки со значениями из values-ru.xml, однако некоторые элементы ни в какую не переводятся (конкретно "К оплате" и кнопка "Продолжить") и остаются на русском.

После изменения языка на французский

Учитывая, что значения в основном файле values.xml на английском языке, то есть версия что для некоторых переводов в библиотеке используется язык системы а не текущей установленной локали.

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

// при запуске проверяю локаль - она установлена корректно
Locale.getDefault() == "fr"

Пример кода которым изменяю язык приложения.

// создаю локаль
Locale locale = new Locale(getInternalAppLangCode("fr"));

// обновляю все возможные конфигурации
Locale.setDefault(locale);
Resources resources = App.getInstance().getApplicationContext().getResources();
Configuration config = resources.getConfiguration();
config.locale = locale;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    config.setLocale(locale);
}
resources.updateConfiguration(config, resources.getDisplayMetrics());

// перезапускаю
Intent intent = getIntent();
finish();
startActivity(intent);

Подскажите пожалуйста как решить эту проблему? Проблема наблюдается как в 2.3.0 так и в 2.4.0 UPD: На странице ввода данных и вовсе все надписи на русском (язык системы)

KirillArtemenko commented 4 years ago

Кажется я понял в чем проблема, буквально сегодня столкнулся с подобным в другом приложении, мне кажется проблема в том, что вы используете для получения переводов глобальный контекст приложения вроде "App.getInstance().getBaseContext().getString()" но если дать возможность задавать контекст при создании экземпляра кассы и использовать его. то проблема исчезает, поскольку контекст фрагмента или активности имеет корректную локаль. Иначе говоря, если будете использовать контекст используемый при создании кассы, то проблем с переводами не будет, пишите готов активно помогать!

Winner28 commented 4 years ago

Подскажите, проблема еще актуальна?