2017-01-26 26 views
1

Я использую autotools as build system, также я использую gettext в своем коде для переводов. У меня мало файлов .po (de.po, es.po и th.po), и с autotools нет проблем, чтобы заставить их работать. После:не может перевести мою программу через debian-пакет, но с autotools может

./configure, 
make 
sudo make install 

Установлена ​​программа и файлы переводов .mo. Для тестирования, что я открыть терминал и изменить региональные настройки: например

$ export LANG=de_DE.UTF-8 
$ ./myprogram 

и переводы работает!.

Я делаю с тем же исходным кодом debian deb package. Во время установки deb в a. posinst сценарий я развернуть переводы М.О. файлы к месту назначения локали (Docklight это название программы):

#!/bin/bash 
set -e 
# check for locale dir (LIVE SYSTEMS don't have it) 
if [ -d "/usr/local/share/locale" ]; then 
    podir="/usr/lib/docklight/docklight.data/po" 
    if [ -d ${podir} ]; then 
     cd ${podir} 
     PO_LINGUAS=$(if test -r LINGUAS; then grep -v "^\#" LINGUAS; fi) 
     linguas=$PO_LINGUAS 
     for lang in $linguas; do 

      dir=/usr/local/share/locale/$lang/LC_MESSAGES; 

      # check for locale dir (LIVE SYSTEMS don't have it) 
      if [ ! -d $dir ]; then 
       continue; 
      fi 

      # check for po file 
      if [ ! -f "$lang.po" ]; then 
       continue; 
      fi 

      file=`echo $lang | sed 's,.*/,,'`.gmo \ 
      && rm -f $file && /usr/local/bin/msgfmt -o $file "$lang.po" 

      /bin/bash install-sh -d $dir; \ 
      if test -r $lang.gmo; then \ 
       /usr/bin/install -c -m 644 $lang.gmo $dir/docklight.mo; \ 
       echo "installing $lang.gmo as $dir/docklight.mo"; \ 
       else \ 
       /usr/bin/install -c -m 644 ./$lang.gmo $dir/docklight.mo; \ 
       echo "installing ./$lang.gmo as" \ 
       "$dir/docklight.mo"; \ 
      fi 

     done  
    fi 
fi 

сгенерированного Переводы .mo файлы правильно и получить установлен на папку локали для язык:

dir=/usr/local/share/locale/$lang/LC_MESSAGES; 

то же самое, что и процесс сборки с помощью автотюнинга. После тестирования языков:

$ export LANG=de_DE.UTF-8 
$ ./myprogram 

моя программа не имеет никакого перевода. Я не знаю, где проблема. Установка deb работает правильно!

что-то еще, что мне нужно заботиться о создании debian deb пакета?

Насколько я понял, когда вы получаете файлы myprogramm.mo, вы должны перевести программу.

Любые идеи об этом?

Заранее благодарим за любую помощь.

ответ

0

если найти решение: Мне просто нужно установить путь PROGRAMNAME_LOCALEDIR, где находится mo-файл. Инициализация gettext может найти файлы mo, а затем все будет переведено. Работы!

bindtextdomain(GETTEXT_PACKAGE, PROGRAMNAME_LOCALEDIR); 
    %s\n",domain,GETTEXT_PACKAGE,PROGRAMNAME_LOCALEDIR); 
    bind_textdomain_codeset - set encoding of message trans‐lations 
    btdcodeset = bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); 

Спасибо всем.

 Смежные вопросы

  • Нет связанных вопросов^_^