powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проблема с локализацией Resourcestring
33 сообщений из 33, показаны все 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
Проблема с локализацией Resourcestring
    #40035282
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть в 2.4 уже выпиляли?
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40035286
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
zedxxx
X11, Достаточно было дать однин линк на сорцы: https://github.com/yktoo/dklang/blob/DKLang_v3/DKLang.pas#L671


это чей-то неофициальный порт под TNT
посмотрел - это гитхаб автора DKLang, и TNT - это уже одна из его веток исходного кода

Повторяю - оригинальные исходники никогда не использовали TNT

Вот кусок из оригинальных исходников, найди тут TNT, и обрати внимание на год исходников

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
///**********************************************************************************************************************
///  $Id: DKLang.pas,v 1.25 2005/03/06 19:06:21 dale Exp $
///----------------------------------------------------------------------------------------------------------------------
///  DKLang Localization Package
///  Copyright 2002-2004 DK Software, http://www.dk-soft.org/
///**********************************************************************************************************************
///
/// The contents of this package are subject to the Mozilla Public License
/// Version 1.1 (the "License"); you may not use this file except in compliance
/// with the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
///
/// Alternatively, you may redistribute this library, use and/or modify it under the
/// terms of the GNU Lesser General Public License as published by the Free Software
/// Foundation; either version 2.1 of the License, or (at your option) any later
/// version. You may obtain a copy of the LGPL at http://www.gnu.org/copyleft/
///
/// Software distributed under the License is distributed on an "AS IS" basis,
/// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the
/// specific language governing rights and limitations under the License.
///
/// The initial developer of the original code is Dmitry Kann, http://www.dk-soft.org/
///
///**********************************************************************************************************************
// The main unit (and the only required runtime unit) of the package. Contains all the
// basic class and component declarations
//
unit DKLang;

interface
uses Windows, SysUtils, Classes, Contnrs, Masks;

type
   // Error
  EDKLangError = class(Exception);

  TDKLang_Constants = class;

   // A translation state
  TDKLang_TranslationState = (
    dktsUntranslated,    // The value is still untranslated
    dktsAutotranslated); // The value was translated using the Translation Repository and hence the result needs checking
  TDKLang_TranslationStates = set of TDKLang_TranslationState;

   //-------------------------------------------------------------------------------------------------------------------
   // An interface to an object capable of storing its data as a language source strings
   //-------------------------------------------------------------------------------------------------------------------

  IDKLang_LanguageSourceObject = interface(IInterface)
    ['{41861692-AF49-4973-BDA1-0B1375407D29}']
     // Is called just before storing begins. Must return True to allow the storing or False otherwise
    function  CanStore: Boolean;
     // Must append the language source lines (Strings) with its own data. If an entry states intersect with
     //   StateFilter, the entry should be skipped
    procedure StoreLangSource(Strings: TStrings; StateFilter: TDKLang_TranslationStates);
     // Prop handlers
    function  GetSectionName: String;
     // Props
     // -- The name of the section corresponding to object language source data (without square brackets)
    property SectionName: String read GetSectionName;
  end;



Конкретно эти исходники я использовал в 2008-м году для локализации своего софта для немецкого и польского зыков
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40035294
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
интересно, что это в файле DKLang.pas версии 4.01?
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40035295
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dklang-dklang-4.01/Help/main-revision-history.html
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40035297
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dklang-dklang-4.01/Help/main-revision-history.html
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40035298
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. в версии 4.01 зачем-то устранили зависимости от TntUnicode.
ЗАЧЕМ? Если никаких зависимостей не было...
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40035310
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
X11
Т.е. в версии 4.01 зачем-то устранили зависимости от TntUnicode.
ЗАЧЕМ? Если никаких зависимостей не было...


я тебе показал версию 2.4 от 2004-го года, в которой никаких TNT не было и в помине
при чём здесь твоя 4.01 ?
...
Рейтинг: 0 / 0
Проблема с локализацией Resourcestring
    #40035314
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
она не моя...
ты просто начал писать, о том, что нет зависимости от tnt, я тебе показал, что зависимость на тот момент была
...
Рейтинг: 0 / 0
33 сообщений из 33, показаны все 2 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проблема с локализацией Resourcestring
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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