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 .
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 oversetterneHvis 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 ""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.potDette 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.
Brukeren, på Unix-lignende systemer, justerer LANG miljøvariabelen steder av det aktuelle språket er installert.