4 175
muokkausta
(välitallennus) |
(näin) |
||
Rivi 1: | Rivi 1: | ||
'''Gettext''' on [[GNU]]-projektin työkalu ohjelmien [[ | '''Gettext''' on [[GNU]]-projektin työkalu ohjelmien [[kotoistus|kotoistamiseen]]. | ||
Gettextiä käytettäessä ohjelman käännettävät merkkijonot merkitään sen lähdekoodiin, 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 käännökset sisältävä <tt>.po</tt>-tiedosto muutetaan binäärimuotoon ja tallennetaan sopivaan hakemistoon, jonka jälkeen ohjelma korvaa ajonaikana alkuperäiset merkkijonot käännöksillä. | Gettextiä käytettäessä ohjelman käännettävät merkkijonot merkitään sen lähdekoodiin, 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 käännökset sisältävä <tt>.po</tt>-tiedosto muutetaan binäärimuotoon ja tallennetaan sopivaan hakemistoon, jonka jälkeen ohjelma korvaa ajonaikana alkuperäiset merkkijonot käännöksillä. | ||
Rivi 50: | Rivi 50: | ||
Visit http://linux.fi | Visit http://linux.fi | ||
=== Luodaan .pot-tiedosto === | |||
Nyt kun ohjelma käyttää käännöksiä, on seuraavaksi luotava tiedosto, johon kääntäjät voivat lisätä käännöksiä eri kielille. Lähdekooditiedostojen merkkijonot voidaan hakea <tt>xgettext</tt>-ohjelmalla: | |||
xgettext ohjelma.c | |||
jonka tuloksena on <tt>messages.po</tt>-niminen tiedosto. Kuitenkin oletuksena <tt>xgettext</tt> ymmärtää vain <tt>gettext()</tt>-funktiolla merkattuja merkkijonoja, joten kerrotaan sille, että käytämme <tt>_()</tt>-funktiota. Lisäksi lähdekoodissa on lisätty kommentti kääntäjille ''TRANSLATORS:''-tunnisteella varustettuna. Koska haluamme sisällyttää nämä kommentit luotavaan tiedostoon, kerrotaan myös tämä avainsana <tt>xgettextille</tt>: | |||
xgettext -k_ ohjelma.c -o ohjelma.pot | |||
Nyt tiedoston <tt>ohjelma.pot</tt> pitäisi näyttää tältä: | |||
<pre> | |||
# SOME DESCRIPTIVE TITLE. | |||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | |||
# This file is distributed under the same license as the PACKAGE package. | |||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | |||
# | |||
#, fuzzy | |||
msgid "" | |||
msgstr "" | |||
"Project-Id-Version: PACKAGE VERSION\n" | |||
"Report-Msgid-Bugs-To: \n" | |||
"POT-Creation-Date: 2007-10-13 19:36+0300\n" | |||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | |||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | |||
"Language-Team: LANGUAGE <LL@li.org>\n" | |||
"MIME-Version: 1.0\n" | |||
"Content-Type: text/plain; charset=CHARSET\n" | |||
"Content-Transfer-Encoding: 8bit\n" | |||
#: ohjelma.c:13 | |||
#, c-format | |||
msgid "Hello Linux.fi\n" | |||
msgstr "" | |||
#. TRANSLATORS: Please let %s as it is | |||
#: ohjelma.c:17 | |||
#, c-format | |||
msgid "Visit %s" | |||
msgstr "" | |||
</pre> | |||
Tiedoston alussa olevat otsikkotiedot on selitetty [[kotoistus]]-artikkelissa. | |||
Tiedostossa alkuperäiset merkkijonot on merkitty <tt>msgid</tt>-kohtiin ja käännökset on tarkoitus kirjoittaa <tt>msgstr</tt>-kohtiin. Huomaa myös kääntäjälle tarkoitettu kommentti, joka kehottaa olemaan muuttamatta <tt>%s</tt>-merkintää joka on välttämätön C-ohjelman toiminnalle. | |||
=== Kääntäminen === | |||
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>: | |||
<pre> | |||
# Linux.fi:n esimerkkiohjelma | |||
# Copyright (C) Linux.fi | |||
# This file is distributed under the same license as the ohjelma package. | |||
# Linux.fi:n koodariryhmä <foo@bar>, 2007 | |||
# | |||
#, fuzzy | |||
msgid "" | |||
msgstr "" | |||
"Project-Id-Version: 1.0\n" | |||
"Report-Msgid-Bugs-To: linux.fi\n" | |||
"POT-Creation-Date: 2007-10-13 18:51+0300\n" | |||
"PO-Revision-Date: 2007-10-13 18:52+0300\n" | |||
"Last-Translator: Linux.fin käännösryhmä <foo@bar>\n" | |||
"Language-Team: Finnish <fi@bar>\n" | |||
"MIME-Version: 1.0\n" | |||
"Content-Type: text/plain; charset=UTF-8\n" | |||
"Content-Transfer-Encoding: 8bit\n" | |||
#: ohjelma.c:14 | |||
#, c-format | |||
msgid "Hello Linux.fi\n" | |||
msgstr "Terve Linux.fi\n" | |||
#. TRANSLATORS: Please let %s as it is | |||
#: ohjelma.c:18 | |||
#, c-format | |||
msgid "Visit %s" | |||
msgstr "Vieraile osoitteessa %s" | |||
</pre> | |||
=== Käännöksen käyttöönotto === | |||
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 | |||
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 luoto <tt>ohjelma.mo</tt> tallennettava sen alle sopivaan alihakemistoon joka riippuu käytetystä kielestä, ja suomen tapauksessa se on | |||
./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ä: | |||
$ ./ohjelma | |||
Terve Linux.fi | |||
Vieraile osoitteessa http://linux.fi | |||
== Katso myös == | |||
*[[Kotoistus]] | |||
[[Luokka:Kehitystyökalut]] | [[Luokka:Kehitystyökalut]] |