Muokataan sivua Gettext
Siirry navigaatioon
Siirry hakuun
Kumoaminen voidaan suorittaa. Varmista alla olevasta vertailusta, että haluat saada aikaan tämän lopputuloksen, ja sen jälkeen julkaise alla näkyvät muutokset.
Nykyinen versio | Oma tekstisi | ||
Rivi 1: | Rivi 1: | ||
Gettext on [[GNU]]-projektin työkalu ohjelmien [[kotoistus|kotoistamiseen]]. | |||
Gettextiä käytettäessä ohjelman käännettävät merkkijonot merkitään sen [[lähdekoodi]]in, jonka jälkeen lähdekoodista luodaan alkuperäiset tekstit sisältävä <tt>.pot</tt>-tiedosto. Tähän tiedostoon kääntäjät sitten lisäävät käännökset eri kielille. Lopulta <tt>.pot</tt>-tiedostosta luotu, käännökset sisältävä <tt>.po</tt>-tiedosto muutetaan binäärimuotoon (<tt>.mo</tt>) ja tallennetaan sopivaan hakemistoon. Tämän jälkeen ohjelma korvaa ajon aikana alkuperäiset merkkijonot käännöksillä. | Gettextiä käytettäessä ohjelman käännettävät merkkijonot merkitään sen [[lähdekoodi]]in, jonka jälkeen lähdekoodista luodaan alkuperäiset tekstit sisältävä <tt>.pot</tt>-tiedosto. Tähän tiedostoon kääntäjät sitten lisäävät käännökset eri kielille. Lopulta <tt>.pot</tt>-tiedostosta luotu, käännökset sisältävä <tt>.po</tt>-tiedosto muutetaan binäärimuotoon (<tt>.mo</tt>) ja tallennetaan sopivaan hakemistoon. Tämän jälkeen ohjelma korvaa ajon aikana alkuperäiset merkkijonot käännöksillä. | ||
Rivi 56: | Rivi 56: | ||
xgettext -k_ -cTRANSLATORS: ohjelma.c -o ohjelma.pot | xgettext -k_ -cTRANSLATORS: ohjelma.c -o ohjelma.pot | ||
Huomaa, että [[valitsin|valitsimen]] (esim. <tt>-c</tt>) ja parametrin (esim. <tt>TRANSLATORS:</tt>) välissä ei saa olla välilyöntiä. Jos saat virheilmoituksen, jonka mukaan tiedostossa on muita kuin ASCII-merkkejä, on lisäksi kerrottava käytetty merkistö (yleensä [[UTF-8]]): | Huomaa, että [[valitsin|valitsimen]] (esim. <tt>-c</tt>) ja parametrin (esim. <tt>TRANSLATORS:</tt>) välissä ei saa olla välilyöntiä. Jos saat virheilmoituksen, jonka mukaan tiedostossa on muita kuin ASCII-merkkejä, on lisäksi kerrottava käytetty merkistö (yleensä [[UTF-8]]): | ||
xgettext --from-code=utf-8 -cTRANSLATORS: -k_ ohjelma.c -o | xgettext --from-code=utf-8 -cTRANSLATORS: -k_ ohjelma.c -o ohjelmat.pot | ||
Nyt tiedoston <tt>ohjelma.pot</tt> pitäisi näyttää tältä: | Nyt tiedoston <tt>ohjelma.pot</tt> pitäisi näyttää tältä: | ||
<pre> | <pre> | ||
Rivi 77: | Rivi 77: | ||
"Content-Transfer-Encoding: 8bit\n" | "Content-Transfer-Encoding: 8bit\n" | ||
#: ohjelma.c: | #: ohjelma.c:13 | ||
#, c-format | #, c-format | ||
msgid "Hello Linux.fi\n" | msgid "Hello Linux.fi\n" | ||
Rivi 83: | Rivi 83: | ||
#. TRANSLATORS: Please let %s as it is | #. TRANSLATORS: Please let %s as it is | ||
#: ohjelma.c: | #: ohjelma.c:17 | ||
#, c-format | #, c-format | ||
msgid "Visit %s" | msgid "Visit %s" | ||
Rivi 93: | Rivi 93: | ||
=== Kääntäminen === | === Kääntäminen === | ||
Kun ohjelmasta on luotu <tt>.pot</tt>-tiedosto, seuraava vaihe on | Kun ohjelmasta on luotu <tt>.pot</tt>-tiedosto, seuraava vaihe on [[kotoistus|käännösten tekeminen]]. Lopullinen käännöstiedosto voisi näyttää tältä (tiedosto <tt>fi.po</tt>: | ||
Lopullinen käännöstiedosto voisi näyttää tältä (tiedosto <tt>fi.po</tt>: | |||
<pre> | <pre> | ||
# Linux.fi:n esimerkkiohjelma | # Linux.fi:n esimerkkiohjelma | ||
Rivi 115: | Rivi 113: | ||
"Content-Transfer-Encoding: 8bit\n" | "Content-Transfer-Encoding: 8bit\n" | ||
#: ohjelma.c: | #: ohjelma.c:14 | ||
#, c-format | #, c-format | ||
msgid "Hello Linux.fi\n" | msgid "Hello Linux.fi\n" | ||
Rivi 121: | Rivi 119: | ||
#. TRANSLATORS: Please let %s as it is | #. TRANSLATORS: Please let %s as it is | ||
#: ohjelma.c: | #: ohjelma.c:18 | ||
#, c-format | #, c-format | ||
msgid "Visit %s" | msgid "Visit %s" | ||
Rivi 128: | Rivi 126: | ||
=== Käännöksen käyttöönotto === | === Käännöksen käyttöönotto === | ||
Kun käännös on valmis, pitää | Kun käännös on valmis, se pitää muuttaa binäärimuotoon. Tämä onnistuu <tt>msgfmt</tt>-ohjelmalla komennolla | ||
msgfmt fi.po -o ohjelma.mo | msgfmt fi.po -o ohjelma.mo | ||
Huomaa, että tiedostonimen pitää olla lähdekoodissa <tt>textdomain()</tt>-funktiolle annettu nimi ja tiedostopäätteen <tt>.mo</tt>. | Huomaa, että tiedostonimen pitää olla lähdekoodissa <tt>textdomain()</tt>-funktiolle annettu nimi ja tiedostopäätteen <tt>.mo</tt>. | ||
Koska <tt>bindtextdomain()</tt>-funktiolla on käännöksen poluksi asetettu <tt>./kaannos</tt>, on juuri | Koska <tt>bindtextdomain()</tt>-funktiolla on käännöksen poluksi asetettu <tt>./kaannos</tt>, on juuri luoto <tt>ohjelma.mo</tt> tallennettava sen alle sopivaan alihakemistoon joka riippuu käytetystä kielestä, ja suomen tapauksessa se on | ||
./kaannos/fi/LC_MESSAGES/ | ./kaannos/fi/LC_MESSAGES/ | ||
[[Mv|Siirrä]] <tt>ohjelma.mo</tt> nyt tähän polkuun ja aja alussa käännetty ohjelma, jolloin käännösten pitäisi olla käytössä: | [[Mv|Siirrä]] <tt>ohjelma.mo</tt> nyt tähän polkuun ja aja alussa käännetty ohjelma, jolloin käännösten pitäisi olla käytössä: | ||
$ | $ ./ohjelma | ||
Terve Linux.fi | Terve Linux.fi | ||
Vieraile osoitteessa http://linux.fi | Vieraile osoitteessa http://linux.fi | ||
== Katso myös == | == Katso myös == | ||
*[[Kotoistus]] | *[[Kotoistus]] | ||
[[Luokka:Kehitystyökalut]] | [[Luokka:Kehitystyökalut]] |