GNU gettext

gettext Arbeidsflyt Informasjon
Utviklet av GNU-prosjekt
Siste versjon 0,21 (27. juli 2020)
Innskudd git.savannah.gnu.org/cgit/gettext.git
Skrevet i VS
Støttespråk Python
Operativsystem GNU / Linux , BSD ( d ) , Microsoft Windows og macOS
Miljø Kryssplattform
Type Internasjonalisering
Tillatelse GNU GPL
Dokumentasjon gnu.org/software/gettext/manual
Nettsted www.gnu.org/s/gettext

gettext er programvarebiblioteket til GNU-prosjektet som tjener til programvareinternasjonalisering (i18n). Det brukes ofte til å skrive flerspråklige programmer .

Prosess

Programmerer

Den kildekoden blir først modifisert for å bruke anrop til GNU gettext funksjon. For de fleste språk gjøres dette ved å sette inn strengene for brukeren i gettext-funksjonen. For å spare skrivetid og avklare koden, brukes vanligvis erstatningsaliaset _ for denne funksjonen slik at C- koden  :

printf(gettext("My name is %s.\n"), my_name);

bli til

printf(_("My name is %s.\n"), my_name);

gettext bruker deretter den medfølgende strengen som oversettelsestast og returnerer den originale strengen hvis ingen oversettelse er tilgjengelig, i motsetning til systemer som catgets eller ved bruk av Loadstring på Microsoft Windows , der en programmeringsidentitet brukes (ofte et heltall).

I tillegg til C er GNU gettext-funksjonen implementert i: C ++ , Objective C , SH script, bash script, Python , OCaml , GNU CLISP , Emacs Lisp, librep, GNU Smalltalk , Ruby , Java , GNU awk , Pascal , wxWidgets ( ved wxLocale), YCP (YaST2 språk), Tcl , Perl , PHP , Pike , og R . I de fleste tilfeller er bruken av den lik den som brukes av C.

xgettext brukes på kildene for å produsere en .pot- fil eller mal som inneholder en liste over alle oversettbare strenger hentet fra koden. For eksemplet ovenfor vil en oppføring i .pot-filen se slik ut:

#: src/name.c:36 msgid "My name is %s.\n" msgstr "" Kommentarer til oversetterne

Hvis utvikleren ønsker å gi oversetteren et hint til en bestemt streng, kan han gjøre det i kildekoden ved hjelp av en tagg (TAG) beregnet på xgettext, slik at han kan filtrere disse tipsene og plassere dem i .pot-filen. Disse indikasjonene vil bli vist av KBabel og PoEdit .

printf(_("My name is %s.\n"), my_name); // TRANSLATORS: Please leave %s as it is, because it is exchanged by the program. // Thank you for contributing to this project.

I dette eksemplet er taggen // og må leveres til xgettext slik at den kan trekke ut kommentarer for oversettere når du bygger .pot-filen. Andre tegn kan brukes som en etikett så lenge de brukes konsekvent gjennom hele koden.

xgettext -c=//

Med kommentarer vil .pot-filen se slik ut:

#. TRANSLATORS: Please leave %s as it is, because it is exchanged by the program. #. Thank you for contributing to this project. #: src/name.c:36 msgid "My name is %s.\n" msgstr ""

Oversetter

Oversetteren henter en .po-fil fra malen ved hjelp av msginit-programmet og fyller deretter ut oversettelsene. msginit initialiserer oversettelsene slik at for å lage en fransk oversettelse, for eksempel, må du kjøre:

msginit --locale=fr --input=name.pot

Dette genererer fr.po. Et eksempel på oppføring vil være:

#: src/name.c:36 msgid "My name is %s.\n" msgstr "My name is %s.\n"

Oversetteren må rette dem, enten for hånd eller ved hjelp av et oversettelsesverktøy som PoEdit . Når du er ferdig, vil oppføringen se slik ut:

#: src/name.c:36 msgid "My name is %s.\n" msgstr "Je m'appelle %s.\n"

Til slutt blir .po-filene samlet i .mo binære filer med msgfmt. De er da klare til å distribueres i programvarepakken.

Bruker

Brukeren, på Unix-lignende systemer, justerer LANG miljøvariabelen steder av det aktuelle språket er installert.

Merknader og referanser

  1. (in) Bruno Haible, GNU gettext 0.21 utgitt  " ,27. juli 2020(åpnet 27. juli 2020 )

Bibliografi

  • (en) Ulrich Drepper , Jim Meyering , François Pinard og Bruno Haible , GNU gettext-verktøy: for versjon 0.18.2 , FSF ,25. februar 2013, 253  s. ( les online ) ;

Eksterne linker