Гайд Простая и удобная система языков

Начинающий
Статус
Оффлайн
Регистрация
7 Мар 2024
Сообщения
45
Реакции[?]
2
Поинты[?]
2K

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

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

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

2. Создание файла с текстовыми переводами
Теперь вам нужно создать файл, в котором будут храниться все переведенные тексты (в одном файле должны храниться тексты только для одного языка!). Формат файла не имеет значения.

Структура хранения текста должна быть следующей:
“key": text

key
— Ключ, к которому будет присвоен текст(для одного и того же текста на разных языках должен быть один и тот же ключ!).
text — Сам текст.

Пример:
"hello": Hello World!

Также файлы могут содержать комментарии, для этого перед комментарием нужно добавить //.

Пример:
"key1": text1
"key2": text2
"key3": text3

//Этот текст будет игнорироваться системой языков т.к. он будет считаться комментарием :>
"key4": text4
"key5": text5
"key6": text6


2.Загрузка из файла в систему
Загрузка переведенных текстов из файла осуществляется с помощью метода loadTranslations(inputStream, lang).

inputStream - InputStream файла, из которого будут загружены переведенные тексты.
Хотя его получение достаточно простое, но я покажу как получать InputStream файла в jar файле и вне jar файла:
В jar файле:
Java:
ConfigUtils.class.getClassLoader().getResourceAsStream(path);
//ConfigUtils — класс, в котором вы получаете InputStream.
//path — String путь, ведущий к файлу, например "assets/megaclient/RU_Lang.lng"
Вне jar файла:
Java:
try {
    return Files.newInputStream(Paths.get(path));
} catch (IOException e) {
    return null;
}
//path — String путь к файлу, если директория файла находится в той же папке,
// в которой находится jar файл майнкрафта, то можно написать вот так "Langs/Ru_Lang.txt"
lang - Название языка, которому будут присвоены переведенные тексты.

3.Получение желаемого переведенного текста
Для получения текста из системы языков можно использовать методы translate(String key) и translate(String key, String lang).

key - ключ, к которому был привязан нужный переведенный текст.

lang - язык, для которого необходимо получить переведенный текст.

Метод translate(String key) будет использовать в качестве желаемого языка текущий язык, который будет получен с помощью параметра currentLanguageGetter, который можно установить с помощью метода setCurrentLanguageGetter(Supplier<String> getter).


Я думаю эта тема будет достаточно вам полезна :roflanEbalo:
 
Пользователь
Статус
Оффлайн
Регистрация
18 Фев 2022
Сообщения
592
Реакции[?]
100
Поинты[?]
40K
Java:
public final class LanguageSystem {
    private static Supplier<String> currentLanguageGetter;

    private static final ArrayList<Language> languages = new ArrayList<>();
    private static final ArrayList<String> loadedLangs = new ArrayList<>();


    public static String translate(String key) {
        return translate(key, currentLanguageGetter != null ? currentLanguageGetter.get() : !loadedLangs.isEmpty() ? loadedLangs.get(0) : "");
    }

    public static String translate(String key, String lang) {
        String result = getText(key, lang);
        if (result.isEmpty()) {
            result = getText(key, currentLanguageGetter != null ? currentLanguageGetter.get() : !loadedLangs.isEmpty() ? loadedLangs.get(0) : "");
        }
        return result;
    }
как будто перегруз синтаксиса.

Инструкции по использованию такие себе
 
Сверху Снизу