powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проблема с локализацией Resourcestring
25 сообщений из 33, страница 1 из 2
Проблема с локализацией Resourcestring
    #40034715
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема возникает, если интерфейс Windows на украинском языке.
Для локализации программы использую http://www.lingobit.com/extractor/delphi_extract_hardcoded_string.html
т.е. получается 2 файла programa1.exe и programa2.ukr
Можно подумать, что файл ukr не подключается или еще что-то, но сам интерфейс программы на украинском. Т.е. подписи, заголовки из DFM нормально отображаются на украинском.
Может надо что-то в lingobit "подкрутить", чтобы в exe-шнике правильно подставлялись строки или локаль правильно выбиралась?
Может быть еще связано как-то с GetThreadLocale().
Даже не знаю, что и где перепроверить...

примеры
Код: pascal
1.
2.
SaveDialog1.Filter := constFiletForExport;
if SaveDialog1.Execute then begin


появляется SaveDialog, но строка с типами файлов пустая



вызываю диалог
Код: pascal
1.
2.
3.
4.
5.
function MyMessageBox(const Text, Caption: String; Flags: Longint): Integer;
Begin
//  result := Application.MessageBox(PChar(Text), PChar(Caption), Flags);
  result := Application.MessageBox(PWideChar(Text), PWideChar(Caption), Flags);
End;


открывается пустышка, надписи только на кнопках и иконка видна.


Но это еще не все. Если вызываю процедуру экспорта (DevExpress) ExportGridToXXXXX(), то программа подвисает и жрет 40-50 процентов процессорного времени:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    if SaveDialog1.Execute then begin
      case SaveDialog1.FilterIndex of
        1: begin ext := '.xlsx'; ExportGridToXLSX(SaveDialog1.FileName+ext, cxGrid1, True, True, True, 'xlsx'); end;
        2: begin ext := '.xml';  ExportGridToXML(SaveDialog1.FileName+ext,   cxGrid1, True, True, 'xml'); end;
        3: begin ext := '.html'; ExportGridToHTML(SaveDialog1.FileName+ext,  cxGrid1, True, True, 'html'); end;
        4: begin ext := '.txt';  ExportGridToText(SaveDialog1.FileName+ext,  cxGrid1, True, True, #9, '', '', 'txt'); end;
        else
         begin
           MyMessageBox(constMsgErrExtention, constError, MB_ICONERROR+MB_OK);
           exit;
         end;
      end;//else
    end;//if



Возвращаю интерфейс Винды на русский, хотя программа остается на украинском, проблемы исчезают.
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40034720
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
с 2007-го года пользуюсь DKLang, и горя не знаю с локализациями
https://github.com/yktoo/dklang

где вы берёте вот это вот всё, я даже под грибами не могу увидеть
Хотя да, это же X11 - стильно-модно-молодёжно :-)))
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40034724
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator
стильно-модно-молодёжно

когда-то использовал Radialix, там была возможность полуавтоматического перевода с помощью гугла, потом Radialix помер, и нужно было куда-то переезжать, оказалось, что Lingobit оооочень похож на Radialix.
В общем, почти без проблем переехал на Lingobit, так и остался.
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40034726
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
X11
defecator
стильно-модно-молодёжно

когда-то использовал Radialix, там была возможность полуавтоматического перевода с помощью гугла, потом Radialix помер, и нужно было куда-то переезжать, оказалось, что Lingobit оооочень похож на Radialix.
В общем, почти без проблем переехал на Lingobit, так и остался.


а что-нибудь нативное не приходило в голову использовать ?
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40034730
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это и есть нативное, в паре с лингобит используется даже файл ReinitLocale.pas из примеров дельфи
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40034815
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator
с 2007-го года пользуюсь DKLang


нашел свою старую статью "как я локализовал свое приложение на Delphi"
и там нашел причину, по которой я не стал использовать DKLang
авторБиблиотека компонент «DKLang Localization Package».
Начал пробовать другие компоненты. Посоветовали «DKLang Localization Package». Поддержки Delphi2007 я не нашёл, только Delphi6- Delphi2006. Мало того, «DKLang Localization Package» требует «Tnt Delphi Unicode Controls». Желание сразу отпало. И я даже не стал устанавливать и пробовать эти компоненты в деле.
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40034842
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, как быть, есть в проекте 100 тыс хардкордных строк на русском, есть желание локализовать программу на другие языки, но нет желания автоматически менять на уродство типа
resourcestring
String1='blablabla1';
String2='blablabla2';
String100500='blablabla3';

В идеале хотелось бы так:
было:
ShowMessage('Привет, мир!')
стало:
ShowMessage(tr('Привет, мир!'))

Но если я поменяю букву в оригинале, то оно само должно предложить обновить перевод, чтобы ничего не забыть.
tr - это из QT, и там как раз сделано так, как я написал. Там в комплекте есть даже средство для работы переводчика.

Для Delphi я ничего подобного не нашёл. Все почему-то увлекаются переводом Caption у кнопочек, а как дело доходит до исходников (а основная сложность именно в исходниках), предлагают автоматически всё поменять на String1, String2, String100500.
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40034844
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это не уродство, так правильно - использовать resourcestring

вместо String1, String1 пиши более менее понятные названия переменных
constErrUserNotFound, constError, constErrDBConnection, constErrFileNotFound, constUserFirstName
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40034845
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer
Но если я поменяю букву в оригинале, то оно само должно предложить обновить перевод, чтобы ничего не забыть.


Так работает Lingobit. Он показывает новые и измененные.
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40034846
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
X11
defecator
с 2007-го года пользуюсь DKLang


нашел свою старую статью "как я локализовал свое приложение на Delphi"
и там нашел причину, по которой я не стал использовать DKLang
авторБиблиотека компонент «DKLang Localization Package».
Начал пробовать другие компоненты. Посоветовали «DKLang Localization Package». Поддержки Delphi2007 я не нашёл, только Delphi6- Delphi2006. Мало того, «DKLang Localization Package» требует «Tnt Delphi Unicode Controls». Желание сразу отпало. И я даже не стал устанавливать и пробовать эти компоненты в деле.


фигня это, никогда DKLang не использовал Tnt - ему это в принципе не нужно, это невизуальные компоненты
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40034848
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DmSer
Народ, как быть, есть в проекте 100 тыс хардкордных строк на русском, есть желание локализовать программу на другие языки, но нет желания автоматически менять на уродство типа
resourcestring
String1='blablabla1';
String2='blablabla2';
String100500='blablabla3';

В идеале хотелось бы так:
было:
ShowMessage('Привет, мир!')
стало:
ShowMessage(tr('Привет, мир!'))

gettext смотри, он так работает
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40034850
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
это не уродство, так правильно - использовать resourcestring

вместо String1, String1 пиши более менее понятные названия переменных
constErrUserNotFound, constError, constErrDBConnection, constErrFileNotFound, constUserFirstName


Эмбаркадера что-то сама никак не решит, как правильно. В одних случаях предлагают resourcestring, в других случаях Translate('Hello, world').
Мне resourcestring не нравится. Смотри исходники лазаруса, как там эти строки называются:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
#: lclstrconsts.hhshelpnohtmlbrowserfoundpleasedefineone
msgid "No HTML Browser found.%sPlease define one in Tools -> Options -> Help -> Help Options"
msgstr "Браузер HTML не найден.%sЗадайте его в меню Сервис -> Параметры -> Параметры справки"

#: lclstrconsts.hhshelpthehelpdatabasewasunabletofindfile
msgid "The help database \"%s\" was unable to find file \"%s\"."
msgstr "База данных справки \"%s\" не смогла найти файл \"%s\"."

#: lclstrconsts.hhshelpthemacrosinbrowserparamswillbereplacedbytheurl
msgid "The macro %s in BrowserParams will be replaced by the URL."
msgstr "Макрос %s в BrowserParams будет заменён на URL."



Будет крайне противно, если вместо

ShowMessage('Привет, мир!')
будет абракадабра типа
ShowMessage(hhshelpthemacrosinbrowserparamswillbereplacedbytheurl)
А если в проекте 100000 строк, то так и будет!
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40034851
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal
DmSer
Народ, как быть, есть в проекте 100 тыс хардкордных строк на русском, есть желание локализовать программу на другие языки, но нет желания автоматически менять на уродство типа
resourcestring
String1='blablabla1';
String2='blablabla2';
String100500='blablabla3';

В идеале хотелось бы так:
было:
ShowMessage('Привет, мир!')
стало:
ShowMessage(tr('Привет, мир!'))

gettext смотри, он так работает


Он автоматизирует подстановку tr (или свой аналог)?

Он будет следить на актуальностью переводов, или придётся свою следилку пилить?
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40034862
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DmSer
Он автоматизирует подстановку tr (или свой аналог)?
Он будет следить на актуальностью переводов, или придётся свою следилку пилить?

Gettext это движок и организация локализаций (ключ - фраза на базовом языке). На его основе надо искать тулзы/либы. Т.к. это стандартный механизм в линуксе, то они наверняка должны быть.
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40034864
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то это моя тема
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40034871
zedxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
https://habr.com/en/post/264693/ + https://poedit.net/

Сами утилиты dxgettext лучше брать в сорцах из trunc: https://sourceforge.net/p/dxgettext/code/HEAD/tree/trunk/
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40034890
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, вроде решил проблему...
В настройках lingobit-проекта выбрал Многоязычные файлы. Теперь все живет в одном едином exe-шнике.
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40035024
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator
никогда DKLang не использовал Tnt

использовал
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40035025
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator
никогда DKLang не использовал Tnt


использовал
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40035026
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator
никогда DKLang не использовал Tnt

использовал
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40035204
zedxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X11, Достаточно было дать однин линк на сорцы: https://github.com/yktoo/dklang/blob/DKLang_v3/DKLang.pas#L671

Но это всё дело давно минувших дней (v4 уже не имеет этой зависимости, а текущая v5 и подавно).

At Version 5.0 DKLang Localization Package has been rewritten to work on all current (XE5) platforms: VCL (win32 & win64) & FireMonkey (win32, win64, OSX, Android & iOS).
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40035246
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по примерам, DKLang подойдет для совсем простых проектов.

Код: pascal
1.
2.
  lMessageCaption.Text := DKLangConstW('SMessageCaption');
  mMessage.Lines.Text := DKLangConstW('STestMessage');



Такой локализатор и я когда-то делал . Кто-то даже пользовался. Но когда проект огромный, хотелось бы видеть все текстовые сообщения там, где они используются.
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40035256
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DmSer

Код: pascal
1.
2.
  lMessageCaption.Text := DKLangConstW('SMessageCaption');
  mMessage.Lines.Text := DKLangConstW('STestMessage');


Это вообще неудобный вариант, хоть и применяется в Android софте. Если уж юзать краткие именования ключей, то константы дадут огромное преимущество контроля компилятором.
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40035280
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Fr0sT-Brutal
DmSer

Код: pascal
1.
2.
  lMessageCaption.Text := DKLangConstW('SMessageCaption');
  mMessage.Lines.Text := DKLangConstW('STestMessage');



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


Это только для констант применяется
Текстовые строки и прочие надписи на формах меняются автоматически, а не вручную
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40035281
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
zedxxx
X11, Достаточно было дать однин линк на сорцы: https://github.com/yktoo/dklang/blob/DKLang_v3/DKLang.pas#L671

Но это всё дело давно минувших дней (v4 уже не имеет этой зависимости, а текущая v5 и подавно).

At Version 5.0 DKLang Localization Package has been rewritten to work on all current (XE5) platforms: VCL (win32 & win64) & FireMonkey (win32, win64, OSX, Android & iOS).


у меня есть версия 2.4, в которой нет ни слова про Tnt
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проблема с локализацией Resourcestring
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]