Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > PopupMenu - как динамически менять язык


Автор: Gold Dragon 29.8.2014, 10:44
настал момент когда пришлось вспоминать Делфи и вот очень простые и банальные вопросы  smile 

Есть PopupMenu и мне нужно динамически менять язык в зависимости от выбора пользователя. Но никак не могу найти как обращаться к пунктам меню не по индексу, а по имени..

например так работает
Код

PopupMenu1.Items[0].Caption := Lang.ReadString('menutray', 'RESTORE', 'Восстановить');


а так соответвенно нет
Код

PopupMenu1.Items[N1].Caption := Lang.ReadString('menutray', 'RESTORE', 'Восстановить');



PS
и вообще такой способ переключения языка разумный? или есть более оптимальный способ?

Автор: kami 29.8.2014, 12:14
Цитата(Gold Dragon @  29.8.2014,  10:44 Найти цитируемый пост)
или есть более оптимальный способ?

http://forum.vingrad.ru/forum/topic-310936.html. Решений, избавляющих от подобного кода, много...

Добавлено через 1 минуту и 29 секунд
Цитата(Gold Dragon @  29.8.2014,  10:44 Найти цитируемый пост)
а по имени..

Код

N1.Caption:='';

Не?

Автор: Keeper89 30.8.2014, 14:23
Gold Dragon, 

один большой кусое кода, в стиле MenuItem.Caption := ..., как сказал уже kami.

Добавлено через 41 секунду
Сколько локализаторов я не пробовал, все мне не нравятся smile Так, что использую велосипеды в этом стиле.

Автор: Gold Dragon 1.9.2014, 08:00
Цитата(kami @  29.8.2014,  13:14 Найти цитируемый пост)
Не? 
Да, именно так! Просто не ожидал что можно обраться напрямую без упоминания PopupMenu1
Получается что имя будет уникальным на весь проект?

Цитата(Keeper89 @  30.8.2014,  15:23 Найти цитируемый пост)
один большой кусое кода, в стиле MenuItem.Caption := ..., как сказал уже kami.
Не понял о чём речь

Цитата(Keeper89 @  30.8.2014,  15:23 Найти цитируемый пост)
Сколько локализаторов я не пробовал, все мне не нравятся smile Так, что использую велосипеды в этом стиле. 
Я не совсем понимаю какие велосипеды есть в Делфи, кое что уже почитал.. Всё как-то стронно smile Я лично хотел сделать по аналогии в PHP, т.е. от туда и хотел перетащить принцип.
Просто есть куча языковых ini-файлов. При загрузке дастаём нужный язык. Всё это кидаем в глобальный массив (или константы, пока ещё не полял что будет удобнее и меньше будет кушать память). И везде по коду использую только эти значения

Автор: Poseidon 1.9.2014, 10:09
Цитата(Gold Dragon @  1.9.2014,  08:00 Найти цитируемый пост)
Я не совсем понимаю какие велосипеды есть в Делфи
Лично я пользуюсь http://www.gunsmoker.ru/2010/06/delphi-ite-integrated-translation.html.

Автор: Gold Dragon 1.9.2014, 10:21
Цитата(Poseidon @  1.9.2014,  11:09 Найти цитируемый пост)
Лично я пользуюсь родным способом. 

Да, я тоже читал про это. Но мне кажется это не совсем удобно, т.е. я то хочу чтобы языки быле не "вшиты" в программу, а были оттельными файлами (например INI)

Хотя я только начал мудрить с языками smile Сейчас попробую реализовать свой "велосипед" и уж тогда буду сравнивать, а был ли вообще смысл  smile 

Тама закрыта. Вопрос локализации был в данном случае второстепенным ;)

Автор: Poseidon 1.9.2014, 11:27
Цитата(Gold Dragon @  1.9.2014,  10:21 Найти цитируемый пост)
т.е. я то хочу чтобы языки быле не "вшиты" в программу, а были оттельными файлами (например INI)
Там они отдельными файлами и есть в виде Resource DLL.

Автор: Gold Dragon 1.9.2014, 11:33
я ещё вернусь к вопросу локализации.. и тогда поговорим предметно. Сначала же нужно всё самому попробовать, а уж потом обсуждать  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)