
Verwende: Ubuntu Server, Trac 0.12, Babel 0.9.5, Genshi 0.6, mod_python 3.3.1, pysqlite 2.4.1, Python 2.6.5 (r265:79063, Apr 16 2010, 13:28:26) [GCC 4.4.3], setuptools 0.6, SQLite 3.6.22, jQuery: 1.4.2
Hab mir ganz 'brav' http://trac.edgewall.org/wiki/CookBook/PluginL10N zu Gemüt geführt und dann in meinem Projekt folgende Änderungen gemacht:
1. setup.cfg angelegt (komplette Datei):
Code: Alles auswählen
[extract_messages]
add_comments = TRANSLATOR:
msgid_bugs_address =
output_file = testProject/locale/messages.pot
keywords = _ N_ tag_
width = 72
[init_catalog]
input_file = testProject/locale/messages.pot
output_dir = testProject/locale
domain = testProject
[compile_catalog]
directory = testProject/locale
domain = testProject
[update_catalog]
input_file = testProject/locale/messages.pot
output_dir = testProject/locale
domain = testProject
Code: Alles auswählen
from setuptools import find_packages, setup
extra = {}
extractors = [
('**.py', 'python', None),
('**/templates/**.html', 'genshi', None),
]
extra['message_extractors'] = {
'testProject': extractors,
}
setup(
install_requires = ['Trac >= 0.12'],
name='TracTestProject',
version='0.1',
packages=find_packages(exclude=['*.tests*']),
entry_points="""
[trac.plugins]
testProject= testProject
""",
package_data = {
'testProject': [
'templates/*.html',
'htdocs/js/*.js',
'htdocs/css/*.css',
'locale/*/LC_MESSAGES/*.mo',
]
},
**extra
)
4. in meiner api.py habe ich dann noch folgendes hinzugefügt (nur die Zusätze):
(ganz oben:)
Code: Alles auswählen
import pkg_resources
from trac.util.translation import domain_functions
_, tag_, N_, add_domain = domain_functions('testProject', ('_', 'tag_', 'N_', 'add_domain'))
Code: Alles auswählen
def __init__(self):
locale_dir = pkg_resources.resource_filename('testProject', 'locale')
add_domain(self.env.path, locale_dir)
(vermute hier mache ich etwas falsch ...)
Code: Alles auswählen
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:py="http://genshi.edgewall.org/"
xmlns:i18n="http://genshi.edgewall.org/i18n/"
xmlns:xi="http://www.w3.org/2001/XInclude"
i18n:domain="testProject">
<xi:include href="layout.html" />
Ein Aufruf von
Code: Alles auswählen
python ./setup.py extract_messages
Code: Alles auswählen
running extract_messages
extracting messages from testProject/__init__.py
extracting messages from testProject/api.py
extracting messages from testProject/db.py
extracting messages from testProject/model.py
extracting messages from testProject/web.py
extracting messages from testProject/templates/testProject.html
extracting messages from testProject/templates/docket_edit.html
extracting messages from testProject/templates/docket_list.html
extracting messages from testProject/templates/docket_view.html
writing PO template file to testProject/locale/messages.pot
(einige Elemente wurden erst nicht als zu extrahieren erkannt, nachdem ich dann aber anstatt z.B. 'Add' ein _('Add') verwendet habe sind auch diese im .pot file aufgetaucht)
ein
Code: Alles auswählen
python ./setup.py init_catalog -l de_DE
Code: Alles auswählen
running init_catalog
creating catalog 'testProject/locale/de_DE/LC_MESSAGES/testProject.po' based on 'testProject/locale/messages.pot'
Code: Alles auswählen
python ./setup.py compile_catalog -f -l de_DE
Code: Alles auswählen
running compile_catalog
compiling catalog 'testProject/locale/de_DE/LC_MESSAGES/testProject.po' to 'testProject/locale/de_DE/LC_MESSAGES/testProject.mo'
Zum Deployen rufe ich dann ein kleines delpoy.sh Skript auf:
Code: Alles auswählen
#!/bin/bash
TARGET="/var/trac/testProject/plugins/"
clean() {
rm -rf \
src/dist \
src/build \
src/TracTestProject.egg-info/dependency_links.txt \
src/TracTestProject.egg-info/entry_points.txt \
src/TracTestProject.egg-info/PKG-INFO \
src/TracTestProject.egg-info/requires.txt \
src/TracTestProject.egg-info/SOURCES.txt \
src/TracTestProject.egg-info/top_level.txt
}
clean
cd src
python ./setup.py extract_messages
python ./setup.py update_catalog
python ./setup.py compile_catalog -f
python ./setup.py bdist_egg
cd ..
rm -f ${TARGET}/*
cp src/dist/TracTestProject*.egg ${TARGET}
clean

Nach einem
Code: Alles auswählen
sudo service apache2 restart
1. mein Plugin läuft
2. alle Elemente die im .po File auf Python Code verweisen werden auch wie erwartet übersetzt
3. die Elemente in den Templates werden anscheinend soweit sie von Standardübersetzungen abgedeckt sind ('Add' -> 'Hinzufügen') werden übersetzt, meine eigenen im .po definierten Übersetzungen tauchen aber leider nirgends auf.
Problem:
Ich hab leider k.A. was da genau schief läuft (& wie ich es beheben könnte) und stehe sehr ratlos dar (nach einigen Stunden googeln und dem überfliegen von Code von anderen Projekten)

Ich vermute es liegt an meinen Templates bzw. dem Versuch Genshi klar zu machen, dass meine Übersetzungen genutzt werden sollen.
Würde mich freuen falls jemand den Fehler sieht und mir etwas helfen könnte.
Danke
Gruß Selur
Ps.: 1. Hab vorher noch nie groß etwas mit Python, HTML oder trac gemacht und entschuldige mich deshalb schon mal falls ich was total falsch gemacht hab oder irgendeinen Begriff falsch verwenden.

