Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The Multilingual Blogging Software Dilemma (and ways to solve it)

The Multilingual Blogging Software Dilemma (and ways to solve it)

Session at WordCamp Paris (#wcparis) on WordPress Multisite for authored content in more than one language. Plugin candy: Multilingual Press (free and Pro).


Caspar Hübinger

January 18, 2014

More Decks by Caspar Hübinger

Other Decks in Programming


  1. <prologue>

  2. None
  3. in_array( $me, $french ); // very false

  4. Learned one word:

  5. (supposedly fits in almost every situation) https://twitter.com/wordpress_fr/status/421565255362150400
 https://twitter.com/patriciabt70/status/421670222903250944 “Putain”

  6. </prologue>

  7. The Multilingual Blogging Software Dilemma …and ways to solve it.

  8. 2003

  9. http://ma.tt/2003/01/the-blogging-software-dilemma/ “The Blogging Software Dilemma”

  10. What to do? “[…] forward compatibility has lately been in

    my mind […] My logging software hasn’t been updated for months, and the main developer has disappeared […] could use the existing codebase to create a fork […]”
  11. Let’s do it. “If you’re serious about forking b2 I

    would be interested in contributing.”
  12. None
  13. 2014

  14. 21%, YAY!

  15. …in one language per site?

  16. WordPress* in your language • http://codex.wordpress.org/WordPress_in_Your_Language • http://codex.wordpress.org/Translating_WordPress • http://make.wordpress.org/polyglots/

    *WordPress: core, themes, plugins. Not: content.
  17. Language files /languages/de_CH.mo /languages/de_CH.po /languages/de_DE.mo /languages/de_DE.po /languages/fr_FR.mo /languages/fr_FR.po …etc.

  18. Message-level translation __( 'Putain ce que j’ai faim!', 'domain' );

    _e( 'Putain ce que j’ai faim!', 'domain' ); ! #: some-file.php:1 msgid "Putain ce que j’ai faim!" msgstr "Gosh, I’m hungry!"
  19. Provide context _x( 'Putain ce que j’ai faim!', 'Paris', 'domain'

    ); ! #: some-file.php:1 #, php-format msgctxt "Paris" msgid "Putain ce que j'ai faim!" msgstr "Champagne for all!"
  20. Authored content
 in multiple languages?

  21. the_post(); // duh.

  22. The Multilingual Blogging Software Dilemma

  23. The Multilingual Blogging Software Dilemma

  24. Def: dilemma function faire_A() { return 'putain'; } ! function

    faire_B() { return 'putain encore'; }
  25. function multilingual_site() { return 'not use WordPress'; // putain }

    ! function multilingual_wordpress_site() { return 'depend on a plugin'; // putain encore }
  26. What to do? “[…] forward compatibility has lately been in

    my mind […] My logging software hasn’t been updated for months, and the main developer has disappeared […] could use the existing codebase to create a fork […]”
  27. –random international user “Make it a core feature!!”

  28. –random core developer “Putain, no!”

  29. Multilingual WordPress • Not a core feature, because multilingual content

    is an edge case. • Can be achieved with a plugin. → Forward compatibility depends on plugin developers. → When plugin is disabled, content must still work.
  30. The Multilingual Core Feature #enquelquesorte

  31. WordPress Multisite /** * 1 installation * multiple sites =

    multiple languages */ function multilingual_wordpress_site() { return 'use core with multisite'; // YAY, putain! }
  32. ✔ Clean, SEO-friendly URLs. ✔ Performance as good as WordPress

    gets, no extra rewrites. ✔ Varying plugins[, themes, users, custom post types] per language. ✔ Rock-solid, because it’s part of core. ✔ Future-proof, because it’s part of core and wordpress.com uses it.
  33. Setup Multisite • Create a network. http://codex.wordpress.org/Create_A_Network • Create a

    site for each language inside the network • That’s it, start blogging! ← Your site is multilingual here. • Core, theme, plugins: localized by language files (message based). • Authored content: localized by author(s).
  34. –you “What about media libraries?”

  35. –Multisite “Putain all the things!”

  36. Media @ Multisite • Shared media libraries don’t exist in

    WordPress. • WordPress does not allow for multiple post-to-post relationships. • Attachments and post images are unique and need to be physically present in the media library of the site their parent post belongs to.
  37. –you “Duplicated media libraries SUCK!!”

  38. Media libraries are key • Meta data (alt-text, title, description/caption)

    should be translatable. • Audio files can be recorded/overdubbed in multiple languages. • Videos can have subtitles or overdubs. → Unique* media libraries are key for multilingual content! *Physical assets could/should be assignable to multiple post objects.
  39. Plugin Candy Want some?

  40. • Connect translated posts[, pages, custom post types]. • Display

    links for available languages on singular and archive pages. • Redirect based on browser’s language settings. • Create/edit translation in same edit screen as original post. • Automatically duplicate post-image to media libraries of translated posts. • Author biographic info in all languages. • Choose back-end language independently of front-end. • Duplicate an entire site into a new site/language.
  41. None
  42. None
  43. None
  44. None
  45. None
  46. None
  47. None
  48. None
  49. None
  50. None
  51. None
  52. None
  53. None
  54. None
  55. None
  56. None
  57. None
  58. None
  59. None
  60. None
  61. Wrap-up

  62. Multilingual WordPress Multisite ✔ Core feature. ✔ Easy setup. ✔

    No extra plugin needed. ✔ Rock-solid performance. ✔ Hassle-free maintenance. ✔ Future-super-proof. ✔ Candy if you want some.
  63. What’s not to like?!

  64. Merci! <3

  65. Caspar Hübinger @glueckpress ! glueckpress.com
 marketpress.com inpsyde.com

  66. Photo Credits • Matt Mullenweg: http://ma.tt/2011/05/balloon-ride/mcm_9050/ (as advised on http://ma.tt/about/)

    • Mike Little: http://mikelittle.org/ • Caspar Hübinger: http://stil-etage.de