Översättning av django-program

Post on 05-Dec-2014

1.255 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Presentation om hur man förbereder ett djangoprojekt för översättning, hur man designar projektet för att underlätta för översättaren, hur man översätter med poEdit och hur översättning av ett djangoprogram fungerar.

TRANSCRIPT

Översättning i DjangoMikael Moutakis

mikaelmoutakis@gmail.com

Internationalizationi18n

LocalizationL10n

Vad?

Varför?

Det minst viktiga först ...

. . . mjukvaran!

Hur funkar tekniken?

1. Märk ut pythonkod och templatekod

2. Extrahera

3. Översätt

4. Kompilera och installera

5. Starta om server

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

1.a Märk ut pythonkod

from django.utils.translation import ugettext_lazy as _

class Calendar(models.Model):

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

1.a Märk ut pythonkod

• ugettext_noop

• ugettext

• ugettext_lazy

• ungettext

• ungettext_lazy

Vara lat?

• ugettext_lazy för model.py

• När textvärdet hämtas

• ugettext för resten

• När funktionen anropas

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)

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>

1.b templatekod

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

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

1.b templatekod

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

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

{% endblocktrans%}</p>

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>

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

There is only one {{ name }} object.

{% plural %}

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

{% endblocktrans %}

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

Mappstruktur

2. Extrahera texten

cd /path/to/myproject

(cd /path/to/myapp)

mkdir -p locale/sv/LC_MESSAGES

django-admin.py makemessages -l sv

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 <mikaelmoutakis@gmail.com>\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"

poEdit

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

Vilket språk? (2)

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

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

!

Nu den svåra biten . . .

Nu den svåra biten . . .pillig

a

Tänk på sammanhanget!

Kom ihåg denna bild!

Vad fan menar han?

Tillbaka till Google Docs

Men vad ser översättaren?

New

Upload

All itemsOwned by me

Opened by meStarred

Hidden

Trash

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

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]

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”?

Datum, typografi, mm

• Heute ist 20.04.09. Kennt ihr „Django”?

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

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

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 %}

Skrivriktning?

Sammanfattning

• Tänk på sammanhanget

• Tänk på typografin

• Olika sätt att skriva datum

• Olika längd på texten

• Skrivriktning

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

Fler länkar

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

• http://www.mangakailund.org/

Tack för uppmärksamheten

top related