Transcript
Page 1: Översättning av django-program

Översättning i DjangoMikael Moutakis

[email protected]

Page 2: Översättning av django-program

Internationalizationi18n

Page 3: Översättning av django-program

LocalizationL10n

Page 4: Översättning av django-program

Vad?

Page 5: Översättning av django-program

Varför?

Page 6: Översättning av django-program

Det minst viktiga först ...

Page 7: Översättning av django-program

. . . mjukvaran!

Page 8: Översättning av django-program

Hur funkar tekniken?

1. Märk ut pythonkod och templatekod

2. Extrahera

3. Översätt

4. Kompilera och installera

5. Starta om server

Page 9: Översättning av django-program

... Steg 0. use_I18N=True

MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware',)

TEMPLATE_CONTEXT_PROCESSORS += ( “django.core.context_processors.i18n”,)

LANGUAGE_COOKIE_NAME="django_language"LANGUAGE_CODE = 'sv'

Page 10: Översättning av django-program

1.a Märk ut pythonkod

from django.utils.translation import ugettext_lazy as _

class Calendar(models.Model):

color = models.CharField(_("color"))

Page 11: Översättning av django-program

1.a Märk ut pythonkod

• ugettext_noop

• ugettext

• ugettext_lazy

• ungettext

• ungettext_lazy

Page 12: Översättning av django-program

Vara lat?

• ugettext_lazy för model.py

• När textvärdet hämtas

• ugettext för resten

• När funktionen anropas

Page 13: Översättning av django-program

ungettext och ungettext_lazy

from django.utils.translation import ungettext

def hello_world(request, count):

page = ungettext('there is %(count)d object', 'there are %(count)d objects', count) % {

'count': count,

}

return HttpResponse(page)

Page 14: Översättning av django-program

1.b templatekod{% load i18n %}

...

<h1>{% trans “Kanelbulle” %}</h1>

<p>{% blocktrans %}Hej, tomtegubbar slå i glasen, \n

och låt oss lustiga vara.

{% endblocktrans %}</p>

Page 15: Översättning av django-program

1.b templatekod

<h1>{% trans “Kanelbulle” %}</h1>

<h1>{% trans “Kanelbulle” noop %}</h1>

Page 16: Översättning av django-program

1.b templatekod

<p>{% blocktrans with publ_date|date as local_date %}

Idag är det {{local_date}}. Mac rular fett.

{% endblocktrans%}</p>

Page 17: Översättning av django-program

1.b templatekod

<p>{% blocktrans with publ_date|date as local_date and spam as skinka%}

Idag är det den {{local_date}}. Mac rular fett.

{{skinka}}, {{skinka}}, {{skinka}}

{% endblocktrans%}</p>

Page 18: Översättning av django-program

1.b templatekod{% blocktrans count list|length as counter %}

There is only one {{ name }} object.

{% plural %}

There are {{ counter }} {{ name }} objects.

{% endblocktrans %}

Page 19: Översättning av django-program

2. Extrahera texten

cd /path/to/myproject

(cd /path/to/myapp)

django-admin.py makemessages -l sv

django-admin.py makemessages -l en

django-admin.py makemessages -l de

Page 20: Översättning av django-program

Mappstruktur

Page 21: Översättning av django-program

2. Extrahera texten

cd /path/to/myproject

(cd /path/to/myapp)

mkdir -p locale/sv/LC_MESSAGES

django-admin.py makemessages -l sv

Page 22: Översättning av django-program

django.pomsgid ""msgstr """Project-Id-Version: \n""Report-Msgid-Bugs-To: \n""POT-Creation-Date: 2008-10-12 19:21+0200\n""PO-Revision-Date: 2009-04-18 19:25+0100\n""Last-Translator: Mikael Moutakis <[email protected]>\n""Language-Team: \n""MIME-Version: 1.0\n""Content-Type: text/plain; charset=UTF-8\n""Content-Transfer-Encoding: 8bit\n"

#: django_admin_overrides/admin/base.html:25msgid "Welcome,"msgstr "Välkommen,"

#: django_admin_overrides/admin/base.html:25#: templates/kousaiadmin/docs/index.html:3#: templates/kousaiadmin/docs/index.html:4msgid "Documentation"msgstr "Dokumentation"

#: django_admin_overrides/admin/base.html:25msgid "Change password"msgstr "Ändra lösenord"

Page 23: Översättning av django-program

poEdit

Page 24: Översättning av django-program

Vilket språk?

1. Nyckeln django_language i user session

2. Cookie django_language

3. Accept-Language HTTP header

4. LANGUAGE_CODE i settings.py

Page 25: Översättning av django-program

Vilket språk? (2)

ugettext = lambda s: sLANGUAGES = ( ('sv', ugettext('Swedish')), ('en', ugettext('English')),)

Page 26: Översättning av django-program

Vad har jag missat?

• olika sajter för olika länder

• string_concat

• @allow_lazy

• set_language redirect view

• översättning av javascript

• Windows

RTFM

!

Page 27: Översättning av django-program

Nu den svåra biten . . .

Page 28: Översättning av django-program

Nu den svåra biten . . .pillig

a

Page 29: Översättning av django-program

Tänk på sammanhanget!

Page 30: Översättning av django-program

Kom ihåg denna bild!

Page 31: Översättning av django-program

Vad fan menar han?

Page 32: Översättning av django-program
Page 33: Översättning av django-program
Page 34: Översättning av django-program
Page 35: Översättning av django-program

Tillbaka till Google Docs

Page 36: Översättning av django-program

Men vad ser översättaren?

New

Upload

All itemsOwned by me

Opened by meStarred

Hidden

Trash

Page 37: Översättning av django-program

Men vad ser översättaren?

New Ny/Nytt/Nya/Färsk/Färska?

Upload Ladda upp/Uppladdning?

All items Alla saker/punkter/nummer Owned by me Ägd/ägda av mig

Opened by me Öppnad/öppnade av migStarred Stjärnad? Framträdde?

Hidden Gömd/Gömda

Trash Smörja/struntprat/slödder

Page 38: Översättning av django-program

Lösning? Ge tips!

New [document]

Upload [a document]

All items [ie documents][documents] Owned by me

[documents] Opened by meStarred [documents]

Hidden [documents]

Trash [trashcan]

Page 39: Översättning av django-program

Datum, typografi, mm

• Idag är det 2009-04-20. Känner ni till “Django”?

• Today is 20/04/09. Do you know “Django”?

• Today is 04/20/09. Do you know “Django”?

Page 40: Översättning av django-program

Datum, typografi, mm

• Heute ist 20.04.09. Kennt ihr „Django”?

• Σήμερα είναι 20.04.09. Γνωρίζετε το «Django»;

• 今日は2009年04月20日です。「ドジャんゴ』をしりませんか。

Page 41: Översättning av django-program

Datum, typografi, mm

{% blocktrans with publ_date.year as year and publ_date.month as month and publ_date.day as day%}

Idag är det {{year}}-{{month}}-{{day}}.

{% endblocktrans %}

Page 42: Översättning av django-program

Skrivriktning?

Page 43: Översättning av django-program

Sammanfattning

• Tänk på sammanhanget

• Tänk på typografin

• Olika sätt att skriva datum

• Olika längd på texten

• Skrivriktning

Page 44: Översättning av django-program

Länkar

• http://www.norstedtsord.se/oversattning/engelska/

• http://docs.djangoproject.com/en/dev/topics/i18n/#topics-i18n

• http://en.wikipedia.org/wiki/Internationalization_and_localization

• http://en.wikipedia.org/wiki/Calendar_date

Page 45: Översättning av django-program

Fler länkar

• http://www.onemanga.com/Bakuman/

• http://www.mangakailund.org/

Page 46: Översättning av django-program

Tack för uppmärksamheten


Top Related