Segurament t’has adonat que en molts webs en català, castellà, etc. hi ha elements que apareixen en anglès.
Això és perquè, encara que a simple vista no es vegi la diferència, una cosa és el contingut propi del web –fet en l’idioma que sigui en cada cas–, i una altra cosa són els strings (cadenes de text).
Els strings són fragments de text que provenen d’un programa –en aquest cas, d’algun dels components del WordPress– i que apareixen en llocs determinats on compleixen una funció. Són cosa de la programació.
Contingut vs. strings
Prenem com a exemple aquesta entrada mateix.
Jo n’he escrit el títol, i he escrit el text, inclòs el peu de foto de la propera imatge. I també he sigut jo qui ha decidit la categoria i les etiquetes amb què classificar-ho. Tot això forma part del contingut propi d’aquest web, concretament el d’aquesta pàgina. És únic i diferent al de qualsevol altra.
Però en canvi, no sóc jo qui ha de pensar en posar cada vegada l’autor o la data a totes les entrades que vaig publicant (ho posa automàticament el WordPress). Ni tampoc m’haig de dedicar a posar, al final de cada article, la frase “Deixa un comentari”, o “Arxivat com a” o “Etiquetat com a”; ho posa el programa.
Aquest tipus d’elements de text són les cadenes, o strings, i formen part del software, de la “maquinaria” que fa funcionar el web, del contenidor. Són termes i expressions, previstos pel programador, per acompanyar o complementar una tasca concreta.
I surten en anglès perquè aquest és l’idioma “escollit” en el món de la programació. I perquè ningú els ha traduït encara.
I a mi què, que hi hagi fragments en anglès?
Passa molt sovint, per exemple, que la part del formulari per enviar comentaris queda sense traduir, igual que el típic Read more (“llegeix més”) que surt a molts blogs, o la data de les publicacions. També passa amb d’altres indicacions que el sistema fa a l’usuari: en botons, ordres, missatges d’error, etc.
I això té diversos inconvenients, depenent del cas:
- Impossibilita la comunicació: quan el missatge no s’entén i la persona realment no pot continuar de cap manera
- És una mala experiència per l’usuari: quan no es veu clar el què o el com apareixen els dubtes i la desconfiança
- Dona mala imatge: transmet deixadesa, desinterès; és poc professional
- És incorrecte: des del punt de vista dels buscadors, per exemple, que es poden confondre i no saber com classificar la pàgina
És molt diferent que en algún raconet hi surti una paraula que ha quedat per traduir que un web que directament descuidi tota una serie de cadenes.
Per algú que no entén l’anglès pot suposar un problema d’usabilitat molt greu: li dificulta –o fins i tot impossibilita– l’accés al contingut o a algunes de les funcionalitats del web.
És prou important com per posar-hi atenció i resoldre-ho així que ho veiem.
I llavors, com s’ha de fer perquè tot quedi ben traduït? On dimonis s’ha de canviar?
Dissecció d’un WordPress
Un web en WordPress és un petit Frankenstein; està fet de diverses peces o “trossets” de software que es relacionen entre elles i s’encarreguen de coses diferents:
- El cor i altres òrgans vitals: serien la maquinaria base, el que el fa funcionar. És el WordPress
- L’esquelet i la pell: són el que defineix l’estructura de les pàgines i la seva aparença. És el tema (o plantilla)
- Les habilitats i coneixements adquirits: les diferents característiques o funcionalitats que podem afegir-hi. Són les extensions (plugins)
I ja tenim a la criatura.
La majoria d’aquestes “peces” són invisibles per nosaltres, però n’hi ha d’altres que en un context determinat es mostraran: perquè formen part del diàleg entre el sistema i l’usuari, o perquè li indiquen coses concretes. I si estàn en anglès, haurem d’identificar d’on vénen (si pertanyen al tema o a una extensió en concret, etc.) i traduir-les.
Traduir cadenes en general
Una de les maneres estàndard de traduir cadenes és seguint aquest patró:
- Identifica on està l’arxiu que conté les cadenes: tindrà la terminació
.pot
, i normalment estarà a la carpeta d’idiomes del tema, extensió o el que sigui. També es pot trobar al repositori de traduccions, - Descarrega’t el Poedit, un programa gratuït per a traduir cadenes i obre’l
- Vés, al menú, a
File new > New catalog from POT file...
i tria l’arxiu en qüestió - Ara has d’omplir els camps que et demana el programa:
- Nom del projecte i versió, qui el fa, correu electrònic de qui el fa; i els camps més importants:
- Idioma al qual vols traduir
- Codificació i codificació del codi font (en principi sempre UTF-8)
- Formes del plural (en català és
nplurals=2; plural=(n != 1);
). Enllaç de consulta per a tots els idiomes - Ja li pots dir OK
- Ara has de donar un nom a l’arxiu de la traducció. Aquest és un dels punts més crítics: si el nom no és correcte, no funcionarà. Agafa el nom de l’arxiu original
.pot
i afegeix-hi un guió mig i el codi de l’idioma al qual el tradueixes, seguint la convenció de codis següent (Locale): les (dues) primeres lletres es refereixen al codi d’idioma, en minúscules, seguides per un guió baix, i a continuació les dues lletres del codi de país, en majúscules. Exemples: si la traducció és a l’espanyol d’Espanya seràes_ES
(o es_CO, espanyol de Colòmbia; es_AR, espanyol d’Argentina…) i en portuguès del Brasil seràpt_BR
. En el cas del català només es posa el codi d’idiomaca
. - Posa’t a traduir i desa. Per defecte, quan desis es guardaran 2 arxius: un, amb terminació
.po
(l’arxiu de traducció que tu edites) i un altre que acaba en.mo
(l’arxiu que la màquina llegirà) - Quan acabis, hauras de pujar els 2 arxius al seu lloc corresponent (recordes el primer pas? normalment tots els arxius d’idioma viuen junts en una mateixa carpeta)
Quan comencis a traduir, veuràs que el funcionament és molt senzill: a una banda tens les cadenes en anglès, i a l’altre segurament estan en blanc. A sota hi ha l’editor, que és on has d’escriure la traducció de cada fragment. Així és com queda quan vas avançant:
Ostres, però això és molta feina!
Doncs sí, és feina.
Igualment, pensa que quan estàs emmig d’un projecte i t’adones que falten coses per traduir el més segur és que puguis fer “trampa”: no cal que tradueixis totes les cadenes, només les que vegis que s’han de mostrar a l’usuari.
Si obres el cercador del Poedit, li podràs escriure exactament el terme o la frase que necessites traduir. Per exemple: busques Leave a Comment, Read More, By, etc.; ho tradueixes, ho pujes al seu lloc i ja està.
NOTA
Els dos arxius, .po
i .mo
són importants; tu, però, només has d’editar el .po
(o sigui que, si has de fer canvis, aquest és el que has d’obrir); l’altre es genera automàticament cada vegada que deses.
Recorda’t de pujar sempre els dos, però.
BONUS TRACK
Ara que ja entens la mecànica… hi ha una extensió de WordPress perfecta per posar-te a traduir directament des del mateix WordPress: Loco Translate.
Amb això no hauràs de baixar ni pujar arxius; des de l’administrador podràs controlar i fer les traduccions que calguin de qualsevol dels arxius de localització del projecte (tema, extensions… tot en un mateix lloc).
ricard ha dit
gràcies. Ets un sol.
ricard ha dit
Tinc un dubte: com crear jo la meva pròpia cadena. Entro a la’rxiu php en qüestió i allà on m’interessa hi escric… què exactament?
I, un cop guardat el php, la cadena ja sortirà automàticament a l’admin de Loco Translate, a punt de ser traduïda?
luba lee ha dit
:)
Perquè una cadena sigui traduïble l’has d’embolicar en aquesta funció: __()
Aquí l’explicació completa
ricard ha dit
muaks!
Marti ha dit
Hola, estic desenvolupant un lloc web Woocommerce en Català. Tinc asignat aquest idioma i m’he descarregat l’extensió Loco Translate per que veig molts strings encara en anglés.
Sembla ser (pel que diu el desenvolupador) que aquesta extensió te problemes per traduir Woocommerce. Pero el tema no es aquest ara mateix. L’extensió SÍ que detecta els Strings traduits. Per exemple: ‘Your card is currently empty’ apareix com ‘La teva cistella esta buida’… pero al lloc web continua apareixent en anglés.!!
Alguna idea de que pot està fallant?
Gracies!
luba lee ha dit
Ei, Martí, he estat buscant per internet una mica. Sí, WooCommerce té problemes amb Loco Translate. He fet proves, però, en una nova instal·lació (tot actualitzat a la última versió) i a mi em funciona. Segur que la cadena que comproves és la que has traduït? Molt sovint hi ha cadenes casi idèntiques. Una altra opció és que la cadena vingui del tema i l’estiguis traduïnt al plugin –o a l’inversa–… Igualment:
1) Assegura’t que téns definit el català com a idioma del lloc (entenc que només té un idioma?)
2) Assegura’t que el teu tema és compatible amb WooCommerce (si no ho és et sortirà un avís, crec que a la pàgina de plugins)
3) Confirma’m això: has creat un nou nou arxiu per a l’idioma català a Loco, has traduït strings; comproves que l’arxiu està a
wp-content/plugins/woocommerce/i18n/languages/
i es diu woocommerce-ca.mo (aquest és el que WP agafa; el .po és per als traductors): assegura’t que a Settings de Loco li téns dit Use built-in MO compilerA veure si ho arreglem :)
luba lee ha dit
ACTUALTZACIÓ: Acabo de fer una altra prova
A Manage translations de Loco fés clic a la traducció que vols editar, i:
1) Un cop dins fés clic al botó Sync
2) Busca altra vegada la cadena i assegura’t que està traduïda. Si no ho està, l’hauràs de tornar a fer. Desa.
Ara sí que t’hauria de sortir traduït al front end
Marti ha dit
Hola,
Be, jo crec que el problema que tinc es ‘d’ordre superior’.
La majoria dels strings que vull traduir de fet Ja estan traduits!. Ho he comprovat obrint l’arxiu woocommerce-ca.pot des del meu CPanel. Simplement NO tots es mostren a la web.
Tot el que dius que comprovi ho tinc correcte. A mes, he provat de fer una nova traducció des de Loco: permet fer el Sync pero no permet Desar (diu: forbiden).
En fi… Moltes gracies igualment!
Marti
luba lee ha dit
Ostres, què estrany!
Prova de fer això:
1) Vés a
wp-content/plugins/woocommerce/i18n/languages/
i llença –guarda-te’ls a l’ordinador, per si de cas– els arxius de la traducció catalana2) Descarrega’t els arxius amb la meva traducció del WooCommerce i puja’ls a
wp-content/languages/plugins/
3) Refresca-ho tot, i mira si ara ho llegeix bé. Si falten cadenes prova a anar a Loco, fés Sync, etc. i tradueix-les i desa.
A veure què tal.
Marti ha dit
Doncs no ha funcionat :(
Ni apareix la traducció en la web ni puc salvar res des de Loco. Crec que necessitaré algun expert per que s’ho miri ‘in situ’. No deu ser un problema ni de la teva traducció ni de Loco. En algun foro diuen potser un problema del Apache (??)
Gracies!!
luba lee ha dit
Em sap greu, Martí. Si ho soluciones i ens expliques què era potser ens servirà per una altra. Ànim!
luba lee ha dit
Mira que tinguis permis per escriure a la carpeta en qüestó (la d’idiomes)…
Marti ha dit
Si tinc els permissos. Estic investigant que pot estar passant.. He provat de ‘forçar l’actualització de la traducció’ des de Estat del sistema – Tools de woocomerce i res… en fi, Sí ja t’expliaré si ho puc resoldre.
m.
luba lee ha dit
Jo, quin misteri.. He trobat això, però…
Marti Masvidal ha dit
Ui, pensava que t’havia contestat i s’ha perdut..
En fi, ho torno a escriure.
Si, seguint el fil del Desenvolupador de Loco, aquest pot no ser compatible amb WordPress pel Tallafocs de molts servidors Web: Mod Securiy
He demanat al meu servidor que el deshabilites i em dones permis per al Error que apareix al Loco: “You don’t have permission to access /wp-admin/admin-ajax.php on this server”. (No se si al final son la mateixa cosa)
Ho ha fet i ara Loco funciona!! Puc modificar un string i desar-ho.
He fet la prova amb un string JA TRADUIT i funciona!
PERO resulta que el problema inicial que tenia es que no tots els strings traduïts apareixen a la web (de fet la teva traducció ja em va be en un 90%). Per exemple un string tipic com ‘Update cart’, ja traduit com ‘Actualizar carret’ segueix apareixent en anglés… Que raro…
Marti
luba lee ha dit
Mmmmm, ostresss. I has provat de fer un Sync, ara? Prova-ho, a veure què et diu i torna a buscar una cadena, traduir-la i desar, a veure.
Si no, l’únic que se m’acudeix és que aquests strings en realitat provinguin d’un altre lloc, i no de WooCommerce: poden venir del tema, d’algun altre pluguin…
Finalment, a mi m’ha passat, hi ha vegades que no sé per què en un arxiu .po no hi ha totes les cadenes (errors del programador, errors del programa…). A veure si hi ha sort!