Программа GNU gettext msgfilter сообщает «недопустимая многобайтовая последовательность» - PullRequest
0 голосов
/ 06 июня 2018

Программа GNU gettext msgfilter, по-видимому, не принимает строку UTF8 в результате выполнения сценария, заданного в качестве фильтра.Скрипт просто возвращает подготовленный текст, который читается из файла.

Вот тестовая настройка:

echo '#!/bin/bash
cat /tmp/t3.txt
' > /tmp/trans01.sh
chmod a+rwx /tmp/trans01.sh

Затем появляется файл /tmp/t3.txt:

cat /tmp/t3.txt

Результат:

AMSTERDAM REISEFÜHRER FÜR REISE, UNTERKUNFT, SEHENSWÜRDIGKEITEN     

Это файл utf-8:

file /tmp/t3.txt

Дает:

/tmp/t3.txt: UTF-8 Unicode text

Далее:

echo 'msgid "kk71ams_amsterdam_main_page_title"
msgstr "AMSTERDAM TOURIST GUIDE FOR TRAVEL, ACCOMMODATION, ATTRACTIONS"
' > /tmp/te1.po

Чем:

cat /tmp/te1.po

Дает:

msgid "kk71ams_amsterdam_main_page_title"
msgstr "AMSTERDAM TOURIST GUIDE FOR TRAVEL, ACCOMMODATION, ATTRACTIONS"

Чем:

file /tmp/te1.po

Дает:

/tmp/te1.po: GNU gettext message catalogue, ASCII text

Язык:

:~# locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

Теперь проблема сmsgfilter:

~# msgfilter -i /tmp/te1.po '/tmp/trans01.sh'
msgid "kk71ams_amsterdam_main_page_title"
/tmp/te1.po:2: invalid multibyte sequence
/tmp/te1.po:2: invalid multibyte sequence
/tmp/te1.po:2: invalid multibyte sequence
/tmp/te1.po:2: invalid multibyte sequence
/tmp/te1.po:2: invalid multibyte sequence
/tmp/te1.po:2: invalid multibyte sequence
/tmp/te1.po:2: invalid multibyte sequence
/tmp/te1.po:2: invalid multibyte sequence
/tmp/te1.po:2: invalid multibyte sequence
/tmp/te1.po:2: invalid multibyte sequence
/tmp/te1.po:2: invalid multibyte sequence
/tmp/te1.po:2: invalid multibyte sequence
msgstr "AMSTERDAM REISEFHRER FR REISE, UNTERKUNFT, SEHENSWRDIGKEITEN\n"

1 Ответ

0 голосов
/ 01 февраля 2019

Не совсем та же ситуация, но у меня была та же проблема, и я решил ее, добавив правильный тип контента.

У меня было:

"Content-Type: text/plain; charset=ASCII\n"

Кажется, этоdefault.

И изменил его на:

"Content-Type: text/plain; charset=UTF-8\n"

Несмотря на то, что мой файл также был UTF-8, мне явно пришлось изменить кодировку в Content-Type

...