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

RxDBGrid перевод на лету

СообщениеДобавлено: 19.07.2019 17:41:25
Lucifer
Вот хочется... Чтобы срабатывал штатный транслятор при вызове SetDefaultLang. Потому что если грид уже на открытой форме лежит, то перевода, увы, нет.

Re: RxDBGrid перевод на лету

СообщениеДобавлено: 19.07.2019 20:05:18
alexs
А штатный DBGrid переводится?

Re: RxDBGrid перевод на лету

СообщениеДобавлено: 20.07.2019 11:30:32
Lucifer
alexs писал(а):А штатный DBGrid переводится?


ХЗ. Не проверял. Штатный мне не подходит в силу своей ограниченности. Надо будет проверить.

Re: RxDBGrid перевод на лету

СообщениеДобавлено: 23.07.2019 16:20:46
Lucifer
Проверил. Обидно, но у штатного грида тоже нет перевода заголовков на лету. Печально, будем придумывать. И таки да, говорят, что это баг. Я его даже в баг-трекере нашел.

Re: RxDBGrid перевод на лету

СообщениеДобавлено: 23.07.2019 16:46:06
alexs
Да вручную сделай
там не сложно - в процедуре установки языка дёргай процедуры ручного перевода. Можно через событие lcl замутить

Re: RxDBGrid перевод на лету

СообщениеДобавлено: 23.07.2019 19:08:17
Lucifer
Знать бы еще, в каком месте дергать...
З.Ы. Говорят, что баг закрыт в версии 2.1 транковой. Но я не хочу транковую, мне стабильность надо, а не ловля глюков. Хотя Grids.pas и DBGrid.pas от транковой взял - хрена, нет там перевода.

Re: RxDBGrid перевод на лету

СообщениеДобавлено: 24.07.2019 14:52:36
zoltanleo
Lucifer писал(а):Вот хочется... Чтобы срабатывал штатный транслятор при вызове SetDefaultLang.

Используй ResourceString, в *.po-файликах они видны. Я как-то тренировался на досуге

Re: RxDBGrid перевод на лету

СообщениеДобавлено: 24.07.2019 17:24:24
Lucifer
zoltanleo писал(а):Используй ResourceString, в *.po-файликах они видны. Я как-то тренировался на досуге

Именно они и используются. Но Columns.Title штатный транслятор игнорирует. Все остальное переводится на ура - метки, кнопки, хинты.

Re: RxDBGrid перевод на лету

СообщениеДобавлено: 24.07.2019 17:56:56
alexs
Руками их заполняй из ResourceString
Вот пример из FBManager

Код: Выделить всё
procedure TfbmpgACLEditEditor.Localize;
begin
  inherited Localize;
  Caption:=sACLEdit;
  Label1.Caption:=sUsersGroups;
  edtPrint.Caption:=sPrint;
  ComboBox1.Items.Clear;
  ComboBox1.Items.Add(sUsersAndGroups);
  ComboBox1.Items.Add(sOnlyUsers);
  ComboBox1.Items.Add(sOnlyGroups);

  RxDBGrid1.ColumnByFieldName('UG_NAME').Title.Caption:=sNameUserRole;
  RxDBGrid1.ColumnByFieldName('OWNER_USER').Title.Caption:=sGrantOwnUser;

  RxDBGrid1.ColumnByFieldName('ogSelect').Title.Caption:=sSelect;
  RxDBGrid1.ColumnByFieldName('ogInsert').Title.Caption:=sInsert;

все констатны sXXX объявлены в секции ResourceString

Re: RxDBGrid перевод на лету

СообщениеДобавлено: 24.07.2019 18:38:50
zoltanleo
alexs писал(а):Руками их заполняй из ResourceString

+1

Re: RxDBGrid перевод на лету

СообщениеДобавлено: 24.07.2019 18:40:31
Lucifer
У-у-у... Это, конечно, выход из положения. Только через одно место. Я тут взял транслятор от 2.1 транкового, подсунул его в 2.0.2 свой. Штатный грид стал переводиться нормально. Буду искать, где оно там порыто.

Добавлено спустя 31 минуту 23 секунды:
Добавил в rxdbgrid процедуру в public
Код: Выделить всё
procedure TRxDbGridColumns.TranslateColumn(AGrid: TRxDBGrid);
begin
  AGrid.SetColumns(AGrid.Columns);
end;

Все переводит на лету. В транковой версии лазаря. Впрочем, в моем 2.0.2 тоже со скопированным lcltranslator.pas из транкового лазаря.

Re: RxDBGrid перевод на лету

СообщениеДобавлено: 24.07.2019 20:22:50
zoltanleo
Lucifer писал(а):Я тут взял транслятор от 2.1 транкового, подсунул его в 2.0.2 свой.

Странный ты человек. Хочешь все исправления, но пользуешься стабильными версиями. Спрашиваешь решение проблемы, но не читаешь ссылки и умничаешь в ответ на дельные советы.

зы. Могу заверить, компоненты "сделать все" не существует.
зы2: На v 2.0.2 все тоже работает корректно...

Re: RxDBGrid перевод на лету

СообщениеДобавлено: 25.07.2019 09:43:46
Lucifer
Потому что мне в продакшн не надо глюков. Поэтому стабильные версии. У меня четыре сотни клиентов. Это во-первых. А во-вторых, ручное рисование заголовков из ресурс-стрингов - это как закат солнца вручную. Там, где можно обойтись десятком строк кода и потом не напрягаться, я буду руками рисовать заголовки? Ты это реально серьезно? Пару-тройку тыщ таблиц и вьюх? Может, конечно, это и путь джедая, но точно не мой путь.

В общем, проблема решена. На чем считаю тему исчерпанной, а вопрос - закрытым.

Re: RxDBGrid перевод на лету

СообщениеДобавлено: 25.07.2019 12:41:18
zoltanleo
Lucifer писал(а):Потому что мне в продакшн не надо глюков. Поэтому стабильные версии

Да уж, копировать модули из нестабильной версии в стабильную - куда уж дальше :lol:
Почитай 4х страничный топик про этот релиз. Тогда поймёшь, о чем речь.

Про все остальное, твой код - твои правила; я свое имхо высказал ранее

Re: RxDBGrid перевод на лету

СообщениеДобавлено: 25.07.2019 12:53:44
Lucifer
Ну, модуль скопирован ровно один. И на работу остального кода он не влияет никак. Свое ИМХО я тоже высказал. Более того - предложил решение. Далее Леша сам будет решать - править или нет. Но мое решение более универсальное - не надо ничего нигде в коде писать руками. Достаточно только положить файлики .po и всем будет щасте.