Meertaligheid (WordPress)

Uit De Vliegende Brigade
(Doorverwezen vanaf Taalmodules (WordPress))
Ga naar: navigatie, zoeken

Enkele aspecten rondom meertaligheid & WordPress:

  • Site language: De taal van WordPress Core
  • Beheertaal: aka. admin-taal & back-end language. Standaard hetzelfde als de site-taal, maar liever niet
  • Plugins: Vertalingen van plugins
  • Meertalige content

Best practices - Voorjaar 2018

  • Forceer direct download
  • Zorg dat de mappen wp-content en wp-content/languages de juiste rechten hebben, zodat WordPress taalbestanden kan downloaden en mappen kan aanmaken
  • Installeer Polylang
  • Configureer site language naar de default-taal van de site
  • Configureer beheertaal via Polylang
  • Configureer gebruikers-talen via Polylang, ook als het om maar één taal gaat (anders dan Engels)
  • Verifiëer via Dashboard » Updates dat de vertalingen up-to-date zijn, en dat deze anders automatisch binnengehengeld worden.
Na installatie Polylang kun je je eigen gebruikerstaal configureren. Precies wat ik zoek om Engels als beheertaal te configureren, en geen aparte plugin nodig!
Eind goed - al goed

Automatische vertaal-updates

Vertaalupdates van alle soorten objecten (plugins? WordPress Core? Thema's?) kunnen automatisch binnengehengeld worden. Uitleg van [1]:

WordPress will only prompt you for your FTP connection information while trying to install 
plugins or a WordPress update if it cannot write to /wp-content directly. Otherwise, if your 
web server has write access to the necessary files, it will take care of the updates and 
installation automatically. This method does not require you to have FTP/SFTP or SSH access, 
but it does require your to have specific file permissions set up on your webserver.

It will try various methods in order, and fall back on FTP if Direct and SSH methods are 
unavailable.

https://github.com/WordPress/WordPress/blob/4.2.2/wp-admin/includes/file.php#L912

WordPress will try to write a temporary file to your /wp-content directory. If this succeeds,
it compares the ownership of the file with its own uid, and if there is a match it will allow 
you to use the 'direct' method of installing plugins, themes, or updates.

Now, if for some reason you do not want to rely on the automatic check for which filesystem
method to use, you can define a constant, 'FS_METHOD' in your wp-config.php file, that is 
either 'direct', 'ssh', 'ftpext' or 'ftpsockets' and it will use that method. Keep in mind 
that if you set this to 'direct', but your web user (the username under which your web server 
runs) does not have proper write permissions, you will receive an error.

In summary, if you do not want to (or you cannot) change permissions on wp-content so your 
web server has write permissions, then add this to your wp-config.php file:

define('FS_METHOD', 'direct');
Nieuwe vertalingen beschikbaar? Dat zie je via Dashboard
Ook als is map wp-content schrijfbaar voor derden, WordPress blijft om FTP-servergegevens vragen
Eigen aanpassing wp-config.php om direct download te forceren
Tjakka: Vertalingen zijn bijgewerkt
Map wp-content/languages/plugins is verreikt met hello-dolly- & woocommerce-bestanden

Site language

  • Als je WordPress download en installeert vanaf http://wordpress.org, gaat dat standaard in het Engels. Dat is de standaard site language (om verwarring te voorkomen, noem ik het site language)
  • Je kunt WordPress ook downloaden in een specifieke taal. Zelfs als je dat niet van plan bent, kunnen die distributies handig zijn, omdat je daarmee een bijgewerkte set .mo-bestanden meekrijgt (zie verderop)
  • Vanaf WordPress 4.0, kun je de taal gedurende de installatieprocedure aanpassen
  • Tot WordPress 4.0, moest je de site language instellen via het gebruikelijke configuratie-bestand. Daar schenen ook plugins voor te bestaan
  • Vanaf WordPress 4.0 kan dat via de interface. Zie hieronder.

Site language aanpassen - Vanaf WordPress 4.0

Vanaf WordPress 4.0, kun je de site language instellen via Settings » General. Daarvoor moest ik eerst twee dingen aanpassen:

  • Force direct download: Via het configuratie-bestand de downloadmethode forceren naar direct download
  • Mappermissies aanpassen: Zie hieronder.
Site language vind je onder Settings » General
Eigen aanpassing wp-config.php om direct download te forceren: define('FS_METHOD','direct');

Map-permissies aanpassen

Als de rechten op wp-content en/of languages niet goed staan, kun je de taal wel aanpassen, maar die aanpassing blijft niet behouden. chmod -R 777 wp-content werkt in ieder geval, maar een subtielere aanpak is gewenst. Subtieler doch vooralsnog experimenteel (vanaf de root van een installatie):

sudo chmod -R o+rw *
chmod o+rwx wp-content
chmod o+rwx wp-content/languages

Site language-bestanden downloaden

Hierboven werden diverse mogelijkheden opgesomd om beheertaal-bestanden te verkrijgen. Waarschijnlijk is dit allemaal achterhaald: Na configureren force download-methode, gaan downloads van taalbestanden vanzelf. Anyhow, hierbij in detail twee van deze methodes.

nl_NL.mo downloaden - WERKT NIET

Deze methode werkt niet: Om een of andere reden is het bestand niet compleet. Deze uitleg hier behouden uit oogpunt van compleetheid:

  • Per plugin, theme, of voor WordPress-als-geheel, heb je een zogenaamd mo-bestand nodig, oftewel een Machine Object Messsage Catalog-bestand
  • Maak map wp-content/languages aan
  • Download het gezochte mo-bestand vanaf https://i18n.svn.wordpress.org/ naar deze map
  • Pas de taal aan onder Settings » General » Site Language
  • Let op: Dit verandert inderdaad de beheer-taal, misschien ook wat gebruikers te zien krijgen, maar daar is het niet voor bedoeld: Daarvoor moet je waarschijnlijk met plugins voor meertaligheid aan de slag.

Overzicht Nederlandstalige mappen & bestanden:

Ik denk dat dit WordPress core betreft (NOGMAALS: INCOMPLEET):

Bestanden overnemen uit NL-distributie

Dit werkt en is vermoedelijk betrouwbaar. Zie casus april 2018 hieronder.

Casus (april 2018)

  • Site geïnstalleerd mbv. script, gewoon in het Engels. Onder Settings kan ik alleen English (United States) selecteren
  • Map wp-content/languages aangemaakt

Mbv. download nl_NL.mo

  • nl-NL.mo gedownload vanaf hier naar map languages
  • Scherm Settings ververst. Nu kan ik ook Nederlands kiezen.
  • Ik ben verbaasd hoeveel onvertaald blijft
  • Als ik de naam van taalbestand nl_NL.mo verander in bv. nl_NL_2.mo (om bv. er een tweede taalbestand naast te zetten), schakelt de site terug naar Engels.
Ik ben verbaasd hoeveel er onvertaald is

Mbv. Nederlandstalige WordPress-distributie

  • Ik kan maar geen nl_NL.mo-bestand downloaden vanaf WordPress. Daarom de complete Nederlandstalige distributie gedownload. Interessant om de mapstructuur onder languages te zien
  • De vertalingen zijn veel beter → Volgende keer weer op deze manier doen.
Map-structuur languages in de Nederlandstalige WordPress-distributie
Ook al is het nl_NL.mo-bestand kleiner, de vertaling is wél completer. Misschien omdat deze is verspreid over meerdere bestanden

Beheertaal

Ik vind het rete-irritant als de 'achterkant' van een site in het Nederlands is, omdat ik de terminologie vooral in het Engels ken en gebruik. Tegelijkertijd worden gebruikers ook blootgesteld aan de site language en daarom belangrijk om deze wél aan te passen aan de taal van de gebruikers. De oplossing: Aparte beheertaal instellen. Daar zijn oa plugins voor.

Plugins:

Daarnaast vermoed ik dat plugins voor meertaligheid ook deze functie bevatten, wo. Polylang.

Plugin-vertalingen - Casus WooCommerce (april 2018)

  • De beheertaal is Nederlands. De site is niet meertalig
  • WooCommerce geïnstalleerd middels wp plugin install woocommerce --activate
  • Wizard doorlopen - Geen taaloptie en nog steeds in het Engels
  • Map voor WooCommerce-vertalingen: wp-content/languages/woocommerce/ - Zoals verwacht [2]
Direct na installatie WooCommerce: De plugin is Engelstalig. Ook de mappenstructuur onder languages is niet veranderd
Plugins zouden zelf hun vertalingen moeten binnehengelen...
Je kunt WooCommerce-vertaling niet meer geforceerd downloaden via de interface

Uiteindelijke oplossing:

  • Zie eerder in dit artikel: Force direct download
  • Rechten wp-content aangepast
  • Dashboard → Update.

Zelf vertalingen beheren

  • Loco Translate → Werkt perfect, vooral als het om beperkte hoeveelheid strings gaat. De plugin genereert zelf .mo- & .po-bestanden - Superhandig
  • Poedit - Vermoedelijk prettiger voor grotere hoeveelheden strings.

Plugins meertalige content - Hoe het werkt

Deze Codex-pagina legt de verschillen tussen de verschillende modules uit op een manier die ik lastig vind om te begrijpen. Komt-ie:

Per taal een aparte posting

Sommige modules, waaronder WPML, xili-language, Polylang, Bobo en Sublanguage, hebben voor elke taal een aparte versie van een posting. Dit is vergelijkbaar met hoe Drupal werkt: Elke posting is een eigen object, en die moet je aan elkaar linken.

Nadelen

  • Ingrijpend: Overige modules moeten hier nogal rekening mee houden
  • Onoverzichtelijk: In Drupal betekende dit een enorme groei van het aantal objecten. Dat werd snel erg onoverzichtelijk. Zeker als pagina's in verschillende talen toch dezelfde naam hadden (bv. Hotels)
  • Gepiel: In Drupal was ik eindeloos vertalingen met elkaar aan het verbinden
  • Onoverzichtelijk (2): Ik kon in Drupal niet gemakkelijk vertalingen naast elkaar zien. Van vertaling-naar-vertaling kostte al twee twee of drie klikken
  • Er kan veel kapot gaan

Voordelen

  • Heel modulair
  • Na verwijdering van de betreffende module, zijn de postings ongewijzigd.

Alle vertalingen in één posting

Op database-niveau kun je dit gemakkelijk terugvinden

Andere modules, wo. qTranslate-X en WPGlobus, beheren de verschillende vertalingen van een post, allemaal binnen één object. Mbv. shortcodes, zijn de verschillende versies van elkaar gescheiden. Dit kun je zien als de betreffende module uitzet: Opeens bevat een posting tekst in verschillende talen, gescheiden door shortcodes.

Voordelen

  • Eénvoudig: Geen additionele tabellen, en weinig additionele instellingen
  • Intuïtief: Vertalingen zijn altijd bij elkaar
  • Goed voor search: Je vindt altijd het gezochte artikel, onafhankelijk van de taal waarin je zocht

Nadelen

  • Als je de betreffende module verwijderd, worden de postings een zooitje
  • Permalinks zijn niet te vertalen
  • Je hebt additionele plugins nodig voor sommige andere plugins of themes. WooCommerce is daar een voorbeeld van: Met alleen qTranslate-X, is WooCommerce niet taal-aware. Mogelijk is dit een nadeel van alle methodes (muv. multi-site-oplossingen)
  • In mijn ervaring werkt dit tot op heden niet voor de WooCommerce shoppagina.

Alle vertalingen in aparte WordPress-instanties

Modules zoals Multisite Language Switcher, Multilingual Press en Zanto, maken van een site een multisite met een eigen taal per site. Interessant!

Externe vertalingen

Oplossingen zoals Google Translate zorgen voor externe vertalingen, die als een laag over een site worden gelegd. Meestal computervertalingen, maar sommige modules zeggen dat ze gebruik maken van oa. crowdsourcing voor vertalingen.

Plugins meertalige content

Inventaris

  • Bobo - posting-per-taal
  • Google Language translator [3] - Externe vertalingen
  • GTS Translation Plugin [4] - Externe vertalingen
  • Lingotek [5] - Externe vertalignen
  • Multilingual Press - Multisite-oplossing
  • Multisite Language Switcher - Multisite-oplossing
  • Polylang - posting-per-taal - Werkt samen met WooCommerce & Hoshi (theme)
  • qTranslate-X - Plugin die ik het meest tegenkom. Er bestaan additionele plugins voor integratie met oa. Yoast en WooCommerce
  • Sublanguage - posting-per-taal
  • WooCommerce Multilingual 3 - Een meta-plugin gebaseerd op WMPL
  • WPGlobus - Alle talen in één posting. Er bestaan additionele (betaalde) plugins voor integratie met oa. WooCommerce [6]
  • WPML - Betaald + posting-per-taal
  • xili-language - posting-per-taal
  • Zanto - Multisite-oplossing.

Criteria

  • Geschikt voor WooCommerce (vereist)
  • Geschikt voor Hoshi (vereist)
  • Geschikt voor Visual Composer (vereist)
  • Alle-vertalingen-in-één post (nice-to-have).

Selectie

  • Polylang → Uiteindelijke keuze (eind 2017, op advies van Milou) → Polylang (WordPress-plugin)
  • WPML
  • WPGlobus
  • qTranslate-X - Lijkt te conflicteren met Hoshi.

Bronnen