Параметр командной строки dxgettext для «Добавить вероятные игнорирования для игнорирования po-файла»

#delphi #dxgettext

#delphi #dxgettext

Вопрос:

Графический интерфейс dxgettext Extract Translations имеет переключатель Add likely ignores to ignore po file , но я не вижу соответствующего параметра при вызове dxgettext в качестве командной строки.

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

Это параметры, которые я использую:

 dxgettext -b MyProjectPath --delphi --nonascii -r --useignorepo --preserveUserComments
  

Спасибо.

Ответ №1:

У меня была та же проблема, что и у вас. Чтобы решить эту проблему для моего приложения с открытым исходным кодом image organizer, я использую следующий пакетный файл для извлечения строк из источников и удаления всех игнорируемых строк:

 c:Utilsdxgettext -b . --delphi --nonascii --no-wrap -o:msgid -o .
c:Utilsmsgremove default.po -i OvbImgOrganizerLanguageIgnore.po -o OvbImgOrganizerLanguage.pot --no-wrap
del OvbImgOrganizerLanguageDefaultBak.po
ren default.po OvbImgOrganizerLanguageDefaultBak.po
  

Этот пакет запускается с текущим каталогом, являющимся каталогом исходного кода.

Комментарии:

1. Я думаю, что ваш пакет делает то же самое, что Remove items from default domain present in ignore.po file и переключатель пользовательского интерфейса (который я активировал с --useignorepo помощью параметра), а не Add likely ignores to ignore.po file .

2. Я не думаю, что это так. По умолчанию это, похоже, удаляется. по строкам из ignore.po, это переключатель Remove items from default domain present in ignore.po file в пользовательском интерфейсе dxgettext, и его можно выполнить с --useignorepo помощью параметра командной строки. Но я ищу соответствующий переключатель Add likely ignores to ignore.po file , который создает новый ignore.po со строками, исходящими из известных свойств и компонентов, отличных от пользовательского интерфейса… если я правильно понимаю.

3. Где вы нашли «dxgettext Extract Translations UI»?

4. Я имею в виду uconfig форму, которая появляется первой, когда вы щелкаете правой кнопкой мыши по папке и выбираете действие «Извлечь переводы в шаблон …».

5. Для меня это совершенно неизвестно. Какой инструмент вы установили, чтобы получить это?

Ответ №2:

Это диалоговое окно предоставляется инструментом GUI ggdxgettext.

Судя по всему, инструмент командной строки dxgettext делает это автоматически по умолчанию:

   item := dom.order.Objects[j] as TPoEntry;
  ignoreitem:=ignorelist.Find(item.MsgId);
  if ignoreitem=nil then begin
    newitem:=TPoEntry.Create;
    newitem.Assign(item);
    if not IsProbablyTranslatable( newitem,
                                   nil,
                                   nil) then
      ignorelist.Add(newitem)
    else
      FreeAndNil (newitem);
  end else begin
    ignoreitem.AutoCommentList.Text:=item.AutoCommentList.Text;
  end;
  

Но я не совсем уверен, поскольку я не пытался анализировать поток программы.

Исходные тексты доступны на SourceForge, так что вы можете проверить сами.

Комментарии:

1. Ни один из параметров, которые я пробовал, не привел к созданию нового файла ignore.po (или к обновлению существующего) с этими записями ignoreList. Но спасибо, я попробую проверить исходный код.

2. Определенно, он не сохранил список игнорирования при вызове из командной строки. Я добавил --UPDATEIGNORE параметр, который устанавливается xgt.UpdateIgnore:=True; TConsoleApp.Execute , и теперь он работает так, как я ожидал. Спасибо.

3. Не будете ли вы так любезны пожертвовать свои изменения? Если это так, пожалуйста, добавьте запрос функции в SourceForge и включите соответствующий код или, что еще лучше, патч. Затем я бы добавил его в репозиторий.

4. С удовольствием. Я добавил исправление. Спасибо.