Bogearraí a aistriú ag baint úsáide as gettext GNU¶
Tá GNU gettext ar cheann de na huirlis is mó a úsáidtear chun bogearraí in aisce a idirnáisiúnú. Soláthraíonn sé bealach simplí ach solúbtha chun na bogearraí a logánú. Tá tacaíocht iontach aige don iolra, is féidir leis comhthéacs breise a chur leis an teaghrán aistrithe agus tá go leor uirlisí tógtha timpeall air. Ar ndóigh tá an-tacaíocht aige in Weblate (féach PO gettext GNU (Réad Inaistrithe) tuairisc ar fhormáid an chomhaid).
Note
Má tá tú ar tí é a úsáid i mbogearraí dílseánaigh, féach ar cheadúnú ar dtús, b’fhéidir nach mbeadh sé oiriúnach duit.
Is féidir gettext GNU a úsáid ó éagsúlacht teangacha (C, Python, PHP, Ruby, JavaScript agus go leor eile) agus de ghnáth tagann creataí Chomhéadain le tacaíocht éigin dó cheana féin. Baintear úsáid chaighdeánach as an nglao feidhme gettext(), a luaitear go minic le _() chun an cód a dhéanamh níos simplí agus níos éasca le léamh.
Ina theannta sin soláthraíonn sé glao pgettext() chun comhthéacs breise a sholáthar d'aistritheoirí agus ngettext() ar féidir leo cineálacha iolra a láimhseáil mar atá sainithe don sprioctheanga.
Mar uirlis a scaiptear go forleathan, tá go leor cumhdaigh ann a fhágann go bhfuil sé thar a bheith simplí é a úsáid, in ionad an téacs a thuairiscítear thíos a agairt de láimh, b'fhéidir gur mhaith leat triail a bhaint as ceann amháin acu, mar shampla intltool.
Forbhreathnú ar an sreabhadh oibre¶
Úsáideann an gettext GNU roinnt comhad chun an logánú a bhainistiú:
Tá teaghráin a bhaintear as do chód foinseach i
PACKAGE.pot, de ghnáth ag baint úsáide as xgettext nó roinnt cumhdaigh ardleibhéil ar nós intltool.Tá teaghráin in
LANGUAGE.pole haistriúchán go teanga amháin. Ní mór é a nuashonrú le msgmerge nuair a bheidh anPACKAGE.potnuashonraithe. Is féidir leat comhaid teanga nua a chruthú trí úsáid a bhaint as msginit nó laistigh de Weblate.Tá léiriú dénártha
LANGUAGE.moagLANGUAGE.poagus úsáidtear é ag am rite feidhmchláir. Go hiondúil ní choinnítear faoi smacht leagan é, ach gintear é ag am tiomsaithe ag baint úsáide as msgfmt. I gcás gur mian leat é a bheith sa rialú leagan, is féidir leat é a ghiniúint i Weblate ag baint úsáide as breiseán Gin comhaid MO.
Ar an iomlán tá cuma mar seo ar shreabhadh oibre gettext GNU:
See also
Clár samplach¶
Seans go mbeidh cuma mar seo a leanas ar an ríomhchlár simplí in C a úsáideann gettext:
#include <libintl.h>
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int count = 1;
setlocale(LC_ALL, "");
bindtextdomain("hello", "/usr/share/locale");
textdomain("hello");
printf(
ngettext(
"Orangutan has %d banana.\n",
"Orangutan has %d bananas.\n",
count
),
count
);
printf("%s\n", gettext("Thank you for using Weblate."));
exit(0);
}
Teaghráin inaistrithe a bhaint¶
Nuair a bheidh cód agat agus na glaonna gettext in úsáid agat, is féidir leat xgettext a úsáid chun teachtaireachtaí a bhaint astu agus iad a stóráil i .pot:
$ xgettext main.c -o po/hello.pot
Note
Tá ríomhchláir eile ann chun teaghráin a bhaint as an gcód, mar shampla pybabel.
Cruthaíonn sé seo comhad teimpléid, ar féidir leat é a úsáid chun aistriúcháin nua a thosú (ag úsáid msginit) nó chun cinn atá ann cheana a nuashonrú tar éis athrú cód (d'úsáidfeá msgmerge chuige sin). Níl sa chomhad mar thoradh air ná comhad téacs struchtúrtha:
# 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: 2015-10-23 11:02+0200\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"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
#: main.c:14
#, c-format
msgid "Orangutan has %d banana.\n"
msgid_plural "Orangutan has %d bananas.\n"
msgstr[0] ""
msgstr[1] ""
#: main.c:20
msgid "Thank you for using Weblate."
msgstr ""
Sainmhíníonn gach líne msgid teaghrán le haistriú, is é an teaghrán folamh speisialta ag an tús ceanntásc an chomhaid ina bhfuil meiteashonraí faoin aistriúchán.
Aistriúchán nua a thosú¶
Agus an teimpléad i bhfeidhm, is féidir linn ár gcéad aistriúchán a thosú:
$ msginit -i po/hello.pot -l cs --no-translator -o po/cs.po
Created cs.po.
Tá roinnt eolais líonta isteach ag an gcomhad díreach cruthaithe cs.po cheana féin. Níos tábhachtaí fós, fuair sé an sainmhíniú ceart ar na foirmeacha iolra don teanga roghnaithe agus is féidir leat a fheiceáil go bhfuil líon na n-iolra athraithe dá réir:
# Czech translations for PACKAGE package.
# Copyright (C) 2015 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Automatically generated, 2015.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-10-23 11:02+0200\n"
"PO-Revision-Date: 2015-10-23 11:02+0200\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#: main.c:14
#, c-format
msgid "Orangutan has %d banana.\n"
msgid_plural "Orangutan has %d bananas.\n"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: main.c:20
msgid "Thank you for using Weblate."
msgstr ""
Tiomsaítear an comhad seo i bhfoirm dhénártha optamaithe, an comhad .mo a úsáideann an GNU gettext feidhmeanna ag am rite.
Teaghráin á nuashonrú¶
Nuair a chuireann tú tuilleadh teaghráin leis nó nuair a athraíonn tú roinnt teaghráin i do chlár, ritheann tú xgettext arís a athghineann an comhad teimpléid:
$ xgettext main.c -o po/hello.pot
Ansin is féidir leat comhaid aistriúcháin aonair a nuashonrú chun teimpléid nuachruthaithe a mheaitseáil (áirítear leis seo na teaghráin a athordú chun an teimpléad nua a mheaitseáil):
$ msgmerge --previous --update po/cs.po po/hello.pot
Note
Agus Weblate in úsáid agat, ní bhíonn ort msgmerge a rith de láimh de ghnáth. Is féidir le Weblate é seo a láimhseáil go huathoibríoch tríd an mbreiseán Nuashonraigh comhaid PO chun teacht le POT (msgmerge), nó is féidir leat an comhad POT nuashonraithe a uaslódáil ag baint úsáide as an modh uaslódála Update source teaghráin. Féach Comhaid sprioctheanga á nuashonrú le haghaidh sonraí.
Iompórtáil chuig Weblate¶
Chun aistriúchán den sórt sin a iompórtáil go Weblate, níl le déanamh ach na réimsí seo a leanas a shainiú agus comhpháirt á chruthú (féach Cumraíocht na Comhpháirte le haghaidh cur síos mionsonraithe ar na réimsí):
Gort |
Luach |
|---|---|
Stór cód foinse |
URL an stór VCS le do thionscadal |
Masc comhaid |
|
Teimpléad le haghaidh aistriúcháin nua |
|
Formáid comhaid |
Roghnaigh gettext PO file |
Teanga nua |
Roghnaigh Cruthaigh comhad teanga nua |
Agus sin é, tá tú réidh anois chun do bhogearraí a aistriú!
See also
Is féidir leat sampla gettext le go leor teangacha a fháil sa tionscadal Weblate Hello ar GitHub: <https://github.com/WeblateOrg/hello>.