Страница 1 из 1

Как локализовать Dropdown UI [РЕШЕНО]

СообщениеДобавлено: 27 авг 2018, 17:54
Vefery
Вот код которым выбираю нужный язык:
Синтаксис:
Используется csharp
void Awake() {
                for (int i = 0; i < transText.Length; i++) {
                        if (PlayerPrefs.GetString ("Language") == "en_EN") {
                                transText [i].font = fonts [0];
                                transText [i].text = LangSys.lng.menu [i];
                        } else {
                                transText [i].font = fonts [1];
                                transText [i].text = LangSys.lng.menu [i];
                        }
                }
        }

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

Re: Как локализовать Dropdown UI

СообщениеДобавлено: 27 авг 2018, 19:03
Anonymyx
У Dropdown есть коллекция options, которая содержит все опции списка. У них есть поле text, значение которого вы можете менять.
Т.е. вы можете закинуть сам Dropdown через инспектор, и к текстовым элементам обращаться через код.
dropdown.options[index].text = "Test";

Re: Как локализовать Dropdown UI

СообщениеДобавлено: 27 авг 2018, 19:31
Vefery
Anonymyx писал(а):У Dropdown есть коллекция options, которая содержит все опции списка. У них есть поле text, значение которого вы можете менять.
Т.е. вы можете закинуть сам Dropdown через инспектор, и к текстовым элементам обращаться через код.
dropdown.options[index].text = "Test";

Думал над этим вариантом, но dropdown'ов довольно много, хотя наверное это единственный вариант
Спасибо!

Re: Как локализовать Dropdown UI [РЕШЕНО]

СообщениеДобавлено: 27 авг 2018, 19:57
Anonymyx
Всегда есть вариант получше ;)
Обычно, когда делают систему локализации, делают словарь, ключ-значение. Ключ - исходный текст, значение - конечный текст на нужном языке.
В зависимости от языка подгружают нужный словарь.
Делают скрипт типа TextChanger, в котором создают метод который берет значение текста на котором висит этот скрипт за ключ, и получает нужное значение из словаря по этому ключу и присваивает обратно текстовому элементу. Этот метод подписывают на событие изменения языка в настройках.
Этот скрипт навешивают на все объекты с компонентом Text, через код или вручную.
Получается, по умолчанию у всех текстовых компонентов стоит ключ, типа "startgame", "loadgame", а уже конечное значение берется из словаря, по этому ключу.

Ну, в случае с DropDown'ом, у него в дочерних объектах есть объект Template, в котором есть Item label (точную иерархию не помню). Можно этот скрипт накинуть на него.
Или делать проверку, на что навешен скрипт.
Template - это шаблон, по которому генерируются опции выпадающего списка.

Это так, грубое описание...


Может стоит посмотреть как реализовывают систему локализация в других проектах?...

Re: Как локализовать Dropdown UI [РЕШЕНО]

СообщениеДобавлено: 28 авг 2018, 05:59
Vefery
Anonymyx писал(а):Всегда есть вариант получше ;)
Обычно, когда делают систему локализации, делают словарь, ключ-значение. Ключ - исходный текст, значение - конечный текст на нужном языке.
В зависимости от языка подгружают нужный словарь.
Делают скрипт типа TextChanger, в котором создают метод который берет значение текста на котором висит этот скрипт за ключ, и получает нужное значение из словаря по этому ключу и присваивает обратно текстовому элементу. Этот метод подписывают на событие изменения языка в настройках.
Этот скрипт навешивают на все объекты с компонентом Text, через код или вручную.
Получается, по умолчанию у всех текстовых компонентов стоит ключ, типа "startgame", "loadgame", а уже конечное значение берется из словаря, по этому ключу.

Ну, в случае с DropDown'ом, у него в дочерних объектах есть объект Template, в котором есть Item label (точную иерархию не помню). Можно этот скрипт накинуть на него.
Или делать проверку, на что навешен скрипт.
Template - это шаблон, по которому генерируются опции выпадающего списка.

Это так, грубое описание...


Может стоит посмотреть как реализовывают систему локализация в других проектах?...

В общем-то реализовал как писал выше и вышло всего 13 строк, думаю с этим жить можно)
Про ключ-значение получается ключ прямо в поле текста или как?