Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: .po-tiedostojen käyttö

teksturi [17.07.2007 21:31:14]

#

Eli softaan oisi mukava saada tuo käännöspuoli kuntoon ihan muuten vaan. Nuo .po tiedostot ovat juuri tätä varten eli, kuinka tämä toimii. Esim seuraava

char domain[] = "airpong";
setlocale ( LC_ALL, "" );
bindtextdomain ( domain, "/data/translations" );
textdomain ( domain );

cout << gettext("Config loaded...");

Pitääkö ohjelmalle määrittää mitä kieltä pitää käyttää vai osaako se jo tuosta hakea oikean kielitiedoston jos järjestelmän kielenä on esim suomi. Toivottavasti ymmärsitte.

WinC [18.07.2007 02:43:43]

#

Kyllä pitäis ymmärtää. Eli LANG järjestelmä muuttujan perusteella haetaan käännös.

teksturi [18.07.2007 12:35:35]

#

Olen ymmärtänyt että tuo luo tiedoston tuonne /data/tranlations josta sitten voi tehdä käännöksiä. Olenko ymmärtänyt väärin vai pitääkö siihen käyttää jotain komentoa?

arcatan [18.07.2007 13:02:45]

#

Gettext on ainakin minusta monimutkainen, joten suosittelen lukemaan suosiolla manuaalia: http://www.gnu.org/software/gettext/manual/gettext.html

Perusidea on kuitenkin se, että koodissa käännettävät merkkijonot menevät gettext-funktion läpi, kuten esimerkissäsi. Käännöksiä varten ajetaan ohjelma nimeltään xgettext, joka tuottaa .pot-tiedoston. Pot-tiedosto sisältää alkuperäisen käännöksen. Tiedostoa käytetään lähtökohtana varsinaisille käännöksille. Jos alkuperäisiä tekstejä haluaa muuttaa, muutokset tulee tehdä suoraan lähdekoodiin. Pot-tiedosto kopioidaan .po-tiedostoksi (käytä msginitiä), johon käännös tehdään. Jokaisella kielellä on oma po-tiedostonsa.

Kun alkuperäisiä tekstejä muutetaan, täytyy xgettext ajaa uudelleen ja käyttää msgmergeä käännöstiedostojen päivittämiseen.

Toivottavasti sain tämän nyt selostettua oikein, en ole hetkeen gettextiä käyttänyt...

WinC [18.07.2007 13:20:59]

#

.po tiedosto pitää vielä kääntää .mo tiedostoksi. Eli kun sinulla on .po valmiina niin käytä "msgfmt" komentoa muutokseen. Tämän jälkeen .mo tiedosto kopioidaan kielikäännös hakemistoon. Ja vielä huomautuksena, että kohdehakemiston pitää olla oikeassa muodossa esimerkiksi ../en_US/LC_MESSAGES

teksturi [18.07.2007 16:33:43]

#

Tuntuu olevan todella ongelma kun ei millään saa toimimaan :/ Lähdekoodi on ihan oikein kyllä eikä tule erroreita, mutta sitten noin muuten. Kyllä tämä tästä :D

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta