V nasprotju z datotekami .xml ustvarjanjedatoteke .js vtičnika, ki ga je mogoče prevestizahteva več dela po meri. Ključna razlika je v tem, da ni spodobnega samodejnega načina ugotavljanja, ali naj bo niz prikazan kot človeku berljiv niz ali kot del kode. Torej morate to označiti vi. Ves čas smo že kazali primere tega. Tukaj je bolj popoln opis funkcij i18n, ki so na voljo v kodi js, in nekaj namigov za bolj zapletene primere:
- i18n (msgid, [...])
Najpomembnejša funkcija. Označi niz za prevod. Niz (ne glede na to, ali je preveden ali ne) je vrnjen označen z dvojnimi narekovaji ('"'). V nizu lahko uporabite poljubno število ograd, kot je prikazano spodaj.Uporaba takšnih nadomestnih mest namesto veriženja majhnih podnizov je veliko lažja za prevajalce:
i18n ("Compare objects %1 and %2", getString ('x'), getString ('y'));- i18nc (msgctxt, msgid, [...])
Enako kot i18n(), a dodatno nudi kontekst sporočila:
i18nc ("proper name, not state of mind", "Mood test");- i18np (msgid_singular, msgid_plural, n, [...])
Enako kot i18n(), vendar za sporočila, ki se lahko razlikujejo v edninski ali množinski obliki (in nekateri jeziki razlikujejo še več številskih oblik). Upoštevajte, da tako kot pri i18n(), lahko uporabite poljubno število zamenjav, vendar prva ('%1') jeobvezna in mora biti celo število.
i18np ("Comparing a single pair", "Comparing %1 distinct pairs", n_pairs);- i18ncp (msgctxt, msgid_singular, msgid_plural, n, [...])
i18np() z dodanim kontekstom sporočila.
- comment (comment, [indentation])
Odmeva komentar kode, označen za prevod. V nasprotju z drugimi i18n() funkcijami, to ni v narekovajih, vendar je v vsako vrstico komentarja dodano '#'.
comment ("Transpose the matrix"); echo ('x <- t (x)\n');
Za dodajanje komentarjev prevajalcem (glejte zgoraj za razpravo o razlikah med komentarjem in kontekstom), dodajte komentar, ki se začne z "i18n:" ali "translators:" neposredno nadi18n()-pokliči za komentiranje. Npr.:
// i18n: Spelling is correct: Scree plot.
echo ('rk.header (' + i18n ("Scree plot") + ')\n');
Večinoma vam ne bo treba skrbeti za vedenje i18n() glede spoštovanja do citatov. Ker so običajno prevedljivi nizi nizovni literali, njihovo citiranje je prava stvar in vam prihrani nekaj tipkanja. V funkcijah, kot je makeHeaderCode()/Header(), ki običajno citirate njihove argumente, so nizi v i18n() zaščiteni pred podvajanjem citiranja. V bistvu to deluje tako, da se najprej pošlje prevedeni niz skozi quote() (da bo citiran), nato skozinoquote() (za zaščito pred dodatnim citiranjem). Če potrebujete prevedljiv niz, ki ni v narekovajih, uporabite i18n(noquote ("Moje sporočilo")). Če potrebujete prevodniza, ki ga želite navesti, ga drugič pošljite prek quote(), dvakrat.
Kljub temu na splošno ni dobra ideja, da bi imena funkcij ali spremenljivk poimenovali tako, di bi bili prevedljivi. Prvič, R, je programski jezik, po naravi v angleščini in ni internacionalizacije samega jezika. Komentarji kode so drugačna stvar, vendar bi morali za to uporabitifunkcijo comment(). Drugič, izdelavasintaktično relevantnega dela ustvarjene kode prevedljivo pomeni, daprevodi lahko dejansko pokvarijo vaš vtičnik. Npr. če nič hudega slutečprevajalnik prevede niz, ki je mišljen kot ime spremenljivke, v dva različni besedi s presledkom vmes.