«i18n» als fitxers i seccions dels fitxers «js» del RKWard

A diferència dels fitxers .xml, fer que els fitxers .js d'un connector siguin traduïbles requereix més feina personalitzada. La diferència clau, aquí, és que no hi ha cap manera decent automàtica de saber, si una cadena està pensada per a ser mostrada com una cadena llegible per humans, o un tros de codi. Així que heu de marcar-ho vós mateix. Ja hem donat exemples d'això, tot el temps. Aquí hi ha una descripció més completa de les funcions «i18n» disponibles en el codi js, i alguns consells per a casos més complexos:

i18n (msgid, [...])

La funció més important. Marca la cadena a traduir. La cadena (traduïda o no) es retorna entre cometes amb cometes dobles («»). Es pot utilitzar un nombre arbitrari de variables de substitució a la cadena com es mostra a continuació. L'ús d'aquestes variables de substitució en lloc de concatenar petites subcadenes és molt més fàcil per als traductors:

i18n ("Compare objects %1 and %2", getString ('x'), getString ('y'));
                
i18nc (msgctxt, msgid, [...])

Igual que i18n(), però a més proporciona un context de missatge:

i18nc ("proper name, not state of mind", "Mood test");
                
i18np (msgid_singular, msgid_plural, n, [...])

Igual que i18n(), però per a missatges que poden ser diferents en forma singular o plural (i alguns idiomes tenen encara més formes numèriques diferenciades). Tingueu en compte que igual que amb i18n(), podeu utilitzar un nombre arbitrari de reemplaçaments, però es requereix el primer («%1»), i ha de ser un enter.

i18np ("Comparing a single pair", "Comparing %1 distinct pairs", n_pairs);
                
i18ncp (msgctxt, msgid_singular, msgid_plural, n, [...])

i18np() amb context de missatge afegit.

comment (comentari, [sagnat])

Fa un comentari de codi, marcat per a la traducció. A diferència de les altres funcions i18n(), això no està entre cometes, però s'afegeix un «#» a cada línia del comentari.

comment ("Transpose the matrix");
                        echo ('x <- t (x)\n');
                

Per a afegir comentaris als traductors (vegeu a dalt un debat de les diferències entre el comentari i el context), afegeix un comentari que comenci per "i18n:" o "translators:" directament per sobre de la crida i18n() a comentar. P. ex.:

// i18n: Spelling is correct: Scree plot.
                echo ('rk.header (' + i18n ("Scree plot") + ')\n');
        

«i18n» i cometes

En gran part, no us haureu de preocupar pel comportament de l'i18n() respecte a les cometes. Com que, normalment, les cadenes traduïbles són literals de cadenes, citar-les és el correcte i estalvia una mica d'escriptura. A més, en funcions com makeHeaderCode()/Header() que solen citar els seus arguments, les cadenes i18n() estan protegides de cites duplicades. Essencialment, això funciona, enviant primer la cadena traduïda a través de quote() (per a fer-la citada), després a través de noquote() (per a protegir-la de les cites addicionals). Si necessiteu una cadena traduïble que no estigui entre cometes, utilitzeu i18n(noquote ("El meu missatge")). Si necessiteu una cadena traduïble per a ser citada, una segona vegada, envieu-la a través de quote(), dues vegades.

Dit això, generalment no és una bona idea fer parts com els noms de funcions o els noms de variables siguin traduïbles. Per una cosa, R, el llenguatge de programació, és inherent en anglès, i no hi ha internacionalització del llenguatge en si. Els comentaris de codi són un tema diferent, però hauríeu d'utilitzar la funció comment() per a aquests. En segon lloc, fer que les parts sintàcticament rellevants del codi generat siguin traduïbles significa que les traduccions podrien trencar el vostre connector. Per exemple, si un traductor confiat tradueix una cadena que vol dir un nom de variable en dues paraules diferents amb un espai entremig.