Kotoistus

Linux.fista
Versio hetkellä 15. huhtikuuta 2008 kello 13.06 – tehnyt Vpv (keskustelu | muokkaukset) (→‎Jakeluiden omat kotoistusprojektit: päivitetty Fedoran osoite)
Siirry navigaatioon Siirry hakuun

Yleistä

Lokalisointi eli kotoistus tarkoittaa sovelluksien kääntämistä ja sopeuttamista kieleen ja kulttuuriin. Sovellusten ja ohjeiden kääntämisen lisäksi kotoistuksen kohteita ovat kalenterit, merkistöt, päivämäärien näyttötavat yms.. Englanniksi lokalisoinnista käytetään lyhennettä l10n (localisation, l- ja n-kirjainten välissä on kymmenen kirjainta, siitä lyhenne). Suomen osalta kotoistus tarkoittaa lähinnä suomennoksien tekemistä, koska kalenterit ja merkistöt ovat samat.

Ohjelmien kääntäminen

Yleensä ohjelmiin toteutetaan monikielisyyden tuki GNU Gettext -ohjelman avulla. Ohjelmoijalle tämä tarkoittaa sitä, että kaikki ne ohjelman merkkijonot, jotka on tarkoitettu käännettäväksi, merkitään erillisellä merkillä, jonka jälkeen luodaan nämä merkkijonot sisältävä .pot-tiedosto. Tarkemmat ohjeet Gettextin käyttämiseen ohjelmoijan näkökulmasta löytyy artikkelista Gettext.

.pot-tiedosto on seuraavaa muotoa: (esimerkkiohjelma löytyy Gettext-artikkelista)

# 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: PAKETIN VERSIO\n"
"Report-Msgid-Bugs-To: OSOITE-VIRHERAPORTOINTIA-VARTEN\n"
"POT-Creation-Date: 2007-10-13 18:51+0300\n"            #pot-tiedoston luontiaika
"PO-Revision-Date: VUOSI-KUUKAUSI-PÄIVÄ TUNNIT-MINUUTIT+AIKAVYÖHYKE\n"  #po-tiedoston viimeisin muokkaus
"Last-Translator: VIIMEISIN KÄÄNTÄJÄ <SÄHKÖPOSTI>\n"
"Language-Team: KÄÄNNÖSRYHMÄ <SÄHKÖPOSTI>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=MERKISTÖKOODAUS\n"
"Content-Transfer-Encoding: 8bit\n"

#: gettext.c:14
#, c-format
msgid "Hello Linux.fi\n"
msgstr ""

#. TRANSLATORS: Please let %s as it is
#: gettext.c:18
#, c-format
msgid "Visit %s"
msgstr ""

Tiedoston alussa on ohjelmasta ja käännöksestä kertovat otsikkotiedot. Tätä seuraa varsinaiset käännökset. msgid kertoo alkuperäisen yleensä englanninkielisen merkkijonon, ja varsinainen käännös kirjoitetaan msgstr-kohtaan. Käännöksiä voi jatkaa useammalle riville, jolloin jokainen rivi laitetaan lainausmerkkeihin.

Jos käännöstä edeltävissä kommenteissa (#-merkillä alkavat rivit) on rivi

#, fuzzy

se tarkoittaa sitä, että käännös on ns. sumea, kääntäjä ei ole varma sen sopivuudesta, ja muiden kääntäjien tulisi tarkistaa se. Tällaiset käännökset eivät näy ohjelman käyttäjille.

Käännöstiedostoa voi muokata millä tahansa tekstieditorilla, vaikkakin syntaksivirheiden (kuten lainausmerkkien poistaminen vahingossa) välttämiseksi kannattaa käyttää jotakin erityisesti tähän tehtävään erikoistunutta editoria. Tällainen on esimerkiksi Emacs, johon sisältyy erillinen po-tila (engl. po mode) Gettextin käännöstiedostojen muokkaamiseen.

Kun käännös on valmis, se tallennetaan nimellä ohjelma.po ja muutetaan binäärimuotoon komennolla

msgfmt ohjelma.po -o ohjelma.mo

jonka tuloksena on ohjelma.mo-tiedosto. Yleensä tämä tiedosto tallennetaan polkuun /usr/share/locale/kieli/LC_MESSAGES/; jossa kieli on suomen tapauksessa fi.

Valmiin käännöksen muokkaaminen

Ajoittain voi tulla tarve muokata jonkin valmiiksi asennetun ohjelman käännöstä.

Jos ohjelman lähdekoodit löytyvät järjestelmästä, voidaan lähdekoodihakemistosta etsiä suomenkieliset käännökset sisältävä fi.po-tiedosto, tehdä siihen tarvittavat muutokset, muuntaa se binäärimuotoon ja kopioida ohjelma.mo-nimellä hakemistoon /usr/share/locale/fi/LC_MESSAGES/.

Useimmiten on kuitenkin kätevintä muuntaa valmis .mo-tiedosto takaisin .po-muotoon ja tehdä muutokset tähän tiedostoon. Mo-tiedoston muunto po-muotoon onnistuu komennolla msgunfmt. Esimerkiksi seuraavassa luotaisiin grep-ohjelman mo-tiedostosta po-tiedosto:

msgunfmt /usr/share/locale/fi/LC_MESSAGES/grep.mo >grep.po

Tehdään halutut muutokset po-tiedostoon:

emacs grep.po

Käännetään muokattu po-tiedosto takaisin mo-muotoon:

msgfmt grep.po -o grep.mo

Otetaan varmuuskopio alkuperäisestä mo-tiedostosta:

mv /usr/share/locale/fi/LC_MESSAGES/grep.mo /usr/share/locale/fi/LC_MESSAGES/grep.mo.bak

Kopioidaan muokattu mo-tiedosto alkuperäisen paikalle:

cp grep.mo /usr/share/locale/fi/LC_MESSAGES/grep.mo

Sanasto

Kotoistamista koordinoiva lokalisointi.org tarjoaa sivuillaan sanakirjan, josta löytyy vakiintuneet käännökset monille termeille. Sanakirjan käännösten noudattaminen on tärkeää käännösten yhtenäisyyden varmistamiseksi.

Kotoistusprojekteja

Linux-sovelluksia suomennetaan useissa eri projekteissa. Näiden projektien yhteistyötä pyritään koordinoimaan http://lokalisointi.org/ -sivustolla (katso lokalisointi.org) sekä IRCNetistä löytyvällä #lokalisointi-kanavalla.

GNOME

GNOMEn suomennos on varsin hyvällä mallilla ja GNOMEn viimeisimmässä julkaisussa onkin käännösprosentti käyttöliittymän osalta lähes sata. Ohjeistuksesta valtaosa on kuitenkin yhä suomentamatta. GNOMEn suomennosryhmän kotisivut löytyvät osoitteesta http://www.gnome.fi/.

GNU

GNU Translation Project vastaa useimpien GNU-ohjelmien suomennoksista sekä muutamista ei-GNU-ohjelmista. Projektin sivut löytyvät osoitteesta http://www.iro.umontreal.ca/translation/ ja erityisesti http://www.iro.umontreal.ca/translation/registry.cgi?team=fi.

KDE

KDE:tä lokalisoi ja suomentaa suomennosryhmä, jonka kotisivut löytyvät osoitteesta http://kde-fi.org. Tällä hetkellä aktiivisia kääntäjiä on vähän ja tarvetta uusille kääntäjille olisi. Useat KDE:n suomentajat löytyvät #lokalisointi-kanavalta, joten jos kääntäminen kiinnostaa tai löytyy muuten halua jutella kääntäjien kanssa esimerkiksi virheellisistä käännöksistä jne. niin tervetuloa #lokalisointi-kanavalle.

OpenOffice.org

OpenOfficen suomennoksen kotisivut löytyvät osoitteesta http://fi.openoffice.org/.

Jakeluiden omat kotoistusprojektit

Suurilla jakelupaketeilla on myös omia kotoistusprojekteja, joissa jakelukohtaisia ohjelmia ja ohjeita käännetään mm. suomeksi. Tällaisia projekteja löytyy mm. seuraavilta jakeluilta: