SkÃ¥ne Sjælland Linux User Group - http://www.sslug.dk Forside   Tilmelding   Postarkiv   Forum   Kalender   Søg
MhonArc Dato: [Date Prev] [Kronologisk oversigt] [Date Next]   TrÃ¥d: [Date Prev] [Oversigt trÃ¥de] [Date Next]   MhonArc
 

Om at rette i installerede oversættelser



Ovre på "sslug.bog" beklagede Frank Damgaard sig over at han
ikke bare kunne rette i de oversættelser han får med sine
programmer, fordi de ligger som binære filer.  Det har jeg
rent faktisk også været en lille smule irriteret over, men
efter at have kigget lidt på de programmer der kommer med
GNU Gettext (pakken "gettext" på Red Hat), har jeg fundet en
praktisk løsning:

De fleste frie programmer (Mozilla og OOo er notoriske
undtagelser) bruger GNU Gettext til at håndtere
oversættelser af brugergrænsefladen.  Disse oversættelser
lagres i filer af typen "Binary GNU message catalog" (".mo")
der er blevet genereret fra kildetekst i form af filer af
typen "Textual message catalog" (".po").  De filer der er
installeret er binære (".mo"), men man kan oversætte dem
tilbage til tekstform (".po") med kommandoen `msgunfmt`.

Jeg har for eksempel det problem at jeg ikke har en færøsk
oversættelse af Red Hats `up2date`, så jeg tager den binære
svenske oversættelse og konverterer den klar tekst:

   msgunfmt /usr/share/locale/sv/LC_MESSAGES/up2date.mo > up2date.sv.po

Så laver jeg en kopi af den svenske oversættelse som jeg
indlæser i KBabel, oversætter og gemmer igen (o.k. - jeg
snød og gjorde ikke oversættelsen færdig med det samme):

   cp up2date.sv.po up2date.fo.po
   kbabel up2date.fo.po

Og endelig konverterer jeg oversættelsen tilbage til det
binære format (og lægger den direkte på plads, hvor
`up2date` vil finde den næste gang jeg kører det):

   su -c 'msgfmt up2date.fo.po -o /usr/share/locale/fo/LC_MESSAGES/up2date.mo'

------------------------------------------------------------

Disse værktøjer kan også være nyttige, hvis man bliver
irriteret over at en oversætter skriver "browser" i stedet
for "netlæser":

   for fil in /usr/share/locale/da/LC_MESSAGES/*.mo; do
      if msgunfmt ${fil} | egrep -iq '^msgstr ".*browser'; then
         echo "Fandt 'browser' i '${fil}'."
      else
         true # fandt ikke noget
      fi
   done

Med ovenstående kommando fandt jeg ud af at blandt andet
"/usr/share/locale/da/LC_MESSAGES/pan.mo" bruger ordet
"browser".  Jeg bruger nu:

   msgunfmt /usr/share/locale/da/LC_MESSAGES/pan.mo > pan.da.po

til at konvertere filen til klar tekst og:

   emacs pan.da.po

til at rette de ting jeg er utilfreds med (det tager lige et
par sekunder eller ti at vænne sig til Emacs' "po"-modus).
Til sidst laver jeg en sikkerhedskopi af den gamle
oversættelse af Pan:

   su -c 'cp /usr/share/locale/da/LC_MESSAGES/pan.mo /usr/share/locale/da/LC_MESSAGES/pan.mo.bak'

og konverterer og installerer den rettede oversættelse:

   su -c 'msgfmt pan.da.po -o /usr/share/locale/da/LC_MESSAGES/pan.mo'

God fornøjelse,

Jacob
-- 
"Genes don't matter. It's all physics."


 
Forside   Tilmelding   Postarkiv   Oversigt   Kalender   Søg

 
 
Henvendelse vedrørende websiderne til <www_admin>. Senest ændret 2005-08-10, klokken 20:53
Denne side vedligeholdes af MHonArc .