@szjyakgf

Почему не работает смена локализации (языка) игры?

Пишу С# скрипты для Unity. В главном скрипте выбирается язык:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LocalisationSystem
{
    public enum Language
    {
        English,
        Ukrainian,
        Russian,
    }
    public static Language language = Language.English;
    private static Dictionary<string, string> localisedEN;
    private static Dictionary<string, string> localisedUA;
    private static Dictionary<string, string> localisedRU;
    public static bool isInit;
    public static void Init()
    {
        CSVLoader csvLoader = new CSVLoader();
        csvLoader.LoadCSV();

        localisedEN = csvLoader.GetDictionaryValues("en");
        localisedUA = csvLoader.GetDictionaryValues("ua");
        localisedRU = csvLoader.GetDictionaryValues("ru");
        isInit = true;
    }
    public static string GetLocalisedValue(string key)
    {
        if(!isInit) { Init(); }

        string value = key;

        switch(language)
        {
            case Language.English:
                localisedEN.TryGetValue(key, out value);
                break;
            case Language.Ukrainian:
                localisedUA.TryGetValue(key, out value);
                break;
            case Language.Russian:
                localisedRU.TryGetValue(key, out value);
                break;
        }
        return value;
    }
}

Главная строка которая задает язык
public static Language language = Language.English;

Eсли изменить ее на
public static Language language = Language.Russian;
то весь текст переведется на русский

У меня проблема с тем как поставить изменение текста при нажатии на кнопку, пробовал так:
public void ClickButtonRussian()
    {
        Language language = Language.Russian;
    }

И вешал эту команду на кнопку, но при нажатии ничего не переводится
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
EveningEugene
@EveningEugene
Unity-разраб
Вы читаете какой сейчас язык внутри класса LocalisationSystem из статической переменной public static Language language. Значит и менять нужно тоже её, а не создавать где-то в другом месте новую, которую никто нигде не читает.
public void ClickButtonRussian()
{
    LocalisationSystem.language = Language.Russian;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы