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

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

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

Сообщение Vefery 27 авг 2018, 17:54

Вот код которым выбираю нужный язык:
Синтаксис:
Используется 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 создает их уже во время запуска. Как можно это решить?
Последний раз редактировалось Vefery 27 авг 2018, 19:32, всего редактировалось 1 раз.
Vefery
UNIт
 
Сообщения: 136
Зарегистрирован: 20 фев 2018, 16:47

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

Сообщение Anonymyx 27 авг 2018, 19:03

У Dropdown есть коллекция options, которая содержит все опции списка. У них есть поле text, значение которого вы можете менять.
Т.е. вы можете закинуть сам Dropdown через инспектор, и к текстовым элементам обращаться через код.
dropdown.options[index].text = "Test";
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55

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

Сообщение Vefery 27 авг 2018, 19:31

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

Думал над этим вариантом, но dropdown'ов довольно много, хотя наверное это единственный вариант
Спасибо!
Vefery
UNIт
 
Сообщения: 136
Зарегистрирован: 20 фев 2018, 16:47

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

Сообщение Anonymyx 27 авг 2018, 19:57

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

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

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


Может стоит посмотреть как реализовывают систему локализация в других проектах?...
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55

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

Сообщение Vefery 28 авг 2018, 05:59

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

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

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


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

В общем-то реализовал как писал выше и вышло всего 13 строк, думаю с этим жить можно)
Про ключ-значение получается ключ прямо в поле текста или как?
Vefery
UNIт
 
Сообщения: 136
Зарегистрирован: 20 фев 2018, 16:47


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14