Мульти строки и translation

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Мульти строки и translation

Сообщение khvalera » 05.07.2019 00:52:08

Сегодня начал переводить на другие языки свою программулину и прозрел, насколько я понял, lazarus не умеет переводить мульти строки :cry: . Для перевода использую в модулях DefaultTranslator и mo файлы. В программе уже натыкано много Label с Caption и Hint с переносами на несколько строк. И как выяснилось такие компоненты не переводятся, на оф. wiki есть скудное и не совсем внятное упоминание об этом. Может я не прав, кто то сталкивался с подобной проблемой?
Аватара пользователя
khvalera
новенький
 
Сообщения: 57
Зарегистрирован: 29.06.2010 00:49:43

Re: Мульти строки и translation

Сообщение zub » 05.07.2019 07:24:27

Мульти строки поддерживаются
Код: Выделить всё
resourcestring;
  rsmltext='Multi'+#13#10+
           'multi'#13#10+
           'line'#13#10;
...
TMemo1.text:=rsmltext;

вполне будет работать, только #13#10 будет заменено на \n

Но перевод TMemo1.lines с формы осуществлен не будет, переводятся только TTranslatedString, не TStrings
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Мульти строки и translation

Сообщение alexs » 05.07.2019 10:05:25

khvalera писал(а):В программе уже натыкано много Label с Caption и Hint с переносами на несколько строк

Всё нормально переводится. И одинарные строки. И многострочные метки.
В параметрах проекта включаешь i18n. В качестве папки вывода указываешь locale
Собираешь проект. Рядом с исполняемым файлом появляется папка locale. В ней будет файл с ресурсами *.pot. Копируешь его в файл соответсвующего языка - например project1.ru.po. Переводишь строки.
После этого запускаешь твой проект. Перевод будет. Если язык локали отличается от нужно тебе - можно указать явно язык - --lang ru

Если хочешь чтобы все эелементы с формы автоматически попадали в файл языковых ресурсов - проверь чтобы в инспекторе проекта на форме (по правому клику мышки) была включена i18n.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Мульти строки и translation

Сообщение khvalera » 05.07.2019 14:46:18

За #13#10 в оф. вики читал и пробовал, но не прокатило, не работает, может я что то упускаю, толи накосячили в новых сборках Лазарус.
Сделал тестовый пример, будет проще выяснить проблему.
Да, забыл написать, все проверялось под linux, сейчас попробую проверить и под Windows.

Добавлено спустя 9 минут 46 секунд:
Под Windows тот же результат, проверял на lazarus 2.02.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
khvalera
новенький
 
Сообщения: 57
Зарегистрирован: 29.06.2010 00:49:43

Re: Мульти строки и translation

Сообщение zub » 05.07.2019 18:11:08

Протормозил, услышав про многострочность - сразу в голове мемо засело. с каптионом и хинтом вообще проблем никаких нет.
Если используется штатный переводчик (т.е. просто uses ...DefaultTranslator,...) файлы po должны лежать рядом с ексешником или в захардкоженых лцлем подпапках languages, locale (надо глядеть исходники непомню все точно), папка которая указана в настройках проекта работает только при создании локалей лазарем.
у вас в настройках указана папка PO в рантайме она неподхватывается
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Мульти строки и translation

Сообщение Снег Север » 05.07.2019 18:19:04

в LCLTranslator есть
procedure SetDefaultLang(Lang: string; Dir: string = ''; ForceUpdate: boolean = true);
там и задается рантайм путь к языковым файлам.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

Re: Мульти строки и translation

Сообщение zub » 05.07.2019 18:55:07

>>там и задается рантайм путь к языковым файлам.

а в DefaultTranslator она вызывается
Код: Выделить всё
initialization
  //It is safe to place code here as no form is initialized before unit
  //initialization is made
  SetDefaultLang('', '', '', false);

end.

соответственно все ищется по дефолтным путям, вызывайте сами, не юзайте DefaultTranslator
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Мульти строки и translation

Сообщение khvalera » 05.07.2019 19:02:29

zub писал(а):Протормозил, услышав про многострочность - сразу в голове мемо засело. с каптионом и хинтом вообще проблем никаких нет.
Если используется штатный переводчик (т.е. просто uses ...DefaultTranslator,...) файлы po должны лежать рядом с ексешником или в захардкоженых лцлем подпапках languages, locale (надо глядеть исходники непомню все точно), папка которая указана в настройках проекта работает только при создании локалей лазарем.
у вас в настройках указана папка PO в рантайме она неподхватывается


:) файлы mo лежат в locale, и перевод из примера для Label2 работает, но не работает для Label1 где две строки. Файлы mo в примере генеряться скриптом create-lang.sh и ложатся в locale.

Добавлено спустя 11 минут 28 секунд:
zub писал(а):>>там и задается рантайм путь к языковым файлам.

а в DefaultTranslator она вызывается
Код: Выделить всё
initialization
  //It is safe to place code here as no form is initialized before unit
  //initialization is made
  SetDefaultLang('', '', '', false);

end.

соответственно все ищется по дефолтным путям, вызывайте сами, не юзайте DefaultTranslator


... проверил у меня не заработало!
Аватара пользователя
khvalera
новенький
 
Сообщения: 57
Зарегистрирован: 29.06.2010 00:49:43

Re: Мульти строки и translation

Сообщение zub » 05.07.2019 19:30:27

положите туда PO и все заработает
он подхватывает MO из locale, что там у вас внутри MO переведено - мне посмотреть нечем - формат не текстовый. Возможно чтото нетак с лцлной MO читалкой или с форматом этих MO
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Мульти строки и translation ()

Сообщение khvalera » 05.07.2019 21:46:38

zub писал(а):положите туда PO и все заработает
он подхватывает MO из locale, что там у вас внутри MO переведено - мне посмотреть нечем - формат не текстовый. Возможно чтото нетак с лцлной MO читалкой или с форматом этих MO


ТЕМА ЗАКРЫТА
... век живи, век учись, po из locale сработал :shock:. Спасибки! На сколько помню раньше были проблемы и я всегда конвертил PO в MO.
Аватара пользователя
khvalera
новенький
 
Сообщения: 57
Зарегистрирован: 29.06.2010 00:49:43


Вернуться в Lazarus

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

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

Рейтинг@Mail.ru