51
Effective Localization Crowdsourcing

Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

  • Upload
    others

  • View
    15

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

Effective Localization Crowdsourcing

Page 2: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

We are...

Ratnadeep Debnath

from Transifex

[email protected]; @rtnpro

Mahay Alam Khan

from Ankur

[email protected]; @maktrix

Page 3: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get
Page 4: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

You will like to see your App in Malaysian

Page 5: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

Internationalization

Internationalization is the process of getting a system ready so that it can

support multiple languages.

Internationalization > i18n

Page 6: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

Localization

Adaptation of software for non-native environments

Translation into different languages

localization > l10n

Page 7: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

Facts...

95% people on earth with native language other than English

50% of internet users do not speak English at all

120 published languages on wordpress.com

150 Wikipedia languages with > 1500 articles

Page 8: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

Develop for aninternational

audience

Page 9: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

Workflow

λ Mark translatable strings, exportλ Release string freezeλ Translator: VCS checkoutλ Translate w/ specialized toolsλ Get 'em files back

− SSH ☠, Email ☢, Tickets ☹λ For every friggin' release

Page 10: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

How does L10n work(from the gettext manual)

Original C Sources ───> Preparation ───> Marked C Sources ───╮ │ ╭─────────<─── GNU gettext Library │ ╭─── make <───┤ │ │ ╰─────────<────────────────────┬───────────────╯ │ │ │ ╭─────<─── PACKAGE.pot <─── xgettext <───╯ ╭───<─── PO Compendium │ │ │ ↑ │ │ ╰───╮ │ │ ╰───╮ ├───> PO editor ───╮ │ ├────> msgmerge ──────> LANG.po ────>────────╯ │ │ ╭───╯ │ │ │ │ │ ╰─────────────<───────────────╮ │ │ ├─── New LANG.po <────────────────────╯ │ ╭─── LANG.gmo <─── msgfmt <───╯ │ │ │ ╰───> install ───> /.../LANG/PACKAGE.mo ───╮ │ ├───> "Hello world!" ╰───────> install ───> /.../bin/PROGRAM ───────╯

Page 11: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

Many languages...

Many i18n methods...

Let's consider Django i18n and l10n

Page 12: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

from gettext import gettext as _

string = _(u'A sentence to translate.')

Python & Gettext

Page 13: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

from django.utils.translation import ugettext_lazy as _

class Person(models.Model): name = models.TextField( _('Name'), help_text=_('First & last name'), )

Django models

Page 14: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

{% load i18n %}

{% trans “Person:” %}

Django templates

Page 15: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

{% load i18n %}

{% blocktrans count ppl|length as num %} Person:{% plural %} People ({{ num }}):{% endblocktrans %}

Django templates

Page 16: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

# Pythonxgettext -L Python sample.py -d sample

# Djangodjango-admin makemessages -l endjango-admin compilemessages -l en

Page 17: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

Malay PO file

"Project-Id-Version: MyProject\n""Plural-Forms: nplurals=1; plural= 0 ..."

#: foo/templates/bar.html:180msgid "Maintainer:"msgid_plural "Maintainers:"msgstr[0] ""

Page 18: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

Traditional Model

Page 19: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

Pain points

λ Mark translatable strings, exportλ Release string freezeλ Translator: VCS checkoutλ Translate w/ specialized toolsλ Get 'em files back

− SSH ☠, Email ☢, Tickets ☹λ For every friggin' release

Page 20: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get
Page 21: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

Crowdsourcing

- outsourcing tasks to a distributed group of people.

- occur both online and offline

- difference is outsourced to an undefined public rather than a specific body, such as paid employees.

Page 22: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

Pro workflows

λ Emails to translation agenciesλ Build own L10n platformλ Give away control

− Data (TM) managed by supplier− Budget dictated by agent− Translators

Page 23: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

SaaS productfor quality localizationof dynamic contentfrom social marketplace of translators

Built for developers, open-source

Page 24: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get
Page 25: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

Traditional Model

Page 26: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

A smarter way

Page 27: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

WIKIPEDIAMeeGo

Page 28: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

What does it achieve?

λ Automated workflow for developersλ Integration pointsλ Short release cyclesλ Easy to use translation toolsλ High qualityλ Engagement with own userbase

Page 29: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

In numbers

λ 17,000 developers & translatorsλ 3,000 productsλ End-user audience of 100M+?λ 250,000 translated words per day

Page 30: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

History2007: Initial development of Transifex sponsored by

Google under its "Google Summer of Code" program

2008: Fedora adopts Transifex as its official Localization platform

2010: Indifex is chosen by Intel and Nokia to manage the localization of MeeGo

2011: Tranisfex is used by 2,000 open source projects and 10,000 users. More than 5 million words have been translated, reaching an audience of more than 30 million people!

Late 2011: Indifex will offer support for the localization of proprietary projects too. Release of an Enterprise-level product, both in self-hosted and managed solutions.

Page 31: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

Technologies

λ Django & Pythonλ PostgreSQL, MongoDB, Redisλ Celery & AMQPλ Django-addonsλ Gitλ requirements.txt: 58 lines

Page 32: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get
Page 33: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get
Page 34: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

$ pip install transifex-client

$ tx set --auto-local -r myproj.myres --source-lang en 'translations/<lang>.po'

Page 35: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

[main]host = https://www.transifex.net

[django.core]file_filter = .../<lang>/.../django.posource_file = .../en/.../django.posource_lang = entype = PO

[django.contrib-admin]...

Page 36: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

$ tx statusdjango -> core (1 of 16)

Translation Files: - en: django/../en/../django.po (source) - ar: django/../ar/../django.po

django -> contrib-admin (2 of 16) - ...

Page 37: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get
Page 38: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

$ tx push --sourcePushing for resource django.core:Pushing source file (.../en/.../django.po)

$ tx pull --translationsPulling translations for resource django.core (source: en.po) -> el: .../el/.../django.po -> gu: .../gu/.../django.po ...

$ tx pull --minimum-perc=90 --mode=reviewed

Page 39: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get
Page 40: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get
Page 41: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

Workflow automation

λ Continuous integrationλ VCS commit hooksλ API to translate DB contentλ Services on Github & Bitbucketλ Postbacks

Page 42: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

curl -i -L-X GET http://www.transifex.net/api/2/.../stats/

HTTP/1.1 200 OK{ "en": { "completed": "93%", "last_commiter": "mpessas", "translated_entities": 1017, "translated_words": 6160, "untranslated_words": 21, },}

Page 43: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

Professional translators

λ Crowdsourcing or professionals, hybrid

λ Quality through proofreadingλ Translation Memoryλ Glossaryλ XLIFF standard format

Page 44: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get
Page 45: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get
Page 46: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get
Page 47: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get
Page 48: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

Contribute...

Page 49: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get

Thank you!

Questions?

Page 50: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get
Page 51: Effective Localization Crowdsourcing · Workflow λ Mark translatable strings, export λ Release string freeze λ Translator: VCS checkout λ Translate w/ specialized tools λ Get