LINUX.ORG.RU

как выпилить/поменять локаль для пакета в Дебиане

 ,


1

2

В какой то момент произошло обновление minidlna. Появилась локализация в /usr/share/locale/ru/LC_MESSAGES/minidlna.mo
По крайней мере мне не удалось найти больше никаких концов.
И на мобилку, когда бегаешь по серверу стали приходить "??????" вместо написанных по английски разделов про просмотр файлов, видео, аудио.
Если случайно угадать по количеству ???? и ткнуть куда надо то дальше русские буковки (имена файлов) работают нормально. Коряво работает то, что порождается самим minidlna.
Я пробовал удалять minidlna.mo, играть в dpkg-reconfigure новсе равно работает коряво.
Достал из архива очень старую версию, где не было чудной локализации, все стало прилично писаться. Но с ней другие косяки.
Вопрос: можно ли как то при установке/конфигурировании/переконфигурировании пакета указать ему что я хочу в данном случае использовать другую локаль???



Либо запускай как 'LC_MESSAGES=C minidlna', либо man dpkg -> --path-exclude .

JackYF ★★★★ ()

Та же хрень. Напишите сюда, если получится решить, пожалуйста.

anonymous ()

/usr/share/locale/ru/LC_MESSAGES/minidlna.mo

Замени этот файл на файл из /usr/share/locale/en/LC_MESSAGES/minidlna.mo

sdio ★★★★★ ()
Последнее исправление: sdio (всего исправлений: 1)
Ответ на: комментарий от sdio

я уже заменял. не работает. Пробовал удалять, подменять.
пока как вариант взял статическую сборку из старых версий, накидал скрипт на запуск. Пока живет. Но там как то нестабильно работает ionotify и приходится периодически принудительно всю бибилиотеку пересканировать, а из за ее приличных размеров затея не быстрая.

griz ()
Ответ на: комментарий от griz

А какая у Вас версия сейчас? Ну, которая корректно отображает эти строки?

anonymous ()
Ответ на: комментарий от griz

Спасибо. На выходных попробую поставить эту версию.

anonymous ()

Разобрался. Сегодня спать уже пора, поэтому подробнее завтра напишу. А, если кратко, то так: я его из исходников ставил. В исходниках есть папка po, в ней файл ru.po. В файле строки с переводами, со ссылкой на исходник, из которого эти строки вызываются. А вызываются они все из файла scanner.c. Можно отключить этот gettext, если просто убрать в строках _(«All Video») и подобных подчеркивание и скобки. Тогда не будет вызываться gettext для подстановки переводов. А если еще перевод сделать - то и по русски будет писать. После правки файла надо заново перекомпилять, и установить. То бишь make, затем make install. Последняя засада в том, что он эти строки в базу данных пишет при создании базы. Поэтому надо базу пересоздать. Это легко /etc/init.d/minidlna force-reload Затем запускаем клиент и радуемся русским буквам. Подробнее завтра напишу. А сегодня баиньки. :)

anonymous ()
Ответ на: комментарий от anonymous

Начну издалека. :) Я устанавливал minidlna на CubieBoard с убунтой на борту. Убунту ставил давно и репозиторий успел протухнуть. А в новом не оказалось minidlna. Собственно, это и сподвигло меня установить его из исходников. Процесс описывать не буду. Если кому надо - спросите или поищите в гугле. После установки столкнулся с этой вот проблемой: имена файлов и папок отображались правильно, а внутренние «папки» самой minidlna отображались в виде кучи знаков вопроса.

И вот вчера я поизучал исходники. В папочке с исходниками есть подпапка po. В ней файло ru.po а в нем много строчек типа:

#: scanner.c:538
msgid «Video»
msgstr «Видео»

#: scanner.c:539
msgid «All Video»
msgstr «Всё Видео»
и указаны ссылки на файл, в котором есть этот текст. Файл везде один и тот же: scanner.c. Строчки только разные указаны, в которых происходит запуск gettext-а. Открыл я этот файл, посмотрел на него и решил избавиться от вызовов gettext-а вообще. Переключать языки я не собираюсь - мне русского достаточно, а если задумаю upgrade сделать, то в новой версии глядишь, да поправят багу. А если не поправят - так недолго всю процедуру повторить.

В общем, в файле полно вызовов этого самого gettext-а. Выглядят они как-то так:

MUSIC_ARTIST_ID, MUSIC_ID, _(«Artist»),
MUSIC_ALBUM_ID, MUSIC_ID, _(«Album»),
MUSIC_DIR_ID, MUSIC_ID, _(«Folders»),
MUSIC_PLIST_ID, MUSIC_ID, _(«Playlists»),
Собственно, это подчеркивание со скобками и есть вызов gettext-а. Надо от него избавиться. Везде где найдется. Чтобы получилось как-то так:
MUSIC_ARTIST_ID, MUSIC_ID, «Artist»,
MUSIC_ALBUM_ID, MUSIC_ID, «Album»,
MUSIC_DIR_ID, MUSIC_ID, «Folders»,
MUSIC_PLIST_ID, MUSIC_ID, «Playlists»,
Но и этого мне мало. Я же русский и читать люблю на родном языке. Поэтому перевожу. Получается как-то так:
MUSIC_ARTIST_ID, MUSIC_ID, «Исполнитель»,
MUSIC_ALBUM_ID, MUSIC_ID, «Альбом»,
MUSIC_DIR_ID, MUSIC_ID, «Папки»,
MUSIC_PLIST_ID, MUSIC_ID, «Списки воспроизведения»,
При желании, можно подсмотреть переводы в файле ru.po Далее надо перекомпилировать исходник.
make
make install
Однако, при запуске оказалось, что ничего не изменилось. Пришлось повнимательнее вглядеться в исходник. Оказывается, эти строки записываются в базу sqlite при её создании. И дальше там и живут. Можно было бы, теоретически, поправить значения в базе без правки исходника. Но так, imho, все же лучше: при пересоздании базы каждый раз будут правильные тексты в неё попадать. Дальше я немного погуглил и обнаружил, что пересоздать базу можно командой
/etc/init.d/minidlna force-reload
Благо библиотека у меня пока маленькая и сканируется недолго.

Затем я открыл dlna-клиента и убедился, что всё отлично. Чего и Вам желаю. :) З.Ы. Обратите внимание, что тут редактор кавычки меняет на парные. Так. На всякий случай сказал. :)

anonymous ()
Ответ на: комментарий от anonymous

Посмотрел вчера на телевизоре результат этих правок - заметил непереведенный текст «Recently Added» в навигации. Стал искать - обнаружил, что этот текст вообще не переводился разработчиками minidlna.

Находится он в файле containers.c. Аж в трех местах. Поменял все эти строки на «Недавно добавленные», перекомпилил minidlna, пересоздал опять базу - строки в навигации поменялись на русские.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.