Muokataan sivua Gettext

Siirry navigaatioon Siirry hakuun
Varoitus: Et ole kirjautunut sisään. IP-osoitteesi näkyy julkisesti kaikille, jos muokkaat. Jos kirjaudut sisään tai luot tunnuksen, muokkauksesi yhdistetään käyttäjänimeesi ja saat paremman käyttökokemuksen.

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]].  
'''Gettext''' on [[GNU]]-projektin työkalu ohjelmien [[kotoistaminen|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ä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ä.


== Käyttö ==
== Käyttö ==


=== Ohjelma käyttämään Gettextiä ===
=== Ohjelma käyttämään Gettextiä ===
Luodaan esimerkiksi [[C]]-kielinen esimerkkiohjelma ja sille käännökset. Luodaan tiedosto <tt>ohjelma.c</tt> jonka sisältö on seuraava:
Luodaan esimerkiksi [[C]]-kielinen esimerkkiohjelma ja sille käännökset. Luodaat tiedosto <tt>ohjelma.c</tt> jonka sisältö on seuraava:
<pre>
<pre>
#include <stdio.h>
#include <stdio.h>
Rivi 22: Rivi 22:
{
{
   /* Alustetaan Gettext */
   /* Alustetaan Gettext */
   char ohjelma[] = "ohjelma";
   char nimi[] = "ohjelma";
   setlocale ( LC_ALL, "" );  /* Käytetään ympäristömuuttujia */
   setlocale ( LC_ALL, "" );  /* Käytetään [[ympäristömuuttuja|ympäristömuuttujia]] */
   bindtextdomain ( ohjelma, "./kaannos" );  /* Haetaan käännökset kaannos-alihakemistosta */
   bindtextdomain ( ohjelma, "./kaannos" );  /* Haetaan käännökset kaannos-alihakemistosta */
   textdomain ( ohjelma );  /* Otetaan käännökset käyttöön */
   textdomain ( ohjelma );  /* Otetaan käännökset käyttöön */
Rivi 49: Rivi 49:
  Hello Linux.fi
  Hello Linux.fi
  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_ -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]]):
  xgettext --from-code=utf-8 -cTRANSLATORS: -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:22
#, c-format
msgid "Hello Linux.fi\n"
msgstr ""
#. TRANSLATORS: Please let %s as it is
#: ohjelma.c:26
#, 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 käännöstiedoston luonti, sekä [[kotoistus|käännösten tekeminen]]. Käännöstiedosto voidaan luoda käsin kopioimalla, tai käyttämällä <tt>msginit</tt> komentoa.
msginit -l fi_FI -o fi.po ohjelma.c
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:22
#, c-format
msgid "Hello Linux.fi\n"
msgstr "Terve Linux.fi\n"
#. TRANSLATORS: Please let %s as it is
#: ohjelma.c:26
#, c-format
msgid "Visit %s"
msgstr "Vieraile osoitteessa %s"
</pre>
=== Käännöksen käyttöönotto ===
Kun käännös on valmis, pitää se 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 luotu <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ä:
$ LC_ALL=fi_FI.utf8 ./ohjelma
Terve Linux.fi
Vieraile osoitteessa http://linux.fi
<tt>LC_ALL</tt> muuttuja määrittelee halutun localen. Asennetut localet näkee komennolla <tt>locale -a</tt>.
== Katso myös ==
*[[Kotoistus]]
*[[Poedit]], Graafinen '''.po'''-tiedostojen kääntäjä
==Aiheesta muualla==
*[http://www.sourcerally.net/regin/49-How-to-get-PHP-and-gettext-working-%28ubuntu,-debian%29 How to get PHP and gettext working ubuntu or debian]


[[Luokka:Kehitystyökalut]]
[[Luokka:Kehitystyökalut]]
Wikin materiaali on kaikkien vapaasti käytettävissä Creative Commons 3.0 - nimi mainittava -lisenssin alaisuudessa. TEKIJÄNOIKEUDEN ALAISEN MATERIAALIN KÄYTTÄMINEN ILMAN LUPAA ON EHDOTTOMASTI KIELLETTYÄ!

Muokataksesi tätä sivua vastaa alla olevaan kysymykseen (lisätietoja):

Peruuta Muokkausohjeet (avautuu uuteen ikkunaan)
Noudettu kohteesta ”https://www.linux.fi/wiki/Gettext