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
Tweet

More Decks by Caspar Hübinger

Other Decks in Programming

Transcript


  1. View Slide

  2. View Slide

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

    View Slide

  4. Learned one word:

    View Slide

  5. (supposedly fits in almost every situation)
    https://twitter.com/wordpress_fr/status/421565255362150400

    https://twitter.com/patriciabt70/status/421670222903250944
    “Putain”

    View Slide


  6. View Slide

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

    View Slide

  8. 2003

    View Slide

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

    View Slide

  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 […]”

    View Slide

  11. Let’s do it.
    “If you’re serious about forking b2 I would
    be interested in contributing.”

    View Slide

  12. View Slide

  13. 2014

    View Slide

  14. 21%, YAY!

    View Slide

  15. …in one language per site?

    View Slide

  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.

    View Slide

  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.

    View Slide

  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!"

    View Slide

  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!"

    View Slide

  20. Authored content

    in multiple languages?

    View Slide

  21. the_post(); // duh.

    View Slide

  22. The Multilingual Blogging
    Software Dilemma

    View Slide

  23. The Multilingual Blogging
    Software Dilemma

    View Slide

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

    View Slide

  25. function multilingual_site() {
    return 'not use WordPress'; // putain
    }
    !
    function multilingual_wordpress_site() {
    return 'depend on a plugin'; // putain encore
    }

    View Slide

  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 […]”

    View Slide

  27. –random international user
    “Make it a core feature!!”

    View Slide

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

    View Slide

  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.

    View Slide

  30. The Multilingual Core Feature
    #enquelquesorte

    View Slide

  31. WordPress Multisite
    /**
    * 1 installation
    * multiple sites = multiple languages
    */
    function multilingual_wordpress_site() {
    return 'use core with multisite'; // YAY, putain!
    }

    View Slide

  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.

    View Slide

  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).

    View Slide

  34. –you
    “What about media libraries?”

    View Slide

  35. –Multisite
    “Putain all the things!”

    View Slide

  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.

    View Slide

  37. –you
    “Duplicated media libraries SUCK!!”

    View Slide

  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.

    View Slide

  39. Plugin Candy
    Want some?

    View Slide

  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.

    View Slide

  41. View Slide

  42. View Slide

  43. View Slide

  44. View Slide

  45. View Slide

  46. View Slide

  47. View Slide

  48. View Slide

  49. View Slide

  50. View Slide

  51. View Slide

  52. View Slide

  53. View Slide

  54. View Slide

  55. View Slide

  56. View Slide

  57. View Slide

  58. View Slide

  59. View Slide

  60. View Slide

  61. Wrap-up

    View Slide

  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.

    View Slide

  63. What’s not to like?!

    View Slide

  64. Merci! <3

    View Slide

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

    marketpress.com
    inpsyde.com

    View Slide

  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

    View Slide