Кто-нибудь знает способ массового удаления всех нечетких переводов из файла PO. Что-то типа:
if #, fuzzy == TRUE Затем УСТАНОВИТЕ msgstr="" И УДАЛИТЕ #, fuzzy
Кто-нибудь знает способ массового удаления всех нечетких переводов из файла PO. Что-то типа:
if #, fuzzy == TRUE Затем УСТАНОВИТЕ msgstr="" И УДАЛИТЕ #, fuzzy
Вы можете удалить нечеткие строки с помощью polib, которая является библиотекой Python для работы с gettext po. файлы:
import os, polib
for dirname, dirnames, filenames in os.walk('/path/to/your/project/'):
for filename in filenames:
try: ext = filename.rsplit('.', 1)[1]
except: ext = ''
if ext == 'po':
po = polib.pofile(os.path.join(dirname, filename))
for entry in po.fuzzy_entries():
entry.msgstr = ''
if entry.msgid_plural: entry.msgstr_plural['0'] = ''
if entry.msgid_plural and '1' in entry.msgstr_plural: entry.msgstr_plural['1'] = ''
if entry.msgid_plural and '2' in entry.msgstr_plural: entry.msgstr_plural['2'] = ''
entry.flags.remove('fuzzy')
po.save()
Этот скрипт удаляет нечеткие строки перевода + нечеткие флаги, но сохраняет непереведенные исходные msgids. Некоторые языки (ru, cz, ...) имеют более двух форм множественного числа, поэтому мы проверяем msgstr_plural['2']. Индекс списка должен быть строкой. Не используйте для этого целые числа.
Если gettext установлен, для этого можно использовать команду msgattrib:
msgattrib --clear-fuzzy --empty -o /path/to/output.po /path/to/input.po
Полная документация по msgattrib находится здесь:
https://www.gnu.org/software/gettext/manual/html_node/msgattrib-Invocation.html
Если у вас установлен GNU gettext, вы можете использовать эту команду для удаления нечетких сообщений:
msgattrib --no-fuzzy -o путь/к/вашему/выходному/po/файлу путь/к/вашему/входному/po/файлу
msgattrib --no-fuzzy
, а затем msgmerge
с шаблоном? Это должно вернуть пустые сообщения из шаблона.
- person Mikko Rantalainen; 26.04.2013
--no-fuzzy-matching
для msgmerge делает это - person dfherr   schedule 12.06.2016