Как я могу реализовать кнопку для смены языка в Android Studio?

#java #android

#java #Android

Вопрос:

Я разрабатываю многоязычное приложение, потому что оно ориентировано на очень разнообразную аудиторию. Я попытался сделать это с помощью метода, который я нашел в Google, но, хотя в нем, кажется, есть некоторый смысл (заранее извините, я не являюсь носителем языка или настоящим программистом), у меня не получилось заставить его работать. Метод заключается в

 package com.example.donafelicidad;

import android.content.res.Resources;
import android.content.res.Configuration;

import java.util.Locale;


public class LanguageHelper {

    public static void changeLocale(Resources res, String locale) {

        Configuration config;
        config = new Configuration(res.getConfiguration());

        switch (locale){
            case "es":
                config.locale = new Locale("es");
                break;
            case "qu":
                config.locale = new Locale("qu");
                break;
           }
        res.updateConfiguration(config, res.getDisplayMetrics());
    }
}
  

Я применяю этот метод с кнопками, на которые ссылаются как CHNG_QU и CHNG_ES:

 CHNG_QU.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                LanguageHelper.changeLocale(getApplicationContext().getResources(), "qu");
                Intent intent = new Intent(MainActivity.this, MainActivity.class);
                startActivity(intent);
            }
        });

        CHNG_ES.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                LanguageHelper.changeLocale(getApplicationContext().getResources(), "es");
                Intent intent = new Intent(MainActivity.this, MainActivity.class);
                startActivity(intent);
            }
        });
  

Я вручную изменил настройки локали и попробовал это. Он отлично изменился на другой язык, поэтому я думаю, что строки сделаны хорошо. Я был бы очень признателен за любые отзывы о том, как с этим справиться, даже если потребуется переделать весь код. Пожалуйста, используйте простые термины для неопытного парня, который просто делает все возможное.

В качестве дополнительного примечания я не использовал другие темы вопросов, потому что большая часть того, что я нашел, устарела.

Комментарии:

1. я не могу помочь, но добро пожаловать в stack overflow 🙂 надеюсь, вы найдете ответ, я уверен, что есть другие подобные вопросы и темы, касающиеся этой проблемы, но для вашего первого вопроса это было задано довольно хорошо, по крайней мере, на мой взгляд. просто для подтверждения, вы говорите, что текущий код не работает, верно? это работает только при изменении локали вручную?

Ответ №1:

Lingver — это библиотека, созданная для того, чтобы заставить ваше приложение использовать файлы ресурсов локали, которые вы хотите.

В документации я нашел этот пост в блоге, который реализует это, объясняя каждый шаг, я надеюсь, вы найдете это полезным.

Комментарии:

1. Привет, большое спасибо! Я не совсем уверен, как реализовать Lingver. Я уже импортировал библиотеку, добавив то, что было в git, в build.gradle, но у меня возникли проблемы с выяснением, как правильно ее использовать. Если бы вы могли немного объяснить это, я был бы очень благодарен. Добавив к этому, я увидел, что библиотека была закодирована на Kotlin, в то время как мое приложение разрабатывается на Java. Будет ли это проблемой? В любом случае, это blogspot было действительно пояснительным.

2. Эй, извините за долгое ожидание, я до сих пор не мог проверить свой SO. Как вы упомянули, использование Lingver внутри Java-проекта не является проблемой, поскольку Kotlin разработан для полного взаимодействия с Java. Если вы чувствуете, что справляетесь с задачей, смешивание Java и Kotlin не должно быть проблемой : (shorturl.at/HQV18 ). Если вы хотите продолжать использовать Java, я с помощью быстрого поиска в Google нашел (shorturl.at/tBLU2 ) и (shorturl.at/dCKZ8 ). Не стесняйтесь ставить 1 и принимать ответ, если я помог вам пойти по правильному пути, и удачи с вашим проектом :). Редактировать: По какой-то причине я не могу заставить форматирование ссылок работать.

3. Спасибо! Мне удалось заставить это работать с некоторыми экспериментами и попытками. Отличный ответ.