В каком файле/месте GNOME хранит переводы для других языков?

Результат compgen содержит цветовые коды терминалов, потому что вы поместили их туда. Вы должны использовать alias ls='ls --color=auto', чтобы получить цвета только тогда, когда lsпечатает на терминал, а не когда вывод используется другой командой.

Но и без псевдонима compgen -W "$(ls /someDir/)"не работает. Он вызывает lsдля создания списка имен файлов, но вывод команды представляет собой строку, а не список. compgenразбивает вывод lsна пробелы, что не удается, если какое-либо из имен файлов содержит символ пробела. Вместо этого вам нужно создать список имен файлов и удалить префикс каталога. Не проверено:

files=(/someDir/*)
if [[ -e ${files[0]} -o -L ${files[0]} ]]; then
  for f in "${files[@]}"; do
    compgen -- "${f#/someDir/}"
  done
fi

Вы не получите цвета. Я не думаю, что bash способен раскрашивать завершения. Система завершения должна контролировать ее отображение на терминале, вы не можете прокрасться управляющими символами в то, что отображается, и надеяться не запутать систему завершения. Если вам нужна оболочка с приятными функциями , такими как цветные дополнения, используйте zsh(или fish , если вам не нравится конфигурируемость ).

1
24.12.2019, 15:00
1 ответ

Файлы перевода хранятся в скомпилированной форме(.mo)в папке /usr/share/locale. Те, что для немецкого языка, находятся в /usr/share/locale/de/LC_MESSAGES.

Эти файлы не предназначены для прямого изменения. Вы можете декомпилировать и перекомпилировать их с помощью инструментов gettextmsgunfmtи msgfmt. Еще лучше, если вы загрузите исходный код для любого компонента GNOME, в котором отсутствует ваше сообщение, отредактируете соответствующий файл .poи пересоберете файл .mo, вы также сможете отправить исправление и, возможно, включить свой перевод. в будущих версиях...

3
27.01.2020, 23:22

Теги

Похожие вопросы