Browse Source
remove rosetta. it's awesome, but Debian packaging is unclear for the time being, and it can be re-enabled easily by the user.
Natenom/support-murmur-13-1446181288462
remove rosetta. it's awesome, but Debian packaging is unclear for the time being, and it can be re-enabled easily by the user.
Natenom/support-murmur-13-1446181288462
Michael Ziegler
15 years ago
34 changed files with 4 additions and 3972 deletions
-
36pyweb/rosetta/__init__.py
-
24pyweb/rosetta/conf/__init__.py
-
61pyweb/rosetta/conf/settings.py
-
BINpyweb/rosetta/locale/de/LC_MESSAGES/django.mo
-
174pyweb/rosetta/locale/de/LC_MESSAGES/django.po
-
BINpyweb/rosetta/locale/es/LC_MESSAGES/django.mo
-
171pyweb/rosetta/locale/es/LC_MESSAGES/django.po
-
BINpyweb/rosetta/locale/fr/LC_MESSAGES/django.mo
-
172pyweb/rosetta/locale/fr/LC_MESSAGES/django.po
-
BINpyweb/rosetta/locale/hu/LC_MESSAGES/django.mo
-
165pyweb/rosetta/locale/hu/LC_MESSAGES/django.po
-
BINpyweb/rosetta/locale/it/LC_MESSAGES/django.mo
-
168pyweb/rosetta/locale/it/LC_MESSAGES/django.po
-
BINpyweb/rosetta/locale/nl/LC_MESSAGES/django.mo
-
171pyweb/rosetta/locale/nl/LC_MESSAGES/django.po
-
BINpyweb/rosetta/locale/pl/LC_MESSAGES/django.mo
-
170pyweb/rosetta/locale/pl/LC_MESSAGES/django.po
-
BINpyweb/rosetta/locale/ru/LC_MESSAGES/django.mo
-
163pyweb/rosetta/locale/ru/LC_MESSAGES/django.po
-
BINpyweb/rosetta/locale/uk/LC_MESSAGES/django.mo
-
162pyweb/rosetta/locale/uk/LC_MESSAGES/django.po
-
26pyweb/rosetta/models.py
-
1443pyweb/rosetta/polib.py
-
114pyweb/rosetta/poutil.py
-
41pyweb/rosetta/templates/rosetta/base.html
-
28pyweb/rosetta/templates/rosetta/css/rosetta.css
-
57pyweb/rosetta/templates/rosetta/js/rosetta.js
-
45pyweb/rosetta/templates/rosetta/languages.html
-
125pyweb/rosetta/templates/rosetta/pofile.html
-
24pyweb/rosetta/templatetags/__init__.py
-
77pyweb/rosetta/templatetags/rosetta.py
-
32pyweb/rosetta/urls.py
-
322pyweb/rosetta/views.py
-
5pyweb/settings.py
@ -1,36 +0,0 @@ |
|||||
# -*- coding: utf-8 -*- |
|
||||
|
|
||||
""" |
|
||||
* Copyright (C) 2010, Marco Bonetti <mbonetti@gmail.com> |
|
||||
* |
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy |
|
||||
* of this software and associated documentation files (the "Software"), to deal |
|
||||
* in the Software without restriction, including without limitation the rights |
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
|
||||
* copies of the Software, and to permit persons to whom the Software is |
|
||||
* furnished to do so, subject to the following conditions: |
|
||||
* |
|
||||
* The above copyright notice and this permission notice shall be included in |
|
||||
* all copies or substantial portions of the Software. |
|
||||
* |
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
|
||||
* THE SOFTWARE. |
|
||||
""" |
|
||||
|
|
||||
VERSION = (0, 5, 1) |
|
||||
|
|
||||
def get_version(svn=False, limit=3): |
|
||||
"Returns the version as a human-format string." |
|
||||
v = '.'.join([str(i) for i in VERSION[:limit]]) |
|
||||
if svn and limit >= 3: |
|
||||
from django.utils.version import get_svn_revision |
|
||||
import os |
|
||||
svn_rev = get_svn_revision(os.path.dirname(__file__)) |
|
||||
if svn_rev: |
|
||||
v = '%s.%s' % (v, svn_rev) |
|
||||
return v |
|
@ -1,24 +0,0 @@ |
|||||
# -*- coding: utf-8 -*- |
|
||||
|
|
||||
""" |
|
||||
* Copyright (C) 2010, Marco Bonetti <mbonetti@gmail.com> |
|
||||
* |
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy |
|
||||
* of this software and associated documentation files (the "Software"), to deal |
|
||||
* in the Software without restriction, including without limitation the rights |
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
|
||||
* copies of the Software, and to permit persons to whom the Software is |
|
||||
* furnished to do so, subject to the following conditions: |
|
||||
* |
|
||||
* The above copyright notice and this permission notice shall be included in |
|
||||
* all copies or substantial portions of the Software. |
|
||||
* |
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
|
||||
* THE SOFTWARE. |
|
||||
""" |
|
||||
|
|
@ -1,61 +0,0 @@ |
|||||
# -*- coding: utf-8 -*- |
|
||||
|
|
||||
""" |
|
||||
* Copyright (C) 2010, Marco Bonetti <mbonetti@gmail.com> |
|
||||
* |
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy |
|
||||
* of this software and associated documentation files (the "Software"), to deal |
|
||||
* in the Software without restriction, including without limitation the rights |
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
|
||||
* copies of the Software, and to permit persons to whom the Software is |
|
||||
* furnished to do so, subject to the following conditions: |
|
||||
* |
|
||||
* The above copyright notice and this permission notice shall be included in |
|
||||
* all copies or substantial portions of the Software. |
|
||||
* |
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
|
||||
* THE SOFTWARE. |
|
||||
""" |
|
||||
|
|
||||
from django.conf import settings |
|
||||
|
|
||||
# Number of messages to display per page. |
|
||||
MESSAGES_PER_PAGE = getattr(settings,'ROSETTA_MESSAGES_PER_PAGE',10) |
|
||||
|
|
||||
|
|
||||
# Enable Google translation suggestions |
|
||||
ENABLE_TRANSLATION_SUGGESTIONS = getattr(settings,'ROSETTA_ENABLE_TRANSLATION_SUGGESTIONS',True) |
|
||||
|
|
||||
# Displays this language beside the original MSGID in the admin |
|
||||
MAIN_LANGUAGE = getattr(settings,'ROSETTA_MAIN_LANGUAGE', None) |
|
||||
|
|
||||
|
|
||||
""" |
|
||||
When running WSGI daemon mode, using mod_wsgi 2.0c5 or later, this setting |
|
||||
controls whether the contents of the gettext catalog files should be |
|
||||
automatically reloaded by the WSGI processes each time they are modified. |
|
||||
|
|
||||
Notes: |
|
||||
|
|
||||
* The WSGI daemon process must have write permissions on the WSGI script file |
|
||||
(as defined by the WSGIScriptAlias directive.) |
|
||||
* WSGIScriptReloading must be set to On (it is by default) |
|
||||
* For performance reasons, this setting should be disabled in production environments |
|
||||
* When a common rosetta installation is shared among different Django projects, |
|
||||
each one running in its own distinct WSGI virtual host, you can activate |
|
||||
auto-reloading in individual projects by enabling this setting in the project's |
|
||||
own configuration file, i.e. in the project's settings.py |
|
||||
|
|
||||
Refs: |
|
||||
|
|
||||
* http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode |
|
||||
* http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIReloadMechanism |
|
||||
|
|
||||
""" |
|
||||
WSGI_AUTO_RELOAD = getattr(settings,'ROSETTA_WSGI_AUTO_RELOAD', False) |
|
||||
|
|
@ -1,174 +0,0 @@ |
|||||
# SOME DESCRIPTIVE TITLE. |
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER |
|
||||
# This file is distributed under the same license as the PACKAGE package. |
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. |
|
||||
# |
|
||||
msgid "" |
|
||||
msgstr "" |
|
||||
"Project-Id-Version: Rosetta\n" |
|
||||
"Report-Msgid-Bugs-To: \n" |
|
||||
"POT-Creation-Date: 2009-10-21 12:21+0200\n" |
|
||||
"PO-Revision-Date: 2008-06-16 10:11+0100\n" |
|
||||
"Last-Translator: Martin Mahner <martin@mahner.org>\n" |
|
||||
"Language-Team: patrick lauber <patrick.lauber@divio.ch>\n" |
|
||||
"MIME-Version: 1.0\n" |
|
||||
"Content-Type: text/plain; charset=UTF-8\n" |
|
||||
"Content-Transfer-Encoding: 8bit\n" |
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n" |
|
||||
"X-Poedit-Language: German\n" |
|
||||
"X-Poedit-Country: SWITZERLAND\n" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:3 templates/rosetta/pofile.html:13 |
|
||||
msgid "Home" |
|
||||
msgstr "Home" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:3 templates/rosetta/languages.html.py:4 |
|
||||
msgid "Language selection" |
|
||||
msgstr "Sprachwahl" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:14 |
|
||||
msgid "Application" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:15 |
|
||||
msgid "Progress" |
|
||||
msgstr "Fortschritt" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:16 |
|
||||
msgid "Messages" |
|
||||
msgstr "Texte" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:17 |
|
||||
msgid "Translated" |
|
||||
msgstr "Übersetzt" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:18 templates/rosetta/pofile.html:48 |
|
||||
msgid "Fuzzy" |
|
||||
msgstr "Unscharf" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:19 |
|
||||
msgid "Obsolete" |
|
||||
msgstr "Veraltet" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:20 |
|
||||
msgid "File" |
|
||||
msgstr "Datei" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:41 |
|
||||
msgid "Nothing to translate!" |
|
||||
msgstr "Nichts zu übersetzen!" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:42 |
|
||||
msgid "" |
|
||||
"You haven't specified any languages in your settings file, or haven't yet " |
|
||||
"generated a batch of translation catalogs." |
|
||||
msgstr "" |
|
||||
"Sie haben keine Sprachen in der Einstellungsdatei definiert oder bis jetzt " |
|
||||
"noch keine Übersetzungskataloge generiert." |
|
||||
|
|
||||
# python-format |
|
||||
#: templates/rosetta/languages.html:43 |
|
||||
#, python-format |
|
||||
msgid "" |
|
||||
"Please refer to <a href=\"%(i18n_doc_link)s\">Django's I18N documentation</" |
|
||||
"a> for a guide on how to set up internationalization for your project." |
|
||||
msgstr "" |
|
||||
"Unter <a href=\"%(i18n_doc_link)s\">Django's I18N documentation</a> finden " |
|
||||
"Sie eine Anleitung, wie sie Internationalisierung in Ihrem Projekt " |
|
||||
"einrichten." |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:7 |
|
||||
msgid "Pick another file" |
|
||||
msgstr "Wähle eine andere Datei" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:8 |
|
||||
msgid "Download this catalog" |
|
||||
msgstr "Laden sie diesen Katalog herunter" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:16 |
|
||||
msgid "Progress: %(percent_translated)s%" |
|
||||
msgstr "Fortschritt: %(percent_translated)s%" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:17 |
|
||||
msgid "File is read-only: download the file when done editing!" |
|
||||
msgstr "" |
|
||||
"Datei ist schreibgeschützt: Laden Sie die Datei herunter wenn sie mit dem " |
|
||||
"Editieren fertig sind!" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:19 |
|
||||
msgid "English" |
|
||||
msgstr "Englisch" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:21 |
|
||||
#, python-format |
|
||||
msgid "Translate into %(rosetta_i18n_lang_name)s" |
|
||||
msgstr "Übersetze in %(rosetta_i18n_lang_name)s" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:24 |
|
||||
msgid "Display:" |
|
||||
msgstr "Anzeige:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:25 |
|
||||
msgid "Untranslated only" |
|
||||
msgstr "Nur unübersetzte" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:26 |
|
||||
msgid "Translated only" |
|
||||
msgstr "Nur übersetzte" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:27 |
|
||||
msgid "Fuzzy only" |
|
||||
msgstr "Nur unscharfe" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:28 |
|
||||
msgid "All" |
|
||||
msgstr "Alle" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:34 |
|
||||
msgid "Search" |
|
||||
msgstr "Suchen" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:36 |
|
||||
msgid "Go" |
|
||||
msgstr "Los" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:45 |
|
||||
msgid "Original" |
|
||||
msgstr "Original" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:49 |
|
||||
msgid "Occurrences(s)" |
|
||||
msgstr "Gefunden in" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:73 |
|
||||
msgid "suggest" |
|
||||
msgstr "vorschlagen" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:84 |
|
||||
#, python-format |
|
||||
msgid "%(more_count)s more" |
|
||||
msgid_plural "%(more_count)s more" |
|
||||
msgstr[0] "%(more_count)s mehr" |
|
||||
msgstr[1] "%(more_count)s mehr" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:96 |
|
||||
msgid "Save and translate next block" |
|
||||
msgstr "Speichern und nächsten Block übersetzen" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:100 |
|
||||
msgid "Skip to page:" |
|
||||
msgstr "Zur Seite:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:113 |
|
||||
msgid "Displaying:" |
|
||||
msgstr "Anzeigen:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:115 |
|
||||
#, python-format |
|
||||
msgid "%(hits)s/%(message_number)s message" |
|
||||
msgid_plural "%(hits)s/%(message_number)s messages" |
|
||||
msgstr[0] "%(hits)s/%(message_number)s Text" |
|
||||
msgstr[1] "%(hits)s/%(message_number)s Texte" |
|
||||
|
|
||||
#~ msgid "Both" |
|
||||
#~ msgstr "Beide" |
|
@ -1,171 +0,0 @@ |
|||||
# SOME DESCRIPTIVE TITLE. |
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER |
|
||||
# This file is distributed under the same license as the PACKAGE package. |
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. |
|
||||
# |
|
||||
msgid "" |
|
||||
msgstr "" |
|
||||
"Project-Id-Version: PACKAGE VERSION\n" |
|
||||
"Report-Msgid-Bugs-To: \n" |
|
||||
"POT-Creation-Date: 2009-10-21 12:21+0200\n" |
|
||||
"PO-Revision-Date: 2008-11-30 12:12\n" |
|
||||
"Last-Translator: <antonio.mele@django.es>\n" |
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n" |
|
||||
"MIME-Version: 1.0\n" |
|
||||
"Content-Type: text/plain; charset=UTF-8\n" |
|
||||
"Content-Transfer-Encoding: 8bit\n" |
|
||||
"X-Translated-Using: django-rosetta 0.4.RC2\n" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:3 templates/rosetta/pofile.html:13 |
|
||||
msgid "Home" |
|
||||
msgstr "Inicio" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:3 templates/rosetta/languages.html.py:4 |
|
||||
msgid "Language selection" |
|
||||
msgstr "Selección de idioma" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:14 |
|
||||
msgid "Application" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:15 |
|
||||
msgid "Progress" |
|
||||
msgstr "Progreso" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:16 |
|
||||
msgid "Messages" |
|
||||
msgstr "Mensajes" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:17 |
|
||||
msgid "Translated" |
|
||||
msgstr "Traducido" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:18 templates/rosetta/pofile.html:48 |
|
||||
msgid "Fuzzy" |
|
||||
msgstr "Velloso" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:19 |
|
||||
msgid "Obsolete" |
|
||||
msgstr "Obsoleto" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:20 |
|
||||
msgid "File" |
|
||||
msgstr "Archivo" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:41 |
|
||||
msgid "Nothing to translate!" |
|
||||
msgstr "¡Nada que traducir!" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:42 |
|
||||
msgid "" |
|
||||
"You haven't specified any languages in your settings file, or haven't yet " |
|
||||
"generated a batch of translation catalogs." |
|
||||
msgstr "" |
|
||||
"No has especificado ningún idioma en tu archivo de settings o no has " |
|
||||
"generado todavía un batch para traducción de catálogos." |
|
||||
|
|
||||
#: templates/rosetta/languages.html:43 |
|
||||
#, python-format |
|
||||
msgid "" |
|
||||
"Please refer to <a href=\"%(i18n_doc_link)s\">Django's I18N documentation</" |
|
||||
"a> for a guide on how to set up internationalization for your project." |
|
||||
msgstr "" |
|
||||
"Por favor visita la <a href=\"%(i18n_doc_link)s\">Documentación de Django " |
|
||||
"sobre I18N</a> para obtener una guía sobre cómo añadir internacionalización " |
|
||||
"a tu proyecto." |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:7 |
|
||||
msgid "Pick another file" |
|
||||
msgstr "Selecciona otro archivo" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:8 |
|
||||
msgid "Download this catalog" |
|
||||
msgstr "Descarga este catálogo" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:16 |
|
||||
msgid "Progress: %(percent_translated)s%" |
|
||||
msgstr "Progreso: %(percent_translated)s%" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:17 |
|
||||
msgid "File is read-only: download the file when done editing!" |
|
||||
msgstr "" |
|
||||
"El archivo está en modo lectura: ¡Descarga el archivo cuando termines de " |
|
||||
"editarlo!" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:19 |
|
||||
msgid "English" |
|
||||
msgstr "Inglés" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:21 |
|
||||
#, python-format |
|
||||
msgid "Translate into %(rosetta_i18n_lang_name)s" |
|
||||
msgstr "Traducir al %(rosetta_i18n_lang_name)s " |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:24 |
|
||||
msgid "Display:" |
|
||||
msgstr "Pantalla:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:25 |
|
||||
msgid "Untranslated only" |
|
||||
msgstr "Sin traducir sólo" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:26 |
|
||||
msgid "Translated only" |
|
||||
msgstr "Traducidos sólo" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:27 |
|
||||
msgid "Fuzzy only" |
|
||||
msgstr "Vellosos sólo" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:28 |
|
||||
msgid "All" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:34 |
|
||||
msgid "Search" |
|
||||
msgstr "Búsqueda" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:36 |
|
||||
msgid "Go" |
|
||||
msgstr "Ir" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:45 |
|
||||
msgid "Original" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:49 |
|
||||
msgid "Occurrences(s)" |
|
||||
msgstr "Ocurrencia(s)" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:73 |
|
||||
msgid "suggest" |
|
||||
msgstr "sugerir" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:84 |
|
||||
#, python-format |
|
||||
msgid "%(more_count)s more" |
|
||||
msgid_plural "%(more_count)s more" |
|
||||
msgstr[0] "%(more_count)s más" |
|
||||
msgstr[1] "%(more_count)s más" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:96 |
|
||||
msgid "Save and translate next block" |
|
||||
msgstr "Guardar y traducir siguiente bloque" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:100 |
|
||||
msgid "Skip to page:" |
|
||||
msgstr "Ir a la página:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:113 |
|
||||
msgid "Displaying:" |
|
||||
msgstr "Mostrando:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:115 |
|
||||
#, python-format |
|
||||
msgid "%(hits)s/%(message_number)s message" |
|
||||
msgid_plural "%(hits)s/%(message_number)s messages" |
|
||||
msgstr[0] "%(hits)s/%(message_number)s mensaje" |
|
||||
msgstr[1] "%(hits)s/%(message_number)s mensajes" |
|
||||
|
|
||||
#~ msgid "Both" |
|
||||
#~ msgstr "Ambos" |
|
@ -1,172 +0,0 @@ |
|||||
# SOME DESCRIPTIVE TITLE. |
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER |
|
||||
# This file is distributed under the same license as the PACKAGE package. |
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. |
|
||||
# |
|
||||
msgid "" |
|
||||
msgstr "" |
|
||||
"Project-Id-Version: Rosetta\n" |
|
||||
"Report-Msgid-Bugs-To: \n" |
|
||||
"POT-Creation-Date: 2009-10-21 12:21+0200\n" |
|
||||
"PO-Revision-Date: 2008-09-22 11:02\n" |
|
||||
"Last-Translator: Admin Admin <admin@admin.com>\n" |
|
||||
"Language-Team: French <LL@li.org>\n" |
|
||||
"MIME-Version: 1.0\n" |
|
||||
"Content-Type: text/plain; charset=UTF-8\n" |
|
||||
"Content-Transfer-Encoding: 8bit\n" |
|
||||
"X-Translated-Using: django-rosetta 0.4.RC2\n" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:3 templates/rosetta/pofile.html:13 |
|
||||
msgid "Home" |
|
||||
msgstr "Accueil" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:3 templates/rosetta/languages.html.py:4 |
|
||||
msgid "Language selection" |
|
||||
msgstr "Sélection de la langue" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:14 |
|
||||
msgid "Application" |
|
||||
msgstr "Application" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:15 |
|
||||
msgid "Progress" |
|
||||
msgstr "Progression" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:16 |
|
||||
msgid "Messages" |
|
||||
msgstr "Messages" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:17 |
|
||||
msgid "Translated" |
|
||||
msgstr "Traduits" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:18 templates/rosetta/pofile.html:48 |
|
||||
msgid "Fuzzy" |
|
||||
msgstr "Flous" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:19 |
|
||||
msgid "Obsolete" |
|
||||
msgstr "Obsolètes" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:20 |
|
||||
msgid "File" |
|
||||
msgstr "Fichier" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:41 |
|
||||
msgid "Nothing to translate!" |
|
||||
msgstr "Rien à Traduire!" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:42 |
|
||||
msgid "" |
|
||||
"You haven't specified any languages in your settings file, or haven't yet " |
|
||||
"generated a batch of translation catalogs." |
|
||||
msgstr "" |
|
||||
"Vous n'avez spécifié aucune langue dans votre fichier de configuration, ou " |
|
||||
"n'avez pas encore généré le catalogue initial de traductions pour votre " |
|
||||
"projet." |
|
||||
|
|
||||
# python-format |
|
||||
#: templates/rosetta/languages.html:43 |
|
||||
#, python-format |
|
||||
msgid "" |
|
||||
"Please refer to <a href=\"%(i18n_doc_link)s\">Django's I18N documentation</" |
|
||||
"a> for a guide on how to set up internationalization for your project." |
|
||||
msgstr "" |
|
||||
"Veuillez vous référer à la <a href=\"%(i18n_doc_link)s\">documentation sur " |
|
||||
"l'internationalisation de Django</a> pour un guide sur comment activer et " |
|
||||
"configurer la traduction de votre projet." |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:7 |
|
||||
msgid "Pick another file" |
|
||||
msgstr "Choisir un autre fichier" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:8 |
|
||||
msgid "Download this catalog" |
|
||||
msgstr "Télécharger ce catalogue" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:16 |
|
||||
msgid "Progress: %(percent_translated)s%" |
|
||||
msgstr "Progression: %(percent_translated)s%" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:17 |
|
||||
msgid "File is read-only: download the file when done editing!" |
|
||||
msgstr "" |
|
||||
"Fichier en seule lecture: télécharger le fichier à la fin de l'édition!" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:19 |
|
||||
msgid "English" |
|
||||
msgstr "Anglais" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:21 |
|
||||
#, python-format |
|
||||
msgid "Translate into %(rosetta_i18n_lang_name)s" |
|
||||
msgstr "Traduire en %(rosetta_i18n_lang_name)s" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:24 |
|
||||
msgid "Display:" |
|
||||
msgstr "Afficher:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:25 |
|
||||
msgid "Untranslated only" |
|
||||
msgstr "Non-traduits uniquement" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:26 |
|
||||
msgid "Translated only" |
|
||||
msgstr "Traduits uniquement" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:27 |
|
||||
msgid "Fuzzy only" |
|
||||
msgstr "Flous uniquement" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:28 |
|
||||
msgid "All" |
|
||||
msgstr "Tous" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:34 |
|
||||
msgid "Search" |
|
||||
msgstr "Recherche" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:36 |
|
||||
msgid "Go" |
|
||||
msgstr "Go" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:45 |
|
||||
msgid "Original" |
|
||||
msgstr "Original" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:49 |
|
||||
msgid "Occurrences(s)" |
|
||||
msgstr "Occurrences(s)" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:73 |
|
||||
msgid "suggest" |
|
||||
msgstr "suggérer" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:84 |
|
||||
#, python-format |
|
||||
msgid "%(more_count)s more" |
|
||||
msgid_plural "%(more_count)s more" |
|
||||
msgstr[0] "%(more_count)s de plus" |
|
||||
msgstr[1] "%(more_count)s de plus" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:96 |
|
||||
msgid "Save and translate next block" |
|
||||
msgstr "Sauver et traduire le prochain bloc" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:100 |
|
||||
msgid "Skip to page:" |
|
||||
msgstr "Passer à la page:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:113 |
|
||||
msgid "Displaying:" |
|
||||
msgstr "Affichés:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:115 |
|
||||
#, python-format |
|
||||
msgid "%(hits)s/%(message_number)s message" |
|
||||
msgid_plural "%(hits)s/%(message_number)s messages" |
|
||||
msgstr[0] "%(hits)s/%(message_number)s message" |
|
||||
msgstr[1] " %(hits)s/%(message_number)s messages" |
|
||||
|
|
||||
#~ msgid "Both" |
|
||||
#~ msgstr "Les deux" |
|
@ -1,165 +0,0 @@ |
|||||
# Copyright (C) 2008 |
|
||||
# Gergely Kontra <pihentagy+rosetta@gmail.com>, 2008. |
|
||||
# |
|
||||
msgid "" |
|
||||
msgstr "" |
|
||||
"Project-Id-Version: Rosetta\n" |
|
||||
"Report-Msgid-Bugs-To: \n" |
|
||||
"POT-Creation-Date: 2009-10-21 12:21+0200\n" |
|
||||
"PO-Revision-Date: 2008-10-09 19:08+0100\n" |
|
||||
"Last-Translator: Gergely Kontra <pihentagy@yahoo.com>\n" |
|
||||
"Language-Team: nomail <hu@example.org>\n" |
|
||||
"MIME-Version: 1.0\n" |
|
||||
"Content-Type: text/plain; charset=UTF-8\n" |
|
||||
"Content-Transfer-Encoding: 8bit\n" |
|
||||
"X-Translated-Using: django-rosetta 0.4.RC2\n" |
|
||||
"Plural-Forms: nplurals=1; plural=0;\n" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:3 templates/rosetta/pofile.html:13 |
|
||||
msgid "Home" |
|
||||
msgstr "Főoldal" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:3 templates/rosetta/languages.html.py:4 |
|
||||
msgid "Language selection" |
|
||||
msgstr "Nyelvválasztás" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:14 |
|
||||
msgid "Application" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:15 |
|
||||
msgid "Progress" |
|
||||
msgstr "Állapot" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:16 |
|
||||
msgid "Messages" |
|
||||
msgstr "Üzenet" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:17 |
|
||||
msgid "Translated" |
|
||||
msgstr "Lefordítva" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:18 templates/rosetta/pofile.html:48 |
|
||||
msgid "Fuzzy" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:19 |
|
||||
msgid "Obsolete" |
|
||||
msgstr "Elavult" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:20 |
|
||||
msgid "File" |
|
||||
msgstr "Fájl" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:41 |
|
||||
msgid "Nothing to translate!" |
|
||||
msgstr "Nincs mit fordítani!" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:42 |
|
||||
msgid "" |
|
||||
"You haven't specified any languages in your settings file, or haven't yet " |
|
||||
"generated a batch of translation catalogs." |
|
||||
msgstr "" |
|
||||
"Nincs beállítva egyetlen nyelv sem van nem hozott létre egy fordítási " |
|
||||
"katalóguskoteget." |
|
||||
|
|
||||
#: templates/rosetta/languages.html:43 |
|
||||
#, python-format |
|
||||
msgid "" |
|
||||
"Please refer to <a href=\"%(i18n_doc_link)s\">Django's I18N documentation</" |
|
||||
"a> for a guide on how to set up internationalization for your project." |
|
||||
msgstr "" |
|
||||
"Projekted többnyelvűvé alakításához lásd a <a href=\"%(i18n_doc_link)s" |
|
||||
"\">Django I18N dokumentációt</a>!" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:7 |
|
||||
msgid "Pick another file" |
|
||||
msgstr "Másik fájl választása" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:8 |
|
||||
msgid "Download this catalog" |
|
||||
msgstr "Katalógus letöltése" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:16 |
|
||||
msgid "Progress: %(percent_translated)s%" |
|
||||
msgstr "%(percent_translated)s% kész" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:17 |
|
||||
msgid "File is read-only: download the file when done editing!" |
|
||||
msgstr "A fájl írásvédett: töltse le a katalógust, ha végzett!" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:19 |
|
||||
msgid "English" |
|
||||
msgstr "Angol" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:21 |
|
||||
#, python-format |
|
||||
msgid "Translate into %(rosetta_i18n_lang_name)s" |
|
||||
msgstr "Fordítsa %(rosetta_i18n_lang_name)s nyelvre" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:24 |
|
||||
msgid "Display:" |
|
||||
msgstr "Szűrés:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:25 |
|
||||
msgid "Untranslated only" |
|
||||
msgstr "Fordításra vár" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:26 |
|
||||
msgid "Translated only" |
|
||||
msgstr "Lefordított" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:27 |
|
||||
msgid "Fuzzy only" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:28 |
|
||||
msgid "All" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:34 |
|
||||
msgid "Search" |
|
||||
msgstr "Keresés" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:36 |
|
||||
msgid "Go" |
|
||||
msgstr "Keress" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:45 |
|
||||
msgid "Original" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:49 |
|
||||
msgid "Occurrences(s)" |
|
||||
msgstr "Előfordulások" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:73 |
|
||||
msgid "suggest" |
|
||||
msgstr "ajánl" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:84 |
|
||||
#, fuzzy, python-format |
|
||||
msgid "%(more_count)s more" |
|
||||
msgid_plural "%(more_count)s more" |
|
||||
msgstr[0] "még %(more_count)s" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:96 |
|
||||
msgid "Save and translate next block" |
|
||||
msgstr "Mentés" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:100 |
|
||||
msgid "Skip to page:" |
|
||||
msgstr "Ugorj erre az oldalra:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:113 |
|
||||
msgid "Displaying:" |
|
||||
msgstr "Szűrés:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:115 |
|
||||
#, fuzzy, python-format |
|
||||
msgid "%(hits)s/%(message_number)s message" |
|
||||
msgid_plural "%(hits)s/%(message_number)s messages" |
|
||||
msgstr[0] "%(hits)s/%(message_number)s üzenet" |
|
||||
|
|
||||
#~ msgid "Both" |
|
||||
#~ msgstr "Minden" |
|
@ -1,168 +0,0 @@ |
|||||
# SOME DESCRIPTIVE TITLE. |
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER |
|
||||
# This file is distributed under the same license as the PACKAGE package. |
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. |
|
||||
# |
|
||||
msgid "" |
|
||||
msgstr "" |
|
||||
"Project-Id-Version: Rosetta\n" |
|
||||
"Report-Msgid-Bugs-To: \n" |
|
||||
"POT-Creation-Date: 2009-10-21 12:21+0200\n" |
|
||||
"Last-Translator: Marco Bonetti <mbi@mbi.com>\n" |
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n" |
|
||||
"MIME-Version: 1.0\n" |
|
||||
"Content-Type: text/plain; charset=UTF-8\n" |
|
||||
"Content-Transfer-Encoding: 8bit\n" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:3 templates/rosetta/pofile.html:13 |
|
||||
msgid "Home" |
|
||||
msgstr "Inizio" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:3 templates/rosetta/languages.html.py:4 |
|
||||
msgid "Language selection" |
|
||||
msgstr "Selezione della lingua" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:14 |
|
||||
msgid "Application" |
|
||||
msgstr "Applicazione" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:15 |
|
||||
msgid "Progress" |
|
||||
msgstr "Progressione" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:16 |
|
||||
msgid "Messages" |
|
||||
msgstr "Messaggio" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:17 |
|
||||
msgid "Translated" |
|
||||
msgstr "Tradotto" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:18 templates/rosetta/pofile.html:48 |
|
||||
msgid "Fuzzy" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:19 |
|
||||
msgid "Obsolete" |
|
||||
msgstr "Obsoleto" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:20 |
|
||||
msgid "File" |
|
||||
msgstr "File" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:41 |
|
||||
msgid "Nothing to translate!" |
|
||||
msgstr "Nulla da tradurre!" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:42 |
|
||||
msgid "" |
|
||||
"You haven't specified any languages in your settings file, or haven't yet " |
|
||||
"generated a batch of translation catalogs." |
|
||||
msgstr "" |
|
||||
"Non avete specificato nessuna lingua nelle vostre impostazioni, o non avete " |
|
||||
"ancore generato un catalogo iniziale da tradurre." |
|
||||
|
|
||||
# python-format |
|
||||
#: templates/rosetta/languages.html:43 |
|
||||
#, python-format |
|
||||
msgid "" |
|
||||
"Please refer to <a href=\"%(i18n_doc_link)s\">Django's I18N documentation</" |
|
||||
"a> for a guide on how to set up internationalization for your project." |
|
||||
msgstr "" |
|
||||
"Vogliate riferirvi alla <a href=\"%(i18n_doc_link)s\">documentazione " |
|
||||
"sull'internazionalizzazione di Django</a> per una giuda su come impostare le " |
|
||||
"traduzioni per il vostro progetto." |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:7 |
|
||||
msgid "Pick another file" |
|
||||
msgstr "Scegliere un altro file" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:8 |
|
||||
msgid "Download this catalog" |
|
||||
msgstr "Scaricare il catalogo" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:16 |
|
||||
msgid "Progress: %(percent_translated)s%" |
|
||||
msgstr "Progressione: %(percent_translated)s%" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:17 |
|
||||
msgid "File is read-only: download the file when done editing!" |
|
||||
msgstr "file in solo lettura: scaricare il file alla fine dell'edizione!" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:19 |
|
||||
msgid "English" |
|
||||
msgstr "Inglese" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:21 |
|
||||
#, python-format |
|
||||
msgid "Translate into %(rosetta_i18n_lang_name)s" |
|
||||
msgstr "Tradurre verso il %(rosetta_i18n_lang_name)s" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:24 |
|
||||
msgid "Display:" |
|
||||
msgstr "Mostra:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:25 |
|
||||
msgid "Untranslated only" |
|
||||
msgstr "Solo non tradotti" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:26 |
|
||||
msgid "Translated only" |
|
||||
msgstr "Solo tradotti" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:27 |
|
||||
msgid "Fuzzy only" |
|
||||
msgstr "Solo fuzzy" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:28 |
|
||||
msgid "All" |
|
||||
msgstr "Tutti" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:34 |
|
||||
msgid "Search" |
|
||||
msgstr "Cercare" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:36 |
|
||||
msgid "Go" |
|
||||
msgstr "Via" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:45 |
|
||||
msgid "Original" |
|
||||
msgstr "Originale" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:49 |
|
||||
msgid "Occurrences(s)" |
|
||||
msgstr "Occorrenze" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:73 |
|
||||
msgid "suggest" |
|
||||
msgstr "suggerire" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:84 |
|
||||
#, python-format |
|
||||
msgid "%(more_count)s more" |
|
||||
msgid_plural "%(more_count)s more" |
|
||||
msgstr[0] "un altro" |
|
||||
msgstr[1] "ancora %(more_count)s" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:96 |
|
||||
msgid "Save and translate next block" |
|
||||
msgstr "Salvare e tradurre il prossimo blocco" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:100 |
|
||||
msgid "Skip to page:" |
|
||||
msgstr "Passare alla pagina:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:113 |
|
||||
msgid "Displaying:" |
|
||||
msgstr "Mostrato:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:115 |
|
||||
#, python-format |
|
||||
msgid "%(hits)s/%(message_number)s message" |
|
||||
msgid_plural "%(hits)s/%(message_number)s messages" |
|
||||
msgstr[0] "%(hits)s/%(message_number)s messaggio" |
|
||||
msgstr[1] "%(hits)s/%(message_number)s messaggi" |
|
||||
|
|
||||
#~ msgid "Both" |
|
||||
#~ msgstr "Entrambi" |
|
@ -1,171 +0,0 @@ |
|||||
# SOME DESCRIPTIVE TITLE. |
|
||||
# Copyright (C) 2008 THE PACKAGE'S COPYRIGHT HOLDER |
|
||||
# This file is distributed under the same license as the rosetta package. |
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. |
|
||||
# |
|
||||
msgid "" |
|
||||
msgstr "" |
|
||||
"Project-Id-Version: Rosetta\n" |
|
||||
"Report-Msgid-Bugs-To: \n" |
|
||||
"POT-Creation-Date: 2009-10-21 12:21+0200\n" |
|
||||
"PO-Revision-Date: 2008-06-05 17:06+0200\n" |
|
||||
"Last-Translator: Joost Cassee <cassee@gmail.com>\n" |
|
||||
"Language-Team: Joost Cassee <cassee@gmail.com>\n" |
|
||||
"MIME-Version: 1.0\n" |
|
||||
"Content-Type: text/plain; charset=UTF-8\n" |
|
||||
"Content-Transfer-Encoding: 8bit\n" |
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:3 templates/rosetta/pofile.html:13 |
|
||||
msgid "Home" |
|
||||
msgstr "Voorpagina" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:3 templates/rosetta/languages.html.py:4 |
|
||||
msgid "Language selection" |
|
||||
msgstr "Taalselectie" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:14 |
|
||||
msgid "Application" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:15 |
|
||||
msgid "Progress" |
|
||||
msgstr "Voortgang" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:16 |
|
||||
msgid "Messages" |
|
||||
msgstr "Berichten" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:17 |
|
||||
msgid "Translated" |
|
||||
msgstr "Vertaald" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:18 templates/rosetta/pofile.html:48 |
|
||||
msgid "Fuzzy" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:19 |
|
||||
msgid "Obsolete" |
|
||||
msgstr "Niet meer gebruikt" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:20 |
|
||||
msgid "File" |
|
||||
msgstr "Bestand" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:41 |
|
||||
msgid "Nothing to translate!" |
|
||||
msgstr "Niets te vertalen!" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:42 |
|
||||
msgid "" |
|
||||
"You haven't specified any languages in your settings file, or haven't yet " |
|
||||
"generated a batch of translation catalogs." |
|
||||
msgstr "" |
|
||||
"U heeft geen talen gespecificeerd in het bestand settings.py of nog geen " |
|
||||
"catalogus gegenereerd." |
|
||||
|
|
||||
# python-format |
|
||||
#: templates/rosetta/languages.html:43 |
|
||||
#, python-format |
|
||||
msgid "" |
|
||||
"Please refer to <a href=\"%(i18n_doc_link)s\">Django's I18N documentation</" |
|
||||
"a> for a guide on how to set up internationalization for your project." |
|
||||
msgstr "" |
|
||||
"Zie <a href=\"%(i18n_doc_link)s\">Django's I18N documentatie</a> (Engels) " |
|
||||
"voor meer informatie over internationalisatie." |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:7 |
|
||||
msgid "Pick another file" |
|
||||
msgstr "Selecteer een ander bestand" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:8 |
|
||||
msgid "Download this catalog" |
|
||||
msgstr "Download deze catalogus" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:16 |
|
||||
msgid "Progress: %(percent_translated)s%" |
|
||||
msgstr "Voortgang: %(percent_translated)s%" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:17 |
|
||||
msgid "File is read-only: download the file when done editing!" |
|
||||
msgstr "" |
|
||||
"Dit is bestand is alleen-lezen; download dit bestand wanneer u klaar bent " |
|
||||
"met bewerken!" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:19 |
|
||||
msgid "English" |
|
||||
msgstr "Engels" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:21 |
|
||||
#, python-format |
|
||||
msgid "Translate into %(rosetta_i18n_lang_name)s" |
|
||||
msgstr "Vertalen in het %(rosetta_i18n_lang_name)s" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:24 |
|
||||
msgid "Display:" |
|
||||
msgstr "Beeld:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:25 |
|
||||
msgid "Untranslated only" |
|
||||
msgstr "Alleen onvertaald" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:26 |
|
||||
msgid "Translated only" |
|
||||
msgstr "Alleen vertaald" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:27 |
|
||||
msgid "Fuzzy only" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:28 |
|
||||
msgid "All" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:34 |
|
||||
msgid "Search" |
|
||||
msgstr "Zoeken" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:36 |
|
||||
msgid "Go" |
|
||||
msgstr "Ga" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:45 |
|
||||
msgid "Original" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:49 |
|
||||
msgid "Occurrences(s)" |
|
||||
msgstr "Gevonden in" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:73 |
|
||||
msgid "suggest" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:84 |
|
||||
#, python-format |
|
||||
msgid "%(more_count)s more" |
|
||||
msgid_plural "%(more_count)s more" |
|
||||
msgstr[0] "" |
|
||||
msgstr[1] "" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:96 |
|
||||
msgid "Save and translate next block" |
|
||||
msgstr "Opslaan en volgende blok vertalen" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:100 |
|
||||
msgid "Skip to page:" |
|
||||
msgstr "Snel naar pagina:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:113 |
|
||||
msgid "Displaying:" |
|
||||
msgstr "Tonen:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:115 |
|
||||
#, python-format |
|
||||
msgid "%(hits)s/%(message_number)s message" |
|
||||
msgid_plural "%(hits)s/%(message_number)s messages" |
|
||||
msgstr[0] "%(hits)s/%(message_number)s bericht" |
|
||||
msgstr[1] "%(hits)s/%(message_number)s berichten" |
|
||||
|
|
||||
#~ msgid "Both" |
|
||||
#~ msgstr "Beide" |
|
@ -1,170 +0,0 @@ |
|||||
# SOME DESCRIPTIVE TITLE. |
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER |
|
||||
# This file is distributed under the same license as the PACKAGE package. |
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. |
|
||||
# |
|
||||
msgid "" |
|
||||
msgstr "" |
|
||||
"Project-Id-Version: Rosetta\n" |
|
||||
"Report-Msgid-Bugs-To: \n" |
|
||||
"POT-Creation-Date: 2009-10-21 12:21+0200\n" |
|
||||
"PO-Revision-Date: 2008-09-12 12:16\n" |
|
||||
"Last-Translator: <tomasz@napierala.org>\n" |
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n" |
|
||||
"MIME-Version: 1.0\n" |
|
||||
"Content-Type: text/plain; charset=UTF-8\n" |
|
||||
"Content-Transfer-Encoding: 8bit\n" |
|
||||
"X-Translated-Using: django-rosetta 0.4.RC2\n" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:3 templates/rosetta/pofile.html:13 |
|
||||
msgid "Home" |
|
||||
msgstr "Początek" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:3 templates/rosetta/languages.html.py:4 |
|
||||
msgid "Language selection" |
|
||||
msgstr "Wybór języka" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:14 |
|
||||
msgid "Application" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:15 |
|
||||
msgid "Progress" |
|
||||
msgstr "Postęp" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:16 |
|
||||
msgid "Messages" |
|
||||
msgstr "Komunikaty" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:17 |
|
||||
msgid "Translated" |
|
||||
msgstr "Przetłumaczone" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:18 templates/rosetta/pofile.html:48 |
|
||||
msgid "Fuzzy" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:19 |
|
||||
msgid "Obsolete" |
|
||||
msgstr "Przestarzałe" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:20 |
|
||||
msgid "File" |
|
||||
msgstr "Plik" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:41 |
|
||||
msgid "Nothing to translate!" |
|
||||
msgstr "Nie ma nic do przetłumaczenia!" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:42 |
|
||||
msgid "" |
|
||||
"You haven't specified any languages in your settings file, or haven't yet " |
|
||||
"generated a batch of translation catalogs." |
|
||||
msgstr "" |
|
||||
"Nie podałeś żadnych języków w plikach ustawień, lub nie wygenerowałeś " |
|
||||
"jeszcze katalogów do tłumaczeń." |
|
||||
|
|
||||
# python-format |
|
||||
#: templates/rosetta/languages.html:43 |
|
||||
#, python-format |
|
||||
msgid "" |
|
||||
"Please refer to <a href=\"%(i18n_doc_link)s\">Django's I18N documentation</" |
|
||||
"a> for a guide on how to set up internationalization for your project." |
|
||||
msgstr "" |
|
||||
"Sprawdź pomoc dotyczącą <a href=\"%(i18n_doc_link)s\">internacjonalizacji " |
|
||||
"Django I18N </a>, aby znaleźć dokumentację na temat internacjonalizacji " |
|
||||
"twojego projektu." |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:7 |
|
||||
msgid "Pick another file" |
|
||||
msgstr "Wybierz inny plik" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:8 |
|
||||
msgid "Download this catalog" |
|
||||
msgstr "Pobierz ten katalog" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:16 |
|
||||
msgid "Progress: %(percent_translated)s%" |
|
||||
msgstr "Postęp: %(percent_translated)s %" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:17 |
|
||||
msgid "File is read-only: download the file when done editing!" |
|
||||
msgstr "Plik jest tylko do odczytu: pobierz go kiedy skończysz edytować" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:19 |
|
||||
msgid "English" |
|
||||
msgstr "Angielski" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:21 |
|
||||
#, python-format |
|
||||
msgid "Translate into %(rosetta_i18n_lang_name)s" |
|
||||
msgstr "Przetłumacz na %(rosetta_i18n_lang_name)s " |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:24 |
|
||||
msgid "Display:" |
|
||||
msgstr "Wyświetl:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:25 |
|
||||
msgid "Untranslated only" |
|
||||
msgstr "Tylko nieprzetłumaczone" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:26 |
|
||||
msgid "Translated only" |
|
||||
msgstr "Tylko przetłumaczone" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:27 |
|
||||
msgid "Fuzzy only" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:28 |
|
||||
msgid "All" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:34 |
|
||||
msgid "Search" |
|
||||
msgstr "Szukaj" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:36 |
|
||||
msgid "Go" |
|
||||
msgstr "Idź" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:45 |
|
||||
msgid "Original" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:49 |
|
||||
msgid "Occurrences(s)" |
|
||||
msgstr "Wystąpienie(a)" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:73 |
|
||||
msgid "suggest" |
|
||||
msgstr "sugeruj" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:84 |
|
||||
#, python-format |
|
||||
msgid "%(more_count)s more" |
|
||||
msgid_plural "%(more_count)s more" |
|
||||
msgstr[0] "%(more_count)s więcej" |
|
||||
msgstr[1] "%(more_count)s więcej" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:96 |
|
||||
msgid "Save and translate next block" |
|
||||
msgstr "Zapisz i tłumacz następny blok" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:100 |
|
||||
msgid "Skip to page:" |
|
||||
msgstr "Przejdź do strony:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:113 |
|
||||
msgid "Displaying:" |
|
||||
msgstr "Wyświetlanie:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:115 |
|
||||
#, python-format |
|
||||
msgid "%(hits)s/%(message_number)s message" |
|
||||
msgid_plural "%(hits)s/%(message_number)s messages" |
|
||||
msgstr[0] "%(hits)s/%(message_number)s komunikat" |
|
||||
msgstr[1] "%(hits)s/%(message_number)s komunikatów" |
|
||||
|
|
||||
#~ msgid "Both" |
|
||||
#~ msgstr "Oba" |
|
@ -1,163 +0,0 @@ |
|||||
# SOME DESCRIPTIVE TITLE. |
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER |
|
||||
# This file is distributed under the same license as the PACKAGE package. |
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. |
|
||||
# |
|
||||
msgid "" |
|
||||
msgstr "" |
|
||||
"Project-Id-Version: Rosetta\n" |
|
||||
"Report-Msgid-Bugs-To: \n" |
|
||||
"POT-Creation-Date: 2009-10-21 12:21+0200\n" |
|
||||
"Last-Translator: Nazar Leush <nazar@pleso.net>\n" |
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n" |
|
||||
"MIME-Version: 1.0\n" |
|
||||
"Content-Type: text/plain; charset=UTF-8\n" |
|
||||
"Content-Transfer-Encoding: 8bit\n" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:3 templates/rosetta/pofile.html:13 |
|
||||
msgid "Home" |
|
||||
msgstr "Начало" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:3 templates/rosetta/languages.html.py:4 |
|
||||
msgid "Language selection" |
|
||||
msgstr "Выбор языка" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:14 |
|
||||
msgid "Application" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:15 |
|
||||
msgid "Progress" |
|
||||
msgstr "Обработано" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:16 |
|
||||
msgid "Messages" |
|
||||
msgstr "Сообщений" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:17 |
|
||||
msgid "Translated" |
|
||||
msgstr "С переводом" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:18 templates/rosetta/pofile.html:48 |
|
||||
msgid "Fuzzy" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:19 |
|
||||
msgid "Obsolete" |
|
||||
msgstr "Устаревших" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:20 |
|
||||
msgid "File" |
|
||||
msgstr "Файл" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:41 |
|
||||
msgid "Nothing to translate!" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:42 |
|
||||
msgid "" |
|
||||
"You haven't specified any languages in your settings file, or haven't yet " |
|
||||
"generated a batch of translation catalogs." |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:43 |
|
||||
#, python-format |
|
||||
msgid "" |
|
||||
"Please refer to <a href=\"%(i18n_doc_link)s\">Django's I18N documentation</" |
|
||||
"a> for a guide on how to set up internationalization for your project." |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:7 |
|
||||
msgid "Pick another file" |
|
||||
msgstr "Выбрать другой файл" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:8 |
|
||||
msgid "Download this catalog" |
|
||||
msgstr "Скачать этот каталог" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:16 |
|
||||
msgid "Progress: %(percent_translated)s%" |
|
||||
msgstr "Обработано: %(percent_translated)s%" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:17 |
|
||||
msgid "File is read-only: download the file when done editing!" |
|
||||
msgstr "" |
|
||||
"Файл только для чтения: загрузите файл после завершения редактирования!" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:19 |
|
||||
msgid "English" |
|
||||
msgstr "Английский" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:21 |
|
||||
#, python-format |
|
||||
msgid "Translate into %(rosetta_i18n_lang_name)s" |
|
||||
msgstr "Перевод на %(rosetta_i18n_lang_name)s" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:24 |
|
||||
msgid "Display:" |
|
||||
msgstr "Отображать:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:25 |
|
||||
msgid "Untranslated only" |
|
||||
msgstr "Только без перевода" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:26 |
|
||||
msgid "Translated only" |
|
||||
msgstr "Только с переводом" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:27 |
|
||||
msgid "Fuzzy only" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:28 |
|
||||
msgid "All" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:34 |
|
||||
msgid "Search" |
|
||||
msgstr "Поиск" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:36 |
|
||||
msgid "Go" |
|
||||
msgstr "Вперёд" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:45 |
|
||||
msgid "Original" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:49 |
|
||||
msgid "Occurrences(s)" |
|
||||
msgstr "Встречается в" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:73 |
|
||||
msgid "suggest" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:84 |
|
||||
#, python-format |
|
||||
msgid "%(more_count)s more" |
|
||||
msgid_plural "%(more_count)s more" |
|
||||
msgstr[0] "" |
|
||||
msgstr[1] "" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:96 |
|
||||
msgid "Save and translate next block" |
|
||||
msgstr "Сохранить и перевести следующий блок" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:100 |
|
||||
msgid "Skip to page:" |
|
||||
msgstr "Перейти к странице:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:113 |
|
||||
msgid "Displaying:" |
|
||||
msgstr "Отображение:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:115 |
|
||||
#, python-format |
|
||||
msgid "%(hits)s/%(message_number)s message" |
|
||||
msgid_plural "%(hits)s/%(message_number)s messages" |
|
||||
msgstr[0] "%(hits)s/%(message_number)s сообщение" |
|
||||
msgstr[1] "%(hits)s/%(message_number)s сообщений" |
|
||||
|
|
||||
#~ msgid "Both" |
|
||||
#~ msgstr "Все" |
|
@ -1,162 +0,0 @@ |
|||||
# SOME DESCRIPTIVE TITLE. |
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER |
|
||||
# This file is distributed under the same license as the PACKAGE package. |
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. |
|
||||
# |
|
||||
msgid "" |
|
||||
msgstr "" |
|
||||
"Project-Id-Version: Rosetta\n" |
|
||||
"Report-Msgid-Bugs-To: \n" |
|
||||
"POT-Creation-Date: 2009-10-21 12:21+0200\n" |
|
||||
"Last-Translator: Nazar Leush <nazar@pleso.net>\n" |
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n" |
|
||||
"MIME-Version: 1.0\n" |
|
||||
"Content-Type: text/plain; charset=UTF-8\n" |
|
||||
"Content-Transfer-Encoding: 8bit\n" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:3 templates/rosetta/pofile.html:13 |
|
||||
msgid "Home" |
|
||||
msgstr "Домівка" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:3 templates/rosetta/languages.html.py:4 |
|
||||
msgid "Language selection" |
|
||||
msgstr "Вибір мови" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:14 |
|
||||
msgid "Application" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:15 |
|
||||
msgid "Progress" |
|
||||
msgstr "Завершено" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:16 |
|
||||
msgid "Messages" |
|
||||
msgstr "Повідомлень" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:17 |
|
||||
msgid "Translated" |
|
||||
msgstr "Перекладено" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:18 templates/rosetta/pofile.html:48 |
|
||||
msgid "Fuzzy" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:19 |
|
||||
msgid "Obsolete" |
|
||||
msgstr "Застарілих" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:20 |
|
||||
msgid "File" |
|
||||
msgstr "Файл" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:41 |
|
||||
msgid "Nothing to translate!" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:42 |
|
||||
msgid "" |
|
||||
"You haven't specified any languages in your settings file, or haven't yet " |
|
||||
"generated a batch of translation catalogs." |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/languages.html:43 |
|
||||
#, python-format |
|
||||
msgid "" |
|
||||
"Please refer to <a href=\"%(i18n_doc_link)s\">Django's I18N documentation</" |
|
||||
"a> for a guide on how to set up internationalization for your project." |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:7 |
|
||||
msgid "Pick another file" |
|
||||
msgstr "Вибрати інший файл" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:8 |
|
||||
msgid "Download this catalog" |
|
||||
msgstr "Завантажити цей каталог" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:16 |
|
||||
msgid "Progress: %(percent_translated)s%" |
|
||||
msgstr "Завершено: %(percent_translated)s%" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:17 |
|
||||
msgid "File is read-only: download the file when done editing!" |
|
||||
msgstr "Файл тільки для читання: завантажте файл після завершення редагування!" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:19 |
|
||||
msgid "English" |
|
||||
msgstr "Англійська" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:21 |
|
||||
#, python-format |
|
||||
msgid "Translate into %(rosetta_i18n_lang_name)s" |
|
||||
msgstr "Переклад на %(rosetta_i18n_lang_name)s" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:24 |
|
||||
msgid "Display:" |
|
||||
msgstr "Відображати:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:25 |
|
||||
msgid "Untranslated only" |
|
||||
msgstr "Тільки неперекладені" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:26 |
|
||||
msgid "Translated only" |
|
||||
msgstr "Тільки перекладені" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:27 |
|
||||
msgid "Fuzzy only" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:28 |
|
||||
msgid "All" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:34 |
|
||||
msgid "Search" |
|
||||
msgstr "Пошук" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:36 |
|
||||
msgid "Go" |
|
||||
msgstr "Вперед" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:45 |
|
||||
msgid "Original" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:49 |
|
||||
msgid "Occurrences(s)" |
|
||||
msgstr "Зустрічається в" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:73 |
|
||||
msgid "suggest" |
|
||||
msgstr "" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:84 |
|
||||
#, python-format |
|
||||
msgid "%(more_count)s more" |
|
||||
msgid_plural "%(more_count)s more" |
|
||||
msgstr[0] "" |
|
||||
msgstr[1] "" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:96 |
|
||||
msgid "Save and translate next block" |
|
||||
msgstr "Записати і перекласти наступний блок" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:100 |
|
||||
msgid "Skip to page:" |
|
||||
msgstr "Перейти до сторінки:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:113 |
|
||||
msgid "Displaying:" |
|
||||
msgstr "Відображення:" |
|
||||
|
|
||||
#: templates/rosetta/pofile.html:115 |
|
||||
#, python-format |
|
||||
msgid "%(hits)s/%(message_number)s message" |
|
||||
msgid_plural "%(hits)s/%(message_number)s messages" |
|
||||
msgstr[0] "%(hits)s/%(message_number)s повідомлення" |
|
||||
msgstr[1] "%(hits)s/%(message_number)s повідомлень" |
|
||||
|
|
||||
#~ msgid "Both" |
|
||||
#~ msgstr "Всі" |
|
@ -1,26 +0,0 @@ |
|||||
# -*- coding: utf-8 -*- |
|
||||
|
|
||||
""" |
|
||||
* Copyright (C) 2010, Marco Bonetti <mbonetti@gmail.com> |
|
||||
* |
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy |
|
||||
* of this software and associated documentation files (the "Software"), to deal |
|
||||
* in the Software without restriction, including without limitation the rights |
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
|
||||
* copies of the Software, and to permit persons to whom the Software is |
|
||||
* furnished to do so, subject to the following conditions: |
|
||||
* |
|
||||
* The above copyright notice and this permission notice shall be included in |
|
||||
* all copies or substantial portions of the Software. |
|
||||
* |
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
|
||||
* THE SOFTWARE. |
|
||||
""" |
|
||||
|
|
||||
from django.db import models |
|
||||
# Create your models here. |
|
1443
pyweb/rosetta/polib.py
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -1,114 +0,0 @@ |
|||||
# -*- coding: utf-8 -*- |
|
||||
|
|
||||
""" |
|
||||
* Copyright (C) 2010, Marco Bonetti <mbonetti@gmail.com> |
|
||||
* |
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy |
|
||||
* of this software and associated documentation files (the "Software"), to deal |
|
||||
* in the Software without restriction, including without limitation the rights |
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
|
||||
* copies of the Software, and to permit persons to whom the Software is |
|
||||
* furnished to do so, subject to the following conditions: |
|
||||
* |
|
||||
* The above copyright notice and this permission notice shall be included in |
|
||||
* all copies or substantial portions of the Software. |
|
||||
* |
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
|
||||
* THE SOFTWARE. |
|
||||
""" |
|
||||
|
|
||||
import re, string, sys, os |
|
||||
from django.conf import settings |
|
||||
try: |
|
||||
set |
|
||||
except NameError: |
|
||||
from sets import Set as set # Python 2.3 fallback |
|
||||
|
|
||||
def find_pos(lang, include_djangos = False, include_rosetta = False): |
|
||||
""" |
|
||||
scans a couple possible repositories of gettext catalogs for the given |
|
||||
language code |
|
||||
|
|
||||
""" |
|
||||
|
|
||||
paths = [] |
|
||||
|
|
||||
# project/locale |
|
||||
parts = settings.SETTINGS_MODULE.split('.') |
|
||||
project = __import__(parts[0], {}, {}, []) |
|
||||
paths.append(os.path.join(os.path.dirname(project.__file__), 'locale')) |
|
||||
|
|
||||
# django/locale |
|
||||
if include_djangos: |
|
||||
paths.append(os.path.join(os.path.dirname(sys.modules[settings.__module__].__file__), 'locale')) |
|
||||
|
|
||||
# settings |
|
||||
for localepath in settings.LOCALE_PATHS: |
|
||||
if os.path.isdir(localepath): |
|
||||
paths.append(localepath) |
|
||||
|
|
||||
# project/app/locale |
|
||||
for appname in settings.INSTALLED_APPS: |
|
||||
if 'rosetta' == appname and include_rosetta == False: |
|
||||
continue |
|
||||
|
|
||||
p = appname.rfind('.') |
|
||||
if p >= 0: |
|
||||
app = getattr(__import__(appname[:p], {}, {}, [appname[p+1:]]), appname[p+1:]) |
|
||||
else: |
|
||||
app = __import__(appname, {}, {}, []) |
|
||||
|
|
||||
apppath = os.path.join(os.path.dirname(app.__file__), 'locale') |
|
||||
|
|
||||
if os.path.isdir(apppath): |
|
||||
paths.append(apppath) |
|
||||
|
|
||||
ret = set() |
|
||||
rx=re.compile(r'(\w+)/../\1') |
|
||||
langs = (lang,) |
|
||||
if u'-' in lang: |
|
||||
_l,_c = map(lambda x:x.lower(),lang.split(u'-')) |
|
||||
langs += (u'%s_%s' %(_l, _c), u'%s_%s' %(_l, _c.upper()), ) |
|
||||
elif u'_' in lang: |
|
||||
_l,_c = map(lambda x:x.lower(),lang.split(u'_')) |
|
||||
langs += (u'%s-%s' %(_l, _c), u'%s-%s' %(_l, _c.upper()), ) |
|
||||
|
|
||||
for path in paths: |
|
||||
for lang_ in langs: |
|
||||
dirname = rx.sub(r'\1', '%s/%s/LC_MESSAGES/' %(path,lang_)) |
|
||||
for fn in ('django.po','djangojs.po',): |
|
||||
if os.path.isfile(dirname+fn): |
|
||||
ret.add(os.path.abspath(dirname+fn)) |
|
||||
return list(ret) |
|
||||
|
|
||||
def pagination_range(first,last,current): |
|
||||
r = [] |
|
||||
|
|
||||
r.append(first) |
|
||||
if first + 1 < last: r.append(first+1) |
|
||||
|
|
||||
if current -2 > first and current -2 < last: r.append(current-2) |
|
||||
if current -1 > first and current -1 < last: r.append(current-1) |
|
||||
if current > first and current < last: r.append(current) |
|
||||
if current + 1 < last and current+1 > first: r.append(current+1) |
|
||||
if current + 2 < last and current+2 > first: r.append(current+2) |
|
||||
|
|
||||
if last-1 > first: r.append(last-1) |
|
||||
r.append(last) |
|
||||
|
|
||||
r = list(set(r)) |
|
||||
r.sort() |
|
||||
prev = 10000 |
|
||||
for e in r[:]: |
|
||||
if prev + 1 < e: |
|
||||
try: |
|
||||
r.insert(r.index(e), '...') |
|
||||
except ValueError: |
|
||||
pass |
|
||||
prev = e |
|
||||
return r |
|
@ -1,41 +0,0 @@ |
|||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
|
||||
|
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
|
||||
<head> |
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> |
|
||||
<link rel="stylesheet" href="{{ADMIN_MEDIA_PREFIX}}css/base.css" type="text/css"/> |
|
||||
<link rel="stylesheet" href="{{ADMIN_MEDIA_PREFIX}}css/forms.css" type="text/css"/> |
|
||||
<link rel="stylesheet" href="{{ADMIN_MEDIA_PREFIX}}css/changelists.css" type="text/css"/> |
|
||||
<style type="text/css" media="screen"> |
|
||||
{% include 'rosetta/css/rosetta.css' %} |
|
||||
</style> |
|
||||
<script src="http://www.google.com/jsapi" type="text/javascript"></script> |
|
||||
<script type="text/javascript"> |
|
||||
//<!-- |
|
||||
google.load("jquery", "1.3"); |
|
||||
{% if ENABLE_TRANSLATION_SUGGESTIONS %}google.load("language", "1");{% endif %} |
|
||||
{% include 'rosetta/js/rosetta.js' %} |
|
||||
//--> |
|
||||
</script> |
|
||||
<title>Rosetta - {% block pagetitle %}{% endblock %}</title> |
|
||||
</head> |
|
||||
<body> |
|
||||
<div id="container"> |
|
||||
<div id="header"> |
|
||||
{% block header %} |
|
||||
<div id="branding"> |
|
||||
<h1 id="site-name"><a href="{% url rosetta-pick-file %}">Rosetta</a> </h1> |
|
||||
</div> |
|
||||
{% endblock %} |
|
||||
</div> |
|
||||
<div class="breadcrumbs">{% block breadcumbs %}{% endblock %}</div> |
|
||||
<div id="content" class="flex"> |
|
||||
{% block main %}{% endblock %} |
|
||||
</div> |
|
||||
<div id="footer" class="breadcumbs"> |
|
||||
<a href="http://code.google.com/p/django-rosetta">Rosetta</a> <span class="version">{{version}}</span> |
|
||||
</div> |
|
||||
</div> |
|
||||
</body> |
|
||||
</html> |
|
@ -1,28 +0,0 @@ |
|||||
#user-tools p span { margin-left:2em; } |
|
||||
table{width:100%;} |
|
||||
td.translation label {font-size: 95%;} |
|
||||
td.translation textarea, td.original { font-size:110%;} |
|
||||
td.translation,td.original {width:30%;} |
|
||||
td.original .plural-container { position:relative} |
|
||||
td.translation textarea{ width:98.5%; min-height:25px; margin:2px 0; } |
|
||||
.rtl td.translation textarea { direction: rtl;} |
|
||||
.plural span {display:block; margin:2px 0; position:absolute} |
|
||||
td.location code,td.location a { font-size:95%; display:block;} |
|
||||
td.location code.hide { display:none;} |
|
||||
.submit-row {margin-bottom:0;} |
|
||||
li.nobubble,li.nobubble:hover { background-image:none;} |
|
||||
.object-tools li.active, .object-tools li.active a { color:yellow;} |
|
||||
p.paginator input { float:right;} |
|
||||
p.paginator span.space { margin: 0 0.5em;} |
|
||||
.paginator {text-align:left; border:none; background:transparent; } |
|
||||
.paginator strong { margin-left:1em;} |
|
||||
th.r,td.r {text-align:right;} |
|
||||
th.c,td.c {text-align: center;} |
|
||||
td.original code {font-size:90%; padding: 0 1px; } |
|
||||
tr.row2 td.original code {background-color:#FFB2A5; padding: 0 0.3em;} |
|
||||
tr.row1 td.original code {background-color:#FFB2A5;} |
|
||||
.alert { font-weight:bold;padding:4px 5px 4px 25px; margin-left:1em; color: red; background:transparent url({{ADMIN_MEDIA_PREFIX}}img/admin/icon_alert.gif) 5px .3em no-repeat; } |
|
||||
#footer { clear:both; color:#999; font-size:9px; margin:0 6px; text-align:left;} |
|
||||
#changelist table tbody td:first-child, #changelist table thead th:first-child {text-align: left;} |
|
||||
td.hint {color: #777;} |
|
||||
div.module {margin-bottom: 20px;} |
|
@ -1,57 +0,0 @@ |
|||||
google.setOnLoadCallback(function() { |
|
||||
$('.location a').show().toggle(function() { |
|
||||
$('.hide', $(this).parent()).show(); |
|
||||
}, function() { |
|
||||
$('.hide', $(this).parent()).hide(); |
|
||||
}); |
|
||||
{% if ENABLE_TRANSLATION_SUGGESTIONS %} |
|
||||
$('a.suggest').click(function() { |
|
||||
var a=$(this), str=a.html(); orig=$('.original', a.parents('tr')).html(),trans=$('textarea',a.parent()); |
|
||||
orig = unescape(orig).replace(/<br\s?\/?>/g,'\n').replace(/<code>/g,'').replace(/<\/code>/g,'').replace(/>/g,'>').replace(/</g,'<'); |
|
||||
a.attr('class','suggesting').html('...'); |
|
||||
google.language.translate(orig, "en", '{{rosetta_i18n_lang_code}}', function(result) { |
|
||||
if (!result.error) { |
|
||||
trans.val(unescape(result.translation).replace(/'/g,'\'').replace(/"/g,'"').replace(/%\s+(\([^\)]+\))\s*s/g,' %$1s ')); |
|
||||
a.hide(); |
|
||||
} else { |
|
||||
a.hide().before($('<span class="alert">'+result.error.message+'</span>')); |
|
||||
} |
|
||||
}); |
|
||||
return false; |
|
||||
}); |
|
||||
{% endif %} |
|
||||
$('td.plural').each(function(i) { |
|
||||
var td = $(this), trY = parseInt(td.closest('tr').offset().top); |
|
||||
$('textarea', $(this).closest('tr')).each(function(j) { |
|
||||
var textareaY= parseInt($(this).offset().top) - trY; |
|
||||
$($('.part',td).get(j)).css('top',textareaY + 'px'); |
|
||||
}); |
|
||||
}); |
|
||||
|
|
||||
$('.translation textarea').blur(function() { |
|
||||
if($(this).val()) { |
|
||||
$('.alert', $(this).parents('tr')).remove(); |
|
||||
var RX = /%(?:\([^\s\)]*\))?[sdf]/g, |
|
||||
origs=$('.original', $(this).parents('tr')).html().match(RX), |
|
||||
trads=$(this).val().match(RX), |
|
||||
error = $('<span class="alert">Unmatched variables</span>'); |
|
||||
if (origs && trads) { |
|
||||
for (var i = trads.length; i--;){ |
|
||||
var key = trads[i]; |
|
||||
if (-1 == $.inArray(key, origs)) { |
|
||||
$(this).before(error) |
|
||||
return false; |
|
||||
} |
|
||||
} |
|
||||
return true; |
|
||||
} else { |
|
||||
if (!(origs === null && trads === null)) { |
|
||||
$(this).before(error); |
|
||||
return false; |
|
||||
} |
|
||||
} |
|
||||
return true; |
|
||||
} |
|
||||
}); |
|
||||
|
|
||||
}); |
|
@ -1,45 +0,0 @@ |
|||||
{% extends "rosetta/base.html" %} |
|
||||
{% load i18n %} |
|
||||
{% block breadcumbs %}<a href="{% url rosetta-pick-file %}">{% trans "Home" %}</a> › {% trans "Language selection" %}{% endblock %} |
|
||||
{% block pagetitle %}{% trans "Language selection" %}{% endblock %} |
|
||||
{% block main %} |
|
||||
{% if has_pos %} |
|
||||
{% for lid,language,pos in languages %} |
|
||||
{% if pos %} |
|
||||
<div class="module"> |
|
||||
<h2>{{language}}</h2> |
|
||||
<table cellspacing="0"> |
|
||||
<thead> |
|
||||
<tr> |
|
||||
<th>{% trans "Application" %}</th> |
|
||||
<th class="r">{% trans "Progress"%}</th> |
|
||||
<th class="r">{% trans "Messages" %}</th> |
|
||||
<th class="r">{% trans "Translated" %}</th> |
|
||||
<th class="r">{% trans "Fuzzy"%}</th> |
|
||||
<th class="r">{% trans "Obsolete"%}</th> |
|
||||
<th>{% trans "File" %}</th> |
|
||||
</tr> |
|
||||
</thead> |
|
||||
<tbody> |
|
||||
{% for app,path,po in pos %} |
|
||||
<tr class="{% cycle row1,row2 %}"> |
|
||||
<td><a href="{% url rosetta-language-selection lid,forloop.counter0 %}{% if do_django %}?django{% endif %}{% if do_rosetta %}?rosetta{% endif %}">{{ app|title }}</a></td> |
|
||||
<td class="r">{{po.percent_translated|floatformat:2}}%</td> |
|
||||
<td class="r">{{po|length}}</td> |
|
||||
<td class="r">{{po.translated_entries|length}}</td> |
|
||||
<td class="r">{{po.fuzzy_entries|length}}</td> |
|
||||
<td class="r">{{po.obsolete_entries|length}}</td> |
|
||||
<td class="hint">{{ path }}</td> |
|
||||
</tr> |
|
||||
{% endfor %} |
|
||||
</tbody> |
|
||||
</table> |
|
||||
</div> |
|
||||
{% endif %} |
|
||||
{% endfor %} |
|
||||
{% else %} |
|
||||
<h1>{% trans "Nothing to translate!" %}</h1> |
|
||||
<p>{% trans "You haven't specified any languages in your settings file, or haven't yet generated a batch of translation catalogs." %}</p> |
|
||||
<p>{% blocktrans with "http://docs.djangoproject.com/en/dev/topics/i18n/#topics-i18n" as i18n_doc_link %}Please refer to <a href="{{i18n_doc_link}}">Django's I18N documentation</a> for a guide on how to set up internationalization for your project.{% endblocktrans %}</p> |
|
||||
{% endif %} |
|
||||
{% endblock %} |
|
@ -1,125 +0,0 @@ |
|||||
{% extends "rosetta/base.html" %} |
|
||||
{% load rosetta i18n %} |
|
||||
|
|
||||
{% block header %} |
|
||||
{{block.super}} |
|
||||
<div id="user-tools"> |
|
||||
<p> |
|
||||
<span><a href="{% url rosetta-pick-file %}">{% trans "Pick another file" %}</a> / |
|
||||
<a href="{% url rosetta-download-file %}">{% trans "Download this catalog" %}</a></span> |
|
||||
</p> |
|
||||
</div> |
|
||||
{% endblock %} |
|
||||
{% block breadcumbs %} |
|
||||
<a href="{% url rosetta-pick-file %}">{% trans "Home" %}</a> › |
|
||||
{{ rosetta_i18n_lang_name }} › |
|
||||
{{ rosetta_i18n_app|title }} › |
|
||||
{% blocktrans with rosetta_i18n_pofile.percent_translated|floatformat:2 as percent_translated %}Progress: {{ percent_translated }}%{% endblocktrans %} |
|
||||
{% if not rosetta_i18n_write %}<span class="alert">{% trans "File is read-only: download the file when done editing!" %}</span>{% endif %} |
|
||||
{% endblock %} |
|
||||
{% block pagetitle %}{% trans "English" %} - {{rosetta_i18n_lang_name}} ({{ rosetta_i18n_pofile.percent_translated|floatformat:0 }}%){% endblock %} |
|
||||
{% block main %} |
|
||||
<h1>{% blocktrans %}Translate into {{rosetta_i18n_lang_name}}{% endblocktrans %}</h1> |
|
||||
|
|
||||
<ul class="object-tools"> |
|
||||
<li class="nobubble">{% trans "Display:" %}</li> |
|
||||
<li {% ifequal rosetta_i18n_filter 'untranslated' %}class="active"{% endifequal %}><a href="?filter=untranslated">{% trans "Untranslated only" %}</a></li> |
|
||||
<li {% ifequal rosetta_i18n_filter 'translated' %}class="active"{% endifequal %}><a href="?filter=translated">{% trans "Translated only" %}</a></li> |
|
||||
<li {% ifequal rosetta_i18n_filter 'fuzzy' %}class="active"{% endifequal %}><a href="?filter=fuzzy">{% trans "Fuzzy only" %}</a></li> |
|
||||
<li {% ifequal rosetta_i18n_filter 'all' %}class="active"{% endifequal %}><a href="?filter=all">{% trans "All" %}</a></li> |
|
||||
</ul> |
|
||||
<div id="changelist" class="module{% if rosetta_i18n_lang_bidi %} rtl{% endif %}"> |
|
||||
<div id="toolbar"> |
|
||||
<form id="changelist-search" action="" method="post"> |
|
||||
<div><!-- DIV needed for valid HTML --> |
|
||||
{% rosetta_csrf_token %} |
|
||||
<label for="searchbar"><img src="{{ADMIN_MEDIA_PREFIX}}img/admin/icon_searchbox.png" alt="{% trans "Search" %}" /></label> |
|
||||
<input type="text" size="40" name="query" value="{% if query %}{{query}}{% endif %}" id="searchbar" /> |
|
||||
<input type="submit" name="search" value="{% trans "Go" %}" /> |
|
||||
</div> |
|
||||
</form> |
|
||||
</div> |
|
||||
|
|
||||
<form method="post" action=""> |
|
||||
<table> |
|
||||
<thead> |
|
||||
<tr> |
|
||||
{% rosetta_csrf_token %} |
|
||||
<th>{% trans "Original" %}</th> |
|
||||
{% if main_language %}<th>{{ main_language }}</th>{% endif %} |
|
||||
<th>{{ rosetta_i18n_lang_name }}</th> |
|
||||
<th class="c">{% trans "Fuzzy" %}</th> |
|
||||
<th>{% trans "Occurrences(s)" %}</th> |
|
||||
</tr> |
|
||||
</thead> |
|
||||
<tbody> |
|
||||
{% for message in messages %} |
|
||||
<tr class="{% cycle row1,row2 %}"> |
|
||||
{% if message.msgid_plural %} |
|
||||
<td class="original plural"> |
|
||||
<div class="plural-container"> |
|
||||
<span class="part">{{message.msgid|format_message|linebreaksbr}}</span> |
|
||||
<span class="part">{{message.msgid_plural|format_message|linebreaksbr}}</span> |
|
||||
</div> |
|
||||
</td> |
|
||||
<td class="translation"> |
|
||||
{% for k, msgstr in message.msgstr_plural.items|dictsort:"0" %} |
|
||||
<label for="m_{{message.id}}_{{k}}">{{k}}:</label> |
|
||||
<textarea rows="{{message.msgid|format_message|lines_count}}" cols="40" id="m_{{message.id}}_{{k}}" name="m_{{message.id}}_{{k}}">{{msgstr}}</textarea> |
|
||||
{% endfor %} |
|
||||
</td> |
|
||||
{% else %} |
|
||||
<td class="original">{{ message.msgid|format_message|linebreaksbr }}</td> |
|
||||
{% if main_language %}<td class="original">{{ message.main_lang|format_message|linebreaksbr }}</td>{% endif %} |
|
||||
<td class="translation"> |
|
||||
<textarea rows="{{message.msgid|format_message|lines_count}}" cols="40" name="m_{{message.id}}">{{message.msgstr}}</textarea> |
|
||||
{% if ENABLE_TRANSLATION_SUGGESTIONS %}<a href="#" class="suggest">{% trans "suggest" %}</a>{% endif %} |
|
||||
</td> |
|
||||
{% endif %} |
|
||||
<td class="c"> |
|
||||
<input type="checkbox" name="f_{{message.id}}" value="1" {% if message|is_fuzzy %}checked="checked"{% endif %} /> |
|
||||
</td> |
|
||||
<td class="location"> |
|
||||
{% for fn,lineno in message.occurrences %} |
|
||||
<code{% if forloop.counter|gt:"3" %} class="hide"{% endif %}>{{ fn }}:{{lineno}}</code> |
|
||||
{% endfor %} |
|
||||
{% if message.occurrences|length|gt:"3" %} |
|
||||
<a href="#">… ({% blocktrans count message.occurrences|length|minus:"3" as more_count %}{{more_count}} more{% plural %}{{more_count}} more{% endblocktrans %})</a> |
|
||||
{% endif %} |
|
||||
</td> |
|
||||
</tr> |
|
||||
{% endfor %} |
|
||||
</tbody> |
|
||||
</table> |
|
||||
<div class="submit-row"> |
|
||||
<p class="paginator"> |
|
||||
{% if query %} |
|
||||
<input type="hidden" name="query" value="{{query}}" /> |
|
||||
{% endif %} |
|
||||
<input type="submit" class="default" name="_next" value="{% trans "Save and translate next block" %}"/> |
|
||||
|
|
||||
|
|
||||
{% if needs_pagination %} |
|
||||
{% trans "Skip to page:" %} |
|
||||
{% for i in page_range %} |
|
||||
{% ifequal i '...' %} |
|
||||
<span class="space">{{ i }}</span> |
|
||||
{% else %} |
|
||||
{% ifequal i page %} |
|
||||
<span class="this-page">{{i}}</span> |
|
||||
{% else %} |
|
||||
<a href="?page={{i}}{% if query %}&query={{query}}{% endif %}">{{i}}</a> |
|
||||
{% endifequal %} |
|
||||
{% endifequal %} |
|
||||
{% endfor %} |
|
||||
{% else %} |
|
||||
{% trans "Displaying:" %} |
|
||||
{% endif %} |
|
||||
<strong>{% blocktrans count rosetta_i18n_pofile|length as message_number and paginator.object_list|length as hits %}{{hits}}/{{message_number}} message{% plural %}{{hits}}/{{message_number}} messages{% endblocktrans %}</strong> |
|
||||
|
|
||||
|
|
||||
</p> |
|
||||
</div> |
|
||||
</form> |
|
||||
</div> |
|
||||
{% endblock %} |
|
@ -1,24 +0,0 @@ |
|||||
# -*- coding: utf-8 -*- |
|
||||
|
|
||||
""" |
|
||||
* Copyright (C) 2010, Marco Bonetti <mbonetti@gmail.com> |
|
||||
* |
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy |
|
||||
* of this software and associated documentation files (the "Software"), to deal |
|
||||
* in the Software without restriction, including without limitation the rights |
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
|
||||
* copies of the Software, and to permit persons to whom the Software is |
|
||||
* furnished to do so, subject to the following conditions: |
|
||||
* |
|
||||
* The above copyright notice and this permission notice shall be included in |
|
||||
* all copies or substantial portions of the Software. |
|
||||
* |
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
|
||||
* THE SOFTWARE. |
|
||||
""" |
|
||||
|
|
@ -1,77 +0,0 @@ |
|||||
# -*- coding: utf-8 -*- |
|
||||
|
|
||||
""" |
|
||||
* Copyright (C) 2010, Marco Bonetti <mbonetti@gmail.com> |
|
||||
* |
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy |
|
||||
* of this software and associated documentation files (the "Software"), to deal |
|
||||
* in the Software without restriction, including without limitation the rights |
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
|
||||
* copies of the Software, and to permit persons to whom the Software is |
|
||||
* furnished to do so, subject to the following conditions: |
|
||||
* |
|
||||
* The above copyright notice and this permission notice shall be included in |
|
||||
* all copies or substantial portions of the Software. |
|
||||
* |
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
|
||||
* THE SOFTWARE. |
|
||||
""" |
|
||||
|
|
||||
from django import template |
|
||||
from django.utils.safestring import mark_safe |
|
||||
from django.utils.html import escape |
|
||||
import re |
|
||||
from django.template import Node |
|
||||
|
|
||||
register = template.Library() |
|
||||
rx = re.compile(r'(%(\([^\s\)]*\))?[sd])') |
|
||||
|
|
||||
def format_message(message): |
|
||||
return mark_safe(rx.sub('<code>\\1</code>', escape(message).replace(r'\n','<br />\n'))) |
|
||||
format_message=register.filter(format_message) |
|
||||
|
|
||||
|
|
||||
def lines_count(message): |
|
||||
return 1 + sum([len(line)/50 for line in message.split('\n')]) |
|
||||
lines_count=register.filter(lines_count) |
|
||||
|
|
||||
def mult(a,b): |
|
||||
return int(a)*int(b) |
|
||||
mult=register.filter(mult) |
|
||||
|
|
||||
def minus(a,b): |
|
||||
try: |
|
||||
return int(a) - int(b) |
|
||||
except: |
|
||||
return 0 |
|
||||
minus=register.filter(minus) |
|
||||
|
|
||||
|
|
||||
def gt(a,b): |
|
||||
try: |
|
||||
return int(a) > int(b) |
|
||||
except: |
|
||||
return False |
|
||||
gt=register.filter(gt) |
|
||||
|
|
||||
|
|
||||
def is_fuzzy(message): |
|
||||
return message and hasattr(message, 'flags') and 'fuzzy' in message.flags |
|
||||
is_fuzzy = register.filter(is_fuzzy) |
|
||||
|
|
||||
class RosettaCsrfTokenPlaceholder(Node): |
|
||||
def render(self, context): |
|
||||
return mark_safe(u"<!-- csrf token placeholder -->") |
|
||||
|
|
||||
def rosetta_csrf_token(parser, token): |
|
||||
try: |
|
||||
from django.template.defaulttags import csrf_token |
|
||||
return csrf_token(parser,token) |
|
||||
except ImportError: |
|
||||
return RosettaCsrfTokenPlaceholder() |
|
||||
rosetta_csrf_token=register.tag(rosetta_csrf_token) |
|
@ -1,32 +0,0 @@ |
|||||
# -*- coding: utf-8 -*- |
|
||||
|
|
||||
""" |
|
||||
* Copyright (C) 2010, Marco Bonetti <mbonetti@gmail.com> |
|
||||
* |
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy |
|
||||
* of this software and associated documentation files (the "Software"), to deal |
|
||||
* in the Software without restriction, including without limitation the rights |
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
|
||||
* copies of the Software, and to permit persons to whom the Software is |
|
||||
* furnished to do so, subject to the following conditions: |
|
||||
* |
|
||||
* The above copyright notice and this permission notice shall be included in |
|
||||
* all copies or substantial portions of the Software. |
|
||||
* |
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
|
||||
* THE SOFTWARE. |
|
||||
""" |
|
||||
|
|
||||
from django.conf.urls.defaults import * |
|
||||
from django.views.generic.simple import direct_to_template |
|
||||
urlpatterns = patterns('rosetta.views', |
|
||||
url(r'^$', 'home', name='rosetta-home'), |
|
||||
url(r'^pick/$', 'list_languages', name='rosetta-pick-file'), |
|
||||
url(r'^download/$', 'download_file', name='rosetta-download-file'), |
|
||||
url(r'^select/(?P<langid>[\w\-]+)/(?P<idx>\d+)/$','lang_sel', name='rosetta-language-selection'), |
|
||||
) |
|
@ -1,322 +0,0 @@ |
|||||
# -*- coding: utf-8 -*- |
|
||||
|
|
||||
""" |
|
||||
* Copyright (C) 2010, Marco Bonetti <mbonetti@gmail.com> |
|
||||
* |
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy |
|
||||
* of this software and associated documentation files (the "Software"), to deal |
|
||||
* in the Software without restriction, including without limitation the rights |
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
|
||||
* copies of the Software, and to permit persons to whom the Software is |
|
||||
* furnished to do so, subject to the following conditions: |
|
||||
* |
|
||||
* The above copyright notice and this permission notice shall be included in |
|
||||
* all copies or substantial portions of the Software. |
|
||||
* |
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
|
||||
* THE SOFTWARE. |
|
||||
""" |
|
||||
|
|
||||
from django.conf import settings |
|
||||
from django.contrib.auth.decorators import user_passes_test |
|
||||
from django.core.paginator import Paginator, InvalidPage |
|
||||
from django.core.urlresolvers import reverse, resolve, Resolver404 |
|
||||
from django.http import Http404, HttpResponseRedirect, HttpResponse |
|
||||
from django.shortcuts import render_to_response |
|
||||
from django.utils.encoding import smart_unicode, force_unicode, iri_to_uri |
|
||||
from django.utils.translation import ugettext_lazy as _ |
|
||||
from django.views.decorators.cache import never_cache |
|
||||
from rosetta.polib import pofile |
|
||||
from rosetta.poutil import find_pos, pagination_range |
|
||||
from rosetta.conf import settings as rosetta_settings |
|
||||
import re, os, rosetta, datetime, unicodedata |
|
||||
from django.template import RequestContext |
|
||||
|
|
||||
|
|
||||
try: |
|
||||
resolve(settings.LOGIN_URL) |
|
||||
except Resolver404: |
|
||||
try: |
|
||||
resolve('/admin/') |
|
||||
except Resolver404: |
|
||||
raise Exception('Rosetta cannot log you in!\nYou must define a LOGIN_URL in your settings if you don\'t run the Django admin site at a standard URL.') |
|
||||
else: |
|
||||
LOGIN_URL = '/admin/' |
|
||||
else: |
|
||||
LOGIN_URL = settings.LOGIN_URL |
|
||||
|
|
||||
|
|
||||
def home(request): |
|
||||
""" |
|
||||
Displays a list of messages to be translated |
|
||||
""" |
|
||||
|
|
||||
def fix_nls(in_,out_): |
|
||||
"""Fixes submitted translations by filtering carriage returns and pairing |
|
||||
newlines at the begging and end of the translated string with the original |
|
||||
""" |
|
||||
if 0 == len(in_) or 0 == len(out_): |
|
||||
return out_ |
|
||||
|
|
||||
if "\r" in out_ and "\r" not in in_: |
|
||||
out_=out_.replace("\r",'') |
|
||||
|
|
||||
if "\n" == in_[0] and "\n" != out_[0]: |
|
||||
out_ = "\n" + out_ |
|
||||
elif "\n" != in_[0] and "\n" == out_[0]: |
|
||||
out_ = out_.lstrip() |
|
||||
if "\n" == in_[-1] and "\n" != out_[-1]: |
|
||||
out_ = out_ + "\n" |
|
||||
elif "\n" != in_[-1] and "\n" == out_[-1]: |
|
||||
out_ = out_.rstrip() |
|
||||
return out_ |
|
||||
|
|
||||
version = rosetta.get_version(True) |
|
||||
if 'rosetta_i18n_fn' in request.session: |
|
||||
rosetta_i18n_fn=request.session.get('rosetta_i18n_fn') |
|
||||
rosetta_i18n_app = get_app_name(rosetta_i18n_fn) |
|
||||
rosetta_i18n_pofile = request.session.get('rosetta_i18n_pofile') |
|
||||
rosetta_i18n_lang_code = request.session['rosetta_i18n_lang_code'] |
|
||||
rosetta_i18n_lang_bidi = (rosetta_i18n_lang_code in settings.LANGUAGES_BIDI) |
|
||||
rosetta_i18n_write = request.session.get('rosetta_i18n_write', True) |
|
||||
|
|
||||
if 'filter' in request.GET: |
|
||||
if request.GET.get('filter') in ('untranslated', 'translated', 'fuzzy', 'all'): |
|
||||
filter_ = request.GET.get('filter') |
|
||||
request.session['rosetta_i18n_filter'] = filter_ |
|
||||
return HttpResponseRedirect(reverse('rosetta-home')) |
|
||||
|
|
||||
rosetta_i18n_filter = request.session.get('rosetta_i18n_filter', 'all') |
|
||||
|
|
||||
if '_next' in request.POST: |
|
||||
rx=re.compile(r'^m_([0-9]+)') |
|
||||
rx_plural=re.compile(r'^m_([0-9]+)_([0-9]+)') |
|
||||
file_change = False |
|
||||
for k in request.POST.keys(): |
|
||||
if rx_plural.match(k): |
|
||||
id=int(rx_plural.match(k).groups()[0]) |
|
||||
idx=int(rx_plural.match(k).groups()[1]) |
|
||||
rosetta_i18n_pofile[id].msgstr_plural[str(idx)] = fix_nls(rosetta_i18n_pofile[id].msgid_plural[idx], request.POST.get(k)) |
|
||||
file_change = True |
|
||||
elif rx.match(k): |
|
||||
id=int(rx.match(k).groups()[0]) |
|
||||
rosetta_i18n_pofile[id].msgstr = fix_nls(rosetta_i18n_pofile[id].msgid, request.POST.get(k)) |
|
||||
file_change = True |
|
||||
|
|
||||
if file_change and 'fuzzy' in rosetta_i18n_pofile[id].flags and not request.POST.get('f_%d' %id, False): |
|
||||
rosetta_i18n_pofile[id].flags.remove('fuzzy') |
|
||||
elif file_change and 'fuzzy' not in rosetta_i18n_pofile[id].flags and request.POST.get('f_%d' %id, False): |
|
||||
rosetta_i18n_pofile[id].flags.append('fuzzy') |
|
||||
|
|
||||
if file_change and rosetta_i18n_write: |
|
||||
|
|
||||
try: |
|
||||
rosetta_i18n_pofile.metadata['Last-Translator'] = unicodedata.normalize('NFKD', u"%s %s <%s>" %(request.user.first_name,request.user.last_name,request.user.email)).encode('ascii', 'ignore') |
|
||||
rosetta_i18n_pofile.metadata['X-Translated-Using'] = u"django-rosetta %s" % rosetta.get_version(False) |
|
||||
rosetta_i18n_pofile.metadata['PO-Revision-Date'] = datetime.datetime.now().strftime('%Y-%m-%d %H:%M%z') |
|
||||
except UnicodeDecodeError: |
|
||||
pass |
|
||||
try: |
|
||||
rosetta_i18n_pofile.save() |
|
||||
rosetta_i18n_pofile.save_as_mofile(rosetta_i18n_fn.replace('.po','.mo')) |
|
||||
|
|
||||
# Try auto-reloading via the WSGI daemon mode reload mechanism |
|
||||
if rosetta_settings.WSGI_AUTO_RELOAD and \ |
|
||||
request.environ.has_key('mod_wsgi.process_group') and \ |
|
||||
request.environ.get('mod_wsgi.process_group',None) and \ |
|
||||
request.environ.has_key('SCRIPT_FILENAME') and \ |
|
||||
int(request.environ.get('mod_wsgi.script_reloading', '0')): |
|
||||
try: |
|
||||
os.utime(request.environ.get('SCRIPT_FILENAME'), None) |
|
||||
except OSError: |
|
||||
pass |
|
||||
|
|
||||
except: |
|
||||
request.session['rosetta_i18n_write'] = False |
|
||||
|
|
||||
request.session['rosetta_i18n_pofile']=rosetta_i18n_pofile |
|
||||
|
|
||||
# Retain query arguments |
|
||||
query_arg = '' |
|
||||
if 'query' in request.REQUEST: |
|
||||
query_arg = '?query=%s' %request.REQUEST.get('query') |
|
||||
if 'page' in request.GET: |
|
||||
if query_arg: |
|
||||
query_arg = query_arg + '&' |
|
||||
else: |
|
||||
query_arg = '?' |
|
||||
query_arg = query_arg + 'page=%d' % int(request.GET.get('page')) |
|
||||
|
|
||||
|
|
||||
return HttpResponseRedirect(reverse('rosetta-home') + iri_to_uri(query_arg)) |
|
||||
|
|
||||
|
|
||||
rosetta_i18n_lang_name = _(request.session.get('rosetta_i18n_lang_name')) |
|
||||
rosetta_i18n_lang_code = request.session.get('rosetta_i18n_lang_code') |
|
||||
|
|
||||
if 'query' in request.REQUEST and request.REQUEST.get('query','').strip(): |
|
||||
query=request.REQUEST.get('query').strip() |
|
||||
rx=re.compile(query, re.IGNORECASE) |
|
||||
paginator = Paginator([e for e in rosetta_i18n_pofile if rx.search(smart_unicode(e.msgstr)+smart_unicode(e.msgid)+u''.join([o[0] for o in e.occurrences]))], rosetta_settings.MESSAGES_PER_PAGE) |
|
||||
else: |
|
||||
if rosetta_i18n_filter == 'untranslated': |
|
||||
paginator = Paginator(rosetta_i18n_pofile.untranslated_entries(), rosetta_settings.MESSAGES_PER_PAGE) |
|
||||
elif rosetta_i18n_filter == 'translated': |
|
||||
paginator = Paginator(rosetta_i18n_pofile.translated_entries(), rosetta_settings.MESSAGES_PER_PAGE) |
|
||||
elif rosetta_i18n_filter == 'fuzzy': |
|
||||
paginator = Paginator(rosetta_i18n_pofile.fuzzy_entries(), rosetta_settings.MESSAGES_PER_PAGE) |
|
||||
else: |
|
||||
paginator = Paginator([e for e in rosetta_i18n_pofile if not e.obsolete], rosetta_settings.MESSAGES_PER_PAGE) |
|
||||
|
|
||||
if 'page' in request.GET and int(request.GET.get('page')) <= paginator.num_pages and int(request.GET.get('page')) > 0: |
|
||||
page = int(request.GET.get('page')) |
|
||||
else: |
|
||||
page = 1 |
|
||||
messages = paginator.page(page).object_list |
|
||||
if rosetta_settings.MAIN_LANGUAGE and rosetta_settings.MAIN_LANGUAGE != rosetta_i18n_lang_code: |
|
||||
|
|
||||
main_language = None |
|
||||
for language in settings.LANGUAGES: |
|
||||
if language[0] == rosetta_settings.MAIN_LANGUAGE: |
|
||||
main_language = _(language[1]) |
|
||||
break |
|
||||
|
|
||||
fl = ("/%s/" % rosetta_settings.MAIN_LANGUAGE).join(rosetta_i18n_fn.split("/%s/" % rosetta_i18n_lang_code)) |
|
||||
po = pofile(fl) |
|
||||
|
|
||||
main_messages = [] |
|
||||
for message in messages: |
|
||||
message.main_lang = po.find(message.msgid).msgstr |
|
||||
|
|
||||
needs_pagination = paginator.num_pages > 1 |
|
||||
if needs_pagination: |
|
||||
if paginator.num_pages >= 10: |
|
||||
page_range = pagination_range(1, paginator.num_pages, page) |
|
||||
else: |
|
||||
page_range = range(1,1+paginator.num_pages) |
|
||||
ADMIN_MEDIA_PREFIX = settings.ADMIN_MEDIA_PREFIX |
|
||||
ENABLE_TRANSLATION_SUGGESTIONS = rosetta_settings.ENABLE_TRANSLATION_SUGGESTIONS |
|
||||
|
|
||||
return render_to_response('rosetta/pofile.html', locals(), context_instance=RequestContext(request)) |
|
||||
|
|
||||
|
|
||||
else: |
|
||||
return list_languages(request) |
|
||||
home=user_passes_test(lambda user:can_translate(user),LOGIN_URL)(home) |
|
||||
home=never_cache(home) |
|
||||
|
|
||||
|
|
||||
def download_file(request): |
|
||||
import zipfile, os |
|
||||
from StringIO import StringIO |
|
||||
# original filename |
|
||||
rosetta_i18n_fn=request.session.get('rosetta_i18n_fn', None) |
|
||||
# in-session modified catalog |
|
||||
rosetta_i18n_pofile = request.session.get('rosetta_i18n_pofile', None) |
|
||||
# language code |
|
||||
rosetta_i18n_lang_code = request.session.get('rosetta_i18n_lang_code', None) |
|
||||
|
|
||||
if not rosetta_i18n_lang_code or not rosetta_i18n_pofile or not rosetta_i18n_fn: |
|
||||
return HttpResponseRedirect(reverse('rosetta-home')) |
|
||||
try: |
|
||||
if len(rosetta_i18n_fn.split('/')) >= 5: |
|
||||
offered_fn = '_'.join(rosetta_i18n_fn.split('/')[-5:]) |
|
||||
else: |
|
||||
offered_fn = rosetta_i18n_fn.split('/')[-1] |
|
||||
po_fn = str(rosetta_i18n_fn.split('/')[-1]) |
|
||||
mo_fn = str(po_fn.replace('.po','.mo')) # not so smart, huh |
|
||||
zipdata = StringIO() |
|
||||
zipf = zipfile.ZipFile(zipdata, mode="w") |
|
||||
zipf.writestr(po_fn, str(rosetta_i18n_pofile)) |
|
||||
zipf.writestr(mo_fn, rosetta_i18n_pofile.to_binary()) |
|
||||
zipf.close() |
|
||||
zipdata.seek(0) |
|
||||
|
|
||||
response = HttpResponse(zipdata.read()) |
|
||||
response['Content-Disposition'] = 'attachment; filename=%s.%s.zip' %(offered_fn,rosetta_i18n_lang_code) |
|
||||
response['Content-Type'] = 'application/x-zip' |
|
||||
return response |
|
||||
except Exception, e: |
|
||||
return HttpResponseRedirect(reverse('rosetta-home')) |
|
||||
|
|
||||
download_file=user_passes_test(lambda user:can_translate(user),LOGIN_URL)(download_file) |
|
||||
download_file=never_cache(download_file) |
|
||||
|
|
||||
|
|
||||
|
|
||||
def list_languages(request): |
|
||||
""" |
|
||||
Lists the languages for the current project, the gettext catalog files |
|
||||
that can be translated and their translation progress |
|
||||
""" |
|
||||
languages = [] |
|
||||
do_django = 'django' in request.GET |
|
||||
do_rosetta = 'rosetta' in request.GET |
|
||||
has_pos = False |
|
||||
for language in settings.LANGUAGES: |
|
||||
pos = find_pos(language[0],include_djangos=do_django,include_rosetta=do_rosetta) |
|
||||
has_pos = has_pos or len(pos) |
|
||||
languages.append( |
|
||||
(language[0], |
|
||||
_(language[1]), |
|
||||
[(get_app_name(l), os.path.realpath(l), pofile(l)) for l in pos], |
|
||||
) |
|
||||
) |
|
||||
ADMIN_MEDIA_PREFIX = settings.ADMIN_MEDIA_PREFIX |
|
||||
version = rosetta.get_version(True) |
|
||||
return render_to_response('rosetta/languages.html', locals(), context_instance=RequestContext(request)) |
|
||||
list_languages=user_passes_test(lambda user:can_translate(user),LOGIN_URL)(list_languages) |
|
||||
list_languages=never_cache(list_languages) |
|
||||
|
|
||||
def get_app_name(path): |
|
||||
app = path.split("/locale")[0].split("/")[-1] |
|
||||
return app |
|
||||
|
|
||||
def lang_sel(request,langid,idx): |
|
||||
""" |
|
||||
Selects a file to be translated |
|
||||
""" |
|
||||
if langid not in [l[0] for l in settings.LANGUAGES]: |
|
||||
raise Http404 |
|
||||
else: |
|
||||
|
|
||||
do_django = 'django' in request.GET |
|
||||
do_rosetta = 'rosetta' in request.GET |
|
||||
|
|
||||
file_ = find_pos(langid,include_djangos=do_django,include_rosetta=do_rosetta)[int(idx)] |
|
||||
|
|
||||
request.session['rosetta_i18n_lang_code'] = langid |
|
||||
request.session['rosetta_i18n_lang_name'] = unicode([l[1] for l in settings.LANGUAGES if l[0] == langid][0]) |
|
||||
request.session['rosetta_i18n_fn'] = file_ |
|
||||
po = pofile(file_) |
|
||||
for i in range(len(po)): |
|
||||
po[i].id = i |
|
||||
|
|
||||
request.session['rosetta_i18n_pofile'] = po |
|
||||
try: |
|
||||
os.utime(file_,None) |
|
||||
request.session['rosetta_i18n_write'] = True |
|
||||
except OSError: |
|
||||
request.session['rosetta_i18n_write'] = False |
|
||||
|
|
||||
return HttpResponseRedirect(reverse('rosetta-home')) |
|
||||
lang_sel=user_passes_test(lambda user:can_translate(user),LOGIN_URL)(lang_sel) |
|
||||
lang_sel=never_cache(lang_sel) |
|
||||
|
|
||||
def can_translate(user): |
|
||||
if not user.is_authenticated(): |
|
||||
return False |
|
||||
elif user.is_superuser: |
|
||||
return True |
|
||||
else: |
|
||||
try: |
|
||||
from django.contrib.auth.models import Group |
|
||||
translators = Group.objects.get(name='translators') |
|
||||
return translators in user.groups.all() |
|
||||
except Group.DoesNotExist: |
|
||||
return False |
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue