polib-1.0.7/0000775000175000017500000000000012547140712012241 5ustar iziizi00000000000000polib-1.0.7/setup.cfg0000664000175000017500000000013012547140712014054 0ustar iziizi00000000000000[bdist_wheel] universal = 1 [egg_info] tag_build = tag_date = 0 tag_svn_revision = 0 polib-1.0.7/polib.egg-info/0000775000175000017500000000000012547140712015040 5ustar iziizi00000000000000polib-1.0.7/polib.egg-info/PKG-INFO0000664000175000017500000003371712547140712016150 0ustar iziizi00000000000000Metadata-Version: 1.1 Name: polib Version: 1.0.7 Summary: A library to manipulate gettext files (po and mo files). Home-page: http://bitbucket.org/izi/polib/ Author: David Jean Louis Author-email: izimobil@gmail.com License: MIT Download-URL: https://pypi.python.org/packages/source/p/polib/polib-1.0.7.tar.gz Description: ===== polib ===== .. image:: https://img.shields.io/pypi/dm/polib.svg :alt: Downloads .. image:: https://img.shields.io/pypi/pyversions/polib.svg :alt: Supported Python versions .. image:: https://img.shields.io/pypi/status/polib.svg :alt: Development Status .. image:: https://img.shields.io/pypi/l/polib.svg :alt: License polib is a library to manipulate, create, modify gettext files (pot, po and mo files). You can load existing files, iterate through it's entries, add, modify entries, comments or metadata, etc... or create new po files from scratch. polib supports out of the box any version of python ranging from 2.4 to latest 3.X version. polib is pretty stable now and is used by many `opensource projects `_. The project code and bugtracker is hosted on `Bitbucket `_. polib is generously documented, you can `browse the documentation online `_, a good start is to read `the quickstart guide `_. Thanks for downloading polib ! ========= Changelog ========= Version 1.0.7 (2015/07/08) -------------------------- - Fixed bad parsing of indented msgstr_plural - Fixed ordering of "Language" metadata entry - Removed space after "#" in header if comment line is empty (like gettext tools) - Fixed typos / grammar errors (thanks Jakub Wilk) - Take into account msgid_plural if needed when comparing entries (thanks Leonardo Constantino Oliveira) - Fixed issue #63 (str() on a bytes instance when using python3) (thanks Jakub Wilk) Version 1.0.6 (2015/01/04) -------------------------- - Wheel support - Add missing 'Language' and 'Plural-Forms' to metadata ordering - More accurate float operation for POFile.percent_translated() Version 1.0.5 (2014/08/22) -------------------------- - Fixed issue #59: tokens variable referenced before assignment - Implemented feature request #56: line number information in PO entries - Fixed issue #61: polib does not handle previous msgid on multilines properly Version 1.0.4 (2014/02/19) -------------------------- - Fixed issue #43: improved check that determine if polib is dealing with a filepath or unicode content - Fixed issue #44: polib now checks MO files revision number and throws an error if the number is unexpected - Fixed issue #45: parse properly mo files with no header entry - Fixed issue #47: added flags attribute for MOEntry to be consistent with POEntry - Fixed issue #49: use integers rather than strings for msgstr_plural keys - Fixed issue #51: if a PO file ends with a comment, polib adds a spurious empty entry at the end - Fixed issue #52: bad magic number written on big endian platforms - Fixed issue #53: added a __hash__() method to POEntry and MOEntry classes - Fixed issue #54: use lowercase for state identifiers. This fixes issues with certain locales and string.lower() - Fixed issue #58: use io.open() instead of codecs.open() because the latter doesn't handle very well universal line endings - Make sure the mo file is closed at garbage collection, this prevents warnings on unclosed file when running tests with python >= 3.2 - Better way to test endianness - polib download URL is now on Pypi Version 1.0.3 (2013/02/09) -------------------------- - Fixed issue #38: POFile.append() raised a duplicate exception when you tried to add a new entry with the same msgid and a different msgctxt (only when check_for_duplicates option is set to True) - Fixed issue #39: Added __init__.py file for convenience - Fixed issue #41: UnicodeDecodeError when running setup.py build on python3 with C locale - polib is now fully PEP8 compliant - Small improvements: remove unused "typ" var (thanks Rodrigo Silva), improved Makefile, Make sure _BaseFile.__contains__ returns a boolean value Version 1.0.2 (2012/10/23) -------------------------- - allow empty comments, flags or occurrences lines Version 1.0.1 (2012/09/11) -------------------------- - speed up POFile.merge method (thanks @encukou) - allow comments starting with two '#' characters (thanks @goibhniu) Version 1.0.0 (2012/06/08) -------------------------- Yeah... after nearly 6 years, polib reaches the stable state :) Changes and fixes in this release : - polib.pofile and polib.mofile functions can now return a custom class (thanks Craig Blaszczyk) - polib now can find the metadata entry no matter where it is located (thanks François Poirotte) - fixed issue #28 (IOError on reading obsolete "previous msgid" entries) (thanks James Ni) Version 0.7.0 (2011/07/14) -------------------------- This version adds support for python 3 (thanks to Vinay Sajip). polib now supports out-of-the-box any version of python ranging from 2.4 to latest 3.X version. polib is now 5 years old ;) so the 0.7.X branch will be the last before the 1.X stable branch. Version 0.6.4 (2011/07/13) -------------------------- - Better api, autodetected_encoding is no longer required to explicitly set the encoding (fixes issue #23), - Fixed issue #24 Support indented PO files (thanks to François Poirotte). Version 0.6.3 (2011/02/19) -------------------------- - Fixed issue #19 (Disappearing newline characters due to textwrap module), - ensure wrapping works as expected. Version 0.6.2 (2011/02/09) -------------------------- - Backported textwrap.TextWrapper._wrap_chunks that has support for the drop_whitespace parameter added in Python 2.6 (Fixes #18: broken compatibility with python 2.5, thanks @jezdez). Version 0.6.1 (2011/02/09) -------------------------- - fixed regression that prevented POFile initialization from data to work (issue #17). Version 0.6.0 (2011/02/07) -------------------------- - polib is now `fully documented `_, - switched from doctests to unit tests to keep the polib.py file clean, - fixed issue #7 (wrapping issues, thanks @jezdez), - added a __eq__ method to _BaseFile (thanks @kost BebiX), - handle msgctxt correctly when compiling mo files, - compiled mo files are now exactly the same as those compiled by msgfmt without using hash tables. Version 0.5.5 (2010/10/30) -------------------------- - Removed multiline handling code, it was a mess and was the source of potential bugs like issue #11, - Fixed typo in README and CHANGELOG, fixes issue #13. Version 0.5.4 (2010/10/02) -------------------------- - fixed an issue with detect_encoding(), in some cases it could return an invalid charset. Version 0.5.3 (2010/08/29) -------------------------- - correctly unescape lines containing both \\\\n and \\n (thanks to Martin Geisler), - fixed issue #6: __str__() methods are returning unicode instead of str, - fixed issue #8: POFile.merge error when an entry is obsolete in a .po, that this entry reappears in the .pot and that we merge the two, - added support to instantiate POFile objects using data instead of file path (thanks to Diego Búrigo Zacarão), - fixed issue #9: POFile.merge drop fuzzy attributes from translations (thanks to Tim Gerundt), - fixed issue #10: Finding entries with the same msgid and different context (msgctxt). Version 0.5.2 (2010/06/09) -------------------------- - fixed issue #1: untranslated_entries() also show fuzzy message, - write back the fuzzy header if present in the pofile, - added support for previous msgctxt, previous msgid and previous msgid_plural comments (fixes issue #5), - better handling of lines wrapping. Version 0.5.1 (2009/12/14) -------------------------- - fixed issue #0025: setup.py requires CHANGELOG but it's not present in polib-0.5.0-tar.gz Version 0.5.0 (2009/12/13) -------------------------- - fixed issue #0017: UnicodeDecodeError while writing a mo-file, - fixed issue #0018: implemented support for msgctxt, - fixed bug when compiling plural msgids/strs, - API docs are no longer included, hopefully next release will ship with sphinx documentation, - parse msg plural entries correctly when reading mo files, - fixed issue #0020 and #0021: added ability to check for duplicate when adding entries to po/mo files, this is optional and not enabled by default because it slows down considerably the library, - fixed issue #0022: unescaping code is insufficient, - fixed issue #0023: encoding error when saving mo file as po file (thanks to sebastien.sable for the patch !). Version 0.4.2 (2009/06/05) -------------------------- - fixed issue #0007: use the codecs module to open files, - fixed issue #0014: plural forms are not saved correctly in the mo file (thanks lorenzo.gil.sanchez for the patch), - fixed issue #0015: no LICENSE file included in tarball, - removed Version/Date from README, - added test pot files to MANIFEST.in, - performance improvment in find() method (thanks Thomas !). Version 0.4.1 (2009/03/04) -------------------------- - fixed issue #0006: plural msgstrs were saved unsorted, - fixed issue #0008: long comment lines broke 'save()' method, - removed performance shortcuts: they were in fact inefficient, I was mislead by the python profile module, kudos to Thomas for making me realise that, - fixed issue #0010: wrong polib version number, - fixed issue #0011: occurrences parsing is now more robust and can handle weird references formats (like in eToys OLPC po files), - fixed issue #0012: improved merge() method. Version 0.4.0 (2008/11/26) -------------------------- - fixed bug #0005: percent_translated divide by 0 on empty po files, - fixed bug #0004: occurrences that have hiphens are wrapped when they should not, - changes in how encoding is handled, - remove deprecation warnings for typo on "occurrences", - added POEntry.__cmp__() method to sort entries like gettext does, - fixed POEntry.transalated(), - added a merge() method to POFile class, that behaves like the gettext msgmerge utility, - obsolete entries are now written at the end of the file and with only msgid/msgstr like gettext does, - fixed some bugs in mo files parsing, - renamed quote/unquote functions to escape/unescape, - various cosmetic changes. Version 0.3.1 (2007/12/13) -------------------------- - fixed bug #0002: typo on "occurrences", - fixed bug #0003: mismatch in exception instance names, - removed deprecation warnings, - removed unused charset() method in POFile/MOFile objects, - fixed bug in multibytes string length (added regression tests), - fixed a bug in detect_encoding(), - added a find() method to _BaseFile class, - proper handling of quoting and unquoting, - proper handling of multiline strings in metadata Version 0.3.0 (2007/10/17) -------------------------- - speed improvements, - polib can now compile mo files, - unicode support, - fixed bug #0001: global name 'sorted' is not defined" on python 2.3. Version 0.1.0 (2006-08-08) -------------------------- Initial release Platform: posix Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: Console Classifier: Environment :: Web Environment Classifier: Intended Audience :: Developers Classifier: Intended Audience :: System Administrators Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.5 Classifier: Programming Language :: Python :: 2.6 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.0 Classifier: Programming Language :: Python :: 3.1 Classifier: Programming Language :: Python :: 3.2 Classifier: Programming Language :: Python :: 3.3 Classifier: Programming Language :: Python :: 3.4 Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Topic :: Software Development :: Internationalization Classifier: Topic :: Software Development :: Localization Classifier: Topic :: Text Processing :: Linguistic polib-1.0.7/polib.egg-info/SOURCES.txt0000664000175000017500000000176512547140712016735 0ustar iziizi00000000000000CHANGELOG LICENSE MANIFEST.in README.rst __init__.py polib.py runtests.sh setup.cfg setup.py docs/Makefile docs/api.rst docs/conf.py docs/contributing.rst docs/index.rst docs/installation.rst docs/make.bat docs/projects.rst docs/quickstart.rst polib.egg-info/PKG-INFO polib.egg-info/SOURCES.txt polib.egg-info/dependency_links.txt polib.egg-info/top_level.txt tests/test_fuzzy_header.po tests/test_indented.po tests/test_invalid_version.mo tests/test_iso-8859-15.mo tests/test_iso-8859-15.po tests/test_merge.pot tests/test_merge_after.po tests/test_merge_before.po tests/test_msgctxt.mo tests/test_msgctxt.po tests/test_no_header.mo tests/test_noencoding.po tests/test_obsolete_previousmsgid.po tests/test_pofile_helpers.po tests/test_previous_msgid.po tests/test_save_as_mofile.po tests/test_save_as_pofile.po tests/test_trailing_comment.po tests/test_unusual_metadata_location.po tests/test_utf8.mo tests/test_utf8.po tests/test_weird_occurrences.po tests/test_word_garbage.po tests/test_wrap.po tests/tests.pypolib-1.0.7/polib.egg-info/top_level.txt0000664000175000017500000000000612547140712017566 0ustar iziizi00000000000000polib polib-1.0.7/polib.egg-info/dependency_links.txt0000664000175000017500000000000112547140712021106 0ustar iziizi00000000000000 polib-1.0.7/PKG-INFO0000664000175000017500000003371712547140712013351 0ustar iziizi00000000000000Metadata-Version: 1.1 Name: polib Version: 1.0.7 Summary: A library to manipulate gettext files (po and mo files). Home-page: http://bitbucket.org/izi/polib/ Author: David Jean Louis Author-email: izimobil@gmail.com License: MIT Download-URL: https://pypi.python.org/packages/source/p/polib/polib-1.0.7.tar.gz Description: ===== polib ===== .. image:: https://img.shields.io/pypi/dm/polib.svg :alt: Downloads .. image:: https://img.shields.io/pypi/pyversions/polib.svg :alt: Supported Python versions .. image:: https://img.shields.io/pypi/status/polib.svg :alt: Development Status .. image:: https://img.shields.io/pypi/l/polib.svg :alt: License polib is a library to manipulate, create, modify gettext files (pot, po and mo files). You can load existing files, iterate through it's entries, add, modify entries, comments or metadata, etc... or create new po files from scratch. polib supports out of the box any version of python ranging from 2.4 to latest 3.X version. polib is pretty stable now and is used by many `opensource projects `_. The project code and bugtracker is hosted on `Bitbucket `_. polib is generously documented, you can `browse the documentation online `_, a good start is to read `the quickstart guide `_. Thanks for downloading polib ! ========= Changelog ========= Version 1.0.7 (2015/07/08) -------------------------- - Fixed bad parsing of indented msgstr_plural - Fixed ordering of "Language" metadata entry - Removed space after "#" in header if comment line is empty (like gettext tools) - Fixed typos / grammar errors (thanks Jakub Wilk) - Take into account msgid_plural if needed when comparing entries (thanks Leonardo Constantino Oliveira) - Fixed issue #63 (str() on a bytes instance when using python3) (thanks Jakub Wilk) Version 1.0.6 (2015/01/04) -------------------------- - Wheel support - Add missing 'Language' and 'Plural-Forms' to metadata ordering - More accurate float operation for POFile.percent_translated() Version 1.0.5 (2014/08/22) -------------------------- - Fixed issue #59: tokens variable referenced before assignment - Implemented feature request #56: line number information in PO entries - Fixed issue #61: polib does not handle previous msgid on multilines properly Version 1.0.4 (2014/02/19) -------------------------- - Fixed issue #43: improved check that determine if polib is dealing with a filepath or unicode content - Fixed issue #44: polib now checks MO files revision number and throws an error if the number is unexpected - Fixed issue #45: parse properly mo files with no header entry - Fixed issue #47: added flags attribute for MOEntry to be consistent with POEntry - Fixed issue #49: use integers rather than strings for msgstr_plural keys - Fixed issue #51: if a PO file ends with a comment, polib adds a spurious empty entry at the end - Fixed issue #52: bad magic number written on big endian platforms - Fixed issue #53: added a __hash__() method to POEntry and MOEntry classes - Fixed issue #54: use lowercase for state identifiers. This fixes issues with certain locales and string.lower() - Fixed issue #58: use io.open() instead of codecs.open() because the latter doesn't handle very well universal line endings - Make sure the mo file is closed at garbage collection, this prevents warnings on unclosed file when running tests with python >= 3.2 - Better way to test endianness - polib download URL is now on Pypi Version 1.0.3 (2013/02/09) -------------------------- - Fixed issue #38: POFile.append() raised a duplicate exception when you tried to add a new entry with the same msgid and a different msgctxt (only when check_for_duplicates option is set to True) - Fixed issue #39: Added __init__.py file for convenience - Fixed issue #41: UnicodeDecodeError when running setup.py build on python3 with C locale - polib is now fully PEP8 compliant - Small improvements: remove unused "typ" var (thanks Rodrigo Silva), improved Makefile, Make sure _BaseFile.__contains__ returns a boolean value Version 1.0.2 (2012/10/23) -------------------------- - allow empty comments, flags or occurrences lines Version 1.0.1 (2012/09/11) -------------------------- - speed up POFile.merge method (thanks @encukou) - allow comments starting with two '#' characters (thanks @goibhniu) Version 1.0.0 (2012/06/08) -------------------------- Yeah... after nearly 6 years, polib reaches the stable state :) Changes and fixes in this release : - polib.pofile and polib.mofile functions can now return a custom class (thanks Craig Blaszczyk) - polib now can find the metadata entry no matter where it is located (thanks François Poirotte) - fixed issue #28 (IOError on reading obsolete "previous msgid" entries) (thanks James Ni) Version 0.7.0 (2011/07/14) -------------------------- This version adds support for python 3 (thanks to Vinay Sajip). polib now supports out-of-the-box any version of python ranging from 2.4 to latest 3.X version. polib is now 5 years old ;) so the 0.7.X branch will be the last before the 1.X stable branch. Version 0.6.4 (2011/07/13) -------------------------- - Better api, autodetected_encoding is no longer required to explicitly set the encoding (fixes issue #23), - Fixed issue #24 Support indented PO files (thanks to François Poirotte). Version 0.6.3 (2011/02/19) -------------------------- - Fixed issue #19 (Disappearing newline characters due to textwrap module), - ensure wrapping works as expected. Version 0.6.2 (2011/02/09) -------------------------- - Backported textwrap.TextWrapper._wrap_chunks that has support for the drop_whitespace parameter added in Python 2.6 (Fixes #18: broken compatibility with python 2.5, thanks @jezdez). Version 0.6.1 (2011/02/09) -------------------------- - fixed regression that prevented POFile initialization from data to work (issue #17). Version 0.6.0 (2011/02/07) -------------------------- - polib is now `fully documented `_, - switched from doctests to unit tests to keep the polib.py file clean, - fixed issue #7 (wrapping issues, thanks @jezdez), - added a __eq__ method to _BaseFile (thanks @kost BebiX), - handle msgctxt correctly when compiling mo files, - compiled mo files are now exactly the same as those compiled by msgfmt without using hash tables. Version 0.5.5 (2010/10/30) -------------------------- - Removed multiline handling code, it was a mess and was the source of potential bugs like issue #11, - Fixed typo in README and CHANGELOG, fixes issue #13. Version 0.5.4 (2010/10/02) -------------------------- - fixed an issue with detect_encoding(), in some cases it could return an invalid charset. Version 0.5.3 (2010/08/29) -------------------------- - correctly unescape lines containing both \\\\n and \\n (thanks to Martin Geisler), - fixed issue #6: __str__() methods are returning unicode instead of str, - fixed issue #8: POFile.merge error when an entry is obsolete in a .po, that this entry reappears in the .pot and that we merge the two, - added support to instantiate POFile objects using data instead of file path (thanks to Diego Búrigo Zacarão), - fixed issue #9: POFile.merge drop fuzzy attributes from translations (thanks to Tim Gerundt), - fixed issue #10: Finding entries with the same msgid and different context (msgctxt). Version 0.5.2 (2010/06/09) -------------------------- - fixed issue #1: untranslated_entries() also show fuzzy message, - write back the fuzzy header if present in the pofile, - added support for previous msgctxt, previous msgid and previous msgid_plural comments (fixes issue #5), - better handling of lines wrapping. Version 0.5.1 (2009/12/14) -------------------------- - fixed issue #0025: setup.py requires CHANGELOG but it's not present in polib-0.5.0-tar.gz Version 0.5.0 (2009/12/13) -------------------------- - fixed issue #0017: UnicodeDecodeError while writing a mo-file, - fixed issue #0018: implemented support for msgctxt, - fixed bug when compiling plural msgids/strs, - API docs are no longer included, hopefully next release will ship with sphinx documentation, - parse msg plural entries correctly when reading mo files, - fixed issue #0020 and #0021: added ability to check for duplicate when adding entries to po/mo files, this is optional and not enabled by default because it slows down considerably the library, - fixed issue #0022: unescaping code is insufficient, - fixed issue #0023: encoding error when saving mo file as po file (thanks to sebastien.sable for the patch !). Version 0.4.2 (2009/06/05) -------------------------- - fixed issue #0007: use the codecs module to open files, - fixed issue #0014: plural forms are not saved correctly in the mo file (thanks lorenzo.gil.sanchez for the patch), - fixed issue #0015: no LICENSE file included in tarball, - removed Version/Date from README, - added test pot files to MANIFEST.in, - performance improvment in find() method (thanks Thomas !). Version 0.4.1 (2009/03/04) -------------------------- - fixed issue #0006: plural msgstrs were saved unsorted, - fixed issue #0008: long comment lines broke 'save()' method, - removed performance shortcuts: they were in fact inefficient, I was mislead by the python profile module, kudos to Thomas for making me realise that, - fixed issue #0010: wrong polib version number, - fixed issue #0011: occurrences parsing is now more robust and can handle weird references formats (like in eToys OLPC po files), - fixed issue #0012: improved merge() method. Version 0.4.0 (2008/11/26) -------------------------- - fixed bug #0005: percent_translated divide by 0 on empty po files, - fixed bug #0004: occurrences that have hiphens are wrapped when they should not, - changes in how encoding is handled, - remove deprecation warnings for typo on "occurrences", - added POEntry.__cmp__() method to sort entries like gettext does, - fixed POEntry.transalated(), - added a merge() method to POFile class, that behaves like the gettext msgmerge utility, - obsolete entries are now written at the end of the file and with only msgid/msgstr like gettext does, - fixed some bugs in mo files parsing, - renamed quote/unquote functions to escape/unescape, - various cosmetic changes. Version 0.3.1 (2007/12/13) -------------------------- - fixed bug #0002: typo on "occurrences", - fixed bug #0003: mismatch in exception instance names, - removed deprecation warnings, - removed unused charset() method in POFile/MOFile objects, - fixed bug in multibytes string length (added regression tests), - fixed a bug in detect_encoding(), - added a find() method to _BaseFile class, - proper handling of quoting and unquoting, - proper handling of multiline strings in metadata Version 0.3.0 (2007/10/17) -------------------------- - speed improvements, - polib can now compile mo files, - unicode support, - fixed bug #0001: global name 'sorted' is not defined" on python 2.3. Version 0.1.0 (2006-08-08) -------------------------- Initial release Platform: posix Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: Console Classifier: Environment :: Web Environment Classifier: Intended Audience :: Developers Classifier: Intended Audience :: System Administrators Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.5 Classifier: Programming Language :: Python :: 2.6 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.0 Classifier: Programming Language :: Python :: 3.1 Classifier: Programming Language :: Python :: 3.2 Classifier: Programming Language :: Python :: 3.3 Classifier: Programming Language :: Python :: 3.4 Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Topic :: Software Development :: Internationalization Classifier: Topic :: Software Development :: Localization Classifier: Topic :: Text Processing :: Linguistic polib-1.0.7/polib.py0000664000175000017500000017126712547137727013752 0ustar iziizi00000000000000# -* coding: utf-8 -*- # # License: MIT (see LICENSE file provided) # vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: """ **polib** allows you to manipulate, create, modify gettext files (pot, po and mo files). You can load existing files, iterate through it's entries, add, modify entries, comments or metadata, etc. or create new po files from scratch. **polib** provides a simple and pythonic API via the :func:`~polib.pofile` and :func:`~polib.mofile` convenience functions. """ __author__ = 'David Jean Louis ' __version__ = '1.0.7' __all__ = ['pofile', 'POFile', 'POEntry', 'mofile', 'MOFile', 'MOEntry', 'default_encoding', 'escape', 'unescape', 'detect_encoding', ] import array import codecs import os import re import struct import sys import textwrap try: import io except ImportError: # replacement of io.open() for python < 2.6 # we use codecs instead class io(object): @staticmethod def open(fpath, mode='r', encoding=None): return codecs.open(fpath, mode, encoding) # the default encoding to use when encoding cannot be detected default_encoding = 'utf-8' # python 2/3 compatibility helpers {{{ if sys.version_info[:2] < (3, 0): PY3 = False text_type = unicode def b(s): return s def u(s): return unicode(s, "unicode_escape") else: PY3 = True text_type = str def b(s): return s.encode("latin-1") def u(s): return s # }}} # _pofile_or_mofile {{{ def _pofile_or_mofile(f, type, **kwargs): """ Internal function used by :func:`polib.pofile` and :func:`polib.mofile` to honor the DRY concept. """ # get the file encoding enc = kwargs.get('encoding') if enc is None: enc = detect_encoding(f, type == 'mofile') # parse the file kls = type == 'pofile' and _POFileParser or _MOFileParser parser = kls( f, encoding=enc, check_for_duplicates=kwargs.get('check_for_duplicates', False), klass=kwargs.get('klass') ) instance = parser.parse() instance.wrapwidth = kwargs.get('wrapwidth', 78) return instance # }}} # _is_file {{{ def _is_file(filename_or_contents): """ Safely returns the value of os.path.exists(filename_or_contents). Arguments: ``filename_or_contents`` either a filename, or a string holding the contents of some file. In the latter case, this function will always return False. """ try: return os.path.exists(filename_or_contents) except (ValueError, UnicodeEncodeError): return False # }}} # function pofile() {{{ def pofile(pofile, **kwargs): """ Convenience function that parses the po or pot file ``pofile`` and returns a :class:`~polib.POFile` instance. Arguments: ``pofile`` string, full or relative path to the po/pot file or its content (data). ``wrapwidth`` integer, the wrap width, only useful when the ``-w`` option was passed to xgettext (optional, default: ``78``). ``encoding`` string, the encoding to use (e.g. "utf-8") (default: ``None``, the encoding will be auto-detected). ``check_for_duplicates`` whether to check for duplicate entries when adding entries to the file (optional, default: ``False``). ``klass`` class which is used to instantiate the return value (optional, default: ``None``, the return value with be a :class:`~polib.POFile` instance). """ return _pofile_or_mofile(pofile, 'pofile', **kwargs) # }}} # function mofile() {{{ def mofile(mofile, **kwargs): """ Convenience function that parses the mo file ``mofile`` and returns a :class:`~polib.MOFile` instance. Arguments: ``mofile`` string, full or relative path to the mo file or its content (data). ``wrapwidth`` integer, the wrap width, only useful when the ``-w`` option was passed to xgettext to generate the po file that was used to format the mo file (optional, default: ``78``). ``encoding`` string, the encoding to use (e.g. "utf-8") (default: ``None``, the encoding will be auto-detected). ``check_for_duplicates`` whether to check for duplicate entries when adding entries to the file (optional, default: ``False``). ``klass`` class which is used to instantiate the return value (optional, default: ``None``, the return value with be a :class:`~polib.POFile` instance). """ return _pofile_or_mofile(mofile, 'mofile', **kwargs) # }}} # function detect_encoding() {{{ def detect_encoding(file, binary_mode=False): """ Try to detect the encoding used by the ``file``. The ``file`` argument can be a PO or MO file path or a string containing the contents of the file. If the encoding cannot be detected, the function will return the value of ``default_encoding``. Arguments: ``file`` string, full or relative path to the po/mo file or its content. ``binary_mode`` boolean, set this to True if ``file`` is a mo file. """ PATTERN = r'"?Content-Type:.+? charset=([\w_\-:\.]+)' rxt = re.compile(u(PATTERN)) rxb = re.compile(b(PATTERN)) def charset_exists(charset): """Check whether ``charset`` is valid or not.""" try: codecs.lookup(charset) except LookupError: return False return True if not _is_file(file): match = rxt.search(file) if match: enc = match.group(1).strip() if charset_exists(enc): return enc else: # For PY3, always treat as binary if binary_mode or PY3: mode = 'rb' rx = rxb else: mode = 'r' rx = rxt f = open(file, mode) for l in f.readlines(): match = rx.search(l) if match: f.close() enc = match.group(1).strip() if not isinstance(enc, text_type): enc = enc.decode('utf-8') if charset_exists(enc): return enc f.close() return default_encoding # }}} # function escape() {{{ def escape(st): """ Escapes the characters ``\\\\``, ``\\t``, ``\\n``, ``\\r`` and ``"`` in the given string ``st`` and returns it. """ return st.replace('\\', r'\\')\ .replace('\t', r'\t')\ .replace('\r', r'\r')\ .replace('\n', r'\n')\ .replace('\"', r'\"') # }}} # function unescape() {{{ def unescape(st): """ Unescapes the characters ``\\\\``, ``\\t``, ``\\n``, ``\\r`` and ``"`` in the given string ``st`` and returns it. """ def unescape_repl(m): m = m.group(1) if m == 'n': return '\n' if m == 't': return '\t' if m == 'r': return '\r' if m == '\\': return '\\' return m # handles escaped double quote return re.sub(r'\\(\\|n|t|r|")', unescape_repl, st) # }}} # class _BaseFile {{{ class _BaseFile(list): """ Common base class for the :class:`~polib.POFile` and :class:`~polib.MOFile` classes. This class should **not** be instanciated directly. """ def __init__(self, *args, **kwargs): """ Constructor, accepts the following keyword arguments: ``pofile`` string, the path to the po or mo file, or its content as a string. ``wrapwidth`` integer, the wrap width, only useful when the ``-w`` option was passed to xgettext (optional, default: ``78``). ``encoding`` string, the encoding to use, defaults to ``default_encoding`` global variable (optional). ``check_for_duplicates`` whether to check for duplicate entries when adding entries to the file, (optional, default: ``False``). """ list.__init__(self) # the opened file handle pofile = kwargs.get('pofile', None) if pofile and _is_file(pofile): self.fpath = pofile else: self.fpath = kwargs.get('fpath') # the width at which lines should be wrapped self.wrapwidth = kwargs.get('wrapwidth', 78) # the file encoding self.encoding = kwargs.get('encoding', default_encoding) # whether to check for duplicate entries or not self.check_for_duplicates = kwargs.get('check_for_duplicates', False) # header self.header = '' # both po and mo files have metadata self.metadata = {} self.metadata_is_fuzzy = 0 def __unicode__(self): """ Returns the unicode representation of the file. """ ret = [] entries = [self.metadata_as_entry()] + \ [e for e in self if not e.obsolete] for entry in entries: ret.append(entry.__unicode__(self.wrapwidth)) for entry in self.obsolete_entries(): ret.append(entry.__unicode__(self.wrapwidth)) ret = u('\n').join(ret) assert isinstance(ret, text_type) #if type(ret) != text_type: # return unicode(ret, self.encoding) return ret if PY3: def __str__(self): return self.__unicode__() else: def __str__(self): """ Returns the string representation of the file. """ return unicode(self).encode(self.encoding) def __contains__(self, entry): """ Overridden ``list`` method to implement the membership test (in and not in). The method considers that an entry is in the file if it finds an entry that has the same msgid (the test is **case sensitive**) and the same msgctxt (or none for both entries). Argument: ``entry`` an instance of :class:`~polib._BaseEntry`. """ return self.find(entry.msgid, by='msgid', msgctxt=entry.msgctxt) \ is not None def __eq__(self, other): return str(self) == str(other) def append(self, entry): """ Overridden method to check for duplicates entries, if a user tries to add an entry that is already in the file, the method will raise a ``ValueError`` exception. Argument: ``entry`` an instance of :class:`~polib._BaseEntry`. """ if self.check_for_duplicates and entry in self: raise ValueError('Entry "%s" already exists' % entry.msgid) super(_BaseFile, self).append(entry) def insert(self, index, entry): """ Overridden method to check for duplicates entries, if a user tries to add an entry that is already in the file, the method will raise a ``ValueError`` exception. Arguments: ``index`` index at which the entry should be inserted. ``entry`` an instance of :class:`~polib._BaseEntry`. """ if self.check_for_duplicates and entry in self: raise ValueError('Entry "%s" already exists' % entry.msgid) super(_BaseFile, self).insert(index, entry) def metadata_as_entry(self): """ Returns the file metadata as a :class:`~polib.POFile` instance. """ e = POEntry(msgid='') mdata = self.ordered_metadata() if mdata: strs = [] for name, value in mdata: # Strip whitespace off each line in a multi-line entry strs.append('%s: %s' % (name, value)) e.msgstr = '\n'.join(strs) + '\n' if self.metadata_is_fuzzy: e.flags.append('fuzzy') return e def save(self, fpath=None, repr_method='__unicode__'): """ Saves the po file to ``fpath``. If it is an existing file and no ``fpath`` is provided, then the existing file is rewritten with the modified data. Keyword arguments: ``fpath`` string, full or relative path to the file. ``repr_method`` string, the method to use for output. """ if self.fpath is None and fpath is None: raise IOError('You must provide a file path to save() method') contents = getattr(self, repr_method)() if fpath is None: fpath = self.fpath if repr_method == 'to_binary': fhandle = open(fpath, 'wb') else: fhandle = io.open(fpath, 'w', encoding=self.encoding) if not isinstance(contents, text_type): contents = contents.decode(self.encoding) fhandle.write(contents) fhandle.close() # set the file path if not set if self.fpath is None and fpath: self.fpath = fpath def find(self, st, by='msgid', include_obsolete_entries=False, msgctxt=False): """ Find the entry which msgid (or property identified by the ``by`` argument) matches the string ``st``. Keyword arguments: ``st`` string, the string to search for. ``by`` string, the property to use for comparison (default: ``msgid``). ``include_obsolete_entries`` boolean, whether to also search in entries that are obsolete. ``msgctxt`` string, allows specifying a specific message context for the search. """ if include_obsolete_entries: entries = self[:] else: entries = [e for e in self if not e.obsolete] for e in entries: if getattr(e, by) == st: if msgctxt is not False and e.msgctxt != msgctxt: continue return e return None def ordered_metadata(self): """ Convenience method that returns an ordered version of the metadata dictionary. The return value is list of tuples (metadata name, metadata_value). """ # copy the dict first metadata = self.metadata.copy() data_order = [ 'Project-Id-Version', 'Report-Msgid-Bugs-To', 'POT-Creation-Date', 'PO-Revision-Date', 'Last-Translator', 'Language-Team', 'MIME-Version', 'Content-Type', 'Content-Transfer-Encoding', 'Language', 'Plural-Forms' ] ordered_data = [] for data in data_order: try: value = metadata.pop(data) ordered_data.append((data, value)) except KeyError: pass # the rest of the metadata will be alphabetically ordered since there # are no specs for this AFAIK for data in sorted(metadata.keys()): value = metadata[data] ordered_data.append((data, value)) return ordered_data def to_binary(self): """ Return the binary representation of the file. """ offsets = [] entries = self.translated_entries() # the keys are sorted in the .mo file def cmp(_self, other): # msgfmt compares entries with msgctxt if it exists self_msgid = _self.msgctxt and _self.msgctxt or _self.msgid other_msgid = other.msgctxt and other.msgctxt or other.msgid if self_msgid > other_msgid: return 1 elif self_msgid < other_msgid: return -1 else: return 0 # add metadata entry entries.sort(key=lambda o: o.msgctxt or o.msgid) mentry = self.metadata_as_entry() #mentry.msgstr = mentry.msgstr.replace('\\n', '').lstrip() entries = [mentry] + entries entries_len = len(entries) ids, strs = b(''), b('') for e in entries: # For each string, we need size and file offset. Each string is # NUL terminated; the NUL does not count into the size. msgid = b('') if e.msgctxt: # Contexts are stored by storing the concatenation of the # context, a byte, and the original string msgid = self._encode(e.msgctxt + '\4') if e.msgid_plural: msgstr = [] for index in sorted(e.msgstr_plural.keys()): msgstr.append(e.msgstr_plural[index]) msgid += self._encode(e.msgid + '\0' + e.msgid_plural) msgstr = self._encode('\0'.join(msgstr)) else: msgid += self._encode(e.msgid) msgstr = self._encode(e.msgstr) offsets.append((len(ids), len(msgid), len(strs), len(msgstr))) ids += msgid + b('\0') strs += msgstr + b('\0') # The header is 7 32-bit unsigned integers. keystart = 7 * 4 + 16 * entries_len # and the values start after the keys valuestart = keystart + len(ids) koffsets = [] voffsets = [] # The string table first has the list of keys, then the list of values. # Each entry has first the size of the string, then the file offset. for o1, l1, o2, l2 in offsets: koffsets += [l1, o1 + keystart] voffsets += [l2, o2 + valuestart] offsets = koffsets + voffsets output = struct.pack( "Iiiiiii", # Magic number MOFile.MAGIC, # Version 0, # number of entries entries_len, # start of key index 7 * 4, # start of value index 7 * 4 + entries_len * 8, # size and offset of hash table, we don't use hash tables 0, keystart ) if PY3 and sys.version_info.minor > 1: # python 3.2 or superior output += array.array("i", offsets).tobytes() else: output += array.array("i", offsets).tostring() output += ids output += strs return output def _encode(self, mixed): """ Encodes the given ``mixed`` argument with the file encoding if and only if it's an unicode string and returns the encoded string. """ if isinstance(mixed, text_type): mixed = mixed.encode(self.encoding) return mixed # }}} # class POFile {{{ class POFile(_BaseFile): """ Po (or Pot) file reader/writer. This class inherits the :class:`~polib._BaseFile` class and, by extension, the python ``list`` type. """ def __unicode__(self): """ Returns the unicode representation of the po file. """ ret, headers = '', self.header.split('\n') for header in headers: if not len(header): ret += "#\n" elif header[:1] in [',', ':']: ret += '#%s\n' % header else: ret += '# %s\n' % header if not isinstance(ret, text_type): ret = ret.decode(self.encoding) return ret + _BaseFile.__unicode__(self) def save_as_mofile(self, fpath): """ Saves the binary representation of the file to given ``fpath``. Keyword argument: ``fpath`` string, full or relative path to the mo file. """ _BaseFile.save(self, fpath, 'to_binary') def percent_translated(self): """ Convenience method that returns the percentage of translated messages. """ total = len([e for e in self if not e.obsolete]) if total == 0: return 100 translated = len(self.translated_entries()) return int(translated * 100 / float(total)) def translated_entries(self): """ Convenience method that returns the list of translated entries. """ return [e for e in self if e.translated()] def untranslated_entries(self): """ Convenience method that returns the list of untranslated entries. """ return [e for e in self if not e.translated() and not e.obsolete and not 'fuzzy' in e.flags] def fuzzy_entries(self): """ Convenience method that returns the list of fuzzy entries. """ return [e for e in self if 'fuzzy' in e.flags] def obsolete_entries(self): """ Convenience method that returns the list of obsolete entries. """ return [e for e in self if e.obsolete] def merge(self, refpot): """ Convenience method that merges the current pofile with the pot file provided. It behaves exactly as the gettext msgmerge utility: * comments of this file will be preserved, but extracted comments and occurrences will be discarded; * any translations or comments in the file will be discarded, however, dot comments and file positions will be preserved; * the fuzzy flags are preserved. Keyword argument: ``refpot`` object POFile, the reference catalog. """ # Store entries in dict/set for faster access self_entries = dict((entry.msgid, entry) for entry in self) refpot_msgids = set(entry.msgid for entry in refpot) # Merge entries that are in the refpot for entry in refpot: e = self_entries.get(entry.msgid) if e is None: e = POEntry() self.append(e) e.merge(entry) # ok, now we must "obsolete" entries that are not in the refpot anymore for entry in self: if entry.msgid not in refpot_msgids: entry.obsolete = True # }}} # class MOFile {{{ class MOFile(_BaseFile): """ Mo file reader/writer. This class inherits the :class:`~polib._BaseFile` class and, by extension, the python ``list`` type. """ MAGIC = 0x950412de MAGIC_SWAPPED = 0xde120495 def __init__(self, *args, **kwargs): """ Constructor, accepts all keywords arguments accepted by :class:`~polib._BaseFile` class. """ _BaseFile.__init__(self, *args, **kwargs) self.magic_number = None self.version = 0 def save_as_pofile(self, fpath): """ Saves the mofile as a pofile to ``fpath``. Keyword argument: ``fpath`` string, full or relative path to the file. """ _BaseFile.save(self, fpath) def save(self, fpath=None): """ Saves the mofile to ``fpath``. Keyword argument: ``fpath`` string, full or relative path to the file. """ _BaseFile.save(self, fpath, 'to_binary') def percent_translated(self): """ Convenience method to keep the same interface with POFile instances. """ return 100 def translated_entries(self): """ Convenience method to keep the same interface with POFile instances. """ return self def untranslated_entries(self): """ Convenience method to keep the same interface with POFile instances. """ return [] def fuzzy_entries(self): """ Convenience method to keep the same interface with POFile instances. """ return [] def obsolete_entries(self): """ Convenience method to keep the same interface with POFile instances. """ return [] # }}} # class _BaseEntry {{{ class _BaseEntry(object): """ Base class for :class:`~polib.POEntry` and :class:`~polib.MOEntry` classes. This class should **not** be instanciated directly. """ def __init__(self, *args, **kwargs): """ Constructor, accepts the following keyword arguments: ``msgid`` string, the entry msgid. ``msgstr`` string, the entry msgstr. ``msgid_plural`` string, the entry msgid_plural. ``msgstr_plural`` list, the entry msgstr_plural lines. ``msgctxt`` string, the entry context (msgctxt). ``obsolete`` bool, whether the entry is "obsolete" or not. ``encoding`` string, the encoding to use, defaults to ``default_encoding`` global variable (optional). """ self.msgid = kwargs.get('msgid', '') self.msgstr = kwargs.get('msgstr', '') self.msgid_plural = kwargs.get('msgid_plural', '') self.msgstr_plural = kwargs.get('msgstr_plural', {}) self.msgctxt = kwargs.get('msgctxt', None) self.obsolete = kwargs.get('obsolete', False) self.encoding = kwargs.get('encoding', default_encoding) def __unicode__(self, wrapwidth=78): """ Returns the unicode representation of the entry. """ if self.obsolete: delflag = '#~ ' else: delflag = '' ret = [] # write the msgctxt if any if self.msgctxt is not None: ret += self._str_field("msgctxt", delflag, "", self.msgctxt, wrapwidth) # write the msgid ret += self._str_field("msgid", delflag, "", self.msgid, wrapwidth) # write the msgid_plural if any if self.msgid_plural: ret += self._str_field("msgid_plural", delflag, "", self.msgid_plural, wrapwidth) if self.msgstr_plural: # write the msgstr_plural if any msgstrs = self.msgstr_plural keys = list(msgstrs) keys.sort() for index in keys: msgstr = msgstrs[index] plural_index = '[%s]' % index ret += self._str_field("msgstr", delflag, plural_index, msgstr, wrapwidth) else: # otherwise write the msgstr ret += self._str_field("msgstr", delflag, "", self.msgstr, wrapwidth) ret.append('') ret = u('\n').join(ret) return ret if PY3: def __str__(self): return self.__unicode__() else: def __str__(self): """ Returns the string representation of the entry. """ return unicode(self).encode(self.encoding) def __eq__(self, other): return str(self) == str(other) def _str_field(self, fieldname, delflag, plural_index, field, wrapwidth=78): lines = field.splitlines(True) if len(lines) > 1: lines = [''] + lines # start with initial empty line else: escaped_field = escape(field) specialchars_count = 0 for c in ['\\', '\n', '\r', '\t', '"']: specialchars_count += field.count(c) # comparison must take into account fieldname length + one space # + 2 quotes (eg. msgid "") flength = len(fieldname) + 3 if plural_index: flength += len(plural_index) real_wrapwidth = wrapwidth - flength + specialchars_count if wrapwidth > 0 and len(field) > real_wrapwidth: # Wrap the line but take field name into account lines = [''] + [unescape(item) for item in wrap( escaped_field, wrapwidth - 2, # 2 for quotes "" drop_whitespace=False, break_long_words=False )] else: lines = [field] if fieldname.startswith('previous_'): # quick and dirty trick to get the real field name fieldname = fieldname[9:] ret = ['%s%s%s "%s"' % (delflag, fieldname, plural_index, escape(lines.pop(0)))] for line in lines: ret.append('%s"%s"' % (delflag, escape(line))) return ret # }}} # class POEntry {{{ class POEntry(_BaseEntry): """ Represents a po file entry. """ def __init__(self, *args, **kwargs): """ Constructor, accepts the following keyword arguments: ``comment`` string, the entry comment. ``tcomment`` string, the entry translator comment. ``occurrences`` list, the entry occurrences. ``flags`` list, the entry flags. ``previous_msgctxt`` string, the entry previous context. ``previous_msgid`` string, the entry previous msgid. ``previous_msgid_plural`` string, the entry previous msgid_plural. ``linenum`` integer, the line number of the entry """ _BaseEntry.__init__(self, *args, **kwargs) self.comment = kwargs.get('comment', '') self.tcomment = kwargs.get('tcomment', '') self.occurrences = kwargs.get('occurrences', []) self.flags = kwargs.get('flags', []) self.previous_msgctxt = kwargs.get('previous_msgctxt', None) self.previous_msgid = kwargs.get('previous_msgid', None) self.previous_msgid_plural = kwargs.get('previous_msgid_plural', None) self.linenum = kwargs.get('linenum', None) def __unicode__(self, wrapwidth=78): """ Returns the unicode representation of the entry. """ if self.obsolete: return _BaseEntry.__unicode__(self, wrapwidth) ret = [] # comments first, if any (with text wrapping as xgettext does) comments = [('comment', '#. '), ('tcomment', '# ')] for c in comments: val = getattr(self, c[0]) if val: for comment in val.split('\n'): if wrapwidth > 0 and len(comment) + len(c[1]) > wrapwidth: ret += wrap( comment, wrapwidth, initial_indent=c[1], subsequent_indent=c[1], break_long_words=False ) else: ret.append('%s%s' % (c[1], comment)) # occurrences (with text wrapping as xgettext does) if self.occurrences: filelist = [] for fpath, lineno in self.occurrences: if lineno: filelist.append('%s:%s' % (fpath, lineno)) else: filelist.append(fpath) filestr = ' '.join(filelist) if wrapwidth > 0 and len(filestr) + 3 > wrapwidth: # textwrap split words that contain hyphen, this is not # what we want for filenames, so the dirty hack is to # temporally replace hyphens with a char that a file cannot # contain, like "*" ret += [l.replace('*', '-') for l in wrap( filestr.replace('-', '*'), wrapwidth, initial_indent='#: ', subsequent_indent='#: ', break_long_words=False )] else: ret.append('#: ' + filestr) # flags (TODO: wrapping ?) if self.flags: ret.append('#, %s' % ', '.join(self.flags)) # previous context and previous msgid/msgid_plural fields = ['previous_msgctxt', 'previous_msgid', 'previous_msgid_plural'] for f in fields: val = getattr(self, f) if val: ret += self._str_field(f, "#| ", "", val, wrapwidth) ret.append(_BaseEntry.__unicode__(self, wrapwidth)) ret = u('\n').join(ret) assert isinstance(ret, text_type) #if type(ret) != types.UnicodeType: # return unicode(ret, self.encoding) return ret def __cmp__(self, other): """ Called by comparison operations if rich comparison is not defined. """ # First: Obsolete test if self.obsolete != other.obsolete: if self.obsolete: return -1 else: return 1 # Work on a copy to protect original occ1 = sorted(self.occurrences[:]) occ2 = sorted(other.occurrences[:]) pos = 0 for entry1 in occ1: try: entry2 = occ2[pos] except IndexError: return 1 pos = pos + 1 if entry1[0] != entry2[0]: if entry1[0] > entry2[0]: return 1 else: return -1 if entry1[1] != entry2[1]: if entry1[1] > entry2[1]: return 1 else: return -1 # Compare msgid_plural if set if self.msgid_plural: if not other.msgid_plural: return 1 for pos in self.msgid_plural: if pos not in other.msgid_plural: return 1 if self.msgid_plural[pos] > other.msgid_plural[pos]: return 1 if self.msgid_plural[pos] < other.msgid_plural[pos]: return -1 # Finally: Compare message ID if self.msgid > other.msgid: return 1 elif self.msgid < other.msgid: return -1 return 0 def __gt__(self, other): return self.__cmp__(other) > 0 def __lt__(self, other): return self.__cmp__(other) < 0 def __ge__(self, other): return self.__cmp__(other) >= 0 def __le__(self, other): return self.__cmp__(other) <= 0 def __eq__(self, other): return self.__cmp__(other) == 0 def __ne__(self, other): return self.__cmp__(other) != 0 def translated(self): """ Returns ``True`` if the entry has been translated or ``False`` otherwise. """ if self.obsolete or 'fuzzy' in self.flags: return False if self.msgstr != '': return True if self.msgstr_plural: for pos in self.msgstr_plural: if self.msgstr_plural[pos] == '': return False return True return False def merge(self, other): """ Merge the current entry with the given pot entry. """ self.msgid = other.msgid self.msgctxt = other.msgctxt self.occurrences = other.occurrences self.comment = other.comment fuzzy = 'fuzzy' in self.flags self.flags = other.flags[:] # clone flags if fuzzy: self.flags.append('fuzzy') self.msgid_plural = other.msgid_plural self.obsolete = other.obsolete self.previous_msgctxt = other.previous_msgctxt self.previous_msgid = other.previous_msgid self.previous_msgid_plural = other.previous_msgid_plural if other.msgstr_plural: for pos in other.msgstr_plural: try: # keep existing translation at pos if any self.msgstr_plural[pos] except KeyError: self.msgstr_plural[pos] = '' def __hash__(self): return hash((self.msgid, self.msgstr)) # }}} # class MOEntry {{{ class MOEntry(_BaseEntry): """ Represents a mo file entry. """ def __init__(self, *args, **kwargs): """ Constructor, accepts the following keyword arguments, for consistency with :class:`~polib.POEntry`: ``comment`` ``tcomment`` ``occurrences`` ``flags`` ``previous_msgctxt`` ``previous_msgid`` ``previous_msgid_plural`` Note: even though these keyword arguments are accepted, they hold no real meaning in the context of MO files and are simply ignored. """ _BaseEntry.__init__(self, *args, **kwargs) self.comment = '' self.tcomment = '' self.occurrences = [] self.flags = [] self.previous_msgctxt = None self.previous_msgid = None self.previous_msgid_plural = None def __hash__(self): return hash((self.msgid, self.msgstr)) # }}} # class _POFileParser {{{ class _POFileParser(object): """ A finite state machine to parse efficiently and correctly po file format. """ def __init__(self, pofile, *args, **kwargs): """ Constructor. Keyword arguments: ``pofile`` string, path to the po file or its content ``encoding`` string, the encoding to use, defaults to ``default_encoding`` global variable (optional). ``check_for_duplicates`` whether to check for duplicate entries when adding entries to the file (optional, default: ``False``). """ enc = kwargs.get('encoding', default_encoding) if _is_file(pofile): try: self.fhandle = io.open(pofile, 'rt', encoding=enc) except LookupError: enc = default_encoding self.fhandle = io.open(pofile, 'rt', encoding=enc) else: self.fhandle = pofile.splitlines() klass = kwargs.get('klass') if klass is None: klass = POFile self.instance = klass( pofile=pofile, encoding=enc, check_for_duplicates=kwargs.get('check_for_duplicates', False) ) self.transitions = {} self.current_line = 0 self.current_entry = POEntry(linenum=self.current_line) self.current_state = 'st' self.current_token = None # two memo flags used in handlers self.msgstr_index = 0 self.entry_obsolete = 0 # Configure the state machine, by adding transitions. # Signification of symbols: # * ST: Beginning of the file (start) # * HE: Header # * TC: a translation comment # * GC: a generated comment # * OC: a file/line occurrence # * FL: a flags line # * CT: a message context # * PC: a previous msgctxt # * PM: a previous msgid # * PP: a previous msgid_plural # * MI: a msgid # * MP: a msgid plural # * MS: a msgstr # * MX: a msgstr plural # * MC: a msgid or msgstr continuation line all = ['st', 'he', 'gc', 'oc', 'fl', 'ct', 'pc', 'pm', 'pp', 'tc', 'ms', 'mp', 'mx', 'mi'] self.add('tc', ['st', 'he'], 'he') self.add('tc', ['gc', 'oc', 'fl', 'tc', 'pc', 'pm', 'pp', 'ms', 'mp', 'mx', 'mi'], 'tc') self.add('gc', all, 'gc') self.add('oc', all, 'oc') self.add('fl', all, 'fl') self.add('pc', all, 'pc') self.add('pm', all, 'pm') self.add('pp', all, 'pp') self.add('ct', ['st', 'he', 'gc', 'oc', 'fl', 'tc', 'pc', 'pm', 'pp', 'ms', 'mx'], 'ct') self.add('mi', ['st', 'he', 'gc', 'oc', 'fl', 'ct', 'tc', 'pc', 'pm', 'pp', 'ms', 'mx'], 'mi') self.add('mp', ['tc', 'gc', 'pc', 'pm', 'pp', 'mi'], 'mp') self.add('ms', ['mi', 'mp', 'tc'], 'ms') self.add('mx', ['mi', 'mx', 'mp', 'tc'], 'mx') self.add('mc', ['ct', 'mi', 'mp', 'ms', 'mx', 'pm', 'pp', 'pc'], 'mc') def parse(self): """ Run the state machine, parse the file line by line and call process() with the current matched symbol. """ keywords = { 'msgctxt': 'ct', 'msgid': 'mi', 'msgstr': 'ms', 'msgid_plural': 'mp', } prev_keywords = { 'msgid_plural': 'pp', 'msgid': 'pm', 'msgctxt': 'pc', } tokens = [] for line in self.fhandle: self.current_line += 1 line = line.strip() if line == '': continue tokens = line.split(None, 2) nb_tokens = len(tokens) if tokens[0] == '#~|': continue if tokens[0] == '#~' and nb_tokens > 1: line = line[3:].strip() tokens = tokens[1:] nb_tokens -= 1 self.entry_obsolete = 1 else: self.entry_obsolete = 0 # Take care of keywords like # msgid, msgid_plural, msgctxt & msgstr. if tokens[0] in keywords and nb_tokens > 1: line = line[len(tokens[0]):].lstrip() if re.search(r'([^\\]|^)"', line[1:-1]): raise IOError('Syntax error in po file %s (line %s): ' 'unescaped double quote found' % (self.instance.fpath, self.current_line)) self.current_token = line self.process(keywords[tokens[0]]) continue self.current_token = line if tokens[0] == '#:': if nb_tokens <= 1: continue # we are on a occurrences line self.process('oc') elif line[:1] == '"': # we are on a continuation line if re.search(r'([^\\]|^)"', line[1:-1]): raise IOError('Syntax error in po file %s (line %s): ' 'unescaped double quote found' % (self.instance.fpath, self.current_line)) self.process('mc') elif line[:7] == 'msgstr[': # we are on a msgstr plural self.process('mx') elif tokens[0] == '#,': if nb_tokens <= 1: continue # we are on a flags line self.process('fl') elif tokens[0] == '#' or tokens[0].startswith('##'): if line == '#': line += ' ' # we are on a translator comment line self.process('tc') elif tokens[0] == '#.': if nb_tokens <= 1: continue # we are on a generated comment line self.process('gc') elif tokens[0] == '#|': if nb_tokens <= 1: raise IOError('Syntax error in po file %s (line %s)' % (self.instance.fpath, self.current_line)) # Remove the marker and any whitespace right after that. line = line[2:].lstrip() self.current_token = line if tokens[1].startswith('"'): # Continuation of previous metadata. self.process('mc') continue if nb_tokens == 2: # Invalid continuation line. raise IOError('Syntax error in po file %s (line %s): ' 'invalid continuation line' % (self.instance.fpath, self.current_line)) # we are on a "previous translation" comment line, if tokens[1] not in prev_keywords: # Unknown keyword in previous translation comment. raise IOError('Syntax error in po file %s (line %s): ' 'unknown keyword %s' % (self.instance.fpath, self.current_line, tokens[1])) # Remove the keyword and any whitespace # between it and the starting quote. line = line[len(tokens[1]):].lstrip() self.current_token = line self.process(prev_keywords[tokens[1]]) else: raise IOError('Syntax error in po file %s (line %s)' % (self.instance.fpath, self.current_line)) if self.current_entry and len(tokens) > 0 and \ not tokens[0].startswith('#'): # since entries are added when another entry is found, we must add # the last entry here (only if there are lines). Trailing comments # are ignored self.instance.append(self.current_entry) # before returning the instance, check if there's metadata and if # so extract it in a dict metadataentry = self.instance.find('') if metadataentry: # metadata found # remove the entry self.instance.remove(metadataentry) self.instance.metadata_is_fuzzy = metadataentry.flags key = None for msg in metadataentry.msgstr.splitlines(): try: key, val = msg.split(':', 1) self.instance.metadata[key] = val.strip() except (ValueError, KeyError): if key is not None: self.instance.metadata[key] += '\n' + msg.strip() # close opened file if not isinstance(self.fhandle, list): # must be file self.fhandle.close() return self.instance def add(self, symbol, states, next_state): """ Add a transition to the state machine. Keywords arguments: ``symbol`` string, the matched token (two chars symbol). ``states`` list, a list of states (two chars symbols). ``next_state`` the next state the fsm will have after the action. """ for state in states: action = getattr(self, 'handle_%s' % next_state) self.transitions[(symbol, state)] = (action, next_state) def process(self, symbol): """ Process the transition corresponding to the current state and the symbol provided. Keywords arguments: ``symbol`` string, the matched token (two chars symbol). ``linenum`` integer, the current line number of the parsed file. """ try: (action, state) = self.transitions[(symbol, self.current_state)] if action(): self.current_state = state except Exception: raise IOError('Syntax error in po file (line %s)' % self.current_line) # state handlers def handle_he(self): """Handle a header comment.""" if self.instance.header != '': self.instance.header += '\n' self.instance.header += self.current_token[2:] return 1 def handle_tc(self): """Handle a translator comment.""" if self.current_state in ['mc', 'ms', 'mx']: self.instance.append(self.current_entry) self.current_entry = POEntry(linenum=self.current_line) if self.current_entry.tcomment != '': self.current_entry.tcomment += '\n' tcomment = self.current_token.lstrip('#') if tcomment.startswith(' '): tcomment = tcomment[1:] self.current_entry.tcomment += tcomment return True def handle_gc(self): """Handle a generated comment.""" if self.current_state in ['mc', 'ms', 'mx']: self.instance.append(self.current_entry) self.current_entry = POEntry(linenum=self.current_line) if self.current_entry.comment != '': self.current_entry.comment += '\n' self.current_entry.comment += self.current_token[3:] return True def handle_oc(self): """Handle a file:num occurrence.""" if self.current_state in ['mc', 'ms', 'mx']: self.instance.append(self.current_entry) self.current_entry = POEntry(linenum=self.current_line) occurrences = self.current_token[3:].split() for occurrence in occurrences: if occurrence != '': try: fil, line = occurrence.split(':') if not line.isdigit(): fil = fil + line line = '' self.current_entry.occurrences.append((fil, line)) except (ValueError, AttributeError): self.current_entry.occurrences.append((occurrence, '')) return True def handle_fl(self): """Handle a flags line.""" if self.current_state in ['mc', 'ms', 'mx']: self.instance.append(self.current_entry) self.current_entry = POEntry(linenum=self.current_line) self.current_entry.flags += [c.strip() for c in self.current_token[3:].split(',')] return True def handle_pp(self): """Handle a previous msgid_plural line.""" if self.current_state in ['mc', 'ms', 'mx']: self.instance.append(self.current_entry) self.current_entry = POEntry(linenum=self.current_line) self.current_entry.previous_msgid_plural = \ unescape(self.current_token[1:-1]) return True def handle_pm(self): """Handle a previous msgid line.""" if self.current_state in ['mc', 'ms', 'mx']: self.instance.append(self.current_entry) self.current_entry = POEntry(linenum=self.current_line) self.current_entry.previous_msgid = \ unescape(self.current_token[1:-1]) return True def handle_pc(self): """Handle a previous msgctxt line.""" if self.current_state in ['mc', 'ms', 'mx']: self.instance.append(self.current_entry) self.current_entry = POEntry(linenum=self.current_line) self.current_entry.previous_msgctxt = \ unescape(self.current_token[1:-1]) return True def handle_ct(self): """Handle a msgctxt.""" if self.current_state in ['mc', 'ms', 'mx']: self.instance.append(self.current_entry) self.current_entry = POEntry(linenum=self.current_line) self.current_entry.msgctxt = unescape(self.current_token[1:-1]) return True def handle_mi(self): """Handle a msgid.""" if self.current_state in ['mc', 'ms', 'mx']: self.instance.append(self.current_entry) self.current_entry = POEntry(linenum=self.current_line) self.current_entry.obsolete = self.entry_obsolete self.current_entry.msgid = unescape(self.current_token[1:-1]) return True def handle_mp(self): """Handle a msgid plural.""" self.current_entry.msgid_plural = unescape(self.current_token[1:-1]) return True def handle_ms(self): """Handle a msgstr.""" self.current_entry.msgstr = unescape(self.current_token[1:-1]) return True def handle_mx(self): """Handle a msgstr plural.""" index = self.current_token[7] value = self.current_token[self.current_token.find('"') + 1:-1] self.current_entry.msgstr_plural[int(index)] = unescape(value) self.msgstr_index = int(index) return True def handle_mc(self): """Handle a msgid or msgstr continuation line.""" token = unescape(self.current_token[1:-1]) if self.current_state == 'ct': self.current_entry.msgctxt += token elif self.current_state == 'mi': self.current_entry.msgid += token elif self.current_state == 'mp': self.current_entry.msgid_plural += token elif self.current_state == 'ms': self.current_entry.msgstr += token elif self.current_state == 'mx': self.current_entry.msgstr_plural[self.msgstr_index] += token elif self.current_state == 'pp': self.current_entry.previous_msgid_plural += token elif self.current_state == 'pm': self.current_entry.previous_msgid += token elif self.current_state == 'pc': self.current_entry.previous_msgctxt += token # don't change the current state return False # }}} # class _MOFileParser {{{ class _MOFileParser(object): """ A class to parse binary mo files. """ def __init__(self, mofile, *args, **kwargs): """ Constructor. Keyword arguments: ``mofile`` string, path to the mo file or its content ``encoding`` string, the encoding to use, defaults to ``default_encoding`` global variable (optional). ``check_for_duplicates`` whether to check for duplicate entries when adding entries to the file (optional, default: ``False``). """ self.fhandle = open(mofile, 'rb') klass = kwargs.get('klass') if klass is None: klass = MOFile self.instance = klass( fpath=mofile, encoding=kwargs.get('encoding', default_encoding), check_for_duplicates=kwargs.get('check_for_duplicates', False) ) def __del__(self): """ Make sure the file is closed, this prevents warnings on unclosed file when running tests with python >= 3.2. """ if self.fhandle: self.fhandle.close() def parse(self): """ Build the instance with the file handle provided in the constructor. """ # parse magic number magic_number = self._readbinary(' 1: entry = self._build_entry( msgid=msgid_tokens[0], msgid_plural=msgid_tokens[1], msgstr_plural=dict((k, v) for k, v in enumerate(msgstr.split(b('\0')))) ) else: entry = self._build_entry(msgid=msgid, msgstr=msgstr) self.instance.append(entry) # close opened file self.fhandle.close() return self.instance def _build_entry(self, msgid, msgstr=None, msgid_plural=None, msgstr_plural=None): msgctxt_msgid = msgid.split(b('\x04')) encoding = self.instance.encoding if len(msgctxt_msgid) > 1: kwargs = { 'msgctxt': msgctxt_msgid[0].decode(encoding), 'msgid': msgctxt_msgid[1].decode(encoding), } else: kwargs = {'msgid': msgid.decode(encoding)} if msgstr: kwargs['msgstr'] = msgstr.decode(encoding) if msgid_plural: kwargs['msgid_plural'] = msgid_plural.decode(encoding) if msgstr_plural: for k in msgstr_plural: msgstr_plural[k] = msgstr_plural[k].decode(encoding) kwargs['msgstr_plural'] = msgstr_plural return MOEntry(**kwargs) def _readbinary(self, fmt, numbytes): """ Private method that unpack n bytes of data using format . It returns a tuple or a mixed value if the tuple length is 1. """ bytes = self.fhandle.read(numbytes) tup = struct.unpack(fmt, bytes) if len(tup) == 1: return tup[0] return tup # }}} # class TextWrapper {{{ class TextWrapper(textwrap.TextWrapper): """ Subclass of textwrap.TextWrapper that backport the drop_whitespace option. """ def __init__(self, *args, **kwargs): drop_whitespace = kwargs.pop('drop_whitespace', True) textwrap.TextWrapper.__init__(self, *args, **kwargs) self.drop_whitespace = drop_whitespace def _wrap_chunks(self, chunks): """_wrap_chunks(chunks : [string]) -> [string] Wrap a sequence of text chunks and return a list of lines of length 'self.width' or less. (If 'break_long_words' is false, some lines may be longer than this.) Chunks correspond roughly to words and the whitespace between them: each chunk is indivisible (modulo 'break_long_words'), but a line break can come between any two chunks. Chunks should not have internal whitespace; ie. a chunk is either all whitespace or a "word". Whitespace chunks will be removed from the beginning and end of lines, but apart from that whitespace is preserved. """ lines = [] if self.width <= 0: raise ValueError("invalid width %r (must be > 0)" % self.width) # Arrange in reverse order so items can be efficiently popped # from a stack of chucks. chunks.reverse() while chunks: # Start the list of chunks that will make up the current line. # cur_len is just the length of all the chunks in cur_line. cur_line = [] cur_len = 0 # Figure out which static string will prefix this line. if lines: indent = self.subsequent_indent else: indent = self.initial_indent # Maximum width for this line. width = self.width - len(indent) # First chunk on line is whitespace -- drop it, unless this # is the very beginning of the text (ie. no lines started yet). if self.drop_whitespace and chunks[-1].strip() == '' and lines: del chunks[-1] while chunks: l = len(chunks[-1]) # Can at least squeeze this chunk onto the current line. if cur_len + l <= width: cur_line.append(chunks.pop()) cur_len += l # Nope, this line is full. else: break # The current line is full, and the next chunk is too big to # fit on *any* line (not just this one). if chunks and len(chunks[-1]) > width: self._handle_long_word(chunks, cur_line, cur_len, width) # If the last chunk on this line is all whitespace, drop it. if self.drop_whitespace and cur_line and not cur_line[-1].strip(): del cur_line[-1] # Convert current line back to a string and store it in list # of all lines (return value). if cur_line: lines.append(indent + ''.join(cur_line)) return lines # }}} # function wrap() {{{ def wrap(text, width=70, **kwargs): """ Wrap a single paragraph of text, returning a list of wrapped lines. """ if sys.version_info < (2, 6): return TextWrapper(width=width, **kwargs).wrap(text) return textwrap.wrap(text, width=width, **kwargs) # }}} polib-1.0.7/CHANGELOG0000664000175000017500000002306312547140560013460 0ustar iziizi00000000000000========= Changelog ========= Version 1.0.7 (2015/07/08) -------------------------- - Fixed bad parsing of indented msgstr_plural - Fixed ordering of "Language" metadata entry - Removed space after "#" in header if comment line is empty (like gettext tools) - Fixed typos / grammar errors (thanks Jakub Wilk) - Take into account msgid_plural if needed when comparing entries (thanks Leonardo Constantino Oliveira) - Fixed issue #63 (str() on a bytes instance when using python3) (thanks Jakub Wilk) Version 1.0.6 (2015/01/04) -------------------------- - Wheel support - Add missing 'Language' and 'Plural-Forms' to metadata ordering - More accurate float operation for POFile.percent_translated() Version 1.0.5 (2014/08/22) -------------------------- - Fixed issue #59: tokens variable referenced before assignment - Implemented feature request #56: line number information in PO entries - Fixed issue #61: polib does not handle previous msgid on multilines properly Version 1.0.4 (2014/02/19) -------------------------- - Fixed issue #43: improved check that determine if polib is dealing with a filepath or unicode content - Fixed issue #44: polib now checks MO files revision number and throws an error if the number is unexpected - Fixed issue #45: parse properly mo files with no header entry - Fixed issue #47: added flags attribute for MOEntry to be consistent with POEntry - Fixed issue #49: use integers rather than strings for msgstr_plural keys - Fixed issue #51: if a PO file ends with a comment, polib adds a spurious empty entry at the end - Fixed issue #52: bad magic number written on big endian platforms - Fixed issue #53: added a __hash__() method to POEntry and MOEntry classes - Fixed issue #54: use lowercase for state identifiers. This fixes issues with certain locales and string.lower() - Fixed issue #58: use io.open() instead of codecs.open() because the latter doesn't handle very well universal line endings - Make sure the mo file is closed at garbage collection, this prevents warnings on unclosed file when running tests with python >= 3.2 - Better way to test endianness - polib download URL is now on Pypi Version 1.0.3 (2013/02/09) -------------------------- - Fixed issue #38: POFile.append() raised a duplicate exception when you tried to add a new entry with the same msgid and a different msgctxt (only when check_for_duplicates option is set to True) - Fixed issue #39: Added __init__.py file for convenience - Fixed issue #41: UnicodeDecodeError when running setup.py build on python3 with C locale - polib is now fully PEP8 compliant - Small improvements: remove unused "typ" var (thanks Rodrigo Silva), improved Makefile, Make sure _BaseFile.__contains__ returns a boolean value Version 1.0.2 (2012/10/23) -------------------------- - allow empty comments, flags or occurrences lines Version 1.0.1 (2012/09/11) -------------------------- - speed up POFile.merge method (thanks @encukou) - allow comments starting with two '#' characters (thanks @goibhniu) Version 1.0.0 (2012/06/08) -------------------------- Yeah... after nearly 6 years, polib reaches the stable state :) Changes and fixes in this release : - polib.pofile and polib.mofile functions can now return a custom class (thanks Craig Blaszczyk) - polib now can find the metadata entry no matter where it is located (thanks François Poirotte) - fixed issue #28 (IOError on reading obsolete "previous msgid" entries) (thanks James Ni) Version 0.7.0 (2011/07/14) -------------------------- This version adds support for python 3 (thanks to Vinay Sajip). polib now supports out-of-the-box any version of python ranging from 2.4 to latest 3.X version. polib is now 5 years old ;) so the 0.7.X branch will be the last before the 1.X stable branch. Version 0.6.4 (2011/07/13) -------------------------- - Better api, autodetected_encoding is no longer required to explicitly set the encoding (fixes issue #23), - Fixed issue #24 Support indented PO files (thanks to François Poirotte). Version 0.6.3 (2011/02/19) -------------------------- - Fixed issue #19 (Disappearing newline characters due to textwrap module), - ensure wrapping works as expected. Version 0.6.2 (2011/02/09) -------------------------- - Backported textwrap.TextWrapper._wrap_chunks that has support for the drop_whitespace parameter added in Python 2.6 (Fixes #18: broken compatibility with python 2.5, thanks @jezdez). Version 0.6.1 (2011/02/09) -------------------------- - fixed regression that prevented POFile initialization from data to work (issue #17). Version 0.6.0 (2011/02/07) -------------------------- - polib is now `fully documented `_, - switched from doctests to unit tests to keep the polib.py file clean, - fixed issue #7 (wrapping issues, thanks @jezdez), - added a __eq__ method to _BaseFile (thanks @kost BebiX), - handle msgctxt correctly when compiling mo files, - compiled mo files are now exactly the same as those compiled by msgfmt without using hash tables. Version 0.5.5 (2010/10/30) -------------------------- - Removed multiline handling code, it was a mess and was the source of potential bugs like issue #11, - Fixed typo in README and CHANGELOG, fixes issue #13. Version 0.5.4 (2010/10/02) -------------------------- - fixed an issue with detect_encoding(), in some cases it could return an invalid charset. Version 0.5.3 (2010/08/29) -------------------------- - correctly unescape lines containing both \\\\n and \\n (thanks to Martin Geisler), - fixed issue #6: __str__() methods are returning unicode instead of str, - fixed issue #8: POFile.merge error when an entry is obsolete in a .po, that this entry reappears in the .pot and that we merge the two, - added support to instantiate POFile objects using data instead of file path (thanks to Diego Búrigo Zacarão), - fixed issue #9: POFile.merge drop fuzzy attributes from translations (thanks to Tim Gerundt), - fixed issue #10: Finding entries with the same msgid and different context (msgctxt). Version 0.5.2 (2010/06/09) -------------------------- - fixed issue #1: untranslated_entries() also show fuzzy message, - write back the fuzzy header if present in the pofile, - added support for previous msgctxt, previous msgid and previous msgid_plural comments (fixes issue #5), - better handling of lines wrapping. Version 0.5.1 (2009/12/14) -------------------------- - fixed issue #0025: setup.py requires CHANGELOG but it's not present in polib-0.5.0-tar.gz Version 0.5.0 (2009/12/13) -------------------------- - fixed issue #0017: UnicodeDecodeError while writing a mo-file, - fixed issue #0018: implemented support for msgctxt, - fixed bug when compiling plural msgids/strs, - API docs are no longer included, hopefully next release will ship with sphinx documentation, - parse msg plural entries correctly when reading mo files, - fixed issue #0020 and #0021: added ability to check for duplicate when adding entries to po/mo files, this is optional and not enabled by default because it slows down considerably the library, - fixed issue #0022: unescaping code is insufficient, - fixed issue #0023: encoding error when saving mo file as po file (thanks to sebastien.sable for the patch !). Version 0.4.2 (2009/06/05) -------------------------- - fixed issue #0007: use the codecs module to open files, - fixed issue #0014: plural forms are not saved correctly in the mo file (thanks lorenzo.gil.sanchez for the patch), - fixed issue #0015: no LICENSE file included in tarball, - removed Version/Date from README, - added test pot files to MANIFEST.in, - performance improvment in find() method (thanks Thomas !). Version 0.4.1 (2009/03/04) -------------------------- - fixed issue #0006: plural msgstrs were saved unsorted, - fixed issue #0008: long comment lines broke 'save()' method, - removed performance shortcuts: they were in fact inefficient, I was mislead by the python profile module, kudos to Thomas for making me realise that, - fixed issue #0010: wrong polib version number, - fixed issue #0011: occurrences parsing is now more robust and can handle weird references formats (like in eToys OLPC po files), - fixed issue #0012: improved merge() method. Version 0.4.0 (2008/11/26) -------------------------- - fixed bug #0005: percent_translated divide by 0 on empty po files, - fixed bug #0004: occurrences that have hiphens are wrapped when they should not, - changes in how encoding is handled, - remove deprecation warnings for typo on "occurrences", - added POEntry.__cmp__() method to sort entries like gettext does, - fixed POEntry.transalated(), - added a merge() method to POFile class, that behaves like the gettext msgmerge utility, - obsolete entries are now written at the end of the file and with only msgid/msgstr like gettext does, - fixed some bugs in mo files parsing, - renamed quote/unquote functions to escape/unescape, - various cosmetic changes. Version 0.3.1 (2007/12/13) -------------------------- - fixed bug #0002: typo on "occurrences", - fixed bug #0003: mismatch in exception instance names, - removed deprecation warnings, - removed unused charset() method in POFile/MOFile objects, - fixed bug in multibytes string length (added regression tests), - fixed a bug in detect_encoding(), - added a find() method to _BaseFile class, - proper handling of quoting and unquoting, - proper handling of multiline strings in metadata Version 0.3.0 (2007/10/17) -------------------------- - speed improvements, - polib can now compile mo files, - unicode support, - fixed bug #0001: global name 'sorted' is not defined" on python 2.3. Version 0.1.0 (2006-08-08) -------------------------- Initial release polib-1.0.7/docs/0000775000175000017500000000000012547140712013171 5ustar iziizi00000000000000polib-1.0.7/docs/make.bat0000664000175000017500000001063512440274247014606 0ustar iziizi00000000000000@ECHO OFF REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) set BUILDDIR=_build set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . if NOT "%PAPER%" == "" ( set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% ) if "%1" == "" goto help if "%1" == "help" ( :help echo.Please use `make ^` where ^ is one of echo. html to make standalone HTML files echo. dirhtml to make HTML files named index.html in directories echo. singlehtml to make a single large HTML file echo. pickle to make pickle files echo. json to make JSON files echo. htmlhelp to make HTML files and a HTML help project echo. qthelp to make HTML files and a qthelp project echo. devhelp to make HTML files and a Devhelp project echo. epub to make an epub echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter echo. text to make text files echo. man to make manual pages echo. changes to make an overview over all changed/added/deprecated items echo. linkcheck to check all external links for integrity echo. doctest to run all doctests embedded in the documentation if enabled goto end ) if "%1" == "clean" ( for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i del /q /s %BUILDDIR%\* goto end ) if "%1" == "html" ( %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/html. goto end ) if "%1" == "dirhtml" ( %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. goto end ) if "%1" == "singlehtml" ( %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. goto end ) if "%1" == "pickle" ( %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can process the pickle files. goto end ) if "%1" == "json" ( %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can process the JSON files. goto end ) if "%1" == "htmlhelp" ( %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can run HTML Help Workshop with the ^ .hhp project file in %BUILDDIR%/htmlhelp. goto end ) if "%1" == "qthelp" ( %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in %BUILDDIR%/qthelp, like this: echo.^> qcollectiongenerator %BUILDDIR%\qthelp\polib.qhcp echo.To view the help file: echo.^> assistant -collectionFile %BUILDDIR%\qthelp\polib.ghc goto end ) if "%1" == "devhelp" ( %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp if errorlevel 1 exit /b 1 echo. echo.Build finished. goto end ) if "%1" == "epub" ( %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub if errorlevel 1 exit /b 1 echo. echo.Build finished. The epub file is in %BUILDDIR%/epub. goto end ) if "%1" == "latex" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex if errorlevel 1 exit /b 1 echo. echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. goto end ) if "%1" == "text" ( %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text if errorlevel 1 exit /b 1 echo. echo.Build finished. The text files are in %BUILDDIR%/text. goto end ) if "%1" == "man" ( %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man if errorlevel 1 exit /b 1 echo. echo.Build finished. The manual pages are in %BUILDDIR%/man. goto end ) if "%1" == "changes" ( %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes if errorlevel 1 exit /b 1 echo. echo.The overview file is in %BUILDDIR%/changes. goto end ) if "%1" == "linkcheck" ( %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck if errorlevel 1 exit /b 1 echo. echo.Link check complete; look for any errors in the above output ^ or in %BUILDDIR%/linkcheck/output.txt. goto end ) if "%1" == "doctest" ( %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest if errorlevel 1 exit /b 1 echo. echo.Testing of doctests in the sources finished, look at the ^ results in %BUILDDIR%/doctest/output.txt. goto end ) :end polib-1.0.7/docs/installation.rst0000664000175000017500000000501412440274247016427 0ustar iziizi00000000000000.. _installation: Installation guide ================== Requirements ------------ polib requires python 2.5 or higher. Installing polib ---------------- There are several ways to install polib: * Automatically, via a package manager. * Manually, by downloading a copy of the release package and installing it yourself. * Manually, by performing a Mercurial checkout of the latest code. Automatic installation via a package manager ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Several automatic package-installation tools are available for Python; the most popular are `pip `_ and `easy_install `_ . Either can be used to install polib. Using ``pip``, type:: pip install polib Using ``easy_install``, type:: easy_install polib It is also possible that your operating system distributor provides a packaged version of polib. Consult your operating system's package list for details, but be aware that third-party distributions may be providing older versions of polib, and so you should consult the documentation which comes with your operating system's package. Manual installation from a downloaded package ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If you prefer not to use an automated package installer, you can download a copy of polib and install it manually. The latest release package can be downloaded from `polib's page on the Python Package Index `_. Once you've downloaded the package, unpack it, this will create the directory ``polib-X-Y-Z``, which contains the ``setup.py`` installation script. From a command line in that directory, type:: python setup.py install .. note:: On some systems you may need to execute this with administrative privileges (e.g., ``sudo python setup.py install``). Manual installation from a Mercurial checkout ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If you'd like to try out the latest in-development code, you can obtain it from the polib repository, which is hosted at `Bitbucket `_ and uses `Mercurial `_ for version control. To obtain the latest code and documentation, you'll need to have Mercurial installed, at which point you can type:: hg clone http://bitbucket.org/izi/polib/ This will create a copy of the polib Mercurial repository on your computer; you can then add the ``polib.py`` file to your Python import path, or use the ``setup.py`` script to install as a package. polib-1.0.7/docs/index.rst0000664000175000017500000000325312440274247015040 0ustar iziizi00000000000000.. polib documentation master file Welcome to polib's documentation! ================================= .. image:: https://pypip.in/download/polib/badge.png :target: https://pypi.python.org/pypi/polib/ :alt: Downloads .. image:: https://pypip.in/py_versions/polib/badge.png :target: https://pypi.python.org/pypi/polib/ :alt: Supported Python versions .. image:: https://pypip.in/status/polib/badge.png :target: https://pypi.python.org/pypi/polib/ :alt: Development Status .. image:: https://pypip.in/license/polib/badge.png :target: https://pypi.python.org/pypi/polib/ :alt: License This documentation covers the latest release of polib. polib is a library to manipulate, create, modify gettext files (pot, po and mo files). You can load existing files, iterate through it's entries, add, modify entries, comments or metadata, etc. or create new po files from scratch. polib supports out of the box any version of python ranging from 2.4 to latest 3.X version. polib is pretty stable now and is used by many :ref:`opensource projects `. polib is completely free and opensource, the license used is `the MIT license `_. It was developed back in 2006 by `David Jean Louis `_ and it is still actively maintained. To get up and running quickly, consult the :ref:`quick-start guide `, which describes all the necessary steps to install and use polib. For more detailed information about how to install and how to use polib, read through the documentation listed below. Contents: .. toctree:: :maxdepth: 2 quickstart installation api contributing projects polib-1.0.7/docs/contributing.rst0000664000175000017500000000176312440274247016444 0ustar iziizi00000000000000.. _contributing: Contributing to polib ===================== You are very welcome to contribute to the project! The bugtracker, wiki and mercurial repository can be found at the `project's page `_. New releases are also published at the `cheeseshop `_. How to contribute ~~~~~~~~~~~~~~~~~ There are various possibilities to get involved, for example you can: * `Report bugs `_ preferably with patches if you can; * Enhance this `documentation `_ * `Fork the code `_, implement new features, test and send a pull request Running the test suite ~~~~~~~~~~~~~~~~~~~~~~ To run the tests, just type the following on a terminal:: $ cd /path/to/polib/ $ ./runtests.sh If you want to generate coverage information:: $ pip install coverage $ ./runtests.sh $ coverage html polib-1.0.7/docs/projects.rst0000664000175000017500000000131212440274247015554 0ustar iziizi00000000000000.. _projects: Projects using polib ==================== polib is used by many opensource projects, here are some of them: * `Mercurial `_ * `Transifex `_ * `Launchpad ubuntu translator tools `_ * `Django-rosetta `_ * `The evergreen library system `_ * `Qooxdoo `_ * ``_ * `Lictionary `_ * `Jasy - Web Tooling Framework `_ If you are using polib and wish to be listed here (or not) `let me know `_. polib-1.0.7/docs/api.rst0000664000175000017500000000147312440274247014504 0ustar iziizi00000000000000.. _api: polib API ========= The ``pofile`` function ----------------------- .. autofunction:: polib.pofile The ``mofile`` function ----------------------- .. autofunction:: polib.mofile The ``detect_encoding`` function -------------------------------- .. autofunction:: polib.detect_encoding The ``escape`` function ----------------------- .. autofunction:: polib.escape The ``unescape`` function ------------------------- .. autofunction:: polib.unescape The ``POFile`` class -------------------- .. autoclass:: polib.POFile :members: The ``MOFile`` class -------------------- .. autoclass:: polib.MOFile :members: The ``POEntry`` class --------------------- .. autoclass:: polib.POEntry :members: The ``MOEntry`` class --------------------- .. autoclass:: polib.MOEntry :members: polib-1.0.7/docs/quickstart.rst0000664000175000017500000001274612546742717016143 0ustar iziizi00000000000000.. _quickstart: Quick start guide ================= Installing polib ---------------- polib requires python 2.5 or superior. There are several ways to install polib, this is explained in :ref:`the installation section `. For the impatient, the easiest method is to install polib via `pip `_, just type:: pip install polib Some basics about gettext catalogs ---------------------------------- A gettext catalog is made up of many entries, each entry holding the relation between an original untranslated string and its corresponding translation. All entries in a given catalog usually pertain to a single project, and all translations are expressed in a single target language. One PO file entry has the following schematic structure:: # translator-comments #. extracted-comments #: reference... #, flag... msgid untranslated-string msgstr translated-string A simple entry can look like this:: #: lib/error.c:116 msgid "Unknown system error" msgstr "Error desconegut del sistema" polib has two main entry points for working with gettext catalogs: * the :func:`~polib.pofile` and :func:`~polib.mofile` functions to **load** existing po or mo files, * the :class:`~polib.POFile` and :class:`~polib.MOFile` classes to **create** new po or mo files. References * `Gettext Manual `_ * `PO file format `_ * `MO file format `_ Loading existing catalogs ------------------------- Loading a catalog and detecting its encoding ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Here the encoding of the po file is auto-detected by polib (polib detects it by parsing the charset in the header of the pofile):: import polib po = polib.pofile('path/to/catalog.po') Loading a catalog and specifying explicitly the encoding ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ For some reason you may want to specify the file encoding explicitly (because the charset is not specified in the po file header for example), to do so:: import polib po = polib.pofile( 'path/to/catalog.po', encoding='iso-8859-15' ) Loading an mo file ~~~~~~~~~~~~~~~~~~ In some cases you can be forced to load an mo file (because the po file is not available for example), polib handles this case:: import polib mo = polib.mofile('path/to/catalog.mo') print mo As for po files, mofile also allows specifying the encoding explicitly. Creating po catalogs from scratch --------------------------------- polib allows you to create catalog from scratch, this can be done with the POFile class, for example to create a simple catalog you could do:: import polib po = polib.POFile() po.metadata = { 'Project-Id-Version': '1.0', 'Report-Msgid-Bugs-To': 'you@example.com', 'POT-Creation-Date': '2007-10-18 14:00+0100', 'PO-Revision-Date': '2007-10-18 14:00+0100', 'Last-Translator': 'you ', 'Language-Team': 'English ', 'MIME-Version': '1.0', 'Content-Type': 'text/plain; charset=utf-8', 'Content-Transfer-Encoding': '8bit', } This snippet creates an empty pofile, with its metadata, and now you can add you entries to the po file like this:: entry = polib.POEntry( msgid=u'Welcome', msgstr=u'Bienvenue', occurrences=[('welcome.py', '12'), ('anotherfile.py', '34')] ) po.append(entry) To save your file to the disk you would just do:: po.save('/path/to/newfile.po') And to compile the corresponding mo file:: po.save_as_mofile('/path/to/newfile.mo') More examples ------------- Iterating over entries ~~~~~~~~~~~~~~~~~~~~~~ Iterating over **all** entries (by default POFiles contains all catalog entries, even obsolete and fuzzy entries):: import polib po = polib.pofile('path/to/catalog.po') for entry in po: print entry.msgid, entry.msgstr Iterating over **all** entries except obsolete entries:: import polib po = polib.pofile('path/to/catalog.po') valid_entries = [e for e in po if not e.obsolete] for entry in valid_entries: print entry.msgid, entry.msgstr Iterating over translated entries only:: import polib po = polib.pofile('path/to/catalog.po') for entry in po.translated_entries(): print entry.msgid, entry.msgstr And so on... You could also iterate over the list of POEntry objects returned by the following POFile methods: * :meth:`~polib.POFile.untranslated_entries` * :meth:`~polib.POFile.fuzzy_entries` Getting the percent of translated entries ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :: import polib po = polib.pofile('path/to/catalog.po') print po.percent_translated() Compiling po to mo files and reversing mo files to po files ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Compiling a po file:: import polib po = polib.pofile('path/to/catalog.po') # to get the binary representation in a variable: modata = po.to_binary() # or to save the po file as an mo file po.save_as_mofile('path/to/catalog.mo') Reverse a mo file to a po file:: mo = polib.mofile('path/to/catalog.mo') # to get the unicode representation in a variable, just do: podata = unicode(mo) # or to save the mo file as an po file mo.save_as_pofile('path/to/catalog.po') polib-1.0.7/docs/conf.py0000664000175000017500000001601612440274247014477 0ustar iziizi00000000000000# -*- coding: utf-8 -*- # # polib documentation build configuration file, created by # sphinx-quickstart on Sat Jan 1 16:45:49 2011. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. sys.path.insert(0, os.path.abspath('..')) import polib # -- General configuration ----------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. #needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['sphinx.ext.autodoc', 'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.viewcode'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'index' # General information about the project. project = u'polib' copyright = u'2011, David Jean Louis ' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = polib.__version__ # The full version, including alpha/beta/rc tags. release = polib.__version__ # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_domain_indices = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. #html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. #html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = None # Output file base name for HTML help builder. htmlhelp_basename = 'polibdoc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'polib.tex', u'polib Documentation', u'David Jean Louis \\textless{}izimobil@gmail.com\\textgreater{}', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # If true, show page references after internal links. #latex_show_pagerefs = False # If true, show URL addresses after external links. #latex_show_urls = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_domain_indices = True # -- Options for manual page output -------------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ ('index', 'polib', u'polib Documentation', [u'David Jean Louis '], 1) ] polib-1.0.7/docs/Makefile0000664000175000017500000001075212440274247014641 0ustar iziizi00000000000000# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = _build # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " text to make text files" @echo " man to make manual pages" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf $(BUILDDIR)/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/polib.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/polib.qhc" devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" @echo "# mkdir -p $$HOME/.local/share/devhelp/polib" @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/polib" @echo "# devhelp" epub: $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." make -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." man: $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." polib-1.0.7/__init__.py0000664000175000017500000000041712440274247014357 0ustar iziizi00000000000000# This __init__.py is only here for convenience, for projects that include a # version of polib as a mercurial sub-repository for example. # # This file will NOT be installed when installing polib with pip, setuptools, # or any other mecanism based on the setup.py file. polib-1.0.7/tests/0000775000175000017500000000000012547140712013403 5ustar iziizi00000000000000polib-1.0.7/tests/test_no_header.mo0000664000175000017500000000014012440274247016721 0ustar iziizi00000000000000,<PTX\barfooraboofpolib-1.0.7/tests/test_merge_before.po0000664000175000017500000000213112440274247017423 0ustar iziizi00000000000000# translation of django.po to Castellano # This file is distributed under the same license as the PACKAGE package. # Copyright (C) 2007 THE PACKAGE'S COPYRIGHT HOLDER. # msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-13 10:00+0100\n" "PO-Revision-Date: 2007-07-14 13:00-0500\n" "Last-Translator: Mario Gonzalez \n" "Language-Team: Castellano \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" #: some/file.py:50 msgid "This entry is already present in pofile, but with different occurrences" msgstr "Some translation ..." #: some/file.py:3 some/file2.py:4 msgid "This entry is not present in potfile and will be obsoleted" msgstr "Some translation" #: utils/timesince.py:12 #, fuzzy msgid "year" msgid_plural "years" msgstr[0] "année" msgstr[1] "années" #~ msgid "" #~ "This entry should be removed after the merge and added again as non " #~ "obsolete entry" #~ msgstr "Some translation" polib-1.0.7/tests/test_msgctxt.mo0000664000175000017500000000036412440274247016476 0ustar iziizi000000000000004L` a*( Some message contextsome stringSome other message contextsingularpluralContent-Type: text/plain; charset=UTF-8 une chaînesingulierplurielpolib-1.0.7/tests/test_invalid_version.mo0000664000175000017500000000026412440274247020177 0ustar iziizi00000000000000B,<PQZUfooMIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit barpolib-1.0.7/tests/test_unusual_metadata_location.po0000664000175000017500000000071112440274247022230 0ustar iziizi00000000000000# Po file where metadata is not located # in the first entry. # msgid "foo" msgstr "foo" # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-02-08 16:57+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" polib-1.0.7/tests/test_utf8.mo0000664000175000017500000015116112440274247015675 0ustar iziizi00000000000000-<<N>Td>O> ?%?.?EB?3???'?'@)F@p@x@@,@@@@b@)aAAAAAA AAA AAAA AABB&B7BNBdBjB}qB BB3CECJCQCdCyCCCCC C CCCCC DD$/D TD `D mD{D D DD DDD DDDDD DDE$E4EHE PEt\EEEEE F$F?F HFSFYF iFuFFFFF FFFFFF FGPG9Hg>HHHH HHH I%I!5IWI]IlI!|III"II5IF#J6jJFJEJ1.K.`KXKKL@L\LlL2L6LEL-5MRcMIM/N%0NXVN@N&NO*O(DOmO3OOOO#P(P^Y^x^^ ^ ^ ^^ ^^ ^-^>_[_Yd_@_W_W` p``(aa$2b+Wb2b.bbicccUd\dcd jd tdEddd dd deee&e?eaHeeeeeeee f fff"f*f/f3ffGg8]ggg"gg ggg ghh h(h1h:hNIhhhhh hhh hch<UiiBjJj [j fjtjjjjjj jjjj>jk\.k_k.kKl0fl0ll.l!m.0m1_mKm5m+n?n:\nOn#n o+(o%Tozo%p'pUAp/p4ppqqq2q6,r%cr&r7r!r sXsInsWs/t$@t!ettt3t.t()u#Ru>vuFuNu KvUvYv avkvtv{vvvv vv vvvvvvvv vw ww%w-w"6wYw ]wgwYow'wwXwNxSx \x+fxx/xx x xxxgy7jyfy z zz z&z/zAz Jz Tz^zzz ~z+zzzCz]7{;{ {&{A|E|(`| ||| | ||||| | |||}}}}!}0}9}A}J} R} _} m}y}}} } } }}}} }}} } ~ ~ ~ "~&-~T~ Y~ f~t~z~~ ~ ~ ~ ~~~~~ ~ ~ ~ ~ ~ %.=DW kx}          % / 9 C M Wad m { $̀ Ҁ݀   #0A FT'W ÁɁ ρ ځ ~q(c?e %.9B-|ʆ)(+:fnv%~"݇t&iƈ ׈  &!HX_|6FIYŠ֊ %A U `lt} " ؋/H` vŌ Ό ،  /:oI ۍ$ +8>FLT[u  Ȏ юݎSCp("Đ4K!f!"#Ց""A.IEx6\]R33p+ O֔&=:]=V֕:-nhXז:0/knM 9X"3ј>#"b8'-1%O4u.ٚ0=(5f13Λ.>1!p>>ќRkcϝԝ*ܝ,3p: Ǟ|clpy ş̟ ӟߟ 'S0  H  $¡١&/5:@IVOO #,2:BR [ e pzģ ˣ  #4F ͤ!ڤ @D_ ܥ B/K{  ǦѦ ֦  7VX'˧%* ? JT]bjow%-A$)9cl s ͩݩ%+JQbkq>T8aAQ$w/̬21ۮ1 5?0uOlRY` gqGб %4G eeoղ# (3<DIQVZbi ³ϳ G ET?ڴ   ATms{\-5>GM V{`Pܶ-۷ .7;CKQSY`7f!ws8-Jڹ-%-S/&̺-8!WZ2)G,dt'ټ M""p!0R`n3ϾHL!)C9^<,,//!_oE\@.'$22W&&$@H>L    # )3;BT]ex+ k!pm ;'c9j u8Vb  " + 5"?bf"xGoP #Ue2   +2:<RVZl ~  %7LQex|) $ + 6 A O[k     : U_fi oz ~ (8HXhx  - *.6GXagmty| * &8AH Wbv8t~[U&y.$n0$l>#DM?Schc}O HAj-nqed 3Re4!@#-__`9 ;C"um[PDpQ|XV]-@18snB{Yv+_'Ij\s.RCP&/gg5!3EG,1awc6GT:+MN (kDP/Rt *oJ,> ;1uTh=)~|izZ,=d8U*5Zlif|BK J\  2b]jAo}pN*X g%B:rW { m {@OFJH'YE2`4a7q3?KzIx(./KU+}'X)#Z%~Sh 9 sao%z$VipGL7YyE6vk)bI6<HM\2[wk7N<r40W&xbf("^r`CFqSA^ Q]9wt;O^=5d "W0fTLL!<uy>?:ml eFQVx

To install bookmarklets, drag the link to your bookmarks toolbar, or right-click the link and add it to your bookmarks. Now you can select the bookmarklet from any page in the site. Note that some of these bookmarklets require you to be viewing the site from a computer designated as "internal" (talk to your system administrator if you aren't sure if your computer is "internal").

By %(filter_title)s "%(attr)s" on line %(line)s is an invalid attribute. (Line starts with "%(start)s".)"<%(tag)s>" on line %(line)s is an invalid tag. (Line starts with "%(start)s".)%(full_result_count)s total%(name)s%(number)d %(type)s%(object)s with this %(type)s already exists for the given %(field)s.%(optname)s with this %(fieldname)s already exists.%(score)d rating by %(user)s%(size)d byte%(size)d bytes%(value).1f billion%(value).1f billion%(value).1f million%(value).1f million%(value).1f trillion%(value).1f trillion%.1f GB%.1f KB%.1f MB%s does not appear to be a urlpattern object, %(number)d %(type)s1 result%(counter)s results

By %s:

    A tag on line %(line)s is missing one or more required attributes. (Line starts with "%(start)s".)A user with that username already exists.A valid URL is required.AMAargauActionAddAdd %(name)sAdd %sAdd userAdded %s.AichiAkitaAllAll datesAnonymous users cannot voteAny dateAomoriApp %r not foundAppenzell AusserrhodenAppenzell InnerrhodenAprilArabicAre you sure you want to delete the %(object_name)s "%(escaped_object)s"? All of the following related items will be deleted:Are you sure?Argentinean SpanishAs above, but opens the admin page in a new window.Aug.AugustBaden-WuerttembergBadly formed XML: %sBanovce nad BebravouBanska BystricaBanska Bystrica regionBanska StiavnicaBardejovBasel-LandBasel-StadtBavariaBengaliBerlinBerneBookmarkletsBoolean (Either True or False)Boolean (Either True, False or None)BrandenburgBratislava IBratislava IIBratislava IIIBratislava IVBratislava VBratislava regionBrazilianBremenBreznoBulgarianBytcaCadcaCatalanChangeChange %sChange history: %sChange my passwordChange passwordChange password: %sChange:Changed %s.Check this box if the comment is inappropriate. A "This comment has been removed" message will be displayed instead.ChibaComma-separated integersComment:Confirm password:Content objectCould not retrieve anything from %s.CroatianCurrently:CzechDATETIME_FORMATDATE_FORMATDATE_WITH_TIME_FULLDanishDatabase errorDate (with time)Date (without time)Date/timeDate:Dec.DecemberDecimal numberDeleteDeleted %s.Deleting the %(object_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:Designates that this user has all permissions without explicitly assigning them.Designates whether the user can log into this admin site.Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts.DetvaDjango administrationDjango site adminDocumentationDocumentation bookmarkletsDocumentation for this pageDolny KubinDunajska StredaDuplicate values are not allowed.DutchE-mail addressE-mail address:Edit this object (current window)Edit this object (new window)EhimeEmpty values are not allowed here.EnglishEnsure that there are no more than %s decimal places.Ensure that there are no more than %s digits before the decimal point.Ensure that there are no more than %s digits in total.Ensure this value has at least %(min)d characters (it has %(length)d).Ensure this value has at most %(max)d characters (it has %(length)d).Ensure this value is greater than or equal to %s.Ensure this value is less than or equal to %s.Ensure your text is less than %s character.Ensure your text is less than %s characters.Enter a 4 digit post code.Enter a list of values.Enter a new password for the user %(username)s.Enter a number.Enter a positive number.Enter a postal code in the format XXXXX or XXX XX.Enter a postal code in the format XXXXXXX or XXX-XXXX.Enter a postcode. A space is required between the two postcode parts.Enter a valid Finnish social security number.Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format.Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.Enter a valid Norwegian social security number.Enter a valid Social Security number.Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format.Enter a valid U.S. Social Security number in XXX-XX-XXXX format.Enter a valid U.S. state abbreviation.Enter a valid URL.Enter a valid VAT number.Enter a valid date in YYYY-MM-DD format.Enter a valid date.Enter a valid date/time in YYYY-MM-DD HH:MM format.Enter a valid date/time.Enter a valid e-mail address.Enter a valid filename.Enter a valid time in HH:MM format.Enter a valid time.Enter a valid value.Enter a valid zip code.Enter a whole number between -32,768 and 32,767.Enter a whole number between 0 and 32,767.Enter a whole number.Enter a zip code in the format XXXX.Enter a zip code in the format XXXXX or XXXXX-XXXX.Enter a zip code in the format XXXXX-XXX.Enter a zip code in the format XXXXX.Enter a zip code in the format XXXXXXX.Enter only digits separated by commas.Enter the same password as above, for verification.Enter valid a Chilean RUTEnter valid a Chilean RUT. The format is XX.XXX.XXX-X.Enter valid e-mail addresses separated by commas.Example: '/about/contact/'. Make sure to have leading and trailing slashes.Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'.Feb.FebruaryFeel free to change this password by going to this page:Fields on %s objectsFile pathFilterFinnishFirst, enter a username and password. Then, you'll be able to edit more user options.Flag by %rFloating point numberForgotten your password?Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you.FrenchFriFribourgFridayFukuiFukuokaFukushimaGalantaGalicianGelnicaGenevaGermanGifuGlarusGoGraubuendenGreekGroupsGunmaHamburgHebrewHessenHiroshimaHistoryHlohovecHokkaidoHold down "Control", or "Command" on a Mac, to select more than one.HomeHumenneHungarianHyogoIP addressIbarakiIcelandicIf this is checked, only logged-in users will be able to view the page.IlavaImportant datesIn addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in.IntegerInvalid CNPJ number.Invalid CPF number.Invalid URL: %sInvalid comment IDInvalid date: %sIshikawaItalianIwateJan.JanuaryJapaneseJulyJumps to the admin page for pages that represent a single object.Jumps you from any page to the documentation for the view that generates that page.JuneJuraKagawaKagoshimaKanagawaKannadaKezmarokKochiKomarnoKoreanKosice - okolieKosice IKosice IIKosice IIIKosice IVKosice regionKrupinaKumamotoKyotoKysucke Nove MestoLatvianLeviceLevocaLine breaks are not allowed here.Liptovsky MikulasLog inLog in againLog outLogged outLooks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again.Lower SaxonyLowercase letters are not allowed here.LucenecLucerneMONTH_DAY_FORMATMacedonianMake sure your uploaded file is at least %s bytes big.Make sure your uploaded file is at most %s bytes big.MalackyMarchMartinMayMecklenburg-Western PomeraniaMedzilaborceMichalovceMieMiyagiMiyazakiModel %(name)r not found in app %(label)rModels available in the %(name)s application.Moderator deletion by %rMonMondayMy ActionsMyjavaNaganoNagasakiNamestovoNaraNeuchatelNew password:NidwaldenNiigataNitraNitra regionNoNo fields changed.No file was submitted.No file was submitted. Check the encoding type on the form.No voting for yourselfNon-numeric characters aren't allowed here.None availableNorth Rhine-WestphaliaNorwegianNov.Nove Mesto nad VahomNove ZamkyNovemberObwaldenOct.OctoberOitaOkayamaOkinawaOld password:One or more %(fieldname)s in %(name)s:One or more %(fieldname)s in %(name)s: %(obj)sOne or more of the required fields wasn't submittedOnly POSTs are allowedOnly alphabetical characters are allowed here.OptionalOrder:OrderingOsakaPMPage not foundPartizanskePasswordPassword (again)Password changePassword change successfulPassword changed successfully.Password resetPassword reset successfulPassword:Past 7 daysPermissionsPersianPersonal infoPezinokPhone numberPhone numbers must be in XX-XXXX-XXXX format.Phone numbers must be in XXX-XXX-XXXX format. "%s" is invalid.PiestanyPlease close the unclosed %(tag)s tag from line %(line)s. (Line starts with "%(start)s".)Please correct the error below.Please correct the errors below.Please enter a correct username and password. Note that both fields are case-sensitive.Please enter a valid %s.Please enter a valid IP address.Please enter a valid decimal number with a whole part of at most %s digit.Please enter a valid decimal number with a whole part of at most %s digits.Please enter a valid decimal number with at most %s decimal place.Please enter a valid decimal number with at most %s decimal places.Please enter a valid decimal number with at most %s total digit.Please enter a valid decimal number with at most %s total digits.Please enter a valid decimal number.Please enter a valid floating point number.Please enter both fields or leave them both empty.Please enter something for at least one field.Please enter valid %(self)s IDs. The value %(value)r is invalid.Please enter valid %(self)s IDs. The values %(value)r are invalid.Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly.Please log in again, because your session has expired. Don't worry: Your submission has been saved.PolishPoltarPopradPortugesePost a photoPosted by %(user)s at %(date)s %(comment)s http://%(domain)s%(url)sPovazska BystricaPresovPresov regionPreview commentPrievidzaPuchovRatingsRecent ActionsRelation to parent modelRequiredRequired. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores).Reset my passwordRevucaRhineland-PalatinateRimavska SobotaRomanianRoznavaRussianRuzomberokSaarlandSabinovSagaSaitamaSalaSatSaturdaySaveSave and add anotherSave and continue editingSave as newSaxonySaxony-AnhaltSchaffhausenSchleswig-HolsteinSchwyzSelect %sSelect %s to changeSelect a valid choice. %s is not one of the available choices.Select a valid choice. That choice is not one of the available choices.Select a valid choice; '%(data)s' is not in %(choices)s.SenecSenicaSeparate multiple IDs with commas.Sept.SeptemberSerbianServer Error (500)Server errorServer error (500)ShigaShimaneShizuokaShow allShow object IDShows the content-type and unique ID for pages that represent a single object.Simplified ChineseSite administrationSkalicaSlovakSlovenianSninaSobranceSolothurnSome text starting on line %(line)s is not allowed in that context. (Line starts with "%(start)s".)Somebody tampered with the comment form (security violation)Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user.SpanishSpisska Nova VesSt. GallenStara LubovnaString (up to %(max_length)s)StropkovSunSundaySvidnikSwedishTIME_FORMATTamilTeluguTextThanks for spending some quality time with the Web site today.Thanks for using our site!That e-mail address doesn't have an associated user account. Are you sure you've registered?The "%(attr)s" attribute on line %(line)s has an invalid value. (Line starts with "%(start)s".)The %(name)s "%(obj)s" was added successfully.The %(name)s "%(obj)s" was added successfully. You may edit it again below.The %(name)s "%(obj)s" was changed successfully.The %(name)s "%(obj)s" was deleted successfully.The %(site_name)s teamThe %(verbose_name)s was created successfully.The %(verbose_name)s was deleted.The %(verbose_name)s was updated successfully.The Icelandic identification number is not valid.The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'.The URL %s does not point to a valid QuickTime video.The URL %s does not point to a valid image.The URL %s is a broken link.The comment form didn't provide either 'preview' or 'post'The comment form had an invalid 'target' parameter -- the object ID was invalidThe format for this field is wrong.The submitted file is empty.The two 'new password' fields didn't match.The two password fields didn't match.There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience.This URL appears to be a broken link.This account is inactive.This can be either an absolute path (as above) or a full URL starting with 'http://'.This comment was flagged by %(user)s: %(text)sThis comment was posted by a sketchy user: %(text)sThis comment was posted by a user who has posted fewer than %(count)s comment: %(text)sThis comment was posted by a user who has posted fewer than %(count)s comments: %(text)sThis field cannot be null.This field is invalid.This field is required.This field must be given if %(field)s is %(value)sThis field must be given if %(field)s is not %(value)sThis field must match the '%s' field.This field requires at least 14 digitsThis field requires at most 11 digits or 14 characters.This field requires only numbers.This monthThis object doesn't have a change history. It probably wasn't added via this admin site.This rating is required because you've entered at least one other rating.This should be an absolute path, excluding the domain name. Example: '/events/search/'.This value can't be comprised solely of digits.This value must be a decimal number.This value must be a power of %s.This value must be an integer.This value must be at least %s.This value must be between %(lower)s and %(upper)s.This value must be either None, True or False.This value must be either True or False.This value must be no more than %s.This value must contain only letters, numbers and underscores.This value must contain only letters, numbers, underscores or hyphens.This value must contain only letters, numbers, underscores, dashes or slashes.This yearThuThurgauThuringiaThursdayTicinoTimeTime:TochigiTodayTokushimaTokyoTopolcanyTottoriToyamaTraditional ChineseTrebisovTrencinTrencin regionTrnavaTrnava regionTueTuesdayTurcianske TepliceTurkishTvrdosinU.S. state (two uppercase letters)URLUkrainianUnknownUpload a valid image. The file you uploaded was either not an image or a corrupted image.Uppercase letters are not allowed here.UriUse '[algo]$[salt]$[hexdigest]' or use the change password form.UserUsernameUsername:Usernames cannot contain the '@' character.ValaisValid HTML is required. Specific errors are: %sVaudVelky KrtisView on siteVranov nad ToplouWakayamaWatch your mouth! The word %s is not allowed here.Watch your mouth! The words %s are not allowed here.We're sorry, but the requested page could not be found.We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly.WedWednesdayWelcome,WelshXML textYEAR_MONTH_FORMATYamagataYamaguchiYamanashiYear must be 1900 or later.YesYes, I'm sureYou don't have permission to edit anything.You may add another %s below.You may edit it again below.You're receiving this e-mail because you requested a password resetYour Web browser doesn't appear to have cookies enabled. Cookies are required for logging in.Your e-mail address is not your username. Try '%s' instead.Your name:Your new password is: %(new_password)sYour old password was entered incorrectly. Please enter it again.Your password was changed.Your username, in case you've forgotten:ZarnovicaZiar nad HronomZilinaZilina regionZlate MoravceZugZurichZvolena.m.action flagaction timeactiveall %sandapproved by staffapraugchange messagecodenamecommentcommentscontentcontent typecontent typesdate joineddate/time submitteddaydaysdecdeletion datedisplay namedomain namee-mail addresseightenable commentsexpire datefebfilter:first namefiveflag dateflat pageflat pagesfor your user account at %(site_name)sfourfree commentfree commentsgroupgroupsheadlinehourhoursip addressis publicis removedis valid ratingjanjuljunkarma scorekarma scoreslast loginlast namelog entrieslog entrymarmaymessagemidnightminuteminutesmodel:moderator deletionmoderator deletionsmonthmonthsnamendninenoonnovnumber of %sobject IDobject idobject reproctoneorp.m.passwordpermissionpermissionsperson's namepython model class namerating #1rating #2rating #3rating #4rating #5rating #6rating #7rating #8rdredirectredirect fromredirect toredirectsregistration requiredrelated `%(label)s.%(name)s` objectsscorescore datesepsessionsession datasession keysessionssevensitesitessixststaff statussuperuser statustag:template nameththe related `%(label)s.%(type)s` objectthreetitletwouseruser flaguser flagsuser permissionsusernameusersview:weekweeksyearyearsyes,no,maybeProject-Id-Version: django Report-Msgid-Bugs-To: POT-Creation-Date: 2007-08-17 15:35-0400 PO-Revision-Date: 2007-07-14 13:00-0500 Last-Translator: Mario Gonzalez Language-Team: Castellano MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1);

    Para instalar bookmarklets, arrastre el enlace a su barra de favoritos, o pulse con el botón derecho el enlace y añádalo a sus favoritos. Ahora puede escoger el bookmarklet desde cualquier página en el sitio. Observer que algunos de estos bookmarklets precisan que esté viendo el sitio desde un computador señalado como "interno" (hable con su administrador de sistemas si no está seguro de si el suyo lo es).

    Por %(filter_title)s El "%(attr)s" de la línea %(line)s no es un atributo válido. (La línea empieza por "%(start)s".)La "<%(tag)s>" de la línea %(line)s no es una etiqueta válida. (La línea empieza por "%(start)s".)%(full_result_count)s total%(name)s%(number)d %(type)s%(object)s de este %(type)s ya existen en este %(field)s.Ya existe %(optname)s con este %(fieldname)s.puntuado %(score)d por %(user)s%(size)d byte%(size)d bytes%(value).1f billión%(value).1f billión%(value).1f millón%(value).1f millión%(value).1f trillión%(value).1f trillión%.1f GB%.1f KB%.1f MB%s no parece ser un objeto urlpattern, %(number)d %(type)s1 resultado%(counter)s resultados

    Por %s:

      A una etiqueta de la línea %(line)s le faltan uno o más atributos requeridos. (La línea empieza por "%(start)s".)Ya existe un usuario con este nombre.Se precisa una URL válida.AMAargauAcciónAgregarAgregar %(name)sAgregar %sAñadir usuarioAgregado %s.AichiAkitaTodoTodas las fechasLos usuarios anónimos no pueden votarCualquier fechaAomoriAplicación %r no encontradaAppenzell AusserrhodenAppenzell InnerrhodenAbrilÁrabe¿Está seguro de que quiere borrar los %(object_name)s "%(escaped_object)s"? Se borrarán los siguientes objetos relacionados:¿Está seguro?Español ArgentinoComo antes, pero abre la página de administración en una nueva ventana.Ago.AgostoBaden-WuerttembergXML mal formado: %sRegión de Banovce nad BebravouRegión de BystricaRegión de Banska BystricaRegión de Banska StiavnicaRegión de BardejovBasel-LandBasel-StadtBavariaBengalíBerlínBerneBookmarkletsBooleano (Verdadero o Falso)Booleano (Verdadero, Falso o Nulo)BrandenburgRegión de Bratislava IRegión de Bratislava IIRegión de Bratislava IIIRegión de Bratislava IVRegión de Bratislava VRegión de BratislavaBrasileñoBremenRegión de BreznoBúlgaroRegión de BytcaRegión de CadcaCatalánModificarModificar %sModificar histórico: %sCambiar mi claveCambiar claveCambiar clave: %sModificar:Modificado %s.Marque esta caja si el comentario es inapropiado. En su lugar se mostrará "Este comentario ha sido eliminado".ChibaEnteros separados por comasComentario:Confirme clave:Objeto contenidoNo pude obtener nada de %s.CroataActualmente:Checoj N Y Pj N Yj M Y PDanésErorr en la base de datosFecha (con hora)Fecha (sin hora)Fecha/horaFecha:Dic.DiciembreNúmero decimalEliminarBorrado %s.Eliminar el %(object_name)s '%(escaped_object)s' provocaría la eliminación de objetos relacionados, pero su cuenta no tiene permiso para borrar los siguientes tipos de objetos:Indica que este usuario tiene todos los permisos sin asignárselos explícitamente.Indica si el usuario puede entrar en este sitio de administración.Indica si el usuario puede entrar en este sitio de administración. Desmarque esto en lugar de borrar la cuenta.Región de DetvaAdministración de DjangoSitio de administración de DjangoDocumentaciónBookmarklets de documentaciónDocumentación de esta páginaRegión de Dolny KubinRegión de Dunajska StredaNo se admiten valores duplicados.AlemánDirección de correo electrónicoDirección de correo electrónico:Editar este objeto (ventana actual)Editar este objeto (nueva ventana)EhimeNo se admiten valores vacíos.InglésAsegúrese de que no hay más de %s decimales.Asegúrese de que no hay más de %s dígitos antes del punto decimal.Asegúrese de que no hay más de %s dígitos en total.Asegúrese de que su texto tiene al menos %(min)d caracteres (actualmente tiene %(length)d).Asegúrese de que su texto tiene a lo más %(max)d caracteres (actualmente tiene %(length)d).Asegúrese de que este valor es mayor o igual a %s.Asegúrese de que este valor es menor o igual a %s.Asegúrese de que su texto tiene menos de %s carácter.Asegúrese de que su texto tiene menos de %s caracteres.Introduzca un código postal de 4 dígitos.Introduzca una lista de valores.Introduzca una nueva contraseña para el usuario %(username)s.Introduzca un número.Introduzca un número positivo.Introduzca un código postal en el formato XXXXX o XXX XX.Introduzca un código postal en el formato XXXXX o XXXX-XXXX.Introduzca un código postal. Se necesita un espacio entre las dos partes del código.Introduzca un número de seguro social finlandés válido.Introduzca un número de tarjeta de identidad de Alemania válida en el formato XXXXXXXXXXX-XXXXXXX-XXXXXXX-X.Introduzca un número de identificación de Islandia válido. El formato es XXXXXX-XXXX.Introduzca un número de seguro social de Noruega válido.Introduzca un número de Seguro Social válido.Introduzca una identificación suiza válida o un número de pasaporte en el formato X1234567<0 or 1234567890.Introduzca un Número Seguro Social de EEUU válido en el formato XXX-XX-XXXXIntroduzca una abreviatura válida de estado de los EEUU.Introduzca una URL válida.Introduzca un número VAT válido.Introduzca una fecha válida en formato AAAA-MM-DD.Introduzca una fecha válida.Introduzca una fecha/hora válida en formato AAAA-MM-DD HH:MM.Introduzca una fecha/hora válida.Introduzca una dirección de correo electrónico válidaIntroduzca un nombre de fichero válidoIntroduzca una hora válida en formato HH:MM.Introduzca una hora válida.Introduzca un valor correcto.Introduzca un código postal válido.Introduzca un número entero entre -32,768 y 32,767.Introduzca un número entero entre 0 y 32,767.Introduzca un número entero.Introduzca un código postal en el formato XXXX.Introduzca un código postal en el formato XXXXX o XXXX-XXXX.Introduzca un código postal en el formato XXXX-XXXX.Introduzca un código postal en el formato XXXXX.Introduzca un código postal en el formato XXXXXXX.Introduzca sólo dígitos separados por comas.Introduzca la misma contraseña que arriba, para verificaciónIntroduzca un RUT chileno válidoIntroduzca un RUT chileno válido. El formato es XX.XXX.XXX-X.Introduzca direcciones de correo válidas separadas por comas.Ejemplo: '/about/contact/'. Asegúrese de que pone barras al principio y al final.Ejemplo: 'flatpages/contact_page.html'. Si no es proporcionado, el sistema usará 'flatpages/default.html'.Feb.FebreroPuede cambiarla accediendo a esta página:Campos en %s objetosRuta de ficheroFiltroFinésPrimero introduzca un nombre de usuario y una contraseña. Luego podrá editar el resto de opciones del usuario.Marca de %rNúmero decimal¿Has olvidado tu contraseña?¿Ha olvidado su clave? Introduzca su dirección de correo electrónico, y crearemos una nueva que le enviaremos por correo.FrancésVieFribourgViernesFukuiFukuokaFukushimaGalantaGallegoGelnicaGenevaAlemánGifuGlarusBuscarGraubuendenGriegoGruposGunmaHamburgHebreoHessenHiroshimaHistóricoHlohovecHokkaidoMantenga presionado "Control", o "Command" en un Mac, para seleccionar más de uno.InicioHumenneHúngaroHyogoDirección IPIbarakiIslandésSi está marcado, sólo los usuarios registrados podrán ver la página.IlavaFechas importantesAdemás de los permisos asignados manualmente, este usuario también tendrá todos los permisos de los grupos en los que esté.EnteroNúmero CNPJ inválidoNúmero CPF inválido.URL no válida: %sID de comentario no válidoFecha no válida: %sIshikawaItalianoIwateEne.EneroJaponésJulioLe lleva a la página de administración de páginas que representan un único objeto.Le lleva desde cualquier página a la documentación de la vista que la genera.JunioJuraKagawaKagoshimaKanagawaKannadaKezmarokKochiKomarnoKoreanoKosice - okolieKosice IKosice IIKosice IIIKosice IVRegión de KosiceKrupinaKumamotoKyotoKysucke Nove MestoLatvioLeviceLevocaNo se permiten saltos de línea.Liptovsky MikulasIdentificarseIdentificarse de nuevoTerminar sesiónSesión terminadaParece que su navegador no está configurado para aceptar cookies. Actívelas por favor, recargue esta página, e inténtelo de nuevo.Lower SaxonyNo se admiten letras minúsculas.LucenecLucernej \de FMacedonioAsegúrese de que el fichero que envía tiene al menos %s bytes.Asegúrese de que el fichero que envía tiene como máximo %s bytes.MalackyMarzoMartinMayoMecklenburg-Western PomeraniaMedzilaborceMichalovceMieMiyagiMiyazakiEl modelo %(name)s no se ha encontrado en la aplicación %(label)rModelos disponibles en la aplicación %(name)s.Eliminación del moderador %rLunLunesMis accionesMyjavaNaganoNagasakiNamestovoNaraNeuchatelClave nueva:NidwaldenNiigataNitraRegión de NitraNoNo ha cambiado ningún campo.No se ha enviado ningún ficheroNo se ha enviado ningún fichero. Compruebe el tipo de codificación en el formulario.No puedes votarte tú mismoNo se admiten caracteres no numéricos.Ninguno disponibleNorth Rhine-WestphaliaNoruegoNov.Nove Mesto nad VahomNove ZamkyNoviembreObwaldenOct.OctubreOitaOkayamaOkinawaClave antigua:Uno o más %(fieldname)s en %(name)s:Uno o más %(fieldname)s en %(name)s: %(obj)sNo se proporcionó uno o más de los siguientes campos requeridosSólo se admite POSTSólo se admiten caracteres alfabéticos.OpcionalOrden:OrdenaciónOsakaPMPágina no encontradaPartizanskeContraseñaContraseña (de nuevo)Cambio de claveCambio de clave exitosoLa clave se ha cambiado exitosamente.Recuperar claveRecuperación de clave exitosaClave:Últimos 7 díasPermisosPersaInformación personalPezinokNúmero de teléfonoLos números de teléfono deben tener el formato XXX-XXX-XXXX.Los números de teléfono deben guardar el formato XXX-XXX-XXXX. "%s" no es válido.PiestanyPor favor, cierre la etiqueta %(tag)s de la línea %(line)s. (La línea empieza por "%(start)s".)Por favor, corrija el siguiente error.Por favor, corrija los siguientes errores.Por favor, introduzca un correcto nombre de usuario y contraseña. Note que ambos campos son sensibles a mayúsculas/minúsculas.Por favor, introduzca un %s válido.Por favor introduzca una dirección IP válida.Por favor, introduzca un número decimal válido con a lo más %s dígito en su parte entera.Por favor, introduzca un número decimal válido con a lo más %s dígitos en su parte entera.Por favor, introduzca un número decimal válido con a lo más %s dígito decimal.Por favor, introduzca un número decimal válido con a lo más %s dígitos decimales.Por favor, introduzca un número decimal válido con a lo más %s dígito en total.Por favor, introduzca un número decimal válido con a lo más %s dígitos en total.Por favor, introduzca un número decimal válido.Por favor, introduzca un número decimal válido.Por favor, rellene ambos campos o deje ambos vacíos.Por favor, introduzca algo en al menos un campo.Por favor, introduzca IDs de %(self)s válidos. El valor %(value)r no es válido.Por favor, introduzca IDs de %(self)s válidos. Los valores %(value)r no son válidos.Por favor, introduzca su clave antigua, por seguridad, y después introduzca la nueva clave dos veces para verificar que la ha escrito correctamente.Por favor, identifíquese de nuevo, porque su sesión ha caducado. No se preocupe: se ha guardado su envío.PolacoPoltarPopradPortugésPostea una fotografíaEnviado por %(user)s en %(date)s %(comment)s http://%(domain)s%(url)sPovazska BystricaPresovRegión de PresovPrevisualizar comentarioPrievidzaPuchovCalificacionesAcciones recientesRelación con el modelo padreRequeridoRequerido. 30 caracteres o menos. Sólo caracteres alfanuméricos (letras, dígitos y guiones bajos).Recuperar mi claveRevucaRhineland-PalatinateRimavska SobotaRumanoRoznavaRusoRuzomberokSaarlandSabinovSagaSaitamaSalaSabSábadoGrabarGrabar y añadir otroGrabar y continuar editandoGrabar como nuevoSaxonySaxony-AnhaltSchaffhausenSchleswig-HolsteinSchwyzEscoja %sEscoja %s para modificarEscoja una opción válida; '%s' no es una de las opciones disponibles.Escoja una opción válida. Esa opción no está entre las aceptadas.Escoja una opción válida; '%(data)s' no está en %(choices)s.SenecSenicaSepare múltiples IDs con comas.Sept.SeptiembreSerbioError de servidor (500)Error del servidorError del servidor (500)ShigaShimaneShizuokaMostrarlo todoMostrar ID de objetoMuestra el tipo de contenido e ID unívoco de las páginas que representan un único objeto.Chino simplificadoSitio administrativoSkalicaEslovacoEslovenoSninaSobranceSolothurnParte del texto que comienza en la línea %(line)s no está permitido en ese contexto. (La línea empieza por "%(start)s".)Alguien está jugando con el formulario de comentarios (violación de seguridad)Algo va mal con la instalación de la base de datos. Asegúrate que las tablas necesarias han sido creadas, y que la base de datos puede ser leída por el usuario apropiado.EspañolSpisska Nova VesSt. GallenStara LubovnaCadena (máximo %(max_length)s)StropkovDomDomingoSvidnikSuecoPTamilTeluguTextoGracias por el tiempo que ha dedicado al sitio web hoy.¡Gracias por usar nuestro sitio!Esta dirección de correo electrónico no tiene una cuenta de usuario asociada. ¿Está seguro de que se ha registrado?El atributo "%(attr)s" de la línea %(line)s tiene un valor que no es válido. (La línea empieza por "%(start)s".)Se añadió con éxito el %(name)s "%(obj)s".Se agregó con éxito el %(name)s "%(obj)s. Puede editarlo de nuevo abajo.Se modificó con éxito el %(name)s "%(obj)s.Se eliminó con éxito el %(name)s "%(obj)s".El equipo de %(site_name)sEl %(verbose_name)s se ha creado correctamente.El %(verbose_name)s ha sido eliminado.Se actualizó con éxito el %(verbose_name)s.El número de identificación de Islandia no es válido.La URL %(url)s devolvió la cabecera Content-Type '%(contenttype)s', que no es válida.La URL %s no apunta a un vídeo QuickTime válido.La URL %s no apunta a una imagen válida.La URL %s es un enlace roto.El formulario de comentario no proporcionó 'previsualizar' ni 'enviar'El formulario de comentarios tiene un parámetro 'target' no válido (el ID de objeto era inválido)El formato de este campo es incorrecto.El fichero enviado está vacío.Las contraseñas introducidas en los campos 'nueva contraseña' no coinciden.Las dos contraseñas no coinciden.Ha ocurrido un error. Se ha informado a los administradores del sitio mediante correo electrónico y debería arreglarse en breve. Gracias por su paciencia.La URL parece ser un enlace roto.Esta cuenta está inactiva.Esto puede ser bien una ruta absoluta (como antes) o una URL completa que empiece con 'http://'.Este comentario fue marcado por %(user)s: %(text)sEste comentario ha sido colocado por un usuario poco preciso: %(text)sEste comentario lo envió un usuario que ha enviado menos de %(count)s comentario: %(text)sEste comentario lo envió un usuario que ha enviado menos de %(count)s comentarios: %(text)sEste campo no puede estar vacío.Este campo no es válido.Este campo es obligatorio.Se debe proporcionar este campo si %(field)s es %(value)sSe debe proporcionar este campo si %(field)s no es %(value)sEste campo debe concordar con el campo '%s'.Este campo necesita 14 dígitos como máximoEste campo necesita al menos 11 o 14 caracteresEste campo sólo acepta números.Este mesEste objeto no tiene histórico de cambios. Probablemente no fue añadido usando este sitio de administración.Se precisa esta puntuación porque ha introducido al menos otra más.Esta ruta debería ser absoluta, excluyendo el nombre de dominio. Ejeplo: '/events/search/'.Este valor no puede comprender sólo dígitos.Este valor debe ser un entero.Este valor debe ser una potencia de %s.Este valor debe ser un entero.Este valor debe ser como mínimo %s.Este valor debe estar entre %(lower)s y %(upper)s.Este valor debe ser Verdadero o Falso.Este valor debe ser Verdadero o Falso.Este valor no debe ser mayor que %s.Este valor debe contener sólo letras, números y guiones bajos.Este valor debe contener sólo letras, números, guiones bajos o medios.Este valor debe contener letras, números, guiones bajos o barras solamente.Este añoJueThurgauThuringiaJuevesTicinoHoraHora:TochigiHoyTokushimaTokyoTopolcanyTottoriToyamaChino tradicionalTrebisovTrencinRegión de TrencinTrnavaRegión de TrnavaMarMartesTurcianske TepliceTurcoTvrdosinEstado de los EEUU (dos letras mayúsculas)URLUcranianoDesconocidoEnvíe una imagen válida. El fichero que ha enviado no era una imagen o se trataba de una imagen corrupta.No se admiten letras mayúsculas.UriUse'[algo]$[sal]$[hash hexadecimal]' o use el formulario para cambiar la contraseña.UsuarioNombre de usuarioUsuario:Los nombres de usuario no pueden contener el carácter '@'.ValaisSe precisa HTML válido. Los errores específicos son: %sVaudVelky KrtisVer en el sitioVranov nad ToplouWakayama¡Cuida tu vocabulario! Aquí no admitimos la palabra %s.¡Cuida tu vocabulario! Aquí no admitimos las palabras %s.Lo sentimos, pero no se encuentra la página solicitada.Le hemos enviado una clave nueva a la dirección que ha suministrado. Debería recibirla en breve.MieMiércolesBienvenido,GalésTexto XMLF YYamagataYamaguchiYamanashiEl año debe ser 1900 o posterior.SíSí, estoy seguroNo tiene permiso para editar nada.Puede agregar otro %s abajo.Puede editarlo de nuevo abajo.Está recibiendo este mensaje debido a que solicitó recuperar la claveTu navegador de internet parece no tener las cookies habilitadas. Las cookies se necesitan para poder ingresar.Su dirección de correo no es su nombre de usuario. Pruebe con '%s' en su lugar.Tu nombre:Su nueva clave es: %(new_password)sTu contraseña antigua es incorrecta. Por favor, vuelve a introducirla correctamente.Su clave ha sido cambiada.Su nombre de usuario, en caso de haberlo olvidado:ZarnovicaZiar nad HronomZilinaRegión de ZilinaZlate MoravceZugZurichZvolena.mmarca de acciónhora de acciónactivotodo %syaprobado por el staffabragomensaje de cambionombre en códigocomentariocomentarioscontenidotipo de contenidotipos de contenidofecha de creaciónfecha/hora de envíodíadíasdicfecha de eliminaciónnombre para mostrarnombre de dominiodirección de correoochoadmitir comentariosfecha de caducidadfebfiltro:nombrecincofecha de la marcapágina estáticapáginas estáticasde su cuenta de usuario en %(site_name)s.cuatrocomentario librecomentarios libresgrupogruposencabezadohorahorasdirección ipes públicoestá eliminadoes calificación válidaenejuljunpunto karmapuntos karmaÚltimo registroapellidosentradas de registroentrada de registromarmaymensajemedia nocheminutominutosmodelo:eliminación de moderadoreliminaciones de moderadormesmesesnombrendnuevemedio díanovnúmero de %sID de objetoid de objetorepr de objetooctunoop.mclavepermisopermisosnombre de la personanombre de módulo pythoncalificación 1calificación 2calificación 3calificación 4calificación 5calificación 6calificación 7calificación 8rdredirecciónredirigir desderedirigir aredireccionesdebe estar registradolos objetos relacionados `%(label)s.%(name)s`puntuaciónfecha de la puntuaciónsepsesióndatos de sesiónclave de sesiónsesionessietesitiositiosseisstes staffes superusuarioetiqueta:nombre de plantillathel objeto relacionado`%(label)s.%(type)s` trestítulodosusuariomarca de usuariomarcas de usuariopermisosnombre de usuariousuariosvista:semanasemanasañoañossí,no,tal vezpolib-1.0.7/tests/test_iso-8859-15.po0000664000175000017500000000306612440274247016442 0ustar iziizi00000000000000# test in ISO-8859-15 charset msgid "" msgstr "" "Project-Id-Version: Vim(Franais)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-05-01 19:42+0200\n" "PO-Revision-Date: 2006-05-02 14:15+0200\n" "Last-Translator: David Blanchet \n" "Language-Team: Adrien Beau \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO_8859-15\n" "Content-Transfer-Encoding: 8bit\n" #. Added for wrapping test, this is a long extracted comment that should be #. wrapped by polib, blah, blah, foobar # Added for wrapping test, this is a long translated comment that should be # wrapped by polib, blah, blah, foobar #: /foo/bar/baz/spam.py:710 #: /foo/bar/baz/spam-ham-foo-bar-baz-spam-something-bar.py msgid "Test wrapping" msgstr "Test wrapping" # Added for previous msgid/msgid_plural/msgctxt testing #| msgctxt "@previous_context" #| msgid "previous untranslated entry" #| msgid_plural "previous untranslated entry plural" msgctxt "@context" msgid "Some msgid" msgstr "Some msgstr" # AB - La situation est probablement plus grave que la version anglaise ne le # laisse entendre (voir l'aide en ligne). La version franaise est plus # explicite. msgid "E83: Cannot allocate buffer, using other one..." msgstr "" "E83: L'allocation du tampon a chou : arrtez Vim, librez de la mmoire" #, c-format msgid "1 line --%d%%--" msgstr "1 ligne --%d%%--" #. ctrl_x_mode == 0, ^P/^N compl. # DB - todo : Faut-il une majuscule "mode" ? msgid " ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)" msgstr " mode ^X (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)" polib-1.0.7/tests/test_word_garbage.po0000664000175000017500000000032712440274247017432 0ustar iziizi00000000000000msgid "" msgstr "" "Project-Id-Version: Spam\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid "Whatever" msgstr "" "Some text here.\n" " Some more text.\n" "And some more." polib-1.0.7/tests/test_utf8.po0000664000175000017500000026172612440274247015711 0ustar iziizi00000000000000# translation of django.po to Castellano # This file is distributed under the same license as the PACKAGE package. # Copyright (C) 2007 THE PACKAGE'S COPYRIGHT HOLDER. # msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-08-17 15:35-0400\n" "PO-Revision-Date: 2007-07-14 13:00-0500\n" "Last-Translator: Mario Gonzalez \n" "Language-Team: Castellano \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" # Added for previous msgid/msgid_plural/msgctxt testing #| msgctxt "@previous_context" #| msgid "previous untranslated entry" #| msgid_plural "previous untranslated entry plural" msgctxt "@context" msgid "Some msgid" msgstr "Some msgstr" # test context 1 msgctxt "@context1" msgid "test context" msgstr "test context 1" # test context 2 msgctxt "@context2" msgid "test context" msgstr "test context 2" # test context msgctxt "@context3" msgid "Some msgid" msgstr "Some msgstr" #. test generated comments #. #. more tests... msgid "Test generated comments" msgstr "Test generated comments" # Added for previous msgid/msgid_plural/msgctxt testing #| msgctxt "@previous_context" #| msgid "" #| "previous untranslated entry, this is a long string " #| "written on multiple " #| "lines" #| msgid_plural "" #| "previous untranslated entry plural, this is also a " #| "long string written on multiple lines" msgctxt "@context4" msgid "Some msgid2" msgstr "Some msgstr2" #| msgctxt "@previous_context" #| msgid "previous untranslated entry" msgctxt "@context5" msgid "Some msgid" msgstr "" ## Some comment starting with two '#' #: db/models/manipulators.py:309 #, python-format #, msgid "%(object)s with this %(type)s already exists for the given %(field)s." msgstr "%(object)s de este %(type)s ya existen en este %(field)s." #: db/models/manipulators.py:310 contrib/admin/views/main.py:342 #: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346 #: core/validators.py:275 #: msgid "and" msgstr "y" #: db/models/fields/__init__.py:49 #, python-format msgid "%(optname)s with this %(fieldname)s already exists." msgstr "Ya existe %(optname)s con este %(fieldname)s." #: db/models/fields/__init__.py:156 db/models/fields/__init__.py:313 #: db/models/fields/__init__.py:721 db/models/fields/__init__.py:732 #: newforms/fields.py:92 newforms/fields.py:490 newforms/fields.py:566 #: newforms/fields.py:577 newforms/models.py:193 oldforms/__init__.py:373 msgid "This field is required." msgstr "Este campo es obligatorio." #: db/models/fields/__init__.py:411 msgid "This value must be an integer." msgstr "Este valor debe ser un entero." #: db/models/fields/__init__.py:446 msgid "This value must be either True or False." msgstr "Este valor debe ser Verdadero o Falso." #: db/models/fields/__init__.py:467 msgid "This field cannot be null." msgstr "Este campo no puede estar vacío." #: db/models/fields/__init__.py:501 core/validators.py:155 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Introduzca una fecha válida en formato AAAA-MM-DD." #: db/models/fields/__init__.py:570 core/validators.py:164 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgstr "Introduzca una fecha/hora válida en formato AAAA-MM-DD HH:MM." #: db/models/fields/__init__.py:631 msgid "This value must be a decimal number." msgstr "Este valor debe ser un entero." #: db/models/fields/__init__.py:741 msgid "Enter a valid filename." msgstr "Introduzca un nombre de fichero válido" #: db/models/fields/__init__.py:883 msgid "This value must be either None, True or False." msgstr "Este valor debe ser Verdadero o Falso." #: db/models/fields/related.py:55 #, python-format msgid "Please enter a valid %s." msgstr "Por favor, introduzca un %s válido." #: db/models/fields/related.py:661 msgid "Separate multiple IDs with commas." msgstr "Separe múltiples IDs con comas." #: db/models/fields/related.py:663 msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" "Mantenga presionado \"Control\", o \"Command\" en un Mac, para seleccionar " "más de uno." #: db/models/fields/related.py:710 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "" "Please enter valid %(self)s IDs. The values %(value)r are invalid." msgstr[0] "" "Por favor, introduzca IDs de %(self)s válidos. El valor %(value)r no es " "válido." msgstr[1] "" "Por favor, introduzca IDs de %(self)s válidos. Los valores %(value)r no son " "válidos." #: conf/global_settings.py:38 msgid "Arabic" msgstr "Árabe" #: conf/global_settings.py:39 msgid "Bengali" msgstr "Bengalí" #: conf/global_settings.py:40 msgid "Bulgarian" msgstr "Búlgaro" #: conf/global_settings.py:41 msgid "Catalan" msgstr "Catalán" #: conf/global_settings.py:42 msgid "Czech" msgstr "Checo" #: conf/global_settings.py:43 msgid "Welsh" msgstr "Galés" #: conf/global_settings.py:44 msgid "Danish" msgstr "Danés" #: conf/global_settings.py:45 msgid "German" msgstr "Alemán" #: conf/global_settings.py:46 msgid "Greek" msgstr "Griego" #: conf/global_settings.py:47 msgid "English" msgstr "Inglés" #: conf/global_settings.py:48 msgid "Spanish" msgstr "Español" #: conf/global_settings.py:49 msgid "Argentinean Spanish" msgstr "Español Argentino" #: conf/global_settings.py:50 msgid "Persian" msgstr "Persa" #: conf/global_settings.py:51 msgid "Finnish" msgstr "Finés" #: conf/global_settings.py:52 msgid "French" msgstr "Francés" #: conf/global_settings.py:53 msgid "Galician" msgstr "Gallego" #: conf/global_settings.py:54 msgid "Hungarian" msgstr "Húngaro" #: conf/global_settings.py:55 msgid "Hebrew" msgstr "Hebreo" #: conf/global_settings.py:56 msgid "Croatian" msgstr "Croata" #: conf/global_settings.py:57 msgid "Icelandic" msgstr "Islandés" #: conf/global_settings.py:58 msgid "Italian" msgstr "Italiano" #: conf/global_settings.py:59 msgid "Japanese" msgstr "Japonés" #: conf/global_settings.py:60 msgid "Korean" msgstr "Koreano" #: conf/global_settings.py:61 msgid "Kannada" msgstr "Kannada" #: conf/global_settings.py:62 msgid "Latvian" msgstr "Latvio" #: conf/global_settings.py:63 msgid "Macedonian" msgstr "Macedonio" #: conf/global_settings.py:64 msgid "Dutch" msgstr "Alemán" #: conf/global_settings.py:65 msgid "Norwegian" msgstr "Noruego" #: conf/global_settings.py:66 msgid "Polish" msgstr "Polaco" #: conf/global_settings.py:67 msgid "Portugese" msgstr "Portugés" #: conf/global_settings.py:68 msgid "Brazilian" msgstr "Brasileño" #: conf/global_settings.py:69 msgid "Romanian" msgstr "Rumano" #: conf/global_settings.py:70 msgid "Russian" msgstr "Ruso" #: conf/global_settings.py:71 msgid "Slovak" msgstr "Eslovaco" #: conf/global_settings.py:72 msgid "Slovenian" msgstr "Esloveno" #: conf/global_settings.py:73 msgid "Serbian" msgstr "Serbio" #: conf/global_settings.py:74 msgid "Swedish" msgstr "Sueco" #: conf/global_settings.py:75 msgid "Tamil" msgstr "Tamil" #: conf/global_settings.py:76 msgid "Telugu" msgstr "Telugu" #: conf/global_settings.py:77 msgid "Turkish" msgstr "Turco" #: conf/global_settings.py:78 msgid "Ukrainian" msgstr "Ucraniano" #: conf/global_settings.py:79 msgid "Simplified Chinese" msgstr "Chino simplificado" #: conf/global_settings.py:80 msgid "Traditional Chinese" msgstr "Chino tradicional" #: views/generic/create_update.py:43 #, python-format msgid "The %(verbose_name)s was created successfully." msgstr "El %(verbose_name)s se ha creado correctamente." #: views/generic/create_update.py:117 #, python-format msgid "The %(verbose_name)s was updated successfully." msgstr "Se actualizó con éxito el %(verbose_name)s." #: views/generic/create_update.py:184 #, python-format msgid "The %(verbose_name)s was deleted." msgstr "El %(verbose_name)s ha sido eliminado." #: utils/dates.py:6 msgid "Monday" msgstr "Lunes" #: utils/dates.py:6 msgid "Tuesday" msgstr "Martes" #: utils/dates.py:6 msgid "Wednesday" msgstr "Miércoles" #: utils/dates.py:6 msgid "Thursday" msgstr "Jueves" #: utils/dates.py:6 msgid "Friday" msgstr "Viernes" #: utils/dates.py:7 msgid "Saturday" msgstr "Sábado" #: utils/dates.py:7 msgid "Sunday" msgstr "Domingo" #: utils/dates.py:10 msgid "Mon" msgstr "Lun" #: utils/dates.py:10 msgid "Tue" msgstr "Mar" #: utils/dates.py:10 msgid "Wed" msgstr "Mie" #: utils/dates.py:10 msgid "Thu" msgstr "Jue" #: utils/dates.py:10 msgid "Fri" msgstr "Vie" #: utils/dates.py:11 msgid "Sat" msgstr "Sab" #: utils/dates.py:11 msgid "Sun" msgstr "Dom" #: utils/dates.py:18 msgid "January" msgstr "Enero" #: utils/dates.py:18 msgid "February" msgstr "Febrero" #: utils/dates.py:18 utils/dates.py:31 msgid "March" msgstr "Marzo" #: utils/dates.py:18 utils/dates.py:31 msgid "April" msgstr "Abril" #: utils/dates.py:18 utils/dates.py:31 msgid "May" msgstr "Mayo" #: utils/dates.py:18 utils/dates.py:31 msgid "June" msgstr "Junio" #: utils/dates.py:19 utils/dates.py:31 msgid "July" msgstr "Julio" #: utils/dates.py:19 msgid "August" msgstr "Agosto" #: utils/dates.py:19 msgid "September" msgstr "Septiembre" #: utils/dates.py:19 msgid "October" msgstr "Octubre" #: utils/dates.py:19 msgid "November" msgstr "Noviembre" #: utils/dates.py:20 msgid "December" msgstr "Diciembre" #: utils/dates.py:23 msgid "jan" msgstr "ene" #: utils/dates.py:23 msgid "feb" msgstr "feb" #: utils/dates.py:23 msgid "mar" msgstr "mar" #: utils/dates.py:23 msgid "apr" msgstr "abr" #: utils/dates.py:23 msgid "may" msgstr "may" #: utils/dates.py:23 msgid "jun" msgstr "jun" #: utils/dates.py:24 msgid "jul" msgstr "jul" #: utils/dates.py:24 msgid "aug" msgstr "ago" #: utils/dates.py:24 msgid "sep" msgstr "sep" #: utils/dates.py:24 msgid "oct" msgstr "oct" #: utils/dates.py:24 msgid "nov" msgstr "nov" #: utils/dates.py:24 msgid "dec" msgstr "dic" #: utils/dates.py:31 msgid "Jan." msgstr "Ene." #: utils/dates.py:31 msgid "Feb." msgstr "Feb." #: utils/dates.py:32 msgid "Aug." msgstr "Ago." #: utils/dates.py:32 msgid "Sept." msgstr "Sept." #: utils/dates.py:32 msgid "Oct." msgstr "Oct." #: utils/dates.py:32 msgid "Nov." msgstr "Nov." #: utils/dates.py:32 msgid "Dec." msgstr "Dic." #: utils/timesince.py:12 msgid "year" msgid_plural "years" msgstr[0] "año" msgstr[1] "años" #: utils/timesince.py:13 msgid "month" msgid_plural "months" msgstr[0] "mes" msgstr[1] "meses" #: utils/timesince.py:14 msgid "week" msgid_plural "weeks" msgstr[0] "semana" msgstr[1] "semanas" #: utils/timesince.py:15 msgid "day" msgid_plural "days" msgstr[0] "día" msgstr[1] "días" #: utils/timesince.py:16 msgid "hour" msgid_plural "hours" msgstr[0] "hora" msgstr[1] "horas" #: utils/timesince.py:17 msgid "minute" msgid_plural "minutes" msgstr[0] "minuto" msgstr[1] "minutos" #: utils/timesince.py:39 #, python-format msgid "%(number)d %(type)s" msgstr "%(number)d %(type)s" #: utils/timesince.py:45 #, python-format msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" #: utils/text.py:127 msgid "or" msgstr "o" #: utils/dateformat.py:41 msgid "p.m." msgstr "p.m" #: utils/dateformat.py:42 msgid "a.m." msgstr "a.m" #: utils/dateformat.py:47 msgid "PM" msgstr "PM" #: utils/dateformat.py:48 msgid "AM" msgstr "AM" #: utils/dateformat.py:97 msgid "midnight" msgstr "media noche" #: utils/dateformat.py:99 msgid "noon" msgstr "medio día" #: utils/translation/trans_real.py:391 msgid "DATE_FORMAT" msgstr "j N Y" #: utils/translation/trans_real.py:392 msgid "DATETIME_FORMAT" msgstr "j N Y P" #: utils/translation/trans_real.py:393 msgid "TIME_FORMAT" msgstr "P" #: utils/translation/trans_real.py:409 msgid "YEAR_MONTH_FORMAT" msgstr "F Y" #: utils/translation/trans_real.py:410 msgid "MONTH_DAY_FORMAT" msgstr "j \\de F" #: newforms/fields.py:116 #, python-format msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." msgstr "" "Asegúrese de que su texto tiene a lo más %(max)d caracteres (actualmente " "tiene %(length)d)." #: newforms/fields.py:118 #, python-format msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." msgstr "" "Asegúrese de que su texto tiene al menos %(min)d caracteres (actualmente " "tiene %(length)d)." #: newforms/fields.py:142 core/validators.py:127 msgid "Enter a whole number." msgstr "Introduzca un número entero." #: newforms/fields.py:144 newforms/fields.py:167 newforms/fields.py:197 #, python-format msgid "Ensure this value is less than or equal to %s." msgstr "Asegúrese de que este valor es menor o igual a %s." #: newforms/fields.py:146 newforms/fields.py:169 newforms/fields.py:199 #, python-format msgid "Ensure this value is greater than or equal to %s." msgstr "Asegúrese de que este valor es mayor o igual a %s." #: newforms/fields.py:165 newforms/fields.py:192 msgid "Enter a number." msgstr "Introduzca un número." #: newforms/fields.py:201 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Asegúrese de que no hay más de %s dígitos en total." #: newforms/fields.py:203 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Asegúrese de que no hay más de %s decimales." #: newforms/fields.py:205 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Asegúrese de que no hay más de %s dígitos antes del punto decimal." #: newforms/fields.py:238 newforms/fields.py:610 msgid "Enter a valid date." msgstr "Introduzca una fecha válida." #: newforms/fields.py:265 newforms/fields.py:612 msgid "Enter a valid time." msgstr "Introduzca una hora válida." #: newforms/fields.py:301 msgid "Enter a valid date/time." msgstr "Introduzca una fecha/hora válida." #: newforms/fields.py:314 msgid "Enter a valid value." msgstr "Introduzca un valor correcto." #: newforms/fields.py:336 core/validators.py:169 msgid "Enter a valid e-mail address." msgstr "Introduzca una dirección de correo electrónico válida" #: newforms/fields.py:376 oldforms/__init__.py:686 core/validators.py:181 #: core/validators.py:461 msgid "No file was submitted. Check the encoding type on the form." msgstr "" "No se ha enviado ningún fichero. Compruebe el tipo de codificación en el " "formulario." #: newforms/fields.py:378 msgid "No file was submitted." msgstr "No se ha enviado ningún fichero" #: newforms/fields.py:380 oldforms/__init__.py:688 msgid "The submitted file is empty." msgstr "El fichero enviado está vacío." #: newforms/fields.py:397 core/validators.py:185 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" "Envíe una imagen válida. El fichero que ha enviado no era una imagen o se " "trataba de una imagen corrupta." #: newforms/fields.py:403 newforms/fields.py:425 msgid "Enter a valid URL." msgstr "Introduzca una URL válida." #: newforms/fields.py:427 msgid "This URL appears to be a broken link." msgstr "La URL parece ser un enlace roto." #: newforms/fields.py:478 newforms/models.py:180 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "Escoja una opción válida. Esa opción no está entre las aceptadas." #: newforms/fields.py:494 newforms/fields.py:570 newforms/models.py:197 msgid "Enter a list of values." msgstr "Introduzca una lista de valores." #: newforms/fields.py:500 newforms/models.py:203 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "Escoja una opción válida; '%s' no es una de las opciones disponibles." #: newforms/widgets.py:188 contrib/admin/filterspecs.py:152 #: oldforms/__init__.py:591 msgid "Unknown" msgstr "Desconocido" #: newforms/widgets.py:188 contrib/admin/filterspecs.py:145 #: oldforms/__init__.py:591 msgid "Yes" msgstr "Sí" #: newforms/widgets.py:188 contrib/admin/filterspecs.py:145 #: oldforms/__init__.py:591 msgid "No" msgstr "No" #: contrib/contenttypes/models.py:37 msgid "python model class name" msgstr "nombre de módulo python" #: contrib/contenttypes/models.py:40 msgid "content type" msgstr "tipo de contenido" #: contrib/contenttypes/models.py:41 msgid "content types" msgstr "tipos de contenido" #: contrib/humanize/templatetags/humanize.py:17 msgid "th" msgstr "th" #: contrib/humanize/templatetags/humanize.py:17 msgid "st" msgstr "st" #: contrib/humanize/templatetags/humanize.py:17 msgid "nd" msgstr "nd" #: contrib/humanize/templatetags/humanize.py:17 msgid "rd" msgstr "rd" #: contrib/humanize/templatetags/humanize.py:47 #, python-format msgid "%(value).1f million" msgid_plural "%(value).1f million" msgstr[0] "%(value).1f millón" msgstr[1] "%(value).1f millión" #: contrib/humanize/templatetags/humanize.py:50 #, python-format msgid "%(value).1f billion" msgid_plural "%(value).1f billion" msgstr[0] "%(value).1f billión" msgstr[1] "%(value).1f billión" #: contrib/humanize/templatetags/humanize.py:53 #, python-format msgid "%(value).1f trillion" msgid_plural "%(value).1f trillion" msgstr[0] "%(value).1f trillión" msgstr[1] "%(value).1f trillión" #: contrib/humanize/templatetags/humanize.py:68 msgid "one" msgstr "uno" #: contrib/humanize/templatetags/humanize.py:68 msgid "two" msgstr "dos" #: contrib/humanize/templatetags/humanize.py:68 msgid "three" msgstr "tres" #: contrib/humanize/templatetags/humanize.py:68 msgid "four" msgstr "cuatro" #: contrib/humanize/templatetags/humanize.py:68 msgid "five" msgstr "cinco" #: contrib/humanize/templatetags/humanize.py:68 msgid "six" msgstr "seis" #: contrib/humanize/templatetags/humanize.py:68 msgid "seven" msgstr "siete" #: contrib/humanize/templatetags/humanize.py:68 msgid "eight" msgstr "ocho" #: contrib/humanize/templatetags/humanize.py:68 msgid "nine" msgstr "nueve" #: contrib/auth/views.py:47 msgid "Logged out" msgstr "Sesión terminada" #: contrib/auth/models.py:53 contrib/auth/models.py:73 msgid "name" msgstr "nombre" #: contrib/auth/models.py:55 msgid "codename" msgstr "nombre en código" #: contrib/auth/models.py:58 msgid "permission" msgstr "permiso" #: contrib/auth/models.py:59 contrib/auth/models.py:74 msgid "permissions" msgstr "permisos" #: contrib/auth/models.py:77 msgid "group" msgstr "grupo" #: contrib/auth/models.py:78 contrib/auth/models.py:121 msgid "groups" msgstr "grupos" #: contrib/auth/models.py:111 msgid "username" msgstr "nombre de usuario" #: contrib/auth/models.py:111 msgid "" "Required. 30 characters or fewer. Alphanumeric characters only (letters, " "digits and underscores)." msgstr "" "Requerido. 30 caracteres o menos. Sólo caracteres alfanuméricos (letras, " "dígitos y guiones bajos)." #: contrib/auth/models.py:112 msgid "first name" msgstr "nombre" #: contrib/auth/models.py:113 msgid "last name" msgstr "apellidos" #: contrib/auth/models.py:114 msgid "e-mail address" msgstr "dirección de correo" #: contrib/auth/models.py:115 msgid "password" msgstr "clave" #: contrib/auth/models.py:115 msgid "" "Use '[algo]$[salt]$[hexdigest]' or use the change " "password form." msgstr "" "Use'[algo]$[sal]$[hash hexadecimal]' o use el " "formulario para cambiar la contraseña." #: contrib/auth/models.py:116 msgid "staff status" msgstr "es staff" #: contrib/auth/models.py:116 msgid "Designates whether the user can log into this admin site." msgstr "Indica si el usuario puede entrar en este sitio de administración." #: contrib/auth/models.py:117 msgid "active" msgstr "activo" #: contrib/auth/models.py:117 msgid "" "Designates whether this user can log into the Django admin. Unselect this " "instead of deleting accounts." msgstr "" "Indica si el usuario puede entrar en este sitio de administración. Desmarque " "esto en lugar de borrar la cuenta." #: contrib/auth/models.py:118 msgid "superuser status" msgstr "es superusuario" #: contrib/auth/models.py:118 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." msgstr "" "Indica que este usuario tiene todos los permisos sin asignárselos " "explícitamente." #: contrib/auth/models.py:119 msgid "last login" msgstr "Último registro" #: contrib/auth/models.py:120 msgid "date joined" msgstr "fecha de creación" #: contrib/auth/models.py:122 msgid "" "In addition to the permissions manually assigned, this user will also get " "all permissions granted to each group he/she is in." msgstr "" "Además de los permisos asignados manualmente, este usuario también tendrá " "todos los permisos de los grupos en los que esté." #: contrib/auth/models.py:123 msgid "user permissions" msgstr "permisos" #: contrib/auth/models.py:127 msgid "user" msgstr "usuario" #: contrib/auth/models.py:128 msgid "users" msgstr "usuarios" #: contrib/auth/models.py:134 msgid "Personal info" msgstr "Información personal" #: contrib/auth/models.py:135 msgid "Permissions" msgstr "Permisos" #: contrib/auth/models.py:136 msgid "Important dates" msgstr "Fechas importantes" #: contrib/auth/models.py:137 msgid "Groups" msgstr "Grupos" #: contrib/auth/models.py:287 msgid "message" msgstr "mensaje" #: contrib/auth/forms.py:17 contrib/auth/forms.py:138 msgid "The two password fields didn't match." msgstr "Las dos contraseñas no coinciden." #: contrib/auth/forms.py:25 msgid "A user with that username already exists." msgstr "Ya existe un usuario con este nombre." #: contrib/auth/forms.py:53 msgid "" "Your Web browser doesn't appear to have cookies enabled. Cookies are " "required for logging in." msgstr "" "Tu navegador de internet parece no tener las cookies habilitadas. Las " "cookies se necesitan para poder ingresar." #: contrib/auth/forms.py:60 contrib/admin/views/decorators.py:10 msgid "" "Please enter a correct username and password. Note that both fields are case-" "sensitive." msgstr "" "Por favor, introduzca un correcto nombre de usuario y contraseña. Note que " "ambos campos son sensibles a mayúsculas/minúsculas." #: contrib/auth/forms.py:62 msgid "This account is inactive." msgstr "Esta cuenta está inactiva." #: contrib/auth/forms.py:84 msgid "" "That e-mail address doesn't have an associated user account. Are you sure " "you've registered?" msgstr "" "Esta dirección de correo electrónico no tiene una cuenta de usuario " "asociada. ¿Está seguro de que se ha registrado?" #: contrib/auth/forms.py:117 msgid "The two 'new password' fields didn't match." msgstr "" "Las contraseñas introducidas en los campos 'nueva contraseña' no coinciden." #: contrib/auth/forms.py:124 msgid "Your old password was entered incorrectly. Please enter it again." msgstr "" "Tu contraseña antigua es incorrecta. Por favor, vuelve a introducirla " "correctamente." #: contrib/redirects/models.py:7 msgid "redirect from" msgstr "redirigir desde" #: contrib/redirects/models.py:8 msgid "" "This should be an absolute path, excluding the domain name. Example: '/" "events/search/'." msgstr "" "Esta ruta debería ser absoluta, excluyendo el nombre de dominio. Ejeplo: '/" "events/search/'." #: contrib/redirects/models.py:9 msgid "redirect to" msgstr "redirigir a" #: contrib/redirects/models.py:10 msgid "" "This can be either an absolute path (as above) or a full URL starting with " "'http://'." msgstr "" "Esto puede ser bien una ruta absoluta (como antes) o una URL completa que " "empiece con 'http://'." #: contrib/redirects/models.py:13 msgid "redirect" msgstr "redirección" #: contrib/redirects/models.py:14 msgid "redirects" msgstr "redirecciones" #: contrib/comments/models.py:67 contrib/comments/models.py:169 msgid "object ID" msgstr "ID de objeto" #: contrib/comments/models.py:68 msgid "headline" msgstr "encabezado" #: contrib/comments/models.py:69 contrib/comments/models.py:90 #: contrib/comments/models.py:170 msgid "comment" msgstr "comentario" #: contrib/comments/models.py:70 msgid "rating #1" msgstr "calificación 1" #: contrib/comments/models.py:71 msgid "rating #2" msgstr "calificación 2" #: contrib/comments/models.py:72 msgid "rating #3" msgstr "calificación 3" #: contrib/comments/models.py:73 msgid "rating #4" msgstr "calificación 4" #: contrib/comments/models.py:74 msgid "rating #5" msgstr "calificación 5" #: contrib/comments/models.py:75 msgid "rating #6" msgstr "calificación 6" #: contrib/comments/models.py:76 msgid "rating #7" msgstr "calificación 7" #: contrib/comments/models.py:77 msgid "rating #8" msgstr "calificación 8" #: contrib/comments/models.py:82 msgid "is valid rating" msgstr "es calificación válida" #: contrib/comments/models.py:83 contrib/comments/models.py:172 msgid "date/time submitted" msgstr "fecha/hora de envío" #: contrib/comments/models.py:84 contrib/comments/models.py:173 msgid "is public" msgstr "es público" #: contrib/comments/models.py:85 contrib/admin/views/doc.py:306 msgid "IP address" msgstr "Dirección IP" #: contrib/comments/models.py:86 msgid "is removed" msgstr "está eliminado" #: contrib/comments/models.py:86 msgid "" "Check this box if the comment is inappropriate. A \"This comment has been " "removed\" message will be displayed instead." msgstr "" "Marque esta caja si el comentario es inapropiado. En su lugar se mostrará " "\"Este comentario ha sido eliminado\"." #: contrib/comments/models.py:91 msgid "comments" msgstr "comentarios" #: contrib/comments/models.py:134 contrib/comments/models.py:213 msgid "Content object" msgstr "Objeto contenido" #: contrib/comments/models.py:162 #, python-format msgid "" "Posted by %(user)s at %(date)s\n" "\n" "%(comment)s\n" "\n" "http://%(domain)s%(url)s" msgstr "" "Enviado por %(user)s en %(date)s\n" "\n" "%(comment)s\n" "\n" "http://%(domain)s%(url)s" #: contrib/comments/models.py:171 msgid "person's name" msgstr "nombre de la persona" #: contrib/comments/models.py:174 msgid "ip address" msgstr "dirección ip" #: contrib/comments/models.py:176 msgid "approved by staff" msgstr "aprobado por el staff" #: contrib/comments/models.py:179 msgid "free comment" msgstr "comentario libre" #: contrib/comments/models.py:180 msgid "free comments" msgstr "comentarios libres" #: contrib/comments/models.py:239 msgid "score" msgstr "puntuación" #: contrib/comments/models.py:240 msgid "score date" msgstr "fecha de la puntuación" #: contrib/comments/models.py:243 msgid "karma score" msgstr "punto karma" #: contrib/comments/models.py:244 msgid "karma scores" msgstr "puntos karma" #: contrib/comments/models.py:248 #, python-format msgid "%(score)d rating by %(user)s" msgstr "puntuado %(score)d por %(user)s" #: contrib/comments/models.py:264 #, python-format msgid "" "This comment was flagged by %(user)s:\n" "\n" "%(text)s" msgstr "" "Este comentario fue marcado por %(user)s:\n" "\n" "%(text)s" #: contrib/comments/models.py:271 msgid "flag date" msgstr "fecha de la marca" #: contrib/comments/models.py:274 msgid "user flag" msgstr "marca de usuario" #: contrib/comments/models.py:275 msgid "user flags" msgstr "marcas de usuario" #: contrib/comments/models.py:279 #, python-format msgid "Flag by %r" msgstr "Marca de %r" #: contrib/comments/models.py:284 msgid "deletion date" msgstr "fecha de eliminación" #: contrib/comments/models.py:286 msgid "moderator deletion" msgstr "eliminación de moderador" #: contrib/comments/models.py:287 msgid "moderator deletions" msgstr "eliminaciones de moderador" #: contrib/comments/models.py:291 #, python-format msgid "Moderator deletion by %r" msgstr "Eliminación del moderador %r" #: contrib/comments/views/karma.py:20 msgid "Anonymous users cannot vote" msgstr "Los usuarios anónimos no pueden votar" #: contrib/comments/views/karma.py:24 msgid "Invalid comment ID" msgstr "ID de comentario no válido" #: contrib/comments/views/karma.py:26 msgid "No voting for yourself" msgstr "No puedes votarte tú mismo" #: contrib/comments/views/comments.py:28 msgid "" "This rating is required because you've entered at least one other rating." msgstr "Se precisa esta puntuación porque ha introducido al menos otra más." #: contrib/comments/views/comments.py:112 #, python-format msgid "" "This comment was posted by a user who has posted fewer than %(count)s " "comment:\n" "\n" "%(text)s" msgid_plural "" "This comment was posted by a user who has posted fewer than %(count)s " "comments:\n" "\n" "%(text)s" msgstr[0] "" "Este comentario lo envió un usuario que ha enviado menos de %(count)s " "comentario:\n" "\n" "%(text)s" msgstr[1] "" "Este comentario lo envió un usuario que ha enviado menos de %(count)s " "comentarios:\n" "\n" "%(text)s" #: contrib/comments/views/comments.py:117 #, python-format msgid "" "This comment was posted by a sketchy user:\n" "\n" "%(text)s" msgstr "" "Este comentario ha sido colocado por un usuario poco preciso: \n" "\n" "%(text)s" #: contrib/comments/views/comments.py:189 #: contrib/comments/views/comments.py:281 msgid "Only POSTs are allowed" msgstr "Sólo se admite POST" #: contrib/comments/views/comments.py:193 #: contrib/comments/views/comments.py:285 msgid "One or more of the required fields wasn't submitted" msgstr "No se proporcionó uno o más de los siguientes campos requeridos" #: contrib/comments/views/comments.py:197 #: contrib/comments/views/comments.py:287 msgid "Somebody tampered with the comment form (security violation)" msgstr "" "Alguien está jugando con el formulario de comentarios (violación de " "seguridad)" #: contrib/comments/views/comments.py:207 #: contrib/comments/views/comments.py:293 msgid "" "The comment form had an invalid 'target' parameter -- the object ID was " "invalid" msgstr "" "El formulario de comentarios tiene un parámetro 'target' no válido (el ID de " "objeto era inválido)" #: contrib/comments/views/comments.py:258 #: contrib/comments/views/comments.py:322 msgid "The comment form didn't provide either 'preview' or 'post'" msgstr "El formulario de comentario no proporcionó 'previsualizar' ni 'enviar'" #: contrib/comments/templates/comments/form.html:6 #: contrib/comments/templates/comments/form.html:8 #: contrib/admin/templates/admin/login.html:17 msgid "Username:" msgstr "Usuario:" #: contrib/comments/templates/comments/form.html:6 #: contrib/admin/templates/admin/change_list.html:5 #: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_form.html:10 #: contrib/admin/templates/admin/delete_confirmation.html:3 #: contrib/admin/templates/admin/base.html:25 #: contrib/admin/templates/admin/auth/user/change_password.html:9 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 #: contrib/admin/templates/admin_doc/view_detail.html:4 #: contrib/admin/templates/admin_doc/bookmarklets.html:4 #: contrib/admin/templates/admin_doc/template_detail.html:4 #: contrib/admin/templates/admin_doc/template_tag_index.html:5 #: contrib/admin/templates/admin_doc/missing_docutils.html:4 #: contrib/admin/templates/admin_doc/view_index.html:5 #: contrib/admin/templates/admin_doc/model_detail.html:3 #: contrib/admin/templates/admin_doc/index.html:4 #: contrib/admin/templates/admin_doc/model_index.html:5 #: contrib/admin/templates/admin_doc/template_filter_index.html:5 msgid "Log out" msgstr "Terminar sesión" #: contrib/comments/templates/comments/form.html:8 #: contrib/admin/templates/admin/login.html:20 msgid "Password:" msgstr "Clave:" #: contrib/comments/templates/comments/form.html:8 msgid "Forgotten your password?" msgstr "¿Has olvidado tu contraseña?" #: contrib/comments/templates/comments/form.html:12 msgid "Ratings" msgstr "Calificaciones" #: contrib/comments/templates/comments/form.html:12 #: contrib/comments/templates/comments/form.html:23 msgid "Required" msgstr "Requerido" #: contrib/comments/templates/comments/form.html:12 #: contrib/comments/templates/comments/form.html:23 msgid "Optional" msgstr "Opcional" #: contrib/comments/templates/comments/form.html:23 msgid "Post a photo" msgstr "Postea una fotografía" #: contrib/comments/templates/comments/form.html:28 #: contrib/comments/templates/comments/freeform.html:5 msgid "Comment:" msgstr "Comentario:" #: contrib/comments/templates/comments/form.html:35 #: contrib/comments/templates/comments/freeform.html:10 msgid "Preview comment" msgstr "Previsualizar comentario" #: contrib/comments/templates/comments/freeform.html:4 msgid "Your name:" msgstr "Tu nombre:" #: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:317 msgid "URL" msgstr "URL" #: contrib/flatpages/models.py:8 msgid "" "Example: '/about/contact/'. Make sure to have leading and trailing slashes." msgstr "" "Ejemplo: '/about/contact/'. Asegúrese de que pone barras al principio y al " "final." #: contrib/flatpages/models.py:9 msgid "title" msgstr "título" #: contrib/flatpages/models.py:10 msgid "content" msgstr "contenido" #: contrib/flatpages/models.py:11 msgid "enable comments" msgstr "admitir comentarios" #: contrib/flatpages/models.py:12 msgid "template name" msgstr "nombre de plantilla" #: contrib/flatpages/models.py:13 msgid "" "Example: 'flatpages/contact_page.html'. If this isn't provided, the system " "will use 'flatpages/default.html'." msgstr "" "Ejemplo: 'flatpages/contact_page.html'. Si no es proporcionado, el sistema " "usará 'flatpages/default.html'." #: contrib/flatpages/models.py:14 msgid "registration required" msgstr "debe estar registrado" #: contrib/flatpages/models.py:14 msgid "If this is checked, only logged-in users will be able to view the page." msgstr "Si está marcado, sólo los usuarios registrados podrán ver la página." #: contrib/flatpages/models.py:18 msgid "flat page" msgstr "página estática" #: contrib/flatpages/models.py:19 msgid "flat pages" msgstr "páginas estáticas" #: contrib/sessions/models.py:68 msgid "session key" msgstr "clave de sesión" #: contrib/sessions/models.py:69 msgid "session data" msgstr "datos de sesión" #: contrib/sessions/models.py:70 msgid "expire date" msgstr "fecha de caducidad" #: contrib/sessions/models.py:74 msgid "session" msgstr "sesión" #: contrib/sessions/models.py:75 msgid "sessions" msgstr "sesiones" #: contrib/sites/models.py:15 msgid "domain name" msgstr "nombre de dominio" #: contrib/sites/models.py:16 msgid "display name" msgstr "nombre para mostrar" #: contrib/sites/models.py:20 msgid "site" msgstr "sitio" #: contrib/sites/models.py:21 msgid "sites" msgstr "sitios" #: contrib/admin/filterspecs.py:42 #, python-format msgid "" "

      By %s:

      \n" "
        \n" msgstr "" "

        Por %s:

        \n" "
          \n" #: contrib/admin/filterspecs.py:72 contrib/admin/filterspecs.py:90 #: contrib/admin/filterspecs.py:145 contrib/admin/filterspecs.py:171 msgid "All" msgstr "Todo" #: contrib/admin/filterspecs.py:111 msgid "Any date" msgstr "Cualquier fecha" #: contrib/admin/filterspecs.py:112 msgid "Today" msgstr "Hoy" #: contrib/admin/filterspecs.py:115 msgid "Past 7 days" msgstr "Últimos 7 días" #: contrib/admin/filterspecs.py:117 msgid "This month" msgstr "Este mes" #: contrib/admin/filterspecs.py:119 msgid "This year" msgstr "Este año" #: contrib/admin/models.py:17 msgid "action time" msgstr "hora de acción" #: contrib/admin/models.py:20 msgid "object id" msgstr "id de objeto" #: contrib/admin/models.py:21 msgid "object repr" msgstr "repr de objeto" #: contrib/admin/models.py:22 msgid "action flag" msgstr "marca de acción" #: contrib/admin/models.py:23 msgid "change message" msgstr "mensaje de cambio" #: contrib/admin/models.py:26 msgid "log entry" msgstr "entrada de registro" #: contrib/admin/models.py:27 msgid "log entries" msgstr "entradas de registro" #: contrib/admin/templatetags/admin_list.py:254 msgid "All dates" msgstr "Todas las fechas" #: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:264 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "Se añadió con éxito el %(name)s \"%(obj)s\"." #: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:268 #: contrib/admin/views/main.py:354 msgid "You may edit it again below." msgstr "Puede editarlo de nuevo abajo." #: contrib/admin/views/auth.py:31 msgid "Add user" msgstr "Añadir usuario" #: contrib/admin/views/auth.py:58 msgid "Password changed successfully." msgstr "La clave se ha cambiado exitosamente." #: contrib/admin/views/auth.py:65 #, python-format msgid "Change password: %s" msgstr "Cambiar clave: %s" #: contrib/admin/views/main.py:230 msgid "Site administration" msgstr "Sitio administrativo" #: contrib/admin/views/main.py:278 contrib/admin/views/main.py:363 #, python-format msgid "You may add another %s below." msgstr "Puede agregar otro %s abajo." #: contrib/admin/views/main.py:296 #, python-format msgid "Add %s" msgstr "Agregar %s" #: contrib/admin/views/main.py:342 #, python-format msgid "Added %s." msgstr "Agregado %s." #: contrib/admin/views/main.py:344 #, python-format msgid "Changed %s." msgstr "Modificado %s." #: contrib/admin/views/main.py:346 #, python-format msgid "Deleted %s." msgstr "Borrado %s." #: contrib/admin/views/main.py:349 msgid "No fields changed." msgstr "No ha cambiado ningún campo." #: contrib/admin/views/main.py:352 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "Se modificó con éxito el %(name)s \"%(obj)s." #: contrib/admin/views/main.py:360 #, python-format msgid "" "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." msgstr "" "Se agregó con éxito el %(name)s \"%(obj)s. Puede editarlo de nuevo abajo." #: contrib/admin/views/main.py:398 #, python-format msgid "Change %s" msgstr "Modificar %s" #: contrib/admin/views/main.py:483 #, python-format msgid "One or more %(fieldname)s in %(name)s: %(obj)s" msgstr "Uno o más %(fieldname)s en %(name)s: %(obj)s" #: contrib/admin/views/main.py:488 #, python-format msgid "One or more %(fieldname)s in %(name)s:" msgstr "Uno o más %(fieldname)s en %(name)s:" #: contrib/admin/views/main.py:520 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "Se eliminó con éxito el %(name)s \"%(obj)s\"." #: contrib/admin/views/main.py:523 msgid "Are you sure?" msgstr "¿Está seguro?" #: contrib/admin/views/main.py:545 #, python-format msgid "Change history: %s" msgstr "Modificar histórico: %s" #: contrib/admin/views/main.py:579 #, python-format msgid "Select %s" msgstr "Escoja %s" #: contrib/admin/views/main.py:579 #, python-format msgid "Select %s to change" msgstr "Escoja %s para modificar" #: contrib/admin/views/main.py:780 msgid "Database error" msgstr "Erorr en la base de datos" #: contrib/admin/views/decorators.py:24 #: contrib/admin/templates/admin/login.html:25 msgid "Log in" msgstr "Identificarse" #: contrib/admin/views/decorators.py:62 msgid "" "Please log in again, because your session has expired. Don't worry: Your " "submission has been saved." msgstr "" "Por favor, identifíquese de nuevo, porque su sesión ha caducado. No se " "preocupe: se ha guardado su envío." #: contrib/admin/views/decorators.py:69 msgid "" "Looks like your browser isn't configured to accept cookies. Please enable " "cookies, reload this page, and try again." msgstr "" "Parece que su navegador no está configurado para aceptar cookies. Actívelas " "por favor, recargue esta página, e inténtelo de nuevo." #: contrib/admin/views/decorators.py:83 msgid "Usernames cannot contain the '@' character." msgstr "Los nombres de usuario no pueden contener el carácter '@'." #: contrib/admin/views/decorators.py:85 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "" "Su dirección de correo no es su nombre de usuario. Pruebe con '%s' en su " "lugar." #: contrib/admin/views/doc.py:47 contrib/admin/views/doc.py:49 #: contrib/admin/views/doc.py:51 msgid "tag:" msgstr "etiqueta:" #: contrib/admin/views/doc.py:78 contrib/admin/views/doc.py:80 #: contrib/admin/views/doc.py:82 msgid "filter:" msgstr "filtro:" #: contrib/admin/views/doc.py:136 contrib/admin/views/doc.py:138 #: contrib/admin/views/doc.py:140 msgid "view:" msgstr "vista:" #: contrib/admin/views/doc.py:165 #, python-format msgid "App %r not found" msgstr "Aplicación %r no encontrada" #: contrib/admin/views/doc.py:172 #, python-format msgid "Model %(name)r not found in app %(label)r" msgstr "El modelo %(name)s no se ha encontrado en la aplicación %(label)r" #: contrib/admin/views/doc.py:184 #, python-format msgid "the related `%(label)s.%(type)s` object" msgstr "el objeto relacionado`%(label)s.%(type)s` " #: contrib/admin/views/doc.py:184 contrib/admin/views/doc.py:206 #: contrib/admin/views/doc.py:220 contrib/admin/views/doc.py:225 msgid "model:" msgstr "modelo:" #: contrib/admin/views/doc.py:215 #, python-format msgid "related `%(label)s.%(name)s` objects" msgstr "los objetos relacionados `%(label)s.%(name)s`" #: contrib/admin/views/doc.py:220 #, python-format msgid "all %s" msgstr "todo %s" #: contrib/admin/views/doc.py:225 #, python-format msgid "number of %s" msgstr "número de %s" #: contrib/admin/views/doc.py:230 #, python-format msgid "Fields on %s objects" msgstr "Campos en %s objetos" #: contrib/admin/views/doc.py:292 contrib/admin/views/doc.py:303 #: contrib/admin/views/doc.py:305 contrib/admin/views/doc.py:311 #: contrib/admin/views/doc.py:312 contrib/admin/views/doc.py:314 msgid "Integer" msgstr "Entero" #: contrib/admin/views/doc.py:293 msgid "Boolean (Either True or False)" msgstr "Booleano (Verdadero o Falso)" #: contrib/admin/views/doc.py:294 contrib/admin/views/doc.py:313 #, python-format msgid "String (up to %(max_length)s)" msgstr "Cadena (máximo %(max_length)s)" #: contrib/admin/views/doc.py:295 msgid "Comma-separated integers" msgstr "Enteros separados por comas" #: contrib/admin/views/doc.py:296 msgid "Date (without time)" msgstr "Fecha (sin hora)" #: contrib/admin/views/doc.py:297 msgid "Date (with time)" msgstr "Fecha (con hora)" #: contrib/admin/views/doc.py:298 msgid "Decimal number" msgstr "Número decimal" #: contrib/admin/views/doc.py:299 msgid "E-mail address" msgstr "Dirección de correo electrónico" #: contrib/admin/views/doc.py:300 contrib/admin/views/doc.py:301 #: contrib/admin/views/doc.py:304 msgid "File path" msgstr "Ruta de fichero" #: contrib/admin/views/doc.py:302 msgid "Floating point number" msgstr "Número decimal" #: contrib/admin/views/doc.py:308 msgid "Boolean (Either True, False or None)" msgstr "Booleano (Verdadero, Falso o Nulo)" #: contrib/admin/views/doc.py:309 msgid "Relation to parent model" msgstr "Relación con el modelo padre" #: contrib/admin/views/doc.py:310 msgid "Phone number" msgstr "Número de teléfono" #: contrib/admin/views/doc.py:315 msgid "Text" msgstr "Texto" #: contrib/admin/views/doc.py:316 msgid "Time" msgstr "Hora" #: contrib/admin/views/doc.py:318 msgid "U.S. state (two uppercase letters)" msgstr "Estado de los EEUU (dos letras mayúsculas)" #: contrib/admin/views/doc.py:319 msgid "XML text" msgstr "Texto XML" #: contrib/admin/views/doc.py:345 #, python-format msgid "%s does not appear to be a urlpattern object" msgstr "%s no parece ser un objeto urlpattern" #: contrib/admin/templates/widget/file.html:2 msgid "Currently:" msgstr "Actualmente:" #: contrib/admin/templates/widget/file.html:3 msgid "Change:" msgstr "Modificar:" #: contrib/admin/templates/widget/date_time.html:3 msgid "Date:" msgstr "Fecha:" #: contrib/admin/templates/widget/date_time.html:4 msgid "Time:" msgstr "Hora:" #: contrib/admin/templates/admin/change_list.html:5 #: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_form.html:10 #: contrib/admin/templates/admin/delete_confirmation.html:3 #: contrib/admin/templates/admin/base.html:25 #: contrib/admin/templates/admin/auth/user/change_password.html:9 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 #: contrib/admin/templates/admin_doc/bookmarklets.html:3 msgid "Documentation" msgstr "Documentación" #: contrib/admin/templates/admin/change_list.html:5 #: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_form.html:10 #: contrib/admin/templates/admin/delete_confirmation.html:3 #: contrib/admin/templates/admin/base.html:25 #: contrib/admin/templates/admin/auth/user/change_password.html:9 #: contrib/admin/templates/admin/auth/user/change_password.html:15 #: contrib/admin/templates/admin/auth/user/change_password.html:46 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 #: contrib/admin/templates/admin_doc/view_detail.html:4 #: contrib/admin/templates/admin_doc/bookmarklets.html:4 #: contrib/admin/templates/admin_doc/template_detail.html:4 #: contrib/admin/templates/admin_doc/template_tag_index.html:5 #: contrib/admin/templates/admin_doc/missing_docutils.html:4 #: contrib/admin/templates/admin_doc/view_index.html:5 #: contrib/admin/templates/admin_doc/model_detail.html:3 #: contrib/admin/templates/admin_doc/index.html:4 #: contrib/admin/templates/admin_doc/model_index.html:5 #: contrib/admin/templates/admin_doc/template_filter_index.html:5 msgid "Change password" msgstr "Cambiar clave" #: contrib/admin/templates/admin/change_list.html:6 #: contrib/admin/templates/admin/object_history.html:5 #: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/invalid_setup.html:4 #: contrib/admin/templates/admin/change_form.html:13 #: contrib/admin/templates/admin/delete_confirmation.html:6 #: contrib/admin/templates/admin/base.html:30 #: contrib/admin/templates/admin/auth/user/change_password.html:12 #: contrib/admin/templates/registration/password_change_done.html:4 #: contrib/admin/templates/registration/password_reset_form.html:4 #: contrib/admin/templates/registration/logged_out.html:4 #: contrib/admin/templates/registration/password_reset_done.html:4 #: contrib/admin/templates/registration/password_change_form.html:4 #: contrib/admin/templates/admin_doc/bookmarklets.html:3 msgid "Home" msgstr "Inicio" #: contrib/admin/templates/admin/change_list.html:12 #, python-format msgid "Add %(name)s" msgstr "Agregar %(name)s" #: contrib/admin/templates/admin/filter.html:2 #, python-format msgid " By %(filter_title)s " msgstr " Por %(filter_title)s " #: contrib/admin/templates/admin/object_history.html:5 #: contrib/admin/templates/admin/change_form.html:21 msgid "History" msgstr "Histórico" #: contrib/admin/templates/admin/object_history.html:18 msgid "Date/time" msgstr "Fecha/hora" #: contrib/admin/templates/admin/object_history.html:19 msgid "User" msgstr "Usuario" #: contrib/admin/templates/admin/object_history.html:20 msgid "Action" msgstr "Acción" #: contrib/admin/templates/admin/object_history.html:26 msgid "DATE_WITH_TIME_FULL" msgstr "j M Y P" #: contrib/admin/templates/admin/object_history.html:36 msgid "" "This object doesn't have a change history. It probably wasn't added via this " "admin site." msgstr "" "Este objeto no tiene histórico de cambios. Probablemente no fue añadido " "usando este sitio de administración." #: contrib/admin/templates/admin/search_form.html:8 msgid "Go" msgstr "Buscar" #: contrib/admin/templates/admin/search_form.html:10 #, python-format msgid "1 result" msgid_plural "%(counter)s results" msgstr[0] "1 resultado" msgstr[1] "%(counter)s resultados" #: contrib/admin/templates/admin/search_form.html:10 #, python-format msgid "%(full_result_count)s total" msgstr "%(full_result_count)s total" #: contrib/admin/templates/admin/pagination.html:10 msgid "Show all" msgstr "Mostrarlo todo" #: contrib/admin/templates/admin/base_site.html:4 msgid "Django site admin" msgstr "Sitio de administración de Django" #: contrib/admin/templates/admin/base_site.html:7 msgid "Django administration" msgstr "Administración de Django" #: contrib/admin/templates/admin/500.html:4 msgid "Server error" msgstr "Error del servidor" #: contrib/admin/templates/admin/500.html:6 msgid "Server error (500)" msgstr "Error del servidor (500)" #: contrib/admin/templates/admin/500.html:9 msgid "Server Error (500)" msgstr "Error de servidor (500)" #: contrib/admin/templates/admin/500.html:10 msgid "" "There's been an error. It's been reported to the site administrators via e-" "mail and should be fixed shortly. Thanks for your patience." msgstr "" "Ha ocurrido un error. Se ha informado a los administradores del sitio " "mediante correo electrónico y debería arreglarse en breve. Gracias por su " "paciencia." #: contrib/admin/templates/admin/invalid_setup.html:8 msgid "" "Something's wrong with your database installation. Make sure the appropriate " "database tables have been created, and make sure the database is readable by " "the appropriate user." msgstr "" "Algo va mal con la instalación de la base de datos. Asegúrate que las tablas " "necesarias han sido creadas, y que la base de datos puede ser leída por el " "usuario apropiado." #: contrib/admin/templates/admin/index.html:17 #, python-format msgid "Models available in the %(name)s application." msgstr "Modelos disponibles en la aplicación %(name)s." #: contrib/admin/templates/admin/index.html:18 #, python-format msgid "%(name)s" msgstr "%(name)s" #: contrib/admin/templates/admin/index.html:28 #: contrib/admin/templates/admin/change_form.html:15 msgid "Add" msgstr "Agregar" #: contrib/admin/templates/admin/index.html:34 msgid "Change" msgstr "Modificar" #: contrib/admin/templates/admin/index.html:44 msgid "You don't have permission to edit anything." msgstr "No tiene permiso para editar nada." #: contrib/admin/templates/admin/index.html:52 msgid "Recent Actions" msgstr "Acciones recientes" #: contrib/admin/templates/admin/index.html:53 msgid "My Actions" msgstr "Mis acciones" #: contrib/admin/templates/admin/index.html:57 msgid "None available" msgstr "Ninguno disponible" #: contrib/admin/templates/admin/404.html:4 #: contrib/admin/templates/admin/404.html:8 msgid "Page not found" msgstr "Página no encontrada" #: contrib/admin/templates/admin/404.html:10 msgid "We're sorry, but the requested page could not be found." msgstr "Lo sentimos, pero no se encuentra la página solicitada." #: contrib/admin/templates/admin/filters.html:4 msgid "Filter" msgstr "Filtro" #: contrib/admin/templates/admin/change_form.html:22 msgid "View on site" msgstr "Ver en el sitio" #: contrib/admin/templates/admin/change_form.html:32 #: contrib/admin/templates/admin/auth/user/change_password.html:24 msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "Por favor, corrija el siguiente error." msgstr[1] "Por favor, corrija los siguientes errores." #: contrib/admin/templates/admin/change_form.html:50 msgid "Ordering" msgstr "Ordenación" #: contrib/admin/templates/admin/change_form.html:53 msgid "Order:" msgstr "Orden:" #: contrib/admin/templates/admin/delete_confirmation.html:9 #: contrib/admin/templates/admin/submit_line.html:3 msgid "Delete" msgstr "Eliminar" #: contrib/admin/templates/admin/delete_confirmation.html:14 #, python-format msgid "" "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " "related objects, but your account doesn't have permission to delete the " "following types of objects:" msgstr "" "Eliminar el %(object_name)s '%(escaped_object)s' provocaría la eliminación " "de objetos relacionados, pero su cuenta no tiene permiso para borrar los " "siguientes tipos de objetos:" #: contrib/admin/templates/admin/delete_confirmation.html:21 #, python-format msgid "" "Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " "All of the following related items will be deleted:" msgstr "" "¿Está seguro de que quiere borrar los %(object_name)s \"%(escaped_object)s" "\"? Se borrarán los siguientes objetos relacionados:" #: contrib/admin/templates/admin/delete_confirmation.html:26 msgid "Yes, I'm sure" msgstr "Sí, estoy seguro" #: contrib/admin/templates/admin/base.html:25 msgid "Welcome," msgstr "Bienvenido," #: contrib/admin/templates/admin/submit_line.html:4 msgid "Save as new" msgstr "Grabar como nuevo" #: contrib/admin/templates/admin/submit_line.html:5 msgid "Save and add another" msgstr "Grabar y añadir otro" #: contrib/admin/templates/admin/submit_line.html:6 msgid "Save and continue editing" msgstr "Grabar y continuar editando" #: contrib/admin/templates/admin/submit_line.html:7 msgid "Save" msgstr "Grabar" #: contrib/admin/templates/admin/auth/user/add_form.html:6 msgid "" "First, enter a username and password. Then, you'll be able to edit more user " "options." msgstr "" "Primero introduzca un nombre de usuario y una contraseña. Luego podrá editar " "el resto de opciones del usuario." #: contrib/admin/templates/admin/auth/user/add_form.html:12 msgid "Username" msgstr "Nombre de usuario" #: contrib/admin/templates/admin/auth/user/add_form.html:18 #: contrib/admin/templates/admin/auth/user/change_password.html:34 msgid "Password" msgstr "Contraseña" #: contrib/admin/templates/admin/auth/user/add_form.html:23 #: contrib/admin/templates/admin/auth/user/change_password.html:39 msgid "Password (again)" msgstr "Contraseña (de nuevo)" #: contrib/admin/templates/admin/auth/user/add_form.html:24 #: contrib/admin/templates/admin/auth/user/change_password.html:40 msgid "Enter the same password as above, for verification." msgstr "Introduzca la misma contraseña que arriba, para verificación" #: contrib/admin/templates/admin/auth/user/change_password.html:28 #, python-format msgid "Enter a new password for the user %(username)s." msgstr "" "Introduzca una nueva contraseña para el usuario %(username)s." #: contrib/admin/templates/registration/password_change_done.html:4 #: contrib/admin/templates/registration/password_change_form.html:4 #: contrib/admin/templates/registration/password_change_form.html:6 #: contrib/admin/templates/registration/password_change_form.html:10 msgid "Password change" msgstr "Cambio de clave" #: contrib/admin/templates/registration/password_change_done.html:6 #: contrib/admin/templates/registration/password_change_done.html:10 msgid "Password change successful" msgstr "Cambio de clave exitoso" #: contrib/admin/templates/registration/password_change_done.html:12 msgid "Your password was changed." msgstr "Su clave ha sido cambiada." #: contrib/admin/templates/registration/password_reset_form.html:4 #: contrib/admin/templates/registration/password_reset_form.html:6 #: contrib/admin/templates/registration/password_reset_form.html:10 #: contrib/admin/templates/registration/password_reset_done.html:4 msgid "Password reset" msgstr "Recuperar clave" #: contrib/admin/templates/registration/password_reset_form.html:12 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll reset " "your password and e-mail the new one to you." msgstr "" "¿Ha olvidado su clave? Introduzca su dirección de correo electrónico, y " "crearemos una nueva que le enviaremos por correo." #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "E-mail address:" msgstr "Dirección de correo electrónico:" #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "Reset my password" msgstr "Recuperar mi clave" #: contrib/admin/templates/registration/logged_out.html:8 msgid "Thanks for spending some quality time with the Web site today." msgstr "Gracias por el tiempo que ha dedicado al sitio web hoy." #: contrib/admin/templates/registration/logged_out.html:10 msgid "Log in again" msgstr "Identificarse de nuevo" #: contrib/admin/templates/registration/password_reset_done.html:6 #: contrib/admin/templates/registration/password_reset_done.html:10 msgid "Password reset successful" msgstr "Recuperación de clave exitosa" #: contrib/admin/templates/registration/password_reset_done.html:12 msgid "" "We've e-mailed a new password to the e-mail address you submitted. You " "should be receiving it shortly." msgstr "" "Le hemos enviado una clave nueva a la dirección que ha suministrado. Debería " "recibirla en breve." #: contrib/admin/templates/registration/password_change_form.html:12 msgid "" "Please enter your old password, for security's sake, and then enter your new " "password twice so we can verify you typed it in correctly." msgstr "" "Por favor, introduzca su clave antigua, por seguridad, y después introduzca " "la nueva clave dos veces para verificar que la ha escrito correctamente." #: contrib/admin/templates/registration/password_change_form.html:17 msgid "Old password:" msgstr "Clave antigua:" #: contrib/admin/templates/registration/password_change_form.html:19 msgid "New password:" msgstr "Clave nueva:" #: contrib/admin/templates/registration/password_change_form.html:21 msgid "Confirm password:" msgstr "Confirme clave:" #: contrib/admin/templates/registration/password_change_form.html:23 msgid "Change my password" msgstr "Cambiar mi clave" #: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" msgstr "Está recibiendo este mensaje debido a que solicitó recuperar la clave" #: contrib/admin/templates/registration/password_reset_email.html:3 #, python-format msgid "for your user account at %(site_name)s" msgstr "de su cuenta de usuario en %(site_name)s." #: contrib/admin/templates/registration/password_reset_email.html:5 #, python-format msgid "Your new password is: %(new_password)s" msgstr "Su nueva clave es: %(new_password)s" #: contrib/admin/templates/registration/password_reset_email.html:7 msgid "Feel free to change this password by going to this page:" msgstr "Puede cambiarla accediendo a esta página:" #: contrib/admin/templates/registration/password_reset_email.html:11 msgid "Your username, in case you've forgotten:" msgstr "Su nombre de usuario, en caso de haberlo olvidado:" #: contrib/admin/templates/registration/password_reset_email.html:13 msgid "Thanks for using our site!" msgstr "¡Gracias por usar nuestro sitio!" #: contrib/admin/templates/registration/password_reset_email.html:15 #, python-format msgid "The %(site_name)s team" msgstr "El equipo de %(site_name)s" #: contrib/admin/templates/admin_doc/bookmarklets.html:3 msgid "Bookmarklets" msgstr "Bookmarklets" #: contrib/admin/templates/admin_doc/bookmarklets.html:5 msgid "Documentation bookmarklets" msgstr "Bookmarklets de documentación" #: contrib/admin/templates/admin_doc/bookmarklets.html:9 msgid "" "\n" "

          To install bookmarklets, drag the link to your bookmarks\n" "toolbar, or right-click the link and add it to your bookmarks. Now you can\n" "select the bookmarklet from any page in the site. Note that some of these\n" "bookmarklets require you to be viewing the site from a computer designated\n" "as \"internal\" (talk to your system administrator if you aren't sure if\n" "your computer is \"internal\").

          \n" msgstr "" "\n" "

          Para instalar bookmarklets, arrastre el enlace a su barra\n" "de favoritos, o pulse con el botón derecho el enlace y añádalo a sus " "favoritos.\n" "Ahora puede escoger el bookmarklet desde cualquier página en el sitio.\n" "Observer que algunos de estos bookmarklets precisan que esté viendo\n" "el sitio desde un computador señalado como \"interno\" (hable\n" "con su administrador de sistemas si no está seguro de si el suyo lo es).\n" #: contrib/admin/templates/admin_doc/bookmarklets.html:19 msgid "Documentation for this page" msgstr "Documentación de esta página" #: contrib/admin/templates/admin_doc/bookmarklets.html:20 msgid "" "Jumps you from any page to the documentation for the view that generates " "that page." msgstr "" "Le lleva desde cualquier página a la documentación de la vista que la genera." #: contrib/admin/templates/admin_doc/bookmarklets.html:22 msgid "Show object ID" msgstr "Mostrar ID de objeto" #: contrib/admin/templates/admin_doc/bookmarklets.html:23 msgid "" "Shows the content-type and unique ID for pages that represent a single " "object." msgstr "" "Muestra el tipo de contenido e ID unívoco de las páginas que representan un " "único objeto." #: contrib/admin/templates/admin_doc/bookmarklets.html:25 msgid "Edit this object (current window)" msgstr "Editar este objeto (ventana actual)" #: contrib/admin/templates/admin_doc/bookmarklets.html:26 msgid "Jumps to the admin page for pages that represent a single object." msgstr "" "Le lleva a la página de administración de páginas que representan un único " "objeto." #: contrib/admin/templates/admin_doc/bookmarklets.html:28 msgid "Edit this object (new window)" msgstr "Editar este objeto (nueva ventana)" #: contrib/admin/templates/admin_doc/bookmarklets.html:29 msgid "As above, but opens the admin page in a new window." msgstr "" "Como antes, pero abre la página de administración en una nueva ventana." #: contrib/localflavor/uk/forms.py:18 msgid "Enter a postcode. A space is required between the two postcode parts." msgstr "" "Introduzca un código postal. Se necesita un espacio entre las dos partes del " "código." #: contrib/localflavor/fr/forms.py:17 contrib/localflavor/fi/forms.py:14 #: contrib/localflavor/de/forms.py:16 msgid "Enter a zip code in the format XXXXX." msgstr "Introduzca un código postal en el formato XXXXX." #: contrib/localflavor/jp/jp_prefectures.py:4 msgid "Hokkaido" msgstr "Hokkaido" #: contrib/localflavor/jp/jp_prefectures.py:5 msgid "Aomori" msgstr "Aomori" #: contrib/localflavor/jp/jp_prefectures.py:6 msgid "Iwate" msgstr "Iwate" #: contrib/localflavor/jp/jp_prefectures.py:7 msgid "Miyagi" msgstr "Miyagi" #: contrib/localflavor/jp/jp_prefectures.py:8 msgid "Akita" msgstr "Akita" #: contrib/localflavor/jp/jp_prefectures.py:9 msgid "Yamagata" msgstr "Yamagata" #: contrib/localflavor/jp/jp_prefectures.py:10 msgid "Fukushima" msgstr "Fukushima" #: contrib/localflavor/jp/jp_prefectures.py:11 msgid "Ibaraki" msgstr "Ibaraki" #: contrib/localflavor/jp/jp_prefectures.py:12 msgid "Tochigi" msgstr "Tochigi" #: contrib/localflavor/jp/jp_prefectures.py:13 msgid "Gunma" msgstr "Gunma" #: contrib/localflavor/jp/jp_prefectures.py:14 msgid "Saitama" msgstr "Saitama" #: contrib/localflavor/jp/jp_prefectures.py:15 msgid "Chiba" msgstr "Chiba" #: contrib/localflavor/jp/jp_prefectures.py:16 msgid "Tokyo" msgstr "Tokyo" #: contrib/localflavor/jp/jp_prefectures.py:17 msgid "Kanagawa" msgstr "Kanagawa" #: contrib/localflavor/jp/jp_prefectures.py:18 msgid "Yamanashi" msgstr "Yamanashi" #: contrib/localflavor/jp/jp_prefectures.py:19 msgid "Nagano" msgstr "Nagano" #: contrib/localflavor/jp/jp_prefectures.py:20 msgid "Niigata" msgstr "Niigata" #: contrib/localflavor/jp/jp_prefectures.py:21 msgid "Toyama" msgstr "Toyama" #: contrib/localflavor/jp/jp_prefectures.py:22 msgid "Ishikawa" msgstr "Ishikawa" #: contrib/localflavor/jp/jp_prefectures.py:23 msgid "Fukui" msgstr "Fukui" #: contrib/localflavor/jp/jp_prefectures.py:24 msgid "Gifu" msgstr "Gifu" #: contrib/localflavor/jp/jp_prefectures.py:25 msgid "Shizuoka" msgstr "Shizuoka" #: contrib/localflavor/jp/jp_prefectures.py:26 msgid "Aichi" msgstr "Aichi" #: contrib/localflavor/jp/jp_prefectures.py:27 msgid "Mie" msgstr "Mie" #: contrib/localflavor/jp/jp_prefectures.py:28 msgid "Shiga" msgstr "Shiga" #: contrib/localflavor/jp/jp_prefectures.py:29 msgid "Kyoto" msgstr "Kyoto" #: contrib/localflavor/jp/jp_prefectures.py:30 msgid "Osaka" msgstr "Osaka" #: contrib/localflavor/jp/jp_prefectures.py:31 msgid "Hyogo" msgstr "Hyogo" #: contrib/localflavor/jp/jp_prefectures.py:32 msgid "Nara" msgstr "Nara" #: contrib/localflavor/jp/jp_prefectures.py:33 msgid "Wakayama" msgstr "Wakayama" #: contrib/localflavor/jp/jp_prefectures.py:34 msgid "Tottori" msgstr "Tottori" #: contrib/localflavor/jp/jp_prefectures.py:35 msgid "Shimane" msgstr "Shimane" #: contrib/localflavor/jp/jp_prefectures.py:36 msgid "Okayama" msgstr "Okayama" #: contrib/localflavor/jp/jp_prefectures.py:37 msgid "Hiroshima" msgstr "Hiroshima" #: contrib/localflavor/jp/jp_prefectures.py:38 msgid "Yamaguchi" msgstr "Yamaguchi" #: contrib/localflavor/jp/jp_prefectures.py:39 msgid "Tokushima" msgstr "Tokushima" #: contrib/localflavor/jp/jp_prefectures.py:40 msgid "Kagawa" msgstr "Kagawa" #: contrib/localflavor/jp/jp_prefectures.py:41 msgid "Ehime" msgstr "Ehime" #: contrib/localflavor/jp/jp_prefectures.py:42 msgid "Kochi" msgstr "Kochi" #: contrib/localflavor/jp/jp_prefectures.py:43 msgid "Fukuoka" msgstr "Fukuoka" #: contrib/localflavor/jp/jp_prefectures.py:44 msgid "Saga" msgstr "Saga" #: contrib/localflavor/jp/jp_prefectures.py:45 msgid "Nagasaki" msgstr "Nagasaki" #: contrib/localflavor/jp/jp_prefectures.py:46 msgid "Kumamoto" msgstr "Kumamoto" #: contrib/localflavor/jp/jp_prefectures.py:47 msgid "Oita" msgstr "Oita" #: contrib/localflavor/jp/jp_prefectures.py:48 msgid "Miyazaki" msgstr "Miyazaki" #: contrib/localflavor/jp/jp_prefectures.py:49 msgid "Kagoshima" msgstr "Kagoshima" #: contrib/localflavor/jp/jp_prefectures.py:50 msgid "Okinawa" msgstr "Okinawa" #: contrib/localflavor/jp/forms.py:21 msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." msgstr "Introduzca un código postal en el formato XXXXX o XXXX-XXXX." #: contrib/localflavor/br/forms.py:18 msgid "Enter a zip code in the format XXXXX-XXX." msgstr "Introduzca un código postal en el formato XXXX-XXXX." #: contrib/localflavor/br/forms.py:30 msgid "Phone numbers must be in XX-XXXX-XXXX format." msgstr "Los números de teléfono deben tener el formato XXX-XXX-XXXX." #: contrib/localflavor/br/forms.py:72 msgid "This field requires only numbers." msgstr "Este campo sólo acepta números." #: contrib/localflavor/br/forms.py:74 msgid "This field requires at most 11 digits or 14 characters." msgstr "Este campo necesita al menos 11 o 14 caracteres" #: contrib/localflavor/br/forms.py:84 msgid "Invalid CPF number." msgstr "Número CPF inválido." #: contrib/localflavor/br/forms.py:106 msgid "This field requires at least 14 digits" msgstr "Este campo necesita 14 dígitos como máximo" #: contrib/localflavor/br/forms.py:116 msgid "Invalid CNPJ number." msgstr "Número CNPJ inválido" #: contrib/localflavor/it/forms.py:16 msgid "Enter a valid zip code." msgstr "Introduzca un código postal válido." #: contrib/localflavor/it/forms.py:41 msgid "Enter a valid Social Security number." msgstr "Introduzca un número de Seguro Social válido." #: contrib/localflavor/it/forms.py:68 msgid "Enter a valid VAT number." msgstr "Introduzca un número VAT válido." #: contrib/localflavor/no/forms.py:14 contrib/localflavor/ch/forms.py:18 msgid "Enter a zip code in the format XXXX." msgstr "Introduzca un código postal en el formato XXXX." #: contrib/localflavor/no/forms.py:35 msgid "Enter a valid Norwegian social security number." msgstr "Introduzca un número de seguro social de Noruega válido." #: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45 msgid "Enter a valid Finnish social security number." msgstr "Introduzca un número de seguro social finlandés válido." #: contrib/localflavor/de/de_states.py:5 msgid "Baden-Wuerttemberg" msgstr "Baden-Wuerttemberg" #: contrib/localflavor/de/de_states.py:6 msgid "Bavaria" msgstr "Bavaria" #: contrib/localflavor/de/de_states.py:7 msgid "Berlin" msgstr "Berlín" #: contrib/localflavor/de/de_states.py:8 msgid "Brandenburg" msgstr "Brandenburg" #: contrib/localflavor/de/de_states.py:9 msgid "Bremen" msgstr "Bremen" #: contrib/localflavor/de/de_states.py:10 msgid "Hamburg" msgstr "Hamburg" #: contrib/localflavor/de/de_states.py:11 msgid "Hessen" msgstr "Hessen" #: contrib/localflavor/de/de_states.py:12 msgid "Mecklenburg-Western Pomerania" msgstr "Mecklenburg-Western Pomerania" #: contrib/localflavor/de/de_states.py:13 msgid "Lower Saxony" msgstr "Lower Saxony" #: contrib/localflavor/de/de_states.py:14 msgid "North Rhine-Westphalia" msgstr "North Rhine-Westphalia" #: contrib/localflavor/de/de_states.py:15 msgid "Rhineland-Palatinate" msgstr "Rhineland-Palatinate" #: contrib/localflavor/de/de_states.py:16 msgid "Saarland" msgstr "Saarland" #: contrib/localflavor/de/de_states.py:17 msgid "Saxony" msgstr "Saxony" #: contrib/localflavor/de/de_states.py:18 msgid "Saxony-Anhalt" msgstr "Saxony-Anhalt" #: contrib/localflavor/de/de_states.py:19 msgid "Schleswig-Holstein" msgstr "Schleswig-Holstein" #: contrib/localflavor/de/de_states.py:20 msgid "Thuringia" msgstr "Thuringia" #: contrib/localflavor/de/forms.py:60 msgid "" "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " "format." msgstr "" "Introduzca un número de tarjeta de identidad de Alemania válida en el " "formato XXXXXXXXXXX-XXXXXXX-XXXXXXX-X." #: contrib/localflavor/au/forms.py:18 msgid "Enter a 4 digit post code." msgstr "Introduzca un código postal de 4 dígitos." #: contrib/localflavor/us/forms.py:18 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." msgstr "Introduzca un código postal en el formato XXXXX o XXXX-XXXX." #: contrib/localflavor/us/forms.py:51 msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." msgstr "" "Introduzca un Número Seguro Social de EEUU válido en el formato XXX-XX-XXXX" #: contrib/localflavor/is_/forms.py:17 msgid "" "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." msgstr "" "Introduzca un número de identificación de Islandia válido. El formato es " "XXXXXX-XXXX." #: contrib/localflavor/is_/forms.py:31 msgid "The Icelandic identification number is not valid." msgstr "El número de identificación de Islandia no es válido." #: contrib/localflavor/cl/forms.py:32 msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X." msgstr "Introduzca un RUT chileno válido. El formato es XX.XXX.XXX-X." #: contrib/localflavor/cl/forms.py:37 msgid "Enter valid a Chilean RUT" msgstr "Introduzca un RUT chileno válido" #: contrib/localflavor/ch/ch_states.py:5 msgid "Aargau" msgstr "Aargau" #: contrib/localflavor/ch/ch_states.py:6 msgid "Appenzell Innerrhoden" msgstr "Appenzell Innerrhoden" #: contrib/localflavor/ch/ch_states.py:7 msgid "Appenzell Ausserrhoden" msgstr "Appenzell Ausserrhoden" #: contrib/localflavor/ch/ch_states.py:8 msgid "Basel-Stadt" msgstr "Basel-Stadt" #: contrib/localflavor/ch/ch_states.py:9 msgid "Basel-Land" msgstr "Basel-Land" #: contrib/localflavor/ch/ch_states.py:10 msgid "Berne" msgstr "Berne" #: contrib/localflavor/ch/ch_states.py:11 msgid "Fribourg" msgstr "Fribourg" #: contrib/localflavor/ch/ch_states.py:12 msgid "Geneva" msgstr "Geneva" #: contrib/localflavor/ch/ch_states.py:13 msgid "Glarus" msgstr "Glarus" #: contrib/localflavor/ch/ch_states.py:14 msgid "Graubuenden" msgstr "Graubuenden" #: contrib/localflavor/ch/ch_states.py:15 msgid "Jura" msgstr "Jura" #: contrib/localflavor/ch/ch_states.py:16 msgid "Lucerne" msgstr "Lucerne" #: contrib/localflavor/ch/ch_states.py:17 msgid "Neuchatel" msgstr "Neuchatel" #: contrib/localflavor/ch/ch_states.py:18 msgid "Nidwalden" msgstr "Nidwalden" #: contrib/localflavor/ch/ch_states.py:19 msgid "Obwalden" msgstr "Obwalden" #: contrib/localflavor/ch/ch_states.py:20 msgid "Schaffhausen" msgstr "Schaffhausen" #: contrib/localflavor/ch/ch_states.py:21 msgid "Schwyz" msgstr "Schwyz" #: contrib/localflavor/ch/ch_states.py:22 msgid "Solothurn" msgstr "Solothurn" #: contrib/localflavor/ch/ch_states.py:23 msgid "St. Gallen" msgstr "St. Gallen" #: contrib/localflavor/ch/ch_states.py:24 msgid "Thurgau" msgstr "Thurgau" #: contrib/localflavor/ch/ch_states.py:25 msgid "Ticino" msgstr "Ticino" #: contrib/localflavor/ch/ch_states.py:26 msgid "Uri" msgstr "Uri" #: contrib/localflavor/ch/ch_states.py:27 msgid "Valais" msgstr "Valais" #: contrib/localflavor/ch/ch_states.py:28 msgid "Vaud" msgstr "Vaud" #: contrib/localflavor/ch/ch_states.py:29 msgid "Zug" msgstr "Zug" #: contrib/localflavor/ch/ch_states.py:30 msgid "Zurich" msgstr "Zurich" #: contrib/localflavor/ch/forms.py:90 msgid "" "Enter a valid Swiss identity or passport card number in X1234567<0 or " "1234567890 format." msgstr "" "Introduzca una identificación suiza válida o un número de pasaporte en el " "formato X1234567<0 or 1234567890." #: contrib/localflavor/sk/sk_regions.py:8 msgid "Banska Bystrica region" msgstr "Región de Banska Bystrica" #: contrib/localflavor/sk/sk_regions.py:9 msgid "Bratislava region" msgstr "Región de Bratislava" #: contrib/localflavor/sk/sk_regions.py:10 msgid "Kosice region" msgstr "Región de Kosice" #: contrib/localflavor/sk/sk_regions.py:11 msgid "Nitra region" msgstr "Región de Nitra" #: contrib/localflavor/sk/sk_regions.py:12 msgid "Presov region" msgstr "Región de Presov" #: contrib/localflavor/sk/sk_regions.py:13 msgid "Trencin region" msgstr "Región de Trencin" #: contrib/localflavor/sk/sk_regions.py:14 msgid "Trnava region" msgstr "Región de Trnava" #: contrib/localflavor/sk/sk_regions.py:15 msgid "Zilina region" msgstr "Región de Zilina" #: contrib/localflavor/sk/sk_districts.py:8 msgid "Banska Bystrica" msgstr "Región de Bystrica" #: contrib/localflavor/sk/sk_districts.py:9 msgid "Banska Stiavnica" msgstr "Región de Banska Stiavnica" #: contrib/localflavor/sk/sk_districts.py:10 msgid "Bardejov" msgstr "Región de Bardejov" #: contrib/localflavor/sk/sk_districts.py:11 msgid "Banovce nad Bebravou" msgstr "Región de Banovce nad Bebravou" #: contrib/localflavor/sk/sk_districts.py:12 msgid "Brezno" msgstr "Región de Brezno" #: contrib/localflavor/sk/sk_districts.py:13 msgid "Bratislava I" msgstr "Región de Bratislava I" #: contrib/localflavor/sk/sk_districts.py:14 msgid "Bratislava II" msgstr "Región de Bratislava II" #: contrib/localflavor/sk/sk_districts.py:15 msgid "Bratislava III" msgstr "Región de Bratislava III" #: contrib/localflavor/sk/sk_districts.py:16 msgid "Bratislava IV" msgstr "Región de Bratislava IV" #: contrib/localflavor/sk/sk_districts.py:17 msgid "Bratislava V" msgstr "Región de Bratislava V" #: contrib/localflavor/sk/sk_districts.py:18 msgid "Bytca" msgstr "Región de Bytca" #: contrib/localflavor/sk/sk_districts.py:19 msgid "Cadca" msgstr "Región de Cadca" #: contrib/localflavor/sk/sk_districts.py:20 msgid "Detva" msgstr "Región de Detva" #: contrib/localflavor/sk/sk_districts.py:21 msgid "Dolny Kubin" msgstr "Región de Dolny Kubin" #: contrib/localflavor/sk/sk_districts.py:22 msgid "Dunajska Streda" msgstr "Región de Dunajska Streda" #: contrib/localflavor/sk/sk_districts.py:23 msgid "Galanta" msgstr "Galanta" #: contrib/localflavor/sk/sk_districts.py:24 msgid "Gelnica" msgstr "Gelnica" #: contrib/localflavor/sk/sk_districts.py:25 msgid "Hlohovec" msgstr "Hlohovec" #: contrib/localflavor/sk/sk_districts.py:26 msgid "Humenne" msgstr "Humenne" #: contrib/localflavor/sk/sk_districts.py:27 msgid "Ilava" msgstr "Ilava" #: contrib/localflavor/sk/sk_districts.py:28 msgid "Kezmarok" msgstr "Kezmarok" #: contrib/localflavor/sk/sk_districts.py:29 msgid "Komarno" msgstr "Komarno" #: contrib/localflavor/sk/sk_districts.py:30 msgid "Kosice I" msgstr "Kosice I" #: contrib/localflavor/sk/sk_districts.py:31 msgid "Kosice II" msgstr "Kosice II" #: contrib/localflavor/sk/sk_districts.py:32 msgid "Kosice III" msgstr "Kosice III" #: contrib/localflavor/sk/sk_districts.py:33 msgid "Kosice IV" msgstr "Kosice IV" #: contrib/localflavor/sk/sk_districts.py:34 msgid "Kosice - okolie" msgstr "Kosice - okolie" #: contrib/localflavor/sk/sk_districts.py:35 msgid "Krupina" msgstr "Krupina" #: contrib/localflavor/sk/sk_districts.py:36 msgid "Kysucke Nove Mesto" msgstr "Kysucke Nove Mesto" #: contrib/localflavor/sk/sk_districts.py:37 msgid "Levice" msgstr "Levice" #: contrib/localflavor/sk/sk_districts.py:38 msgid "Levoca" msgstr "Levoca" #: contrib/localflavor/sk/sk_districts.py:39 msgid "Liptovsky Mikulas" msgstr "Liptovsky Mikulas" #: contrib/localflavor/sk/sk_districts.py:40 msgid "Lucenec" msgstr "Lucenec" #: contrib/localflavor/sk/sk_districts.py:41 msgid "Malacky" msgstr "Malacky" #: contrib/localflavor/sk/sk_districts.py:42 msgid "Martin" msgstr "Martin" #: contrib/localflavor/sk/sk_districts.py:43 msgid "Medzilaborce" msgstr "Medzilaborce" #: contrib/localflavor/sk/sk_districts.py:44 msgid "Michalovce" msgstr "Michalovce" #: contrib/localflavor/sk/sk_districts.py:45 msgid "Myjava" msgstr "Myjava" #: contrib/localflavor/sk/sk_districts.py:46 msgid "Namestovo" msgstr "Namestovo" #: contrib/localflavor/sk/sk_districts.py:47 msgid "Nitra" msgstr "Nitra" #: contrib/localflavor/sk/sk_districts.py:48 msgid "Nove Mesto nad Vahom" msgstr "Nove Mesto nad Vahom" #: contrib/localflavor/sk/sk_districts.py:49 msgid "Nove Zamky" msgstr "Nove Zamky" #: contrib/localflavor/sk/sk_districts.py:50 msgid "Partizanske" msgstr "Partizanske" #: contrib/localflavor/sk/sk_districts.py:51 msgid "Pezinok" msgstr "Pezinok" #: contrib/localflavor/sk/sk_districts.py:52 msgid "Piestany" msgstr "Piestany" #: contrib/localflavor/sk/sk_districts.py:53 msgid "Poltar" msgstr "Poltar" #: contrib/localflavor/sk/sk_districts.py:54 msgid "Poprad" msgstr "Poprad" #: contrib/localflavor/sk/sk_districts.py:55 msgid "Povazska Bystrica" msgstr "Povazska Bystrica" #: contrib/localflavor/sk/sk_districts.py:56 msgid "Presov" msgstr "Presov" #: contrib/localflavor/sk/sk_districts.py:57 msgid "Prievidza" msgstr "Prievidza" #: contrib/localflavor/sk/sk_districts.py:58 msgid "Puchov" msgstr "Puchov" #: contrib/localflavor/sk/sk_districts.py:59 msgid "Revuca" msgstr "Revuca" #: contrib/localflavor/sk/sk_districts.py:60 msgid "Rimavska Sobota" msgstr "Rimavska Sobota" #: contrib/localflavor/sk/sk_districts.py:61 msgid "Roznava" msgstr "Roznava" #: contrib/localflavor/sk/sk_districts.py:62 msgid "Ruzomberok" msgstr "Ruzomberok" #: contrib/localflavor/sk/sk_districts.py:63 msgid "Sabinov" msgstr "Sabinov" #: contrib/localflavor/sk/sk_districts.py:64 msgid "Senec" msgstr "Senec" #: contrib/localflavor/sk/sk_districts.py:65 msgid "Senica" msgstr "Senica" #: contrib/localflavor/sk/sk_districts.py:66 msgid "Skalica" msgstr "Skalica" #: contrib/localflavor/sk/sk_districts.py:67 msgid "Snina" msgstr "Snina" #: contrib/localflavor/sk/sk_districts.py:68 msgid "Sobrance" msgstr "Sobrance" #: contrib/localflavor/sk/sk_districts.py:69 msgid "Spisska Nova Ves" msgstr "Spisska Nova Ves" #: contrib/localflavor/sk/sk_districts.py:70 msgid "Stara Lubovna" msgstr "Stara Lubovna" #: contrib/localflavor/sk/sk_districts.py:71 msgid "Stropkov" msgstr "Stropkov" #: contrib/localflavor/sk/sk_districts.py:72 msgid "Svidnik" msgstr "Svidnik" #: contrib/localflavor/sk/sk_districts.py:73 msgid "Sala" msgstr "Sala" #: contrib/localflavor/sk/sk_districts.py:74 msgid "Topolcany" msgstr "Topolcany" #: contrib/localflavor/sk/sk_districts.py:75 msgid "Trebisov" msgstr "Trebisov" #: contrib/localflavor/sk/sk_districts.py:76 msgid "Trencin" msgstr "Trencin" #: contrib/localflavor/sk/sk_districts.py:77 msgid "Trnava" msgstr "Trnava" #: contrib/localflavor/sk/sk_districts.py:78 msgid "Turcianske Teplice" msgstr "Turcianske Teplice" #: contrib/localflavor/sk/sk_districts.py:79 msgid "Tvrdosin" msgstr "Tvrdosin" #: contrib/localflavor/sk/sk_districts.py:80 msgid "Velky Krtis" msgstr "Velky Krtis" #: contrib/localflavor/sk/sk_districts.py:81 msgid "Vranov nad Toplou" msgstr "Vranov nad Toplou" #: contrib/localflavor/sk/sk_districts.py:82 msgid "Zlate Moravce" msgstr "Zlate Moravce" #: contrib/localflavor/sk/sk_districts.py:83 msgid "Zvolen" msgstr "Zvolen" #: contrib/localflavor/sk/sk_districts.py:84 msgid "Zarnovica" msgstr "Zarnovica" #: contrib/localflavor/sk/sk_districts.py:85 msgid "Ziar nad Hronom" msgstr "Ziar nad Hronom" #: contrib/localflavor/sk/sk_districts.py:86 msgid "Zilina" msgstr "Zilina" #: contrib/localflavor/sk/forms.py:32 msgid "Enter a postal code in the format XXXXX or XXX XX." msgstr "Introduzca un código postal en el formato XXXXX o XXX XX." #: contrib/localflavor/in_/forms.py:16 msgid "Enter a zip code in the format XXXXXXX." msgstr "Introduzca un código postal en el formato XXXXXXX." #: template/defaultfilters.py:485 msgid "yes,no,maybe" msgstr "sí,no,tal vez" #: template/defaultfilters.py:514 #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "%(size)d byte" msgstr[1] "%(size)d bytes" #: template/defaultfilters.py:516 #, python-format msgid "%.1f KB" msgstr "%.1f KB" #: template/defaultfilters.py:518 #, python-format msgid "%.1f MB" msgstr "%.1f MB" #: template/defaultfilters.py:519 #, python-format msgid "%.1f GB" msgstr "%.1f GB" #: oldforms/__init__.py:408 #, python-format msgid "Ensure your text is less than %s character." msgid_plural "Ensure your text is less than %s characters." msgstr[0] "Asegúrese de que su texto tiene menos de %s carácter." msgstr[1] "Asegúrese de que su texto tiene menos de %s caracteres." #: oldforms/__init__.py:413 msgid "Line breaks are not allowed here." msgstr "No se permiten saltos de línea." #: oldforms/__init__.py:511 oldforms/__init__.py:585 oldforms/__init__.py:624 #, python-format msgid "Select a valid choice; '%(data)s' is not in %(choices)s." msgstr "Escoja una opción válida; '%(data)s' no está en %(choices)s." #: oldforms/__init__.py:744 msgid "Enter a whole number between -32,768 and 32,767." msgstr "Introduzca un número entero entre -32,768 y 32,767." #: oldforms/__init__.py:754 msgid "Enter a positive number." msgstr "Introduzca un número positivo." #: oldforms/__init__.py:764 msgid "Enter a whole number between 0 and 32,767." msgstr "Introduzca un número entero entre 0 y 32,767." #: core/validators.py:71 msgid "This value must contain only letters, numbers and underscores." msgstr "Este valor debe contener sólo letras, números y guiones bajos." #: core/validators.py:75 msgid "" "This value must contain only letters, numbers, underscores, dashes or " "slashes." msgstr "" "Este valor debe contener letras, números, guiones bajos o barras solamente." #: core/validators.py:79 msgid "This value must contain only letters, numbers, underscores or hyphens." msgstr "Este valor debe contener sólo letras, números, guiones bajos o medios." #: core/validators.py:83 msgid "Uppercase letters are not allowed here." msgstr "No se admiten letras mayúsculas." #: core/validators.py:87 msgid "Lowercase letters are not allowed here." msgstr "No se admiten letras minúsculas." #: core/validators.py:94 msgid "Enter only digits separated by commas." msgstr "Introduzca sólo dígitos separados por comas." #: core/validators.py:106 msgid "Enter valid e-mail addresses separated by commas." msgstr "Introduzca direcciones de correo válidas separadas por comas." #: core/validators.py:110 msgid "Please enter a valid IP address." msgstr "Por favor introduzca una dirección IP válida." #: core/validators.py:114 msgid "Empty values are not allowed here." msgstr "No se admiten valores vacíos." #: core/validators.py:118 msgid "Non-numeric characters aren't allowed here." msgstr "No se admiten caracteres no numéricos." #: core/validators.py:122 msgid "This value can't be comprised solely of digits." msgstr "Este valor no puede comprender sólo dígitos." #: core/validators.py:131 msgid "Only alphabetical characters are allowed here." msgstr "Sólo se admiten caracteres alfabéticos." #: core/validators.py:146 msgid "Year must be 1900 or later." msgstr "El año debe ser 1900 o posterior." #: core/validators.py:150 #, python-format msgid "Invalid date: %s" msgstr "Fecha no válida: %s" #: core/validators.py:160 msgid "Enter a valid time in HH:MM format." msgstr "Introduzca una hora válida en formato HH:MM." #: core/validators.py:192 #, python-format msgid "The URL %s does not point to a valid image." msgstr "La URL %s no apunta a una imagen válida." #: core/validators.py:196 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgstr "" "Los números de teléfono deben guardar el formato XXX-XXX-XXXX. \"%s\" no es " "válido." #: core/validators.py:204 #, python-format msgid "The URL %s does not point to a valid QuickTime video." msgstr "La URL %s no apunta a un vídeo QuickTime válido." #: core/validators.py:208 msgid "A valid URL is required." msgstr "Se precisa una URL válida." #: core/validators.py:222 #, python-format msgid "" "Valid HTML is required. Specific errors are:\n" "%s" msgstr "" "Se precisa HTML válido. Los errores específicos son:\n" "%s" #: core/validators.py:229 #, python-format msgid "Badly formed XML: %s" msgstr "XML mal formado: %s" #: core/validators.py:246 #, python-format msgid "Invalid URL: %s" msgstr "URL no válida: %s" #: core/validators.py:251 core/validators.py:253 #, python-format msgid "The URL %s is a broken link." msgstr "La URL %s es un enlace roto." #: core/validators.py:259 msgid "Enter a valid U.S. state abbreviation." msgstr "Introduzca una abreviatura válida de estado de los EEUU." #: core/validators.py:273 #, python-format msgid "Watch your mouth! The word %s is not allowed here." msgid_plural "Watch your mouth! The words %s are not allowed here." msgstr[0] "¡Cuida tu vocabulario! Aquí no admitimos la palabra %s." msgstr[1] "¡Cuida tu vocabulario! Aquí no admitimos las palabras %s." #: core/validators.py:280 #, python-format msgid "This field must match the '%s' field." msgstr "Este campo debe concordar con el campo '%s'." #: core/validators.py:299 msgid "Please enter something for at least one field." msgstr "Por favor, introduzca algo en al menos un campo." #: core/validators.py:308 core/validators.py:319 msgid "Please enter both fields or leave them both empty." msgstr "Por favor, rellene ambos campos o deje ambos vacíos." #: core/validators.py:327 #, python-format msgid "This field must be given if %(field)s is %(value)s" msgstr "Se debe proporcionar este campo si %(field)s es %(value)s" #: core/validators.py:340 #, python-format msgid "This field must be given if %(field)s is not %(value)s" msgstr "Se debe proporcionar este campo si %(field)s no es %(value)s" #: core/validators.py:359 msgid "Duplicate values are not allowed." msgstr "No se admiten valores duplicados." #: core/validators.py:374 #, python-format msgid "This value must be between %(lower)s and %(upper)s." msgstr "Este valor debe estar entre %(lower)s y %(upper)s." #: core/validators.py:376 #, python-format msgid "This value must be at least %s." msgstr "Este valor debe ser como mínimo %s." #: core/validators.py:378 #, python-format msgid "This value must be no more than %s." msgstr "Este valor no debe ser mayor que %s." #: core/validators.py:414 #, python-format msgid "This value must be a power of %s." msgstr "Este valor debe ser una potencia de %s." #: core/validators.py:424 msgid "Please enter a valid decimal number." msgstr "Por favor, introduzca un número decimal válido." #: core/validators.py:431 #, python-format msgid "Please enter a valid decimal number with at most %s total digit." msgid_plural "" "Please enter a valid decimal number with at most %s total digits." msgstr[0] "" "Por favor, introduzca un número decimal válido con a lo más %s dígito en " "total." msgstr[1] "" "Por favor, introduzca un número decimal válido con a lo más %s dígitos en " "total." #: core/validators.py:434 #, python-format msgid "" "Please enter a valid decimal number with a whole part of at most %s digit." msgid_plural "" "Please enter a valid decimal number with a whole part of at most %s digits." msgstr[0] "" "Por favor, introduzca un número decimal válido con a lo más %s dígito en su " "parte entera." msgstr[1] "" "Por favor, introduzca un número decimal válido con a lo más %s dígitos en su " "parte entera." #: core/validators.py:437 #, python-format msgid "Please enter a valid decimal number with at most %s decimal place." msgid_plural "" "Please enter a valid decimal number with at most %s decimal places." msgstr[0] "" "Por favor, introduzca un número decimal válido con a lo más %s dígito " "decimal." msgstr[1] "" "Por favor, introduzca un número decimal válido con a lo más %s dígitos " "decimales." #: core/validators.py:445 msgid "Please enter a valid floating point number." msgstr "Por favor, introduzca un número decimal válido." #: core/validators.py:454 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." msgstr "Asegúrese de que el fichero que envía tiene al menos %s bytes." #: core/validators.py:455 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." msgstr "Asegúrese de que el fichero que envía tiene como máximo %s bytes." #: core/validators.py:472 msgid "The format for this field is wrong." msgstr "El formato de este campo es incorrecto." #: core/validators.py:487 msgid "This field is invalid." msgstr "Este campo no es válido." #: core/validators.py:523 #, python-format msgid "Could not retrieve anything from %s." msgstr "No pude obtener nada de %s." #: core/validators.py:526 #, python-format msgid "" "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." msgstr "" "La URL %(url)s devolvió la cabecera Content-Type '%(contenttype)s', que no " "es válida." #: core/validators.py:559 #, python-format msgid "" "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " "\"%(start)s\".)" msgstr "" "Por favor, cierre la etiqueta %(tag)s de la línea %(line)s. (La línea " "empieza por \"%(start)s\".)" #: core/validators.py:563 #, python-format msgid "" "Some text starting on line %(line)s is not allowed in that context. (Line " "starts with \"%(start)s\".)" msgstr "" "Parte del texto que comienza en la línea %(line)s no está permitido en ese " "contexto. (La línea empieza por \"%(start)s\".)" #: core/validators.py:568 #, python-format msgid "" "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" "(start)s\".)" msgstr "" "El \"%(attr)s\" de la línea %(line)s no es un atributo válido. (La línea " "empieza por \"%(start)s\".)" #: core/validators.py:573 #, python-format msgid "" "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" "(start)s\".)" msgstr "" "La \"<%(tag)s>\" de la línea %(line)s no es una etiqueta válida. (La línea " "empieza por \"%(start)s\".)" #: core/validators.py:577 #, python-format msgid "" "A tag on line %(line)s is missing one or more required attributes. (Line " "starts with \"%(start)s\".)" msgstr "" "A una etiqueta de la línea %(line)s le faltan uno o más atributos " "requeridos. (La línea empieza por \"%(start)s\".)" #: core/validators.py:582 #, python-format msgid "" "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " "starts with \"%(start)s\".)" msgstr "" "El atributo \"%(attr)s\" de la línea %(line)s tiene un valor que no es " "válido. (La línea empieza por \"%(start)s\".)" polib-1.0.7/tests/test_fuzzy_header.po0000664000175000017500000000062612440274247017510 0ustar iziizi00000000000000# Po file with a fuzzy header # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-02-08 16:57+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" polib-1.0.7/tests/test_weird_occurrences.po0000664000175000017500000002105312440274247020513 0ustar iziizi00000000000000msgid "" msgstr "" "Project-Id-Version: eToys\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-06-20 00:53-0000\n" "PO-Revision-Date: 2008-03-22 23:45-0400\n" "Last-Translator: Paulo Drummond \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Pootle 1.1.0rc2\n" "X-Launchpad-Export-Date: 2007-12-03 23:40+0000\n" "X-Etoys-Domain: etoys\n" "X-Etoys-SystemVersion: etoys3.0 of 24 February 2008 update 2029\n" #. Test for empty comment lines #. #, #: main.c:117 msgid "Override the default prgname" msgstr "Override the default prgname" #: Balloon-Fills,BitmapFillStyle>>addFillStyleMenuItems:hand:from: msgid "choose new graphic" msgstr "escolher novo gráfico" #: Balloon-Fills,BitmapFillStyle>>addFillStyleMenuItems:hand:from: msgid "grab new graphic" msgstr "agarrar novo gráfico" #: Balloon-Fills,GradientFillStyle>>addFillStyleMenuItems:hand:from: msgid "change first color" msgstr "alterar a primeira cor" #: Balloon-Fills,GradientFillStyle>>addFillStyleMenuItems:hand:from: msgid "change second color" msgstr "alterar a segunda cor" #: Balloon-Fills,GradientFillStyle>>addFillStyleMenuItems:hand:from: msgid "linear gradient" msgstr "gradiente linear" #: Balloon-Fills,GradientFillStyle>>addFillStyleMenuItems:hand:from: msgid "radial gradient" msgstr "gradiente radial" #: Balloon-Fills,OrientedFillStyle>>addFillStyleMenuItems:hand:from: msgid "change orientation" msgstr "alterar orientação" #: Balloon-Fills,OrientedFillStyle>>addFillStyleMenuItems:hand:from: msgid "change origin" msgstr "mudar a origem" #: Balloon-MMFlash_Import,FlashFileReader>>processHeader msgid "" "This file's version ({1}) is higher than \n" "the currently supported version ({2}). \n" "It may contain features that are not supported \n" "and it may not display correctly.\n" "Do you want to continue?" msgstr "" "A versão ({1}) deste arquivo é mais recente \n" "que a atualmente suportada ({2}). \n" "Ela pode conter características que não são suportadas \n" "e pode não ser mostrada corretamente.\n" "Você quer continuar?" #: Balloon-MMFlash_Import,FlashMorphReader_class>>serviceOpenAsFlash msgid "open as Flash" msgstr "" #: Balloon-MMFlash_Import,FlashMorphReader_class>>serviceOpenAsFlash msgid "open file as flash" msgstr "" #: Balloon-MMFlash_Morphs,FlashButtonMorph>>addCustomAction msgid "Enter the Smalltalk code to execute:" msgstr "" #: Balloon-MMFlash_Morphs,FlashButtonMorph>>addCustomMenuItems:hand: msgid "remove all actions" msgstr "remover todas as ações" #: Balloon-MMFlash_Morphs,FlashButtonMorph>>addCustomMenuItems:hand: msgid "set custom action" msgstr "estabelecer ação específica" #: Balloon-MMFlash_Morphs,FlashCharacterMorph>>addCustomMenuItems:hand: msgid "add project target" msgstr "acrescentar meta de projeto" #: Balloon-MMFlash_Morphs,FlashCharacterMorph>>addCustomMenuItems:hand: msgid "remove project target" msgstr "remover alvo do projeto" #: Balloon-MMFlash_Morphs,FlashMorph>>addCustomMenuItems:hand: msgid "show compressed size" msgstr "mostrar tamanho comprimido" #: Balloon-MMFlash_Morphs,FlashMorph>>getSmoothingLevel,TTSampleFontMorph>>getSmoothingLevel msgid "more smoothing" msgstr "mais suavizamento" #: Balloon-MMFlash_Morphs,FlashMorph>>getSmoothingLevel,NCScrolledCompositeStateMorph>>addCustomMenuItems:hand:,TransformMorph>>addCustomMenuItems:hand:,TTSampleFontMorph>>getSmoothingLevel msgid "turn off smoothing" msgstr "desativar suavizamento" #: Balloon-MMFlash_Morphs,FlashMorph>>getSmoothingLevel,NCScrolledCompositeStateMorph>>addCustomMenuItems:hand:,TransformMorph>>addCustomMenuItems:hand:,TTSampleFontMorph>>getSmoothingLevel msgid "turn on smoothing" msgstr "ativar suavizamento" #: Balloon-MMFlash_Morphs,FlashPlayerMorph>>addCustomMenuItems:hand: msgid "make controls" msgstr "criar controles" #: Balloon-MMFlash_Morphs,FlashPlayerMorph>>addCustomMenuItems:hand: msgid "open sorter" msgstr "abrir ordenador" #: Balloon-MMFlash_Morphs,FlashPlayerMorph>>additionsToViewerCategories,PasteUpMorph>>additionsToViewerCategories msgid "collections" msgstr "coleções" #: Balloon-MMFlash_Morphs,FlashPlayerMorph>>additionsToViewerCategories,GraphMorph>>additionsToViewerCategories,GraphMorph>>additionsToViewerCategories,NCLabelMorph>>additionsToViewerCategories,PasteUpMorph>>additionsToViewerCategories,TextMorph>>additionsToViewerCategories msgid "cursor" msgstr "cursor" #: Balloon-MMFlash_Morphs,FlashPlayerMorph>>additionsToViewerCategories,PasteUpMorph>>additionsToViewerCategories msgid "first element" msgstr "primeiro elemento" #: Balloon-MMFlash_Morphs,FlashPlayerMorph>>additionsToViewerCategories,PasteUpMorph>>additionsToViewerCategories msgid "graphic at cursor" msgstr "gráfico no cursor" #: Balloon-MMFlash_Morphs,FlashPlayerMorph>>additionsToViewerCategories,PasteUpMorph>>additionsToViewerCategories msgid "player at cursor" msgstr "reprodutor no cursor" #: Balloon-MMFlash_Morphs,FlashPlayerMorph>>additionsToViewerCategories,PasteUpMorph>>additionsToViewerCategories msgid "The first object in my contents" msgstr "O primeiro objeto no meu conteúdo" #: Balloon-MMFlash_Morphs,FlashPlayerMorph>>additionsToViewerCategories,PasteUpMorph>>additionsToViewerCategories msgid "The index of the chosen element" msgstr "O índice do elemento escolhido" #: Balloon-MMFlash_Morphs,FlashPlayerMorph>>additionsToViewerCategories,PasteUpMorph>>additionsToViewerCategories msgid "the graphic worn by the object at the cursor" msgstr "o gráfico exibido pelo objeto na posição do cursor" #: Balloon-MMFlash_Morphs,FlashPlayerMorph>>additionsToViewerCategories,PasteUpMorph>>additionsToViewerCategories msgid "the object currently at the cursor" msgstr "o objeto atualmente na posição do cursor" #: Balloon-MMFlash_Morphs,FlashPlayerMorph>>openInMVC,FlashPlayerMorph>>openInWorld msgid "Flash Player" msgstr "Flash Player" #: Balloon-MMFlash_Morphs,FlashPlayerWindow>>initialize msgid "continue playing" msgstr "continuar reproduzindo" #: Balloon-MMFlash_Morphs,FlashPlayerWindow>>initialize,MovieMorph>>addCustomMenuItems:hand: msgid "stop playing" msgstr "parar de reproduzir" #: Balloon-TrueType_Support,TTFontReader_class>>serviceOpenTrueTypeFont,TTFontReader_class>>serviceOpenTrueTypeFont msgid "open true type font" msgstr "" #: Balloon-TrueType_Support,TTSampleStringMorph_class>>descriptionForPartsBin msgid "A short text in a beautiful font. Use the resize handle to change size." msgstr "" "Um texto curto em uma fonte bonita. Use o manipulador de redimensionamento " "para alterar seu tamanho." #: Balloon-TrueType_Support,TTSampleStringMorph_class>>descriptionForPartsBin msgid "TrueType banner" msgstr "Banner em TrueType" #: Balloon-TrueType_Support,TTSampleStringMorph>>addCustomMenuItems:hand: msgid "edit contents..." msgstr "editar conteúdo..." #: Balloon-TrueType_Support,TTSampleStringMorph>>addCustomMenuItems:hand: msgid "how to find more fonts..." msgstr "como encontrar mais fontes..." #: Balloon-TrueType_Support,TTSampleStringMorph>>addCustomMenuItems:hand: msgid "load font from web..." msgstr "carregar fonte a partir da web..." #: BroomMorphs-Base,BroomMorph_class>>descriptionForPartsBin msgid "A broom to align Morphs with" msgstr "Uma vassoura para servir de base de alinhamento para Morphs" #: BroomMorphs-Base,BroomMorph_class>>descriptionForPartsBin msgid "Broom" msgstr "Vassoura" #: BroomMorphs-Base,BroomMorph_class>>descriptionForPartsBin,CircleMorph_class>>supplementaryPartsDescriptions,CurveMorph_class>>formerDescriptionForPartsBin,CurveMorph_class>>supplementaryPartsDescriptions,EllipseMorph_class>>descriptionForPartsBin,GrabPatchMorph_class>>descriptionForPartsBin,LassoPatchMorph_class>>descriptionForPartsBin,LineMorph_class>>descriptionForPartsBin,PolygonMorph_class>>descriptionForPartsBin,PolygonMorph_class>>supplementaryPartsDescriptions,PolygonMorph_class>>supplementaryPartsDescriptions,PolygonMorph_class>>supplementaryPartsDescriptions,RectangleMorph_class>>descriptionForPartsBin,RectangleMorph_class>>supplementaryPartsDescriptions,StarMorph_class>>descriptionForPartsBin msgid "Graphics" msgstr "Gráficos" #: BroomMorphs-Base,BroomMorph>>initialize msgid "Drag me to align other Morphs. Drag with the Shift key to move me without affecting other Morphs. Drag me with the second mouse button to align centers." msgstr "" "Arraste-me para alinhar com outros Morfs. Arraste com a tecla Shift premida " "para me mover sem afetar outros Morfs. Arraste-me com o outro botão do mouse " "para centralizar." #: BroomMorphs-Connectors,NCBroomMorph_class>>descriptionForPartsBin msgid "A broom to align shapes with" msgstr "Uma vassoura para alinhar formas" polib-1.0.7/tests/test_trailing_comment.po0000664000175000017500000000014012440274247020333 0ustar iziizi00000000000000msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" msgid "foo" msgstr "oof" # bar polib-1.0.7/tests/tests.py0000664000175000017500000005423612546742717015145 0ustar iziizi00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import codecs import os import subprocess import sys import tempfile import unittest sys.path.insert(1, os.path.abspath('.')) import polib from polib import u class TestFunctions(unittest.TestCase): def test_pofile_and_mofile1(self): """ Test bad usage of pofile/mofile. """ data = u('''# test for pofile/mofile with string buffer msgid "" msgstr "" "Project-Id-Version: django\n" msgid "foo" msgstr "bar" ''') po = polib.pofile(data) self.assertTrue(isinstance(po, polib.POFile)) self.assertEqual(po.encoding, 'utf-8') self.assertEqual(po[0].msgstr, u("bar")) def test_indented_pofile(self): """ Test that an indented pofile returns a POFile instance. """ po = polib.pofile('tests/test_indented.po') self.assertTrue(isinstance(po, polib.POFile)) def test_pofile_and_mofile2(self): """ Test that the pofile function returns a POFile instance. """ po = polib.pofile('tests/test_utf8.po') self.assertTrue(isinstance(po, polib.POFile)) def test_pofile_and_mofile3(self): """ Test that the mofile function returns a MOFile instance. """ mo = polib.mofile('tests/test_utf8.mo') self.assertTrue(isinstance(mo, polib.MOFile)) def test_pofile_and_mofile4(self): """ Test that check_for_duplicates is passed to the instance. """ po = polib.pofile('tests/test_iso-8859-15.po', check_for_duplicates=True, autodetect_encoding=False, encoding='iso-8859-15') self.assertTrue(po.check_for_duplicates == True) def test_pofile_and_mofile5(self): """ Test that detect_encoding works as expected. """ po = polib.pofile('tests/test_iso-8859-15.po') self.assertTrue(po.encoding == 'ISO_8859-15') def test_pofile_and_mofile6(self): """ Test that encoding is default_encoding when detect_encoding is False. """ po = polib.pofile('tests/test_noencoding.po') self.assertTrue(po.encoding == 'utf-8') def test_pofile_and_mofile7(self): """ Test that encoding is ok when encoding is explicitly given. """ po = polib.pofile('tests/test_iso-8859-15.po', encoding='iso-8859-15') self.assertTrue(po.encoding == 'iso-8859-15') def test_pofile_and_mofile8(self): """ Test that weird occurrences are correctly parsed. """ po = polib.pofile('tests/test_weird_occurrences.po') self.assertEqual(len(po), 46) def test_pofile_and_mofile9(self): """ Test that obsolete previous msgid are ignored """ po = polib.pofile('tests/test_obsolete_previousmsgid.po') self.assertTrue(isinstance(po, polib.POFile)) def test_previous_msgid_1(self): """ Test previous msgid multiline. """ po = polib.pofile('tests/test_previous_msgid.po') expected = "\nPartition table entries are not in disk order\n" self.assertEqual( po[0].previous_msgid, expected ) def test_previous_msgid_2(self): """ Test previous msgid single line. """ po = polib.pofile('tests/test_previous_msgid.po') expected = "Partition table entries are not in disk order2\n" self.assertEqual( po[1].previous_msgid, expected ) def test_previous_msgctxt_1(self): """ Test previous msgctxt multiline. """ po = polib.pofile('tests/test_previous_msgid.po') expected = "\nSome message context" self.assertEqual( po[0].previous_msgctxt, expected ) def test_previous_msgctxt_2(self): """ Test previous msgctxt single line. """ po = polib.pofile('tests/test_previous_msgid.po') expected = "Some message context" self.assertEqual( po[1].previous_msgctxt, expected ) def test_unescaped_double_quote1(self): """ Test that polib reports an error when unescaped double quote is found. """ data = r''' msgid "Some msgid with \"double\" quotes" msgid "Some msgstr with "double\" quotes" ''' try: po = polib.pofile(data) self.fail("Unescaped quote not detected") except IOError: exc = sys.exc_info()[1] msg = 'Syntax error in po file None (line 3): unescaped double quote found' self.assertEqual(str(exc), msg) def test_unescaped_double_quote2(self): """ Test that polib reports an error when unescaped double quote is found. """ data = r''' msgid "Some msgid with \"double\" quotes" msgstr "" "Some msgstr with "double\" quotes" ''' try: po = polib.pofile(data) self.fail("Unescaped quote not detected") except IOError: exc = sys.exc_info()[1] msg = 'Syntax error in po file None (line 4): unescaped double quote found' self.assertEqual(str(exc), msg) def test_unescaped_double_quote3(self): """ Test that polib reports an error when unescaped double quote is found at the beginning of the string. """ data = r''' msgid "Some msgid with \"double\" quotes" msgid ""Some msgstr with double\" quotes" ''' try: po = polib.pofile(data) self.fail("Unescaped quote not detected") except IOError: exc = sys.exc_info()[1] msg = 'Syntax error in po file None (line 3): unescaped double quote found' self.assertEqual(str(exc), msg) def test_unescaped_double_quote4(self): """ Test that polib reports an error when unescaped double quote is found at the beginning of the string. """ data = r''' msgid "Some msgid with \"double\" quotes" msgstr "" ""Some msgstr with double\" quotes" ''' try: po = polib.pofile(data) self.fail("Unescaped quote not detected") except IOError: exc = sys.exc_info()[1] msg = 'Syntax error in po file None (line 4): unescaped double quote found' self.assertEqual(str(exc), msg) def test_detect_encoding1(self): """ Test that given enconding is returned when file has no encoding defined. """ self.assertEqual(polib.detect_encoding('tests/test_noencoding.po'), 'utf-8') def test_detect_encoding2(self): """ Test with a .pot file. """ self.assertEqual(polib.detect_encoding('tests/test_merge.pot'), 'utf-8') def test_detect_encoding3(self): """ Test with an utf8 .po file. """ self.assertEqual(polib.detect_encoding('tests/test_utf8.po'), 'UTF-8') def test_detect_encoding4(self): """ Test with utf8 data (no file). """ if polib.PY3: f = open('tests/test_utf8.po', 'rb') data = str(f.read(), 'utf-8') else: f = open('tests/test_utf8.po', 'r') data = f.read() try: self.assertEqual(polib.detect_encoding(data), 'UTF-8') finally: f.close() def test_detect_encoding5(self): """ Test with utf8 .mo file. """ self.assertEqual(polib.detect_encoding('tests/test_utf8.mo', True), 'UTF-8') def test_detect_encoding6(self): """ Test with iso-8859-15 .po file. """ self.assertEqual(polib.detect_encoding('tests/test_iso-8859-15.po'), 'ISO_8859-15') def test_detect_encoding7(self): """ Test with iso-8859-15 .mo file. """ self.assertEqual(polib.detect_encoding('tests/test_iso-8859-15.mo', True), 'ISO_8859-15') def test_escape(self): """ Tests the escape function. """ self.assertEqual( polib.escape('\\t and \\n and \\r and " and \\ and \\\\'), '\\\\t and \\\\n and \\\\r and \\" and \\\\ and \\\\\\\\' ) def test_unescape(self): """ Tests the unescape function. """ self.assertEqual( polib.unescape('\\\\t and \\\\n and \\\\r and \\\\" and \\\\\\\\'), '\\t and \\n and \\r and \\" and \\\\' ) def test_pofile_with_subclass(self): """ Test that the pofile function correctly returns an instance of the passed in class """ class CustomPOFile(polib.POFile): pass pofile = polib.pofile('tests/test_indented.po', klass=CustomPOFile) self.assertEqual(pofile.__class__, CustomPOFile) def test_mofile_with_subclass(self): """ Test that the mofile function correctly returns an instance of the passed in class """ class CustomMOFile(polib.MOFile): pass mofile = polib.mofile('tests/test_utf8.mo', klass=CustomMOFile) self.assertEqual(mofile.__class__, CustomMOFile) def test_empty(self): po = polib.pofile('') self.assertEqual(po.__unicode__(), '#\nmsgid ""\nmsgstr ""\n') def test_linenum_1(self): po = polib.pofile('tests/test_utf8.po') self.assertEqual(po[0].linenum, 18) def test_linenum_2(self): po = polib.pofile('tests/test_utf8.po') self.assertEqual(po.find('XML text').linenum, 1799) def test_linenum_3(self): po = polib.pofile('tests/test_utf8.po') self.assertEqual(po[-1].linenum, 3478) class TestBaseFile(unittest.TestCase): """ Tests for the _BaseFile class. """ def test_append1(self): pofile = polib.pofile('tests/test_pofile_helpers.po') entry = polib.POEntry(msgid="Foo", msgstr="Bar", msgctxt="Some context") pofile.append(entry) self.assertTrue(entry in pofile) def test_append2(self): def add_duplicate(): pofile = polib.pofile('tests/test_pofile_helpers.po', check_for_duplicates=True) pofile.append(polib.POEntry(msgid="and")) self.assertRaises(ValueError, add_duplicate) def test_append3(self): def add_duplicate(): pofile = polib.pofile('tests/test_pofile_helpers.po', check_for_duplicates=True) pofile.append(polib.POEntry(msgid="and", msgctxt="some context")) self.assertRaises(ValueError, add_duplicate) def test_append4(self): pofile = polib.pofile('tests/test_pofile_helpers.po', check_for_duplicates=True) entry = polib.POEntry(msgid="and", msgctxt="some different context") pofile.append(entry) self.assertTrue(entry in pofile) def test_insert1(self): pofile = polib.pofile('tests/test_pofile_helpers.po') entry = polib.POEntry(msgid="Foo", msgstr="Bar", msgctxt="Some context") pofile.insert(0, entry) self.assertEqual(pofile[0], entry) def test_insert2(self): def add_duplicate(): pofile = polib.pofile('tests/test_pofile_helpers.po', check_for_duplicates=True) pofile.insert(0, polib.POEntry(msgid="and", msgstr="y")) self.assertRaises(ValueError, add_duplicate) def test_metadata_as_entry(self): pofile = polib.pofile('tests/test_fuzzy_header.po') f = open('tests/test_fuzzy_header.po') lines = f.readlines()[2:] f.close() self.assertEqual(pofile.metadata_as_entry().__unicode__(), "".join(lines)) def test_find1(self): pofile = polib.pofile('tests/test_pofile_helpers.po') entry = pofile.find('and') self.assertEqual(entry.msgstr, u('y')) def test_find2(self): pofile = polib.pofile('tests/test_pofile_helpers.po') entry = pofile.find('pacote', by="msgstr") self.assertEqual(entry, None) def test_find3(self): pofile = polib.pofile('tests/test_pofile_helpers.po') entry = pofile.find('package', include_obsolete_entries=True) self.assertEqual(entry.msgstr, u('pacote')) def test_find4(self): pofile = polib.pofile('tests/test_utf8.po') entry1 = pofile.find('test context', msgctxt='@context1') entry2 = pofile.find('test context', msgctxt='@context2') self.assertEqual(entry1.msgstr, u('test context 1')) self.assertEqual(entry2.msgstr, u('test context 2')) def test_save1(self): pofile = polib.POFile() self.assertRaises(IOError, pofile.save) def test_save2(self): fd, tmpfile = tempfile.mkstemp() os.close(fd) try: pofile = polib.POFile() pofile.save(tmpfile) pofile.save() self.assertTrue(os.path.isfile(tmpfile)) finally: os.remove(tmpfile) def test_ordered_metadata(self): pofile = polib.pofile('tests/test_fuzzy_header.po') f = open('tests/test_fuzzy_header.po') lines = f.readlines()[2:] f.close() mdata = [ ('Project-Id-Version', u('PACKAGE VERSION')), ('Report-Msgid-Bugs-To', u('')), ('POT-Creation-Date', u('2010-02-08 16:57+0100')), ('PO-Revision-Date', u('YEAR-MO-DA HO:MI+ZONE')), ('Last-Translator', u('FULL NAME ')), ('Language-Team', u('LANGUAGE ')), ('MIME-Version', u('1.0')), ('Content-Type', u('text/plain; charset=UTF-8')), ('Content-Transfer-Encoding', u('8bit')) ] self.assertEqual(pofile.ordered_metadata(), mdata) def test_unicode1(self): pofile = polib.pofile('tests/test_merge_after.po') f = codecs.open('tests/test_merge_after.po', encoding='utf8') expected = f.read() f.close() self.assertEqual(pofile.__unicode__(), expected) def test_unicode2(self): pofile = polib.pofile('tests/test_iso-8859-15.po') f = codecs.open('tests/test_iso-8859-15.po', encoding='iso-8859-15') expected = f.read() f.close() self.assertEqual(pofile.__unicode__(), expected) def test_str(self): pofile = polib.pofile('tests/test_iso-8859-15.po') if polib.PY3: f = codecs.open('tests/test_iso-8859-15.po', encoding='iso-8859-15') else: f = open('tests/test_iso-8859-15.po') expected = f.read() f.close() self.assertEqual(str(pofile), expected) def test_wrapping(self): pofile = polib.pofile('tests/test_wrap.po', wrapwidth=50) expected = r'''# test wrapping msgid "" msgstr "" msgid "This line will not be wrapped" msgstr "" msgid "" "Some line that contain special characters \" and" " that \t is very, very, very long...: %s \n" msgstr "" msgid "" "Some line that contain special characters " "\"foobar\" and that contains whitespace at the " "end " msgstr "" ''' self.assertEqual(str(pofile), expected) def test_sort(self): a1 = polib.POEntry(msgid='a1', occurrences=[('b.py', 1), ('b.py', 3)]) a2 = polib.POEntry(msgid='a2') a3 = polib.POEntry(msgid='a1', occurrences=[('b.py', 1), ('b.py', 3)], obsolete=True) b1 = polib.POEntry(msgid='b1', occurrences=[('b.py', 1), ('b.py', 3)]) b2 = polib.POEntry(msgid='b2', occurrences=[('d.py', 3), ('b.py', 1)]) c1 = polib.POEntry(msgid='c1', occurrences=[('a.py', 1), ('b.py', 1)]) c2 = polib.POEntry(msgid='c2', occurrences=[('a.py', 1), ('a.py', 3)]) pofile = polib.POFile() pofile.append(b1) pofile.append(a3) pofile.append(a2) pofile.append(a1) pofile.append(b2) pofile.append(c1) pofile.append(c2) pofile.sort() expected = u('''# msgid "" msgstr "" msgid "a2" msgstr "" #: a.py:1 a.py:3 msgid "c2" msgstr "" #: a.py:1 b.py:1 msgid "c1" msgstr "" #: b.py:1 b.py:3 msgid "a1" msgstr "" #: b.py:1 b.py:3 msgid "b1" msgstr "" #: d.py:3 b.py:1 msgid "b2" msgstr "" #~ msgid "a1" #~ msgstr "" ''') self.assertEqual(pofile.__unicode__(), expected) def test_trailing_comment(self): pofile = polib.pofile('tests/test_trailing_comment.po') expected = r'''# msgid "" msgstr "Content-Type: text/plain; charset=UTF-8\n" msgid "foo" msgstr "oof" ''' self.assertEqual(str(pofile), expected) class TestPoFile(unittest.TestCase): """ Tests for PoFile class. """ def test_save_as_mofile(self): """ Test for the POFile.save_as_mofile() method. """ import distutils.spawn msgfmt = distutils.spawn.find_executable('msgfmt') if msgfmt is None: try: return unittest.skip('msgfmt is not installed') except AttributeError: return reffiles = ['tests/test_utf8.po', 'tests/test_iso-8859-15.po'] encodings = ['utf-8', 'iso-8859-15'] for reffile, encoding in zip(reffiles, encodings): fd, tmpfile1 = tempfile.mkstemp() os.close(fd) fd, tmpfile2 = tempfile.mkstemp() os.close(fd) po = polib.pofile(reffile, autodetect_encoding=False, encoding=encoding) po.save_as_mofile(tmpfile1) subprocess.call([msgfmt, '--no-hash', '-o', tmpfile2, reffile]) try: f = open(tmpfile1, 'rb') s1 = f.read() f.close() f = open(tmpfile2, 'rb') s2 = f.read() f.close() self.assertEqual(s1, s2) finally: os.remove(tmpfile1) os.remove(tmpfile2) def test_merge(self): refpot = polib.pofile('tests/test_merge.pot') po = polib.pofile('tests/test_merge_before.po') po.merge(refpot) expected_po = polib.pofile('tests/test_merge_after.po') self.assertEqual(po, expected_po) def test_percent_translated(self): po = polib.pofile('tests/test_pofile_helpers.po') self.assertEqual(po.percent_translated(), 53) po = polib.POFile() self.assertEqual(po.percent_translated(), 100) def test_translated_entries(self): po = polib.pofile('tests/test_pofile_helpers.po') self.assertEqual(len(po.translated_entries()), 7) def test_untranslated_entries(self): po = polib.pofile('tests/test_pofile_helpers.po') self.assertEqual(len(po.untranslated_entries()), 4) def test_fuzzy_entries(self): po = polib.pofile('tests/test_pofile_helpers.po') self.assertEqual(len(po.fuzzy_entries()), 2) def test_obsolete_entries(self): po = polib.pofile('tests/test_pofile_helpers.po') self.assertEqual(len(po.obsolete_entries()), 4) def test_unusual_metadata_location(self): po = polib.pofile('tests/test_unusual_metadata_location.po') self.assertNotEqual(po.metadata, {}) self.assertEqual(po.metadata['Content-Type'], 'text/plain; charset=UTF-8') def test_comment_starting_with_two_hashes(self): po = polib.pofile('tests/test_utf8.po') e = po.find("Some comment starting with two '#'", by='tcomment') self.assertTrue(isinstance(e, polib.POEntry)) def test_word_garbage(self): po = polib.pofile('tests/test_word_garbage.po') e = po.find("Whatever", by='msgid') self.assertTrue(isinstance(e, polib.POEntry)) class TestMoFile(unittest.TestCase): """ Tests for MoFile class. """ def test_dummy_methods(self): """ This is stupid and just here for code coverage. """ mo = polib.MOFile() self.assertEqual(mo.percent_translated(), 100) self.assertEqual(mo.translated_entries(), mo) self.assertEqual(mo.untranslated_entries(), []) self.assertEqual(mo.fuzzy_entries(), []) self.assertEqual(mo.obsolete_entries(), []) def test_save_as_pofile(self): """ Test for the MOFile.save_as_pofile() method. """ fd, tmpfile = tempfile.mkstemp() os.close(fd) mo = polib.mofile('tests/test_utf8.mo', wrapwidth=78) mo.save_as_pofile(tmpfile) try: if polib.PY3: f = open(tmpfile, encoding='utf-8') else: f = open(tmpfile) s1 = f.read() f.close() if polib.PY3: f = open('tests/test_save_as_pofile.po', encoding='utf-8') else: f = open('tests/test_save_as_pofile.po') s2 = f.read() f.close() self.assertEqual(s1, s2) finally: os.remove(tmpfile) def test_msgctxt(self): #import pdb; pdb.set_trace() mo = polib.mofile('tests/test_msgctxt.mo') expected = u('''msgid "" msgstr "Content-Type: text/plain; charset=UTF-8\u005cn" msgctxt "Some message context" msgid "some string" msgstr "une cha\u00eene" msgctxt "Some other message context" msgid "singular" msgid_plural "plural" msgstr[0] "singulier" msgstr[1] "pluriel" ''') self.assertEqual(mo.__unicode__(), expected) def test_invalid_version(self): self.assertRaises(IOError, polib.mofile, 'tests/test_invalid_version.mo') def test_no_header(self): mo = polib.mofile('tests/test_no_header.mo') expected = u('''msgid "" msgstr "" msgid "bar" msgstr "rab" msgid "foo" msgstr "oof" ''') self.assertEqual(mo.__unicode__(), expected) class TestTextWrap(unittest.TestCase): def test_wrap1(self): text = ' Some line that is longer than fifteen characters (whitespace will not be preserved) ' ret = polib.TextWrapper(width=15).wrap(text) expected = [ ' Some line', 'that is longer', 'than fifteen', 'characters', '(whitespace', 'will not be', 'preserved)' ] self.assertEqual(ret, expected) def test_wrap2(self): text = ' Some line that is longer than fifteen characters (whitespace will be preserved) ' ret = polib.TextWrapper(width=15, drop_whitespace=False).wrap(text) expected = [ ' Some line ', 'that is longer ', 'than fifteen ', 'characters ', '(whitespace ', 'will be ', 'preserved) ' ] self.assertEqual(ret, expected) if __name__ == '__main__': unittest.main() polib-1.0.7/tests/test_msgctxt.po0000664000175000017500000000045612440274247016503 0ustar iziizi00000000000000# test file for msgctx in mo files (issue #22) msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" msgctxt "Some message context" msgid "some string" msgstr "une chaîne" msgctxt "Some other message context" msgid "singular" msgid_plural "plural" msgstr[0] "singulier" msgstr[1] "pluriel" polib-1.0.7/tests/test_merge.pot0000664000175000017500000000167112440274247016275 0ustar iziizi00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-13 10:00+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Language-Team: Castellano \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #. this comment will be merged # this comment won't be merged #: some/file.py:1 some/file2.py:2 msgid "This entry is already present in pofile, but with different occurrences" msgstr "" #: some/file.py:3 some/file2.py:4 msgid "This entry is not present in pofile and will be appended" msgstr "" #: utils/timesince.py:12 msgid "year" msgid_plural "years" msgstr[0] "" msgstr[1] "" #: utils/timesince.py:40 msgid "month" msgid_plural "monthes" msgstr[0] "" msgstr[1] "" #: foo/bar.py:30 msgid "" "This entry should be removed after the merge and added again as non " "obsolete entry" msgstr "Some translation" polib-1.0.7/tests/test_iso-8859-15.mo0000664000175000017500000045150512440274247016444 0ustar iziizi000000000000005 jxy '͍/%;Q0g +َ"(58nďӏ,;Ð4Q`qđܑ 0!.R/10 "8O iw Ǔۓ!"7Zr@Ӕ->N]/p=ޕ 121dܖ-$DYk33$ Ebz ט - E$S x ;ՙ #- Q[t| ˚ ܚ "*2!Dfuܛ  (Bbkt | 6Μ!#E M [ hr & ϝ"ٝ*'?O U an  ˞ݞ5:-L1z&ӟ%9Ni${ ĠϠޠ/AThx ȡء   ( 8CU7e ¢ʢӢۢ =2Bu~'-ƣ5*G?`ͤܤ 5-S$ƥ  !?8x5!%ߦ9E?9CAIEH;ب06E8|3-%1Wk&,ժ#4& [@|-0;1m">)>*<i #ҭ:'19Y$9Ѯ4 ;@ |>1ܯ/>-[.Bǰ" /-2]4*ű+%:'`(<E.4-c$<ϳ *&&Q x4δߴ %8HW h t " õϵ޵))9c$l!¶ ʶ"ֶ"51N?O!07K\rX%8<Wu ٹ$)!:\z"к $%#DhoQ +A \}!Ѽ ׼?P! r  .ǽ---$[.ɾؾOOA" C¿  !1SYw3|2!( ."OEr%#-Mf&!9Q)l+@-15NDE2x-7# :>5y&"&$ #E!i=5 ( 7I!, #<&` %D0c$! (4%,Z 71Q!%%%4 Mn?&! . JAX%""9'@(h2*!!)3%]!4:&;<;x)0.Jcu#!8& #4X p/"-#4M/e*(# )Da}> "#Fe{!91%)W1%7A+?m!9T0s4$)N(,w&L0F8]$, 8 Y#z7N MZ$!!3C,w2%*9((b"# *GdB0! 1<R++2$Ot,H,#Pf"#9B|0#'EU,u&+2-M({"'',0].t#,W)l",% )J2c22!;T2i5'#)3H$|%.-Bb$z& '*#:'^%3!+!M*m-$ )EX s $$),)Vn,%='e'$3#X0|.0 -Je}- 7))a$(%$Ej'' (Ia{ 70#<`"(!- 1:6l5.*#1N9*&+,,X+4<+#*O-z2H[n"}6Rr:=B<6<1"Jm4543)]0oD%=[{-AZz'!(E"]1"3H`{,DYm*) 6I b6##)?2i&K "Cb}"& #A e  + % 7 5) _ | ,    )  9 Z p       00 a x     4 .? $n ) 1 ; +.;*j$%,HYp&-& "C`{+ ?)5_6y#29>A81) )3 ])~)*";#T"x")%&!L+n$!0Oh"!98:$s+%15)g'% &$!K%m'%'- 27j$"7W!w1&!!1Sh+87&D^!&0#Im$#* +L_0y20 ++ )W $ /   '!)(!,R!!! !!!-",="j"/"+"'"!# )#0J#{#!#,###( $3$L$9i$$($+$/%A%_%~%!%"%B%%&D&a&{&&)&'& '%''B'j' r'|'''''#' ((*(>(.U((.(6())6)#R)&v) ))))) * *%.*!T* v**(*****(* + )+%3+ Y+ e+&p+&+++)+, &,1, D,O,U,s,,,, ,2,* -5-G-f-|- -- - - ---#-(".K.]. o. y...2. ../ /'/-/$B/0g//'/// /$0%070 H0 U0v0 00!0000' 14171 H1 T1`1}1#1111.1 )242 J2T2t22'22 2 22330393S3n3333393.4E4 M4 Z4 f4t4}4444(455%565 G5 T5 _5i5555 595 66)6D6_6&v66666?7QR7 7777"78 #808P8d8s8 88'8888F9Z9l999 9(999 ::!:>:T:m:0|:;: :> ;I;a;0y;;";;;<'<3G<{<(<<<<$<0 =Q=Z=]=+s====== > >%>>F> ? ? ? +? 5?C?+X?????%?0@G@(W@@1@+@*@%A&?A9fAMA>A)-B5WBAB4B$C6)C"`CC<C?C/D 8D"YD|DDDDDDDE5E2OE)E,E-E F!(F#JFnFF FFF FF FF G GG%G4G;GVGmG }GGG G GG GG GG HH 'H5H :H5HH ~H H HH HH&HH HI I II %I3I:I:@I"{I"I)IIIJJ2JDJHJ1aJ J$J"JJ<KBKUKeKxK KHKCK,L@L]LpLLLLL LLLL L-M-=MkM}MMMMM=M&N ;NIN$hN NNNNNNN N OO%O;ONO`O oO }O OO OOOO P)PIP aPkPPP PPPP#P1P1#Q1UQ1QQQ Q QQQQ RR.R =RHRMR lR wRRRRRRS S"%SHS$YS$~SSSSS SST%TATQT`T hT.tT.T.T.U.0U._U.U.U.UV*V9VKV TV7^VVVVVV VWW+W @WJW[WpWW W%WZW'Y >Y_YnY~Y+Y2YY Z"Z09Z jZ xZ4ZZ.Z[[M;[0[$[([\\1\3]B8]{]$]#]]]]^!^/>^n^^^^0^._/6_1f_0__(_ `#$`H`_` v`$````(`%a#4aXapaadaab$b85bnbbb>b<b/cOcmcc1c5c dd5dTd6odddd-d"e"=e4`e<e&ee"f"9f \f}ff ff"ffg"g8g,Ng {g7g"g"g5h =hKh2[h hh hhh hh"i$i`B:77U,*#4 1>DpL95<#rD!4.K%z=އ  #/DXiz Lj1؈ ")"L$o1ۉ%3J Q ^!;ՊATS Ƌ͋ :!Vcx,܌ 9(H'q''!  3,>k3*+!,*Ny+#>ڏ%!)G^qА#";-^*#ΑK cU˒ڒ10;#l3)ē@!/Qf[["<_Wr ʕ ԕ" $ E8I7&,"+1?]")==(f&(7 R s,3ޙM.`> (FEe;,Gh&0לHKQ1'ϝ09(Gb.Iٞ4#*X9O* :8!s ̠28!S$u"ݡ"))H*r13Ϣ/;33oգ%"Ad;!ޤ798$r,C2`1!Ŧ K/A$q,@ç.+38_/)Ȩ*5(S,|?Q2;AnH>>8.w))Ы'+>2jD9'D"]L#ͭ7; Mn1+)$ 22O' ȯA%+ Qr6+İ+;#Z$~>?7"8Z/8ò#I Gj !ӳ(1#P!t2CɴB %P:vS62<QoܶCS,l#&+"*3.^*@ظMMg(ӹ)0&2WI2ԺN+V8B6$5FZ1FӼ1LjD> ,J1wC-,H7e3(ѿ(?#cN@,1#^$'&& D>":.9D~(F-,B;\F<:W.s44: G;]"$2X/m*+&#'?gAEDT%r6B(C+l5:4 1>5p".(+C-o)0:,3+`&A #9:'t65" 1,)^$!!7!1Y36.*Ym*,G*Iaz> 0,+-X1,A'G_|&%/,)VHs@+BI"6824 g*4%'&6)])"1>>E.E*1$=V&5@ERD)@5HB~M#43=hB10DL;0*E)o7N3j &'7)F&p",#=%U{BCD;_C""<CCFZK)uM$P5J#!")+Uq &-?#m<9<&E#l3#%BU!k7/Ed$$'!,I>v=&1!XzE3!3?1s*O .8!g()38#l +4@F>)+>[2w)!)+Um$,B Ng.(#'D+=p467@R?9& 0G)x6I#7W)u200 ,Q,~6J!-OLe4@'H>p>J=9>w5*9)Q-{ //9*d*~878 St7(8*-&X,+5%C`3/@@$)e-3'=G=12#-V8"+- 3:/n0: 3=0q5.4(<(e&B/$(.M,|#%,5 KV - A X 1k   2 = 1< n *  6 = $C 0h  ( ? 8 HN % % ) $ F2y:D?%*e9! +)BUB<>6+u,<& )24\640*C[(9I!k//G).q)$  .7O=-10bs/ +DJ2:P5 + (=&M+t$  4&CT]9d8 *40'e<  * 3Tf% 917*Oz  */>-n A  Y #f     3 5! E!.S!! ! !2!!"*"?D"""""!"1" +#7#/F#v#y###!#5#&$<$ R$s$5{$$$$'$%*%7I%% %%%%%&"&#4&'X&&&&%&!&4'#8' \'f'v'' '''''4(9(R(i(((((())?) U)Ea)))))!*/**.Z*.*.**I*bI+ ++++) ,4,L,)[,,,,,,.,.-B-!\-K~--%-.'./.2F."y.. .... /%/6=/@t/"/</050:P0'0%000#0#1=@1 ~131111+ 2572 m2z2202%2233"3 43&?3f34L4 j4u4y4 }444444!5%56A59x5 5-55B65I696"676B7HW7C717A8LX8:8-889 G9h9?o9C9>92:)R: |:#:::::(;(C; l;<;3;6;75</m<%<1<<= 3=@=W=f=x=|=%= == ====>:> S>_>n>>> > >'> >> ??!?6?;?2P? ? ? ?? ??2?? @@@'@7@ @@N@U@F[@(@+@=@5AEAKAdAzAAA7A A1A-B0MBL~BBBC&%CLCJaCMC C6D&RD7yD D D D DDDDE%7E0]E0EEE&EF1FAFPPFFF&F-F%G5G>GZGrGGG GGGGGHH1H4FH2{HH HH HHI&!IHIgIvIIIIIIJ& J51J1gJ1J3JJ K K$K3KJKNK"gKKKKK K K%L+LALYLqLLLL#LL2 M2=M pMzMM$MMM0M.NGNbNwNN1N3N7N74OBlO7OBOB*P1mPPPPP PNP8QWQ#hQ QQQ#QR$.RSR qR$R#R$RS*S LMz{8 yi4@KB PJDH?r (Bg&5@?|:8M#[lcknxeGm?E5= GI. >aZ~!],xQyIQ_B^<KAz{!`Is$F)xm&ZCTO"bf>(V"SF;2mY_I[#=vE.(^"RI6VPg)&mtoYPklrYnv _i-&J=  #LA7os=}VwQK ahAbCWPz0)rkCpz\b+tvuU{nPpl)'"-u]dV"O}PD)SUobb!/,q,@Lg9 DUxt uCcB/ R`7,mJ$J~Sg#5o2rQxmX4+<Wl+5 Z4=/hF8A9 8-^h0:7q4n`<7`co2|HH T\HR}L5 |(1xa[$:0]%V M w6/vqi742O+';.jfef2@jb+`tG<vV;f{Xy&7t|'k`;yIh? i&<r\pRweA*0so2q18WMF_$Q$ 1udsW_C-F$n\.N%jH{}%w1Z6sTJL353?Uj]6 K,\ QR8^-2<D3%|ZV.E~ f|YYG3@yN} xM!&w,mf'Yp{P1Ng% F kgNh:hUl3G!ipj#H'9uQZ39S6D3dXO,AEAJB%d[$T6]?k;-d'/Z>bs8XkDa 5r]/M6+(SE1f~z  |J#0 {R!dX=o LG ~K\-wlY/COIewG.tq;r"W[T[ NjcHq\WK@dUEe*^%p(TOnWzN9v:=#a* !a(sc*@0i ]1: jOR.^y>X;)S:4cN9~KC*>S9_ Teq_M<`^> ahc iDetu+"4LB>[*~vB?ln)0*}zU}ug7EX  p'yF (Unimplemented) Last set from Arguments: usage: modified: [not usable on this computer] [not usable with this version of Vim] host name: user name: process ID: Name Args Range Complete Definition # line or: # TO tag FROM line in file/text jump line col file/text # %s History (newest to oldest): # Buffer list: # File marks: # History of marks within files (newest to oldest): # Jumplist (newest first): # Last %sSearch Pattern: ~ # Last Substitute String: $ # Registers: # global variables: (1) Another program may be editing the same file. If this is the case, be careful not to end up with two different instances of the same file when making changes. (2) An edit session for this file crashed. (You might want to write out this file under another name --- Auto-Commands --- --- Global option values --- --- Local option values --- --- Menus --- --- Options --- --- Registers --- --- Signs --- --- Syntax items --- --- Syntax sync items --- --- Terminal codes --- --- Terminal keys --- 16 bit MS-DOS version 32 bit MS-DOS version Arguments recognised by gvim (Athena version): Arguments recognised by gvim (GTK+ version): Arguments recognised by gvim (Motif version): Arguments recognised by gvim (RISC OS version): Arguments recognised by gvim (neXtaw version): Big version Cannot create pipes Cannot execute shell Cannot execute shell sh Cannot fork Command terminated Compiled Found a swap file by the name " Huge version Included patches: MS-Windows 16 bit version MS-Windows 16/32 bit GUI version MS-Windows 32 bit GUI version MS-Windows 32 bit console version MacOS X (unix) version MacOS X version MacOS version Maybe no changes were made or Vim did not update the swap file. More info with: "vim -h" Normal version RISC OS version Sending message to terminate child process. Small version Tiny version Vim: Got X error WARNING: Original file may be lost or damaged [bytes] total alloc-freed %lu-%lu, in use %lu, peak use %lu change line col text mark line col file/text shell returned syncing on items for Vim defaults for two modes dated: owned by: [cannot be opened] [cannot be read] [does not look like a Vim swap file] [from Vim version 3.0] file name: -- none -- NEWER than swap file! user exrc file: " user vimrc file: " If this is the case, use ":recover" or "vim -r If you did this already, delete the swap file " Quit, or continue with caution. line=%ld id=%d name=%s system menu file: " user gvimrc file: " In current directory: In directory Using specified name: dated: host name: system vimrc file: " # pri kind tag (Already listed) 2nd user exrc file: " DEBUG BUILD Features included (+) or not (-): NOT FOUND Using tag with different case! fall-back for $VIM: " system gvimrc file: " # pid database name prepend path (Interrupted) (NOT FOUND) (includes previously listed match) (insert) (insert) Scroll (^E/^Y) (lang) (line deleted) (not supported) (paste) (replace) (replace) Scroll (^E/^Y) (still running) (vreplace) 2nd user vimrc file: " 3rd user vimrc file: " < "%.*s" Adding Arabic CONVERSION ERROR Command-line completion (^V^N^P) Copy %d of %d Definition completion (^D^N^P) Dictionary completion (^K^N^P) FAILED File name completion (^F^N^P) Hebrew INSERT Keyword Local completion (^N^P) Keyword completion (^N^P) Omni completion (^O^N^P) Path pattern completion (^N^P) REPLACE REVERSE SELECT SELECT BLOCK SELECT LINE SPACE/d/j: screen/page/line down, b/u/k: up, q: quit Spelling suggestion (s^N^P) Tag completion (^]^N^P) Thesaurus completion (^T^N^P) User defined completion (^U^N^P) VISUAL VISUAL BLOCK VISUAL LINE VREPLACE Whole line completion (^L^N^P) [Modified] [a] [w] ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) appended cannot be used on this computer. cannot be used with this version of Vim. f-b for $VIMRUNTIME: " in Win32s mode info kind file line breaks lines before top line marks on %ld lines on 1 line or more returned vim [arguments] with OLE support written" to avoid this message. " to recover the changes (see ":help recovery"). " already exists!# This viminfo file was generated by Vim %s. # Value of 'encoding' when this file was written # You may edit it if you're careful! %-5s: %-30s (Usage: %s)%3d %s %s line %ld%<%f%h%m%=Page %N%d buffers deleted%d buffers unloaded%d buffers wiped out%d duplicate word(s) in %s%d files to edit %d more files to edit. Quit anyway?%d of %d edited%ld %s; %s #%ld %s%ld Cols; %ld characters%ld fewer lines%ld lines %sed %d times%ld lines %sed 1 time%ld lines --%d%%--%ld lines changed%ld lines filtered%ld lines indented %ld lines moved%ld lines to indent... %ld lines yanked%ld lines, %ld matches%ld more lines%ld seconds ago%ld substitutions%s Auto commands for "%s"%s aborted%s discarded%s line %ld%s made pending%s resumed%s returning #%ld%s returning %s%s value differs from what is used in another .aff file%s, line %ld%sviminfo: %s in line: &Cancel&Dismiss&Filter&Help&OK&OK &Cancel&OK &Load File&Ok&Open Read-Only &Edit anyway &Recover &Delete it &Quit &Abort&Open Read-Only &Edit anyway &Recover &Quit &Abort&Replace&Undo&Yes &No&Yes &No &Cancel&Yes &No Save &All &Discard All &Cancel' not known. Available builtin terminals are:'columns' is not 80, cannot execute external commands'dictionary' option is empty'history' option is zero'readonly' option is set for "%s". Do you wish to write anyway?'thesaurus' option is empty(%d of %d)%s%s: (+%ld for BOM)(Interrupted) (Invalid)+ Start at end of file+-%s%3ld lines: +--%3ld lines folded + Start at line +reverse Don't use reverse video (also: +rv), or the file has been damaged.- read text from stdin-- Only file names after this-- More ---- Searching...--- Included files --Deleted----No lines in buffer----cmd Execute before loading any vimrc file--cmd argument--columns Initial width of window in columns--literal Don't expand wildcards--noplugin Don't load plugin scripts--remote Edit in a Vim server if possible--remote-expr Evaluate in a Vim server and print result--remote-send Send to a Vim server and exit--remote-silent Same, don't complain if there is no server--remote-tab As --remote but open tab page for each file--remote-wait As --remote but wait for files to have been edited--remote-wait-silent Same, don't complain if there is no server--role Set a unique role to identify the main window--rows Initial height of window in rows--serverlist List available Vim server names and exit--servername Send to/become the Vim server --socketid Open Vim inside another GTK widget--version Print version information and exit-A start in Arabic mode-C Compatible with Vi: 'compatible'-D Debugging mode-F Start in Farsi mode-H Start in Hebrew mode-L Same as -r-M Modifications in text not allowed-N Not fully Vi compatible: 'nocompatible'-O[N] Like -o but split vertically-P Open Vim inside parent application-R Readonly mode (like "view")-S Source file after loading the first file-T Set terminal type to -U Use instead of any .gvimrc-V[N] Verbose level-W Write all typed commands to file -X Do not connect to X server-Z Restricted mode (like "rvim")-b Binary mode-background Use for the background (also: -bg)-boldfont Use for bold text-borderwidth Use a border width of (also: -bw)-c Execute after loading the first file-c argument-d Diff mode (like "vimdiff")-dev Use for I/O-display Connect vim to this particular X-server-display Run vim on -display Run vim on (also: --display)-e Ex mode (like "ex")-f Don't use newcli to open window-f or --nofork Foreground: Don't fork when starting GUI-font Use for normal text (also: -fn)-foreground Use for normal text (also: -fg)-g Run using GUI (like "gvim")-geometry Use for initial geometry (also: -geom)-h or --help Print Help (this message) and exit-i Use instead of .viminfo-iconic Start vim iconified-italicfont Use for italic text-l Lisp mode-m Modifications (writing files) not allowed-menuheight Use a menu bar height of (also: -mh)-n No swap file, use memory only-name Use resource as if vim was -o[N] Open N windows (default: one for each file)-p[N] Open N tab pages (default: one for each file)-q [errorfile] edit file with first error-r List swap files and exit-r (with file name) Recover crashed session-register Register this gvim for OLE-reverse Use reverse video (also: -rv)-s Silent (batch) mode (only for "ex")-s Read Normal mode commands from file -scrollbarwidth Use a scrollbar width of (also: -sw)-t tag edit file where tag is defined-u Use instead of any .vimrc-unregister Unregister gvim for OLE-v Vi mode (like "vi")-w Append all typed commands to file -x Edit encrypted files-xrm Set the specified resource-y Easy mode (like "evim", modeless)/ line ignored in %s line %d: %s/encoding= line after word ignored in %s line %d: %s1 buffer deleted1 buffer unloaded1 buffer wiped out1 character1 line %sed %d times1 line %sed 1 time1 line --%d%%--1 line changed1 line indented 1 line less1 line moved1 line yanked1 line, 1 match1 more file to edit. Quit anyway?1 more line1 substitution2nd user gvimrc file: "3rd user gvimrc file: ": Send expression failed. : Send failed. : Send failed. Trying to execute locally ; match <%s>%s%s %d, Hex %02x, Octal %03o > %d, Hex %04x, Octal %o> %d, Hex %08x, Octal %o??? from here until ???END lines may be messed up??? from here until ???END lines may have been inserted/deleted???: Sorry, this command is disabled, the MzScheme library could not be loaded.???BLOCK MISSING???EMPTY BLOCK???END???LINE COUNT WRONG???LINES MISSING???MANY LINES MISSINGANCHOR_BUF_SIZE too small.Add a new databaseAdded cscope database %sAffix also used for BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/NOSUGGEST in %s line %d: %sAffix name too long in %s line %d: %sAllAll cscope databases resetAll included files were foundAlready at newest changeAlready at oldest changeAlready only one tab pageAlready only one windowAppend FileArgument missing afterAt lineAttempt to open script file again: "Back at originalBackwards range given, OK to swapBecome a registered Vim user!Beep!Before byte %ldBotBoth SAL and SOFO lines in %sBreakpoint in "%s%s" line %ldBroken condition in %s line %d: %sBrowse classCOMPOUNDSYLMAX used without SYLLABLECalling shell to execute: "%s"Can't find temp file for conversionCancelCannot connect to NetbeansCannot connect to Netbeans #2Cannot connect to SNiFF+. Check environment (sniffemacs must be found in $PATH). Cannot create Cannot execute Cannot open NIL: Cannot open file "%s"Cannot open for reading: "Cannot open for script output: "Cannot source a directory: "%s"Change "%.*s" to:Choice number ( cancels): CloseClose tabCol %s of %s; Line %ld of %ld; Word %ld of %ld; Byte %ld of %ldCol %s of %s; Line %ld of %ld; Word %ld of %ld; Char %ld of %ld; Byte %ld of %ldCommand LineCompilation: Compiler: Compressed %d of %d nodes; %d (%d%%) remainingCompressing word tree...Conversion failure for word in %s line %d: %sConversion in %s not supportedConversion in %s not supported: from %s to %sConversion with 'charconvert' failedCould not fix up function pointers to the DLL!Could not load vim32.dll!Cscope tag: %sCurrent %slanguage: "%s"Defining COMPOUNDFORBIDFLAG after PFX item may give wrong results in %s line %dDefining COMPOUNDPERMITFLAG after PFX item may give wrong results in %s line %dDelete the .swp file afterwards. Diff with VimDifferent combining flag in continued affix block in %s line %d: %sDirectionDirectoriesDirectory *.nothing Do you really want to write to itDone!Double ; in list of variablesDownDuplicate /encoding= line ignored in %s line %d: %sDuplicate /regions= line ignored in %s line %d: %sDuplicate affix in %s line %d: %sDuplicate character in MAP in %s line %dDuplicate word in %s line %d: %sE100: No other buffer in diff modeE101: More than two buffers in diff mode, don't know which one to useE102: Can't find buffer "%s"E103: Buffer "%s" is not in diff modeE104: Escape not allowed in digraphE105: Using :loadkeymap not in a sourced fileE107: Missing braces: %sE108: No such variable: "%s"E109: Missing ':' after '?'E10: \ should be followed by /, ? or &E110: Missing ')'E111: Missing ']'E112: Option name missing: %sE113: Unknown option: %sE114: Missing quote: %sE115: Missing quote: %sE117: Unknown function: %sE118: Too many arguments for function: %sE119: Not enough arguments for function: %sE11: Invalid in command-line window; executes, CTRL-C quitsE120: Using not in a script context: %sE121: Undefined variable: %sE122: Function %s already exists, add ! to replace itE124: Missing '(': %sE125: Illegal argument: %sE126: Missing :endfunctionE128: Function name must start with a capital or contain a colon: %sE129: Function name requiredE12: Command not allowed from exrc/vimrc in current dir or tag searchE130: Unknown function: %sE131: Cannot delete function %s: It is in useE132: Function call depth is higher than 'maxfuncdepth'E133: :return not inside a functionE134: Move lines into themselvesE135: *Filter* Autocommands must not change current bufferE136: viminfo: Too many errors, skipping rest of fileE137: Viminfo file is not writable: %sE138: Can't write viminfo file %s!E139: File is loaded in another bufferE13: File exists (add ! to override)E140: Use ! to write partial bufferE141: No file name for buffer %ldE142: File not written: Writing is disabled by 'write' optionE143: Autocommands unexpectedly deleted new buffer %sE144: non-numeric argument to :zE145: Shell commands not allowed in rvimE146: Regular expressions can't be delimited by lettersE147: Cannot do :global recursiveE148: Regular expression missing from globalE149: Sorry, no help for %sE14: Invalid addressE150: Not a directory: %sE152: Cannot open %s for writingE153: Unable to open %s for readingE154: Duplicate tag "%s" in file %s/%sE155: Unknown sign: %sE156: Missing sign nameE157: Invalid sign ID: %ldE158: Invalid buffer name: %sE159: Missing sign numberE15: Invalid expression: %sE160: Unknown sign command: %sE161: Breakpoint not found: %sE162: No write since last change for buffer "%s"E163: There is only one file to editE164: Cannot go before first fileE165: Cannot go beyond last fileE166: Can't open linked file for writingE167: :scriptencoding used outside of a sourced fileE168: :finish used outside of a sourced fileE169: Command too recursiveE16: Invalid rangeE170: Missing :endforE170: Missing :endwhileE171: Missing :endifE172: Only one file name allowedE173: %ld more files to editE173: 1 more file to editE174: Command already exists: add ! to replace itE175: No attribute specifiedE176: Invalid number of argumentsE177: Count cannot be specified twiceE178: Invalid default value for countE179: argument required for -completeE17: "%s" is a directoryE180: Invalid complete value: %sE181: Invalid attribute: %sE182: Invalid command nameE183: User defined commands must start with an uppercase letterE184: No such user-defined command: %sE185: Cannot find color scheme %sE186: No previous directoryE187: UnknownE188: Obtaining window position not implemented for this platformE189: "%s" exists (add ! to override)E18: Unexpected characters in :letE190: Cannot open "%s" for writingE191: Argument must be a letter or forward/backward quoteE192: Recursive use of :normal too deepE193: :endfunction not inside a functionE194: No alternate file name to substitute for '#'E195: Cannot open viminfo file for readingE196: No digraphs in this versionE197: Cannot set language to "%s"E198: cmd_pchar beyond the command lengthE199: Active window or buffer deletedE19: Mark has invalid line numberE200: *ReadPre autocommands made the file unreadableE201: *ReadPre autocommands must not change current bufferE202: Conversion made file unreadable!E203: Autocommands deleted or unloaded buffer to be writtenE204: Autocommand changed number of lines in unexpected wayE205: Patchmode: can't save original fileE206: patchmode: can't touch empty original fileE207: Can't delete backup fileE208: Error writing to "%s"E209: Error closing "%s"E20: Mark not setE210: Error reading "%s"E211: File "%s" no longer availableE212: Can't open file for writingE213: Cannot convert (add ! to write without conversion)E214: Can't find temp file for writingE215: Illegal character after *: %sE216: No such event: %sE216: No such group or event: %sE217: Can't execute autocommands for ALL eventsE218: autocommand nesting too deepE219: Missing {.E21: Cannot make changes, 'modifiable' is offE220: Missing }.E222: Add to read bufferE223: recursive mappingE224: global abbreviation already exists for %sE225: global mapping already exists for %sE226: abbreviation already exists for %sE227: mapping already exists for %sE228: makemap: Illegal modeE229: Cannot start the GUIE22: Scripts nested too deepE230: Cannot read from "%s"E231: 'guifontwide' invalidE232: Cannot create BalloonEval with both message and callbackE233: cannot open displayE234: Unknown fontset: %sE235: Unknown font: %sE236: Font "%s" is not fixed-widthE237: Printer selection failedE238: Print error: %sE239: Invalid sign text: %sE23: No alternate fileE240: No connection to Vim serverE241: Unable to send to %sE243: Argument not supported: "-%s"; Use the OLE version.E244: Illegal charset name "%s" in font name "%s"E245: Illegal char '%c' in font name "%s"E246: FileChangedShell autocommand deleted bufferE247: no registered server named "%s"E248: Failed to send command to the destination programE24: No such abbreviationE250: Fonts for the following charsets are missing in fontset %s:E251: VIM instance registry property is badly formed. Deleted!E252: Fontset name: %sE253: Fontset name: %s E254: Cannot allocate color %sE255: Couldn't read in sign data!E256: Hangul automata ERRORE257: cstag: tag not foundE258: Unable to send to clientE259: no matches found for cscope query %s of %sE25: GUI cannot be used: Not enabled at compile timeE261: cscope connection %s not foundE262: error reading cscope connection %ldE263: Sorry, this command is disabled, the Python library could not be loaded.E264: Python: Error initialising I/O objectsE265: $_ must be an instance of StringE266: Sorry, this command is disabled, the Ruby library could not be loaded.E267: unexpected returnE268: unexpected nextE269: unexpected breakE26: Hebrew cannot be used: Not enabled at compile time E270: unexpected redoE271: retry outside of rescue clauseE272: unhandled exceptionE273: unknown longjmp status %dE274: Sniff: Error during read. DisconnectedE275: Unknown SNiFF+ request: %sE276: Error connecting to SNiFF+E277: Unable to read a server replyE278: SNiFF+ not connectedE279: Not a SNiFF+ bufferE27: Farsi cannot be used: Not enabled at compile time E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim.orgE281: TCL ERROR: exit code is not int!? Please report this to vim-dev@vim.orgE282: Cannot read from "%s"E283: No marks matching "%s"E284: Cannot set IC valuesE285: Failed to create input contextE286: Failed to open input methodE287: Warning: Could not set destroy callback to IME288: input method doesn't support any styleE289: input method doesn't support my preedit typeE28: No such highlight group name: %sE290: over-the-spot style requires fontsetE291: Your GTK+ is older than 1.2.3. Status area disabledE292: Input Method Server is not runningE293: block was not lockedE294: Seek error in swap file readE295: Read error in swap fileE296: Seek error in swap file writeE297: Write error in swap fileE298: Didn't get block nr 0?E298: Didn't get block nr 1?E298: Didn't get block nr 2?E299: Perl evaluation forbidden in sandbox without the Safe moduleE29: No inserted text yetE300: Swap file already exists (symlink attack?)E301: Oops, lost the swap file!!!E302: Could not rename swap fileE303: Unable to open swap file for "%s", recovery impossibleE304: ml_upd_block0(): Didn't get block 0??E305: No swap file found for %sE306: Cannot open %sE307: %s does not look like a Vim swap fileE308: Warning: Original file may have been changedE309: Unable to read block 1 from %sE30: No previous command lineE310: Block 1 ID wrong (%s not a .swp file?)E311: Recovery InterruptedE312: Errors detected while recovering; look for lines starting with ???E313: Cannot preserve, there is no swap fileE314: Preserve failedE315: ml_get: invalid lnum: %ldE316: ml_get: cannot find line %ldE317: pointer block id wrongE317: pointer block id wrong 2E317: pointer block id wrong 3E317: pointer block id wrong 4E318: Updated too many blocks?E319: Sorry, the command is not available in this versionE31: No such mappingE320: Cannot find line %ldE321: Could not reload "%s"E322: line number out of range: %ld past the endE323: line count wrong in block %ldE324: Can't open PostScript output fileE325: ATTENTIONE326: Too many swap files foundE327: Part of menu-item path is not sub-menuE328: Menu only exists in another modeE329: No menu "%s"E32: No file nameE330: Menu path must not lead to a sub-menuE331: Must not add menu items directly to menu barE332: Separator cannot be part of a menu pathE333: Menu path must lead to a menu itemE334: Menu not found: %sE335: Menu not defined for %s modeE336: Menu path must lead to a sub-menuE337: Menu not found - check menu namesE338: Sorry, no file browser in console modeE339: Pattern too longE33: No previous substitute regular expressionE340: Line is becoming too longE341: Internal error: lalloc(%ld, )E342: Out of memory! (allocating %lu bytes)E343: Invalid path: '**[number]' must be at the end of the path or be followed by '%s'.E344: Can't find directory "%s" in cdpathE345: Can't find file "%s" in pathE346: No more directory "%s" found in cdpathE347: No more file "%s" found in pathE348: No string under cursorE349: No identifier under cursorE34: No previous commandE350: Cannot create fold with current 'foldmethod'E351: Cannot delete fold with current 'foldmethod'E352: Cannot erase folds with current 'foldmethod'E353: Nothing in register %sE354: Invalid register name: '%s'E355: Unknown option: %sE356: get_varp ERRORE357: 'langmap': Matching character missing for %sE358: 'langmap': Extra characters after semicolon: %sE359: Screen mode setting not supportedE35: No previous regular expressionE360: Cannot execute shell with -f optionE363: pattern uses more memory than 'maxmempattern'E364: Library call failed for "%s()"E365: Failed to print PostScript fileE366: Invalid 'osfiletype' option - using TextE367: No such group: "%s"E369: invalid item in %s%%[]E36: Not enough roomE370: Could not load library %sE371: Command not foundE372: Too many %%%c in format stringE373: Unexpected %%%c in format stringE374: Missing ] in format stringE375: Unsupported %%%c in format stringE376: Invalid %%%c in format string prefixE377: Invalid %%%c in format stringE378: 'errorformat' contains no patternE379: Missing or empty directory nameE37: No write since last change (add ! to override)E380: At bottom of quickfix stackE381: At top of quickfix stackE382: Cannot write, 'buftype' option is setE383: Invalid search string: %sE384: search hit TOP without match for: %sE385: search hit BOTTOM without match for: %sE386: Expected '?' or '/' after ';'E387: Match is on current lineE388: Couldn't find definitionE389: Couldn't find patternE38: Null argumentE390: Illegal argument: %sE391: No such syntax cluster: %sE392: No such syntax cluster: %sE393: group[t]here not accepted hereE394: Didn't find region item for %sE395: contains argument not accepted hereE396: containedin argument not accepted hereE397: Filename requiredE398: Missing '=': %sE399: Not enough arguments: syntax region %sE39: Number expectedE400: No cluster specifiedE401: Pattern delimiter not found: %sE402: Garbage after pattern: %sE403: syntax sync: line continuations pattern specified twiceE404: Illegal arguments: %sE405: Missing equal sign: %sE406: Empty argument: %sE407: %s not allowed hereE408: %s must be first in contains listE409: Unknown group name: %sE40: Can't open errorfile %sE410: Invalid :syntax subcommand: %sE411: highlight group not found: %sE412: Not enough arguments: ":highlight link %s"E413: Too many arguments: ":highlight link %s"E414: group has settings, highlight link ignoredE415: unexpected equal sign: %sE416: missing equal sign: %sE417: missing argument: %sE418: Illegal value: %sE419: FG color unknownE41: Out of memory!E420: BG color unknownE421: Color name or number not recognized: %sE422: terminal code too long: %sE423: Illegal argument: %sE424: Too many different highlighting attributes in useE425: Cannot go before first matching tagE426: tag not found: %sE427: There is only one matching tagE428: Cannot go beyond last matching tagE429: File "%s" does not existE42: No ErrorsE430: Tag file path truncated for %s E431: Format error in tags file "%s"E432: Tags file not sorted: %sE433: No tags fileE434: Can't find tag patternE435: Couldn't find tag, just guessing!E436: No "%s" entry in termcapE437: terminal capability "cm" requiredE438: u_undo: line numbers wrongE439: undo list corruptE43: Damaged match stringE440: undo line missingE441: There is no preview windowE442: Can't split topleft and botright at the same timeE443: Cannot rotate when another window is splitE444: Cannot close last windowE445: Other window contains changesE446: No file name under cursorE447: Can't find file "%s" in pathE448: Could not load library function %sE449: Invalid expression receivedE44: Corrupted regexp programE455: Error writing to PostScript output fileE456: Can't find PostScript resource file "%s.ps"E456: Can't find PostScript resource file "cidfont.ps"E456: Can't find PostScript resource file "prolog.ps"E456: Can't open file "%s"E457: Can't read PostScript resource file "%s"E459: Cannot go back to previous directoryE45: 'readonly' option is set (add ! to override)E460: The resource fork would be lost (add ! to override)E461: Illegal variable name: %sE462: Could not prepare for reloading "%s"E463: Region is guarded, cannot modifyE464: Ambiguous use of user-defined commandE465: :winsize requires two number argumentsE466: :winpos requires two number argumentsE467: Custom completion requires a function argumentE468: Completion argument only allowed for custom completionE469: invalid cscopequickfix flag %c for %cE46: Cannot change read-only variable "%s"E46: Cannot set variable in the sandbox: "%s"E470: Command abortedE471: Argument requiredE472: Command failedE473: Internal errorE474: Invalid argumentE475: Invalid argument: %sE476: Invalid commandE477: No ! allowedE478: Don't panic!E479: No matchE47: Error while reading errorfileE480: No match: %sE481: No range allowedE482: Can't create file %sE483: Can't get temp file nameE484: Can't open file %sE485: Can't read file %sE486: Pattern not found: %sE487: Argument must be positiveE488: Trailing charactersE48: Not allowed in sandboxE490: No fold foundE492: Not an editor commandE493: Backwards range givenE494: Use w or w>>E495: no autocommand file name to substitute for ""E496: no autocommand buffer number to substitute for ""E497: no autocommand match name to substitute for ""E498: no :source file name to substitute for ""E499: Empty file name for '%' or '#', only works with ":p:h"E49: Invalid scroll sizeE500: Evaluates to an empty stringE501: At end-of-fileE505: E506: Can't write to backup file (add ! to override)E507: Close error for backup file (add ! to override)E508: Can't read file for backup (add ! to override)E509: Cannot create backup file (add ! to override)E50: Too many \z(E510: Can't make backup file (add ! to override)E512: Close failedE513: write error, conversion failed (make 'fenc' empty to override)E514: write error (file system full?)E515: No buffers were unloadedE516: No buffers were deletedE517: No buffers were wiped outE518: Unknown optionE519: Option not supportedE51: Too many %s(E520: Not allowed in a modelineE521: Number required after =E522: Not found in termcapE523: Not allowed hereE524: Missing colonE525: Zero length stringE526: Missing number after <%s>E527: Missing commaE528: Must specify a ' valueE529: Cannot set 'term' to empty stringE52: Unmatched \z(E530: Cannot change term in GUIE531: Use ":gui" to start the GUIE533: can't select wide fontE534: Invalid wide fontE535: Illegal character after <%c>E536: comma requiredE537: 'commentstring' must be empty or contain %sE538: No mouse supportE539: Illegal character <%s>E53: Unmatched %s%%(E540: Unclosed expression sequenceE541: too many itemsE542: unbalanced groupsE543: Not a valid codepageE544: Keymap file not foundE545: Missing colonE546: Illegal modeE547: Illegal mouseshapeE548: digit expectedE549: Illegal percentageE54: Unmatched %s(E550: Missing colonE551: Illegal componentE552: digit expectedE553: No more itemsE554: Syntax error in %s{...}E555: at bottom of tag stackE556: at top of tag stackE557: Cannot open termcap fileE558: Terminal entry not found in terminfoE559: Terminal entry not found in termcapE55: Unmatched %s)E560: Usage: cs[cope] %sE561: unknown cscope search typeE562: Usage: cstag E563: stat errorE563: stat(%s) error: %dE564: %s is not a directory or a valid cscope databaseE566: Could not create cscope pipesE567: no cscope connectionsE568: duplicate cscope database not addedE569: maximum number of cscope connections reachedE570: fatal error in cs_manage_matchesE571: Sorry, this command is disabled: the Tcl library could not be loaded.E572: exit code %dE573: Invalid server id used: %sE574: Unknown register type %dE579: :if nesting too deepE580: :endif without :ifE581: :else without :ifE582: :elseif without :ifE583: multiple :elseE584: :elseif after :elseE585: :while/:for nesting too deepE586: :continue without :while or :forE587: :break without :while or :forE588: :endfor without :forE588: :endwhile without :whileE589: 'backupext' and 'patchmode' are equalE590: A preview window already existsE591: 'winheight' cannot be smaller than 'winminheight'E592: 'winwidth' cannot be smaller than 'winminwidth'E593: Need at least %d linesE594: Need at least %d columnsE595: contains unprintable or wide characterE596: Invalid font(s)E597: can't select fontsetE598: Invalid fontsetE599: Value of 'imactivatekey' is invalidE59: invalid character after %s@E600: Missing :endtryE601: :try nesting too deepE602: :endtry without :tryE603: :catch without :tryE604: :catch after :finallyE605: Exception not caught: %sE606: :finally without :tryE607: multiple :finallyE608: Cannot :throw exceptions with 'Vim' prefixE609: Cscope error: %sE60: Too many complex %s{...}sE610: Can't load Zap font '%s'E611: Can't use font %sE612: Too many signs definedE613: Unknown printer font: %sE614: vim_SelFile: can't return to current directoryE615: vim_SelFile: can't get current directoryE616: vim_SelFile: can't get font %sE617: Cannot be changed in the GTK+ 2 GUIE618: file "%s" is not a PostScript resource fileE619: file "%s" is not a supported PostScript resource fileE61: Nested %s*E620: Unable to convert to print encoding "%s"E621: "%s" resource file has wrong versionE622: Could not fork for cscopeE623: Could not spawn cscope processE624: Can't open file "%s"E625: cannot open cscope database: %sE626: cannot get cscope database informationE62: Nested %s%cE63: invalid use of \_E64: %s%c follows nothingE655: Too many symbolic links (cycle?)E658: NetBeans connection lost for buffer %ldE659: Cannot invoke Python recursivelyE65: Illegal back referenceE661: Sorry, no '%s' help for %sE662: At start of changelistE663: At end of changelistE664: changelist is emptyE665: Cannot start GUI, no valid font foundE666: compiler not supported: %sE667: Fsync failedE668: Wrong access mode for NetBeans connection info file: "%s"E669: Unprintable character in group nameE66: \z( not allowed hereE670: Mix of help file encodings within a language: %sE671: Cannot find window title "%s"E672: Unable to open window inside MDI applicationE673: Incompatible multi-byte encoding and character set.E674: printmbcharset cannot be empty with multi-byte encoding.E675: No default font specified for multi-byte printing.E676: No matching autocommands for acwrite bufferE677: Error writing temp fileE678: Invalid character after %s%%[dxouU]E679: recursive loop loading syncolor.vimE67: \z1 et al. not allowed hereE680: : invalid buffer number E681: Buffer is not loadedE682: Invalid search pattern or delimiterE683: File name missing or invalid patternE684: list index out of range: %ldE685: Internal error: %sE686: Argument of %s must be a ListE687: Less targets than List itemsE688: More targets than List itemsE689: Can only index a List or DictionaryE68: Invalid character after \zE690: Missing "in" after :forE691: Can only compare List with ListE692: Invalid operation for ListsE693: Can only compare Funcref with FuncrefE694: Invalid operation for FuncrefsE695: Cannot index a FuncrefE696: Missing comma in List: %sE697: Missing end of List ']': %sE698: variable nested too deep for making a copyE699: Too many argumentsE69: Missing ] after %s%%[E700: Unknown function: %sE701: Invalid type for len()E702: Sort compare function failedE703: Using a Funcref as a numberE704: Funcref variable name must start with a capital: %sE705: Variable name conflicts with existing function: %sE706: Variable type mismatch for: %sE708: [:] must come lastE709: [:] requires a List valueE70: Empty %s%%[]E710: List value has more items than targetE711: List value has not enough itemsE712: Argument of %s must be a List or DictionaryE713: Cannot use empty key for DictionaryE714: List requiredE715: Dictionary requiredE716: Key not present in Dictionary: %sE717: Dictionary entry already existsE718: Funcref requiredE719: Cannot use [:] with a DictionaryE71: Invalid character after %s%%E720: Missing colon in Dictionary: %sE721: Duplicate key in Dictionary: "%s"E722: Missing comma in Dictionary: %sE723: Missing end of Dictionary '}': %sE724: variable nested too deep for displayingE725: Calling dict function without Dictionary: %sE726: Stride is zeroE727: Start past endE728: Using a Dictionary as a numberE729: using Funcref as a StringE72: Close error on swap fileE730: using List as a StringE731: using Dictionary as a StringE732: Using :endfor with :whileE733: Using :endwhile with :forE734: Wrong variable type for %s=E735: Can only compare Dictionary with DictionaryE736: Invalid operation for DictionaryE737: Key already exists: %sE738: Can't list variables for %sE739: Cannot create directory: %sE73: tag stack emptyE741: Value is locked: %sE742: Cannot change value of %sE743: variable nested too deep for (un)lockE744: NetBeans does not allow changes in read-only filesE745: Using a List as a numberE746: Function name does not match script file name: %sE747: Cannot change directory, buffer is modifed (add ! to override)E748: No previously used registerE749: empty bufferE74: Command too complexE750: First use :profile start E751: Output file name must not have region nameE752: No previous spell replacementE753: Not found: %sE754: Only up to 8 regions supportedE755: Invalid region in %sE756: Spell checking is not enabledE757: This does not look like a spell fileE758: Truncated spell fileE759: Format error in spell fileE75: Name too longE760: No word count in %sE761: Format error in affix file FOL, LOW or UPPE762: Character in FOL, LOW or UPP is out of rangeE763: Word characters differ between spell filesE764: Option '%s' is not setE765: 'spellfile' does not have %ld entriesE766: Insufficient arguments for printf()E767: Too many arguments to printf()E768: Swap file exists: %s (:silent! overrides)E769: Missing ] after %s[E76: Too many [E770: Unsupported section in spell fileE771: Old spell file, needs to be updatedE772: Spell file is for newer version of VimE773: Symlink loop for "%s"E774: 'operatorfunc' is emptyE775: Eval feature not availableE776: No location listE777: String or List expectedE778: This does not look like a .sug file: %sE779: Old .sug file, needs to be updated: %sE77: Too many file namesE780: .sug file is for newer version of Vim: %sE781: .sug file doesn't match .spl file: %sE782: error while reading .sug file: %sE783: duplicate char in MAP entryE784: Cannot close last tab pageE785: complete() can only be used in Insert modeE786: Range not allowedE787: Buffer changed unexpectedlyE788: Not allowed to edit another buffer nowE789: Missing ']': %sE78: Unknown markE790: undojoin is not allowed after undoE791: Empty keymap entryE79: Cannot expand wildcardsE800: Arabic cannot be used: Not enabled at compile time E80: Error while writingE81: Using not in a script contextE82: Cannot allocate any buffer, exiting...E83: Cannot allocate buffer, using other one...E84: No modified buffer foundE85: There is no listed bufferE86: Buffer %ld does not existE87: Cannot go beyond last bufferE88: Cannot go before first bufferE89: No write since last change for buffer %ld (add ! to override)E90: Cannot unload last bufferE91: 'shell' option is emptyE92: Buffer %ld not foundE93: More than one match for %sE94: No matching buffer for %sE95: Buffer with this name already existsE96: Can not diff more than %ld buffersE97: Cannot create diffsE98: Cannot read diff outputE99: Current buffer is not in diff modeERROR: Edit FileEdit File in new windowEdit with &VimEdit with &multiple VimsEdit with existing Vim - Edit with single &VimEdits the selected file(s) with VimEncoding:End of functionEnd of sourced fileEnter encryption key: Enter number of swap file to use (0 to quit): Enter same key again: Entering Debug mode. Type "cont" to continue.Entering Ex mode. Type "visual" to go to Normal mode.ErrorError and interruptError creating process: Check if gvim is in your path!Error detected while processing %s:Estimated runtime memory use: %d bytesExceptionException caught: %sException discarded: %sException finished: %sException thrown: %sExecuting %sExpected MAP count in %s line %dExpected REP(SAL) count in %s line %dExpected Y or N in %s line %d: %sExpressionExternal submatches: FLAG after using flags in %s line %d: %sFile "%s" does not existFile preservedFilesFilterFind & Replace (use '\\' to find a '\')Find &NextFind NextFind string (use '\\' to find a '\')Find symbolFind what:First duplicate word in %s line %d: %sFlag is not a number in %s line %d: %sFont '%s' is not fixed-widthFont SelectionFont%ld width is not twice that of font0 Font0 width: %ld Font0: %s Font1 width: %ld Font1: %s Font:Garbage after option argumentGenerate docu forGreetings, Vim user!Help poor children in Uganda!Hit end of paragraphI/O ERRORIgnored %d word(s) with non-ASCII characters in %sIgnored %d words with non-ASCII charactersIllegal file nameIllegal flag in %s line %d: %sIllegal register nameIllegal starting charInput LineInput _MethodsInterruptInterrupt: InterruptedInvalid argument forInvalid font specificationInvalid region nr in %s line %d: %sInvalid value for FLAG in %s line %d: %sKeys don't match!Kill a connectionLinking: Match caseMatch whole word onlyMessageMessages maintainer: Bram Moolenaar Missing '>'Missing FOL/LOW/UPP line in %sMissing SOFO%s line in %sModified by Name:Need %s version %ld Need Amigados version 2.04 or later NetBeans dissallows writes of unmodified buffersNew tabNo Syntax items defined for this bufferNo abbreviation foundNo breakpoints definedNo displayNo display: Send expression failed. No included filesNo mapping foundNo marks setNo match at cursor, finding nextNo matching autocommandsNo swap fileNo text to be printedNo undo possible; continue anywayNo user-defined commands foundNot UsedNothing to undoNumber of words after soundfolding: %ldOKOpen File dialogOpen Tab...Open tab...Opening the X display failedOpening the X display timed outOpening the X display took %ld msecOriginal file "%s"Overwrite existing file "%s"?Page %dPartial writes disallowed for NetBeans buffersPatch filePath length too long!Pathname:Pattern found in every line: %sPattern not foundPerforming soundfolding...Press ENTER or type command to continuePrint job sent.Printed: %sPrinting '%s'Printing abortedPrinting page %d (%d%%)Query for a patternQuestionReading affix file %s ...Reading back spell file...Reading dictionary file %s ...Reading from stdin...Reading spell file "%s"Reading viminfo file "%s"%s%s%sReading word file %s ...Recovery completed. You should check if everything is OK.Reinit all connectionsReplaceReplace &AllReplace AllReplace with:RetrieveRetrieve from all projectsRetrieve from fileRetrieve from projectRunning in Vi compatible modeRunning modeless, typed text is insertedSNiFF+ is currently Save AsSave File dialogSave RedirectionSave SessionSave SetupSave ViewSave changes to "%s"?Scanning dictionary: %sScanning included file: %sScanning tags.Scanning: %sScrollbar Widget: Could not get geometry of thumb pixmap.Search StringSearching for "%s"Searching for "%s" in "%s"Searching included file %sSearching tags file %sSee ":help E312" for more information.See ":help W11" for more info.See ":help W12" for more info.See ":help W16" for more info.Select Directory dialogSelected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld BytesSelected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Chars; %ld of %ld BytesSelectionSending to printer...Show base class ofShow class in hierarchyShow class in restricted hierarchyShow connectionsShow docu ofShow overridden member functionShow size in PointsShow source ofShow this messageSigns for %s:Size:Sniff: Error during write. DisconnectedSorry, help file "%s" not foundSorry, no suggestionsSorry, only %ld suggestionsSorry, this command is disabled: the Perl library could not be loaded.Source Vim scriptSponsor Vim development!Stack size increasesStyle:Swap file "Swap file "%s" exists, overwrite anyway?Swap file already exists!Swap files found:Tab page %dTear off this menuTesting the X display failedThanks for flying VimThe file was created on The only matchThis Vim was not compiled with the diff feature.This cscope command does not support splitting the window. Toggle implementation/definitionToo many "+command", "-c command" or "--cmd command" argumentsToo many compound flagsToo many edit argumentsToo many posponed prefixes and/or compound flagsToo many postponed prefixesToo many regions in %s line %d: %sTopTotal number of words: %dTrailing text in %s line %d: %sType :quit to exit VimType number or click with mouse ( cancels): Unable to read block 0 from Unable to register a command server nameUndo number %ld not foundUnknownUnknown option argumentUnrecognized flags in %s line %d: %sUnrecognized or duplicate item in %s line %d: %sUntitledUpUse Vim version 3.0. Used CUT_BUFFER0 instead of empty selectionUsing swap file "%s"VIM - ATTENTIONVIM - Search and Replace...VIM - Search...VIM - Vi IMprovedVIM ErrorVIM: Can't open window! VIMRUN.EXE not found in your $PATH. External commands will not pause after completion. See :help win32-vimrun for more information.Vim - Font SelectorVim E458: Cannot allocate colormap entry, some colors may be incorrectVim WarningVim dialogVim dialog...Vim errorVim error: ~aVim exiting with %d Vim is open source and freely distributableVim: Caught %s event Vim: Caught deadly signal Vim: Caught deadly signal %s Vim: Double signal, exiting Vim: Error reading input, exiting... Vim: Error: Failure to start gvim from NetBeans Vim: Finished. Vim: Main window unexpectedly destroyed Vim: Reading from stdin... Vim: Received "die" request from session manager Vim: Warning: Input is not from a terminal Vim: Warning: Output is not to a terminal Vim: preserving files... W10: Warning: Changing a readonly fileW11: Warning: File "%s" has changed since editing startedW12: Warning: File "%s" has changed and the buffer was changed in Vim as wellW13: Warning: File "%s" has been created after editing startedW14: Warning: List of file names overflowW15: Warning: Wrong line separator, ^M may be missingW16: Warning: Mode of file "%s" has changed since editing startedW17: Arabic requires UTF-8, do ':set encoding=utf-8'W18: Invalid character in group nameWARNING: The file has been changed since reading it!!!WARNING: Windows 95/98/ME detectedWarningWarning: Cannot find word list "%s.%s.spl" or "%s.ascii.spl"Warning: Entered other buffer unexpectedly (check autocommands)Warning: both compounding and NOBREAK specifiedWarning: region %s not supportedWarning: terminal cannot highlightWhile opening file "Window position: X %d, Y %dWord added to %sWord from other lineWord removed from %sWrite partial file?Writing spell file %s ...Writing suggestion file %s ...Writing viminfo file "%s"Wrong CHECKCOMPOUNDPATTERN value in %s line %d: %sWrong COMPOUNDMIN value in %s line %d: %sWrong COMPOUNDSYLMAX value in %s line %d: %sWrong COMPOUNDWORDMAX value in %s line %d: %sXSMP ICE connection watch failedXSMP SmcOpenConnection failed: %sXSMP handling save-yourself requestXSMP lost ICE connectionXSMP opening connectionXref has aXref referred byXref refers toXref used byYESZero count[CONVERSION ERROR in line %ld][CR missing][Deleted][Device][File too big][Help][ILLEGAL BYTE in line %ld][Incomplete last line][Location List][NL found][NOT converted][New DIRECTORY][New File][New file][New][No Name][No write since last change] [Not edited][Permission Denied][Preview][Quickfix List][READ ERRORS][RO][Read errors][calls] total re/malloc()'s %lu, total free()'s %lu [converted][crypted][dos format][dos][fifo/socket][fifo][file ..] edit specified file(s)[long lines split][mac format][mac][noeol][readonly][socket][unix format][unix]afterand run diff with the original file to check for changes) attempt to refer to deleted bufferattempt to refer to deleted windowauto-removing autocommand: %s autocommand %sbeforeblock of %ld lines yankedblock of 1 line yankedbuffer is invalidby by Bram Moolenaar et al.called inputrestore() more often than inputsave()calling %scan't delete OutputObject attributescan't read output of 'charconvert'cannot change console mode ?! cannot create buffer/window command: object is being deletedcannot delete linecannot get linecannot insert linecannot insert/append linecannot open cannot register callback command: buffer/window is already being deletedcannot register callback command: buffer/window reference not foundcannot replace linecannot save undo informationcannot set line(s)cannot yank; delete anywaychangechangesclosecmd: %sconnectedcontinuing in %scould not source "%s"couldn't open buffercs_create_connection exec failedcs_create_connection: fdopen for fr_fp failedcs_create_connection: fdopen for to_fp failedcscope commands: cscope connection %s closedcursor position outside bufferdefaulting to 'deleted block 1?dlerror = "%s"don't quit the editor until the file is successfully written!environment variableerror handlererror list %d of %d; %d errorsexpressions disabled at compile timefewer linesfile filename / context / line finished sourcing %sfreeing %ld linesgvimext.dll errorhelphidden optionin path --- invalid attributeinvalid buffer numberinvalid expressioninvalid mark nameis a directoryis not a fileis not a file or writable deviceis read-only (add ! to override)keyboard interruptline %4ld:line %6d, word %6d - %sline %ldline %ld of %ld --%d%%-- col line %ld: %sline %ld: could not source "%s"line %ld: sourcing "%s"line lessline number out of rangelinenr out of rangelogoffmark not setmatch %dmatch %d of %dmaximal mch_get_shellsize: not a console?? menu Edit->Global Settings->Toggle Insert Mode menu Edit->Global Settings->Toggle Vi Compatiblemenu Help->Orphans for information menu Help->Sponsor/Register for information minimal modelinemore linemore linesnew shell started nono cscope connections no specific matchno such bufferno such windowno syncingnot not allowed in the Vim sandboxnot found not found in 'runtimepath': "%s"not implemented yetnumber changes timepe_line_count is zeropre-vimrc command lineread from Netbeans socketreadonly attributerecordingreplace with %s (y/n/a/q/l/^E/^Y)?row %d column %dsearch hit BOTTOM, continuing at TOPsearch hit TOP, continuing at BOTTOMshell shell returned %dshutdownsoftspace must be an integersourcing "%s"stack_idx should be 0string cannot contain newlinessyncing on C-style commentssyncing starts tag %d of %d%stagnameto %s on %stype :help cp-default for info on thistype :help iccf for information type :help register for information type :help sponsor for information type :help version7 for version infotype :help windows95 for info on thistype :help or for on-line helptype :q to exit type :set nocp for Vim defaultsunknown flag: unknown optionunknown vimOptionversion vim errorwhere case is ignored prepend / to make flag upper casewindow index is out of rangewindow is invalidwith (classic) GUI.with Carbon GUI.with Cocoa GUI.with GTK GUI.with GTK-GNOME GUI.with GTK2 GUI.with GTK2-GNOME GUI.with GUI.with Photon GUI.with X11-Athena GUI.with X11-Motif GUI.with X11-neXtaw GUI.without GUI.writelines() requires list of stringsProject-Id-Version: Vim(Franais) Report-Msgid-Bugs-To: POT-Creation-Date: 2006-05-01 19:42+0200 PO-Revision-Date: 2006-05-02 14:15+0200 Last-Translator: David Blanchet Language-Team: Adrien Beau MIME-Version: 1.0 Content-Type: text/plain; charset=ISO_8859-15 Content-Transfer-Encoding: 8bit (non implment) Modifi la dernire fois dans Arguments : utilisation : modifi : [inutilisable sur cet ordinateur] [inutilisable avec cette version de Vim] nom d'hte : nom d'utilisateur : processus n : Nom Args Plage Complt. Dfinition # ligne ou : # VERS marqueur DE ligne dans le fichier/texte saut ligne col fichier/texte # Historique %s (chronologie dcroissante) : # Liste des tampons : # Marques dans le fichier : # Historique des marques dans les fichiers (les plus rcentes en premier) : # Liste de sauts (le plus rcent en premier) : # Dernier motif de recherche %s : ~ # Dernires chanes de substitution : $ # Resgistres : # Variables globales: (1) Un autre programme est peut-tre en train d'diter ce fichier. Si c'est le cas, faites attention ne pas vous retrouver avec deux version diffrentes du mme fichier en faisant des modifications. (2) Une session d'dition de ce fichier a plant. (Vous voudrez peut-tre enregistrer ce fichier sous un autre nom --- Auto-commandes --- --- Valeur des options globales --- --- Valeur des options locales --- --- Menus --- --- Options --- --- Registres --- --- Symboles --- --- lments de syntaxe --- --- lments de synchronisation syntaxique --- --- Codes de terminal --- --- Touches du terminal --- Version MS-DOS 16 bits Version MS-DOS 32 bits Arguments reconnus par gvim (version Athena) : Arguments reconnus par gvim (version GTK+) : Arguments reconnus par gvim (version Motif) : Arguments reconnus par gvim (version RISC OS) : Arguments reconnus par gvim (version neXtaw) : Grosse version Impossible de crer des tuyaux (pipes) Impossible d'excuter le shell Impossible d'excuter le shell sh Impossible de forker Commande interrompue Compil Trouv un fichier d'change nomm " norme version Patches inclus : Version MS-Windows 16 bits Version graphique MS-Windows 16/32 bits Version graphique MS-Windows 32 bits Version console MS-Windows 32 bits Version MaxOS X (unix) Version MacOS X Version MacOS Il est possible qu'aucune modif. n'a t faite ou que Vim n'a pas mis jour le fichier d'change. Plus d'info avec: "vim -h" Version normale Version RISC OS Envoi d'un message pour interrompre le processus fils. Petite version Version minuscule Vim: Rception d'une erreur X ALERTE: Le fichier original est peut-tre perdu ou endommag [octets] total allou-libr %lu-%lu, utilis %lu, pic %lu modif ligne col fichier/texte marq ligne col fichier/texte le shell a retourn synchronisation sur lments pour df. de Vim pour les modes dat : proprit de : [ne peut tre ouvert] [ne peut tre lu] [ne semble pas tre un fichier d'change Vim] [de Vim version 3.0] nom de fichier : -- aucun -- PLUS RCENT que le fichier d'change ! fichier exrc utilisateur : " fichier vimrc utilisateur : " Si c'est le cas, utilisez ":recover" ou "vim -r Si vous l'avez dj fait, effacez le fichier d'change " Quittez, ou continuez prudemment. ligne=%ld id=%d nom=%s fichier menu systme : " fichier gvimrc utilisateur : " Dans le rpertoire courant : Dans le rpertoire Utilisant le nom indiqu : dat : nom d'hte : fichier vimrc systme : " # pri type marqueur (Dj list) 2me fichier exrc utilisateur : " VERSION DE DBOGAGE Fonctionnalits incluses (+) ou non (-) : INTROUVABLE Utilisation d'un marqueur avec une casse diffrente ! $VIM par dfaut : " fichier gvimrc systme : " # pid nom de la base de donnes chemin (Interrompu) (INTROUVABLE) (inclut des correspondances listes prcdemment) (insertion) (insertion) Dfilement (^E/^Y) (langue) (ligne efface) (non support) (collage) (remplacement) (remplacement) Dfilement (^E/^Y) (en cours d'excution) (vremplacement) 2me fichier vimrc utilisateur : " 3me fichier vimrc utilisateur : " < "%.*s" Ajout arabe ERREUR DE CONVERSION Compltement de ligne de commande (^V^N^P) Copie %d sur %d Compltement de dfinition (^D^N^P) Compltement avec le dictionnaire (^K^N^P) CHEC Compltement de nom de fichier (^F^N^P) hbreu INSERTION Compltement local de mot-cl (^N/^P) Compltement de mot-cl (^N^P) Compltement selon le type de fichier (Omni) (^O^N^P) Compltement global de mot-cl (^N^P) REMPLACEMENT REVERSE SLECTION SLECTION BLOC SLECTION LIGNEESPACE/d/j : cran/page/ligne vers le bas, b/u/k : vers le haut, q : quitter Suggestion d'orthographe (s^N^P) Compltement de marqueur (^]^N^P) Compltement avec le thsaurus (^T^N^P) Compltement dfini par l'utilisateur (^U^N^P) VISUEL VISUEL BLOC VISUEL LIGNE VREMPLACEMENT Compltement de ligne entire (^L^N^P)[Modifi] [a] [e] mode ^X (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) ajout(s) ne peut pas tre utilis sur cet ordinateur. ne peut pas tre utilis avec cette version de Vim. $VIMRUNTIME par dfaut : " lance en mode Win32s info type de fichier coupures de ligne lignes avant la ligne du haut marques sur %ld lignes sur 1 ligne ou plus a t retourn vim [args] supportant l'OLE crit(s)" pour viter ce message. " pour rcuprer le fichier (voir ":help recovery"). " existe dj !# Ce fichier viminfo a t gnr par Vim %s. # 'encoding' dans lequel ce fichier a t crit # Vous pouvez l'diter, mais soyez prudent. %-5s: %-30s (Utilisation : %s)%3d %s %s ligne %ld%<%f%h%m%=Page %N%d tampons ont t effacs%d tampons ont t dchargs%d tampons ont t dtruits%d mot(s) dupliqu(s) dans %s%d fichiers diter Encore %d fichiers diter. Quitter tout de mme ?%d dits sur %d%ld %s ; %s #%ld ; %s%ld Colonnes ; %ld caractres%ld lignes en moins%ld lignes %ses %d fois%ld lignes %ses 1 fois%ld lignes --%d%%--%ld lignes modifies%ld lignes filtres%ld lignes indentes %ld lignes dplaces%ld lignes indenter... %ld lignes copies%ld lignes, %ld correspondances%ld lignes en plusil y a %ld secondes%ld substitutionsAutocommandes %s pour "%s"%s annule%s limine(s)%s, ligne %ld%s mise(s) en attente%s r-mise(s)%s a retourn #%ld%s a retourn "%s"La valeur de %s est diffrente de celle d'un autre fichier .aff%s, ligne %ld%sviminfo : %s la ligne &AnnulerAban&donner&Filtrer&Aide&Ok&Ok &Annuler&Ok &Charger le fichier&Ok&Ouvrir en lecture seule &Editer quand mme &Rcuprer Le &supprimer &Quitter &Abandonner&Ouvrir en lecture seule &Editer quand mme &Rcuprer &Quitter &Abandonner&RemplacerAnn&uler&Oui &Non&Oui &Non &Annuler&Oui &Non Tout &enregistrer Tout aban&donner &Annuler' inconnu. Les terminaux intgrs sont :'columns' ne vaut pas 80, impossible d'excuter des commandes externesL'option 'dictionary' est videl'option 'history' vaut zroL'option 'readonly' est active pour "%s". Voulez-vous tout de mme enregistrer ?L'option 'thesaurus' est vide(%d sur %d)%s%s: (+%ld pour le BOM)(Interrompu) (Invalide)+ Ouvrir la fin du fichier+-%s%3ld lignes : +--%3ld lignes replies + Ouvrir le fichier la ligne +reverse Ne pas utiliser de vido inverse (abrv : +rv), ou le fichier a t endommag.- lire le texte partir de stdin-- Seuls des noms de fichier sont spcifis aprs ceci-- Plus ---- Recherche en cours...--- Fichiers inclus --Effac----Le tampon est vide----cmd Excuter avant de charger les fichiers vimrcargument --cmd--columns Nombre de colonnes initial de la fentre--literal Ne pas dvelopper les mtacaractres--noplugin Ne charger aucun greffon--remote diter les dans un serveur Vim si possible--remote-expr valuer dans un serveur Vim, afficher le rsultat--remote-send Envoyer un serveur Vim puis quitter--remote-silent ... Pareil, mais pas d'erreur s'il n'y a aucun serveur--remote-tab Comme --remote mais ouvrir un onglet pour chaque fichier--remote-wait Comme --remote mais ne quitter qu' la fin de l'dition--remote-wait-silent Pareil, mais pas d'erreur s'il n'y a aucun serveur--role Donner un rle pour identifier la fentre principale--rows Nombre de lignes initial de la fentre--serverlist Lister les noms des serveurs Vim disponibles et quitter--servername Envoyer au/devenir le serveur Vim nomm --socketid Ouvrir Vim dans un autre widget GTK--version Afficher les informations de version et quitter-A Dmarrer en mode arabe-C Compatible avec Vi : 'compatible'-D Mode dbogage-F Dmarrer en mode farsi-H Dmarrer en mode hbreu-L Comme -r-M Interdire toute modification de texte-N Pas totalement compatible avec Vi : 'nocompatible'-O[N] Comme -o, mais partager verticalement-P Ouvrir Vim dans une application parente-R Mode lecture seule (comme "view")-S Sourcer le fichier une fois le 1er fichier charg-T Rgler le type du terminal sur -U Utiliser au lieu du gvimrc habituel-V[N] Niveau de verbosit-W crire toutes les commandes tapes dans le fichier -X Ne pas se connecter un serveur X-Z Mode restreint (comme "rvim")-b Mode binaire-background Utiliser pour l'arrire-plan (abrv : -bg)-boldfont Utiliser pour le texte gras-borderwidth Utiliser cette de bordure (abrv : -bw)-c Excuter une fois le 1er fichier chargargument -c-d Mode diff (comme "vimdiff")-dev Utiliser pour les E/S-display Connecter Vim au serveur X spcifi-display Lancer Vim sur ce -display Lancer Vim sur ce (galement : --display)-e Mode Ex (comme "ex")-f Ne pas utiliser newcli pour l'ouverture des fentres-f, --nofork Premier-plan : ne pas dtacher l'interface graphique du terminal-font Utiliser pour le texte normal (abrv : -fn)-foreground Utiliser pour le texte normal (abrv : -fg)-g Lancer l'interface graphique (comme "gvim")-geometry Utiliser cette initiale (abrv : -geom)-h ou --help Afficher l'aide (ce message) puis quitter-i Utiliser au lieu du viminfo habituel-iconic Iconifier Vim au dmarrage-italicfont Utiliser pour le texte italique-l Mode lisp-m Interdire l'enregistrement des fichiers-menuheight Utiliser cette de menu (abrv : -mh)-n Ne pas utiliser de fichier d'change, seulement la mmoire-name Employer les ressources comme si Vim s'appelait -o[N] Ouvrir N fentres (dfaut : une pour chaque fichier)-p[N] Ouvrir N onglets (dfaut: un pour chaque fichier)-q [fichErr] ouvrir l'endroit de la premire erreur-r Lister les fichiers d'change et quitter-r Rcuprer une session plante-register Inscrire ce gvim pour OLE-reverse Utiliser la vido inverse (abrv : -rv)-s Mode silencieux (batch) (seulement pour "ex")-s Lire les commandes du mode Normal partir du fichier -scrollbarwidth Utiliser cette de barre de dfil. (abrv: -sw)-t marqueur ouvrir le fichier qui contient le marqueur-u Utiliser au lieu du vimrc habituel-unregister Dsinscrire gvim de OLE-v Mode Vi (comme "vi")-w Ajouter toutes les commandes tapes dans le fichier -x diter des fichiers chiffrs-xrm Configurer la spcifie-y Mode facile (comme "evim", vim sans modes)Ligne / ignore dans %s ligen %d : %sLigne /encoding= aprs des mots ignore dans %s ligne %d : %s1 tampon a t effac1 tampon a t dcharg1 tampon a t dtruit1 caractre1 ligne %se %d fois1 ligne %se 1 fois1 ligne --%d%%--1 ligne modifie1 ligne indente 1 ligne en moins1 ligne dplace1 ligne copie1 ligne, 1 correspondanceEncore 1 fichier diter. Quitter tout de mme ?1 ligne en plus1 substitution2me fichier gvimrc utilisateur : "3me fichier gvimrc utilisateur : ": L'envoi de l'expression a chou. : L'envoi a chou. : L'envoi a chou. Tentative d'excution locale ; correspond avec <%s>%s%s %d, Hexa %02x, Octal %03o > %d, Hexa %04x, Octal %o> %d, Hexa %08x, Octal %o??? d'ici jusqu' ???FIN des lignes peuvent tre corrompues??? d'ici jusqu' ???FIN des lignes ont pu tre insres/effaces???: Dsol, commande dsactive : la bibliothque MzScheme n'a pas pu tre charge.???BLOC MANQUANT???BLOC VIDE???FIN???NOMBRE DE LIGNES ERRON???LIGNES MANQUANTES???DE NOMBREUSES LIGNES MANQUENTANCHOR_BUF_SIZE trop petit.Ajouter une base de donnesBase de donnes cscope %s ajouteAffixe aussi utilise pour BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/NOSUGGEST dans %s ligne %d : %sNom d'affixe trop long dans %s ligne %d : %sToutToutes les bases de donnes cscope ont t rinitialisesTous les fichiers inclus ont t trouvsDj la modifications la plus rcenteDj la modification la plus ancienneIl ne reste dj plus qu'un seul ongletIl n'y a dj plus qu'une fentreAjouter fichierArgument manquant aprs la ligneNouvelle tentative pour ouvrir le script : "Retour au point de dpartLa plage spcifie est inverse, OK pour l'inverserDevenez un utilisateur de Vim enregistr !Bip !Avant l'octet %ldBasLignes SAL et lignes SOFO prsentes dans %sPoint d'arrt dans %s%s ligne %ldCondition non valide dans %s ligne %d : %sParcourir classeUtilisation de COMPOUNDSYLMAX sans SYLLABLEAppel du shell pour excuter : "%s"Impossible de gnrer un fichier temporaire pour la conversionAnnulerImpossible de se connecter NetbeansImpossible de se connecter Netbeans n2Connexion SNiFF+ impossible. Vrifiez l'environnement (sniffemacs doit tre dans le $PATH). Impossible de crer Impossible d'excuter Impossible d'ouvrir NIL : Impossible d'ouvrir le fichier "%s"Impossible d'ouvrir en lecture : "Impossible d'ouvrir pour la sortie script : "Impossible de sourcer un rpertoire : "%s"Remplacer "%.*s" par :Tapez un nombre ( annule) :FermerFermer l'ongletColonne %s sur %s ; Ligne %ld sur %ld ; Mot %ld sur %ld ; Octet %ld sur %ldColonne %s sur %s ; Ligne %ld sur %ld ; Mot %ld sur %ld ; Caractre %ld sur %ld ; Octet %ld sur %ldligne de commandeCompilation : Compilateur : %d noeuds compresss sur %d ; %d (%d%%) restants Compression de l'arbre des motschec de conversion du mot dans %s ligne %d : %sLa conversion dans %s non supporteLa conversion dans %s non supporte : de %s vers %sLa conversion avec 'charconvert' a chouImpossible d'initialiser les pointeurs de fonction vers la DLL !Impossible de charger vim32.dll !Marqueur cscope : %sLangue courante pour %s: "%s"Dfinir COMPOUNDFORBIDFLAG aprs des PFX peut donner des rsultats errons dans %s ligne %dDfinir COMPOUNDPERMITFLAG aprs des PFX peut donner des rsultats errons dans %s ligne %dEffacez ensuite le fichier .swp. &Comparer avec VimDrapeaux de composition diffrents dans un bloc d'affixes continu dans %s ligne %d : %sDirectionRpertoiresRpertoire *.rien Voulez-vous vraiment crire dedansTermin !Double ; dans une liste de variablesBasLigne /encoding= en double ignore dans %s ligne %d : %sLigne /regions= en double ignore dans %s ligne %d : %sAffixe duplique dans %s ligne %d : %sCaractre dupliqu dans MAP dans %s ligne %dMot dupliqu dans %s ligne %d : %sE100: Aucun autre tampon n'est en mode diffE101: Plus de deux tampons sont en mode diff, soyez plus prcisE102: Le tampon %s est introuvableE103: Le tampon %s n'est pas en mode diffE104: Un digraphe ne peut contenir le caractre d'chappementE105: :loadkeymap ne peut tre utilis que dans un script VimE107: Il manque '(' aprs %sE108: Variable inexistante : %sE109: Il manque ':' aprs '?'E10: \ devrait tre suivi de /, ? ou &E110: ')' manquantE111: ']' manquantE112: Il manque un nom d'option aprs %sE113: Option inconnue : %sE114: Il manque " la fin de %sE115: Il manque ' la fin de %sE117: Fonction inconnue : %sE118: La fonction %s a reu trop d'argumentsE119: La fonction %s n'a pas reu assez d'argumentsE11: Invalide dans la fentre ligne-de-commande ; excute, CTRL-C quitteE120: utilis en dehors d'un script : %sE121: Variable non dfinie : %sE122: La fonction %s existe dj (ajoutez ! pour la remplacer)E124: Il manque '(' aprs %sE125: Argument invalide : %sE126: Il manque :endfunctionE128: La fonction %s ne commence pas par une majuscule ou contient ':'E129: Nom de fonction requisE12: commande non autorise depuis un exrc/vimrc dans rpertoire courant ou une recherche de marqueurE130: Fonction inconnue : %sE131: Impossible d'effacer %s : cette fonction est utiliseE132: La profondeur d'appel de fonction est suprieure 'maxfuncdepth'E133: :return en dehors d'une fonctionE134: La destination est dans la plage d'origineE135: Les autocommandes Filter* ne doivent pas changer le tampon courantE136: Il y a trop d'erreurs ; interruption de la lecture du fichier viminfoE137: L'criture dans le fichier %s est interditeE138: Impossible d'crire le fichier %sE139: Le fichier est charg dans un autre tamponE13: Le fichier existe dj (ajoutez ! pour passer outre)E140: Une partie du fichier serait perdue (ajoutez ! pour passer outre)E141: Pas de nom de fichier pour le tampon %ldE142: L'option 'nowrite' est active et empche toute criture du fichierE143: Une autocommande a effac le nouveau tampon %sE144: L'argument de :z n'est pas numriqueE145: Les commandes externes sont indisponibles dans rvimE146: Les expressions rgulires ne peuvent pas tre dlimites par des lettresE147: :global ne peut pas excuter :globalE148: :global doit tre suivi par une expression rgulireE149: Dsol, aucune aide pour %sE14: Adresse invalideE150: %s n'est pas un rpertoireE152: Impossible d'crire %sE153: Impossible de lire %sE154: Marqueur "%s" dupliqu dans le fichier %s/%sE155: Symbole inconnu : %sE156: Il manque le nom du symboleE157: Le symbole %ld est introuvableE158: Le tampon %s est introuvableE159: Il manque l'ID du symboleE15: Expression invalide : %sE160: Commande inconnue : :sign %sE161: Le point d'arrt %s est introuvableE162: Le tampon %s n'a pas t enregistrE163: Il n'y a qu'un seul fichier diterE164: Impossible d'aller avant le premier fichierE165: Impossible d'aller au-del du dernier fichierE166: Impossible d'ouvrir le lien pour y crireE167: :scriptencoding utilis en dehors d'un fichier sourcE168: :finish utilis en dehors d'un fichier sourcE169: Commande trop rcursiveE16: Plage invalideE170: :endfor manquantE170: :endwhile manquantE171: :endif manquantE172: Un seul nom de fichier autorisE173: encore %ld fichiers diterE173: encore 1 fichier diterE174: La commande existe dj : ajoutez ! pour la redfinirE175: Pas d'attribut spcifiE176: Nombre d'arguments invalideE177: Le quantificateur ne peut tre spcifi deux foisE178: La valeur par dfaut du quantificateur est invalideE179: argument requis avec -completeE17: "%s" est un rpertoireE180: Valeur invalide pour "-complete=" : %sE181: Attribut invalide : %sE182: Nom de commande invalideE183: Les commandes utilisateur doivent commencer par une majusculeE184: Aucune commande %s dfinie par l'utilisateurE185: Impossible de trouver le jeu de couleurs %sE186: Pas de rpertoire prcdentE187: InconnuE188: Rcuprer la position de la fentre non implment dans cette versionE189: "%s" existe (ajoutez ! pour passer outre)E18: Caractres inattendus avant '='E190: Impossible d'ouvrir "%s" pour y crireE191: L'argument doit tre une lettre ou une (contre-)apostropheE192: Appel rcursif de :normal trop importantE193: :endfunction en dehors d'une fonctionE194: Aucun nom de fichier alternatif substituer '#'E195: Impossible d'ouvrir le viminfo en lectureE196: Pas de digraphes dans cette versionE197: Impossible de choisir la langue "%s"E198: cmd_pchar au-del de la longueur de la commandeE199: Tampon ou fentre active effac(e)E19: La marque a un numro de ligne invalideE200: Les autocommandes *ReadPre ont rendu le fichier illisibleE201: Autocommandes *ReadPre ne doivent pas modifier le contenu du tampon courantE202: La conversion a rendu le fichier illisible !E203: Des autocommandes ont effac ou dcharg le tampon crireE204: L'autocommande a modifi le nombre de lignes de manire inattendueE205: Patchmode : impossible d'enregistrer le fichier originalE206: patchmode : impossible de crer le fichier original videE207: Impossible d'effacer la copie de secoursE208: Erreur lors de l'criture dans "%s"E209: Erreur lors de la fermeture de "%s"E20: Marque non positionneE210: Erreur lors de la lecture de "%s"E211: Le fichier "%s" n'est plus disponibleE212: Impossible d'ouvrir le fichier pour y crireE213: Impossible de convertir (ajoutez ! pour crire sans convertir)Impossible de gnrer un fichier temporaire pour y crireE215: Caractre non valide aprs * : %sE216: Aucun vnement %sE216: Aucun vnement ou groupe %sE217: Impossible d'excuter les autocommandes pour TOUS les vnements (ALL)E218: autocommandes trop imbriquesE219: { manquant.E21: Impossible de modifier, 'modifiable' est dsactivE220: } manquant.E222: Ajout au tampon de lectureE223: mappage rcursifE224: une abrviation globale existe dj pour %sE225: un mappage global existe dj pour %sE226: une abrviation existe dj pour %sE227: un mappage existe dj pour %sE228: makemap: mode invalideE229: Impossible de dmarrer l'interface graphiqueE22: Trop de rcursion dans les scriptsE230: Impossible de lire "%s"E231: 'guifontwide' est invalideE232: Impossible de crer un BalloonEval avec message ET callbackE233: ouverture du display impossibleE234: Jeu de police inconnu : %sE235: Police inconnue : %sE236: La police "%s" n'a pas une chasse (largeur) fixeE237: La slection de l'imprimante a chouE238: Erreur d'impression : %sE239: Le texte du symbole est invalide : %sE23: Pas de fichier alternatifE240: Pas de connexion au serveur XE241: L'envoi au serveur %s chouE243: Argument non support : "-%s" ; Utilisez la version OLE.E244: Jeu de caractres "%s" invalide dans le nom de fonte "%s"E245: Caractre '%c' invalide dans le nom de fonte "%s"E246: L'autocommande FileChangedShell a effac le tamponE247: aucun serveur nomm "%s" n'est enregistrE248: chec de l'envoi de la commande au programme cibleE24: Cette abrviation n'existe pasE250: Des polices manquent dans %s pour les jeux de caractres suivants :E251: Entre registre de l'instance de Vim mal formatte. Suppression !E252: Nom du jeu de polices : %sE253: Nom du jeu de polices : %s E254: Impossible d'allouer la couleur %sE255: Impossible de lire les donnes du symbole !E256: ERREUR dans l'automate HangulE257: cstag: marqueur introuvableE258: La rponse n'a pas pu tre envoye au clientE259: aucune correspondance trouve pour la requte cscope %s de %sE25: L'interface graphique n'a pas t compile dans cette versionE261: Connexion cscope %s introuvableE262: erreur lors de la lecture de la connexion cscope %ldE263: Dsol, commande dsactive : la bibliothque Python n'a pas pu tre charge.E264: Python: Erreur d'initialisation des objets d'E/SE265: $_ doit tre une instance de chane (String)E266: Dsol, commande dsactive : la bibliothque Ruby n'a pas pu tre charge.E267: return inattenduE268: next inattenduE269: break inattenduE26: Le support de l'hbreu n'a pas t compil dans cette version E270: redo inattenduE271: retry hors d'une clause rescue E272: Exception non prise en chargeE273: contexte de longjmp inconnu : %dE274: Sniff: Erreur de lecture. DconnexionE275: Requte SNiFF+ inconnue : %sE276: Erreur lors de la connexion SNiFF+E277: Impossible de lire la rponse du serveurE278: SNiFF+ n'est pas connectE279: Ce tampon n'est pas un tampon SNiFF+E27: Le support du farsi n'a pas t compil dans cette version E280: ERREUR FATALE TCL: reflist corrompue ?! Contactez vim-dev@vim.org, SVP.E281: ERREUR TCL: code de sortie non entier ?! Contactez vim-dev@vim.org, SVPE282: Impossible de lire "%s"E283: Aucune marque ne correspond "%s"E284: Impossible de rgler les valeurs ICE285: chec de la cration du contexte de saisieE286: chec de l'ouverture de la mthode de saisieE287: Alerte: Impossible d'inscrire la callback de destruction dans la MSE288: la mthode de saisie ne supporte aucun styleE289: le type de prdition de Vim n'est pas support par la mthode de saisieE28: Aucun nom de groupe de surbrillance %sE290: le style over-the-spot ncessite un jeu de policesE291: Votre GTK+ est plus ancien que 1.2.3. Zone d'tat dsactiveE292: Le Serveur de Mthodes de Saisie n'est pas lancE293: le bloc n'tait pas verrouillE294: Erreur de positionnement lors de la lecture du fichier d'changeE295: Erreur de lecture dans le fichier d'changeE296: Erreur de positionnement lors de l'criture du fichier d'changeE297: Erreur d'criture dans le fichier d'changeE298: Bloc n0 non rcupr ?E298: Bloc n1 non rcupr ?E298: Bloc n2 non rcupr ?E299: valuation Perl interdite dans bac sable sans le module SafeE29: Pas encore de texte insrE300: Le fichier d'change existe dj (attaque par symlink ?)E301: Oups, le fichier d'change a disparu !E302: Impossible de renommer le fichier d'changeE303: Impossible d'ouvrir fichier .swp pour "%s", rcup. impossibleE304: ml_upd_block0(): bloc 0 non rcupr ?!E305: Aucun fichier d'change trouv pour %sE306: Impossible d'ouvrir %sE307: %s ne semble pas tre un fichier d'change de VimE308: Alerte: Le fichier original a pu tre modifiE309: Impossible de lire le bloc 1 de %sE30: Aucune ligne de commande prcdenteE310: ID du bloc 1 erron (%s n'est pas un fichier d'change ?)E311: Rcupration interrompueE312: Erreurs lors de la rcupration ; examinez les lignes commenant par ???E313: Prservation impossible, il n'y a pas de fichier d'changeE314: chec de la prservationE315: ml_get: numro de ligne invalide : %ldE316: ml_get: ligne %ld introuvableE317: mauvais id de pointeur de blocE317: mauvais id de pointeur de block 2E317: mauvais id de pointeur de bloc 3E317: mauvais id de pointeur de bloc 4E318: Trop de blocs mis jour ?E319: Dsol, cette commande n'est pas disponible dans cette versionE31: Mappage inexistantE320: Ligne %ld introuvableE321: Impossible de recharger "%s"E322: numro de ligne hors limites : %ld au-del de la finE323: nombre de lignes erron dans le bloc %ldE324: Impossible d'ouvrir le fichier PostScript de sortieE325: ATTENTIONE326: Trop de fichiers d'change trouvsE327: Une partie du chemin de l'lment de menu n'est pas un sous-menuE328: Le menu n'existe que dans un autre modeE329: Aucun menu "%s"E32: Aucun nom de fichierE330: Le chemin de menu ne doit pas conduire un sous-menuE331: Ajout d'lments de menu directement dans barre de menu interditE332: Un sparateur ne peut faire partie d'un chemin de menuE333: Le chemin du menu doit conduire un lment de menuE334: Menu introuvable : %sE335: Le menu n'est pas dfini pour le mode %sE336: Le chemin du menu doit conduire un sous-menuE337: Menu introuvable - vrifiez les noms des menusE338: Dsol, pas de slecteur de fichiers en mode consoleE339: Motif trop longE33: Aucune expression rgulire de substitution prcdenteE340: La ligne devient trop longueE341: Erreur interne : lalloc(%ld, )E342: Mmoire puise ! (allocation de %lu octets)E343: Chemin invalide : '**[nombre]' doit tre la fin du chemin ou tre suivi de '%s'.E344: Rpertoire "%s" introuvable dans 'cdpath'E345: Fichier "%s" introuvable dans 'path'E346: Plus de rpertoire "%s" dans 'cdpath'E347: Plus de fichier "%s" dans 'path'E348: Aucune chane sous le curseurE349: Aucun identifiant sous le curseurE34: Aucune commande prcdenteE350: Impossible de crer un repli avec la 'foldmethod'e actuelleE351: Impossible de supprimer un repli avec la 'foldmethod'e actuelleE352: Impossible d'effacer des replis avec la 'foldmethod'e actuelleE353: Le registre %s est videE354: Nom de registre invalide : '%s'E355: Option inconnue : %sE356: ERREUR get_varpE357: 'langmap': Aucun caractre correspondant pour %sE358: 'langmap': Caractres surnumraires aprs point-virgule : %sE359: Choix du mode d'cran non supportE35: Aucune expression rgulire prcdenteE360: Impossible d'excuter un shell avec l'option -fE363: le motif utilise plus de mmoire que 'maxmempattern'E364: L'appel la bibliothque a chou pour "%s()"E365: L'impression du fichier PostScript a chouE366: Option 'osfiletype' invalide - Text est utilisE367: Aucun groupe "%s"E369: lment invalide dans %s%%[]E36: Pas assez de placeE370: Impossible de charger la bibliothque %sE371: Commande introuvableE372: Trop de %%%c dans la chane de formatE373: %%%c inattendu dans la chane de formatE374: ] manquant dans la chane de formatE375: %%%c non support dans la chane de formatE376: %%%c invalide dans le prfixe de la chane de formatE377: %%%c invalide dans la chane de formatE378: 'errorformat' ne contient aucun motifE379: Nom de rpertoire vide ou absentE37: Modifications non enregistres (ajoutez ! pour passer outre)E380: En bas de la pile quickfixE381: Au sommet de la pile quickfixE382: criture impossible, l'option 'buftype' est activeE383: Chane de recherche invalide : %sE384: la recherche a atteint le HAUT sans trouver : %sE385: la recherche a atteint le BAS sans trouver : %sE386: '?' ou '/' attendu aprs ';'E387: La correspondance est sur la ligne couranteE388: Impossible de trouver la dfinitionE389: Impossible de trouver le motifE38: Argument nullE390: Argument invalide : %sE391: Aucune grappe de syntaxe %sE392: Aucune grappe de syntaxe %sE394: L'argument group[t]here n'est pas accept iciE394: Aucun lment de type rgion trouv pour %sE395: L'argument contains n'est pas accept iciE396: L'argument containedin n'est pas accept iciE397: Nom de fichier requisE398: '=' manquant : %sE399: Pas assez d'arguments : syntax region %sE39: Nombre attenduE400: Aucun grappe spcifieE401: Dlimiteur de motif introuvable : %sE402: caractres en trop aprs le motif : %sE403: synchro syntax : motif de continuation de ligne prsent deux foisE404: Arguments invalides : %sE405: '=' manquant : %sE406: Argument vide : %sE407: %s n'est pas autoris iciE408: %s doit tre le premier lment d'une liste contains E409: Nom de groupe inconnu : %sE40: Impossible d'ouvrir le fichier d'erreurs %sE410: Sous-commande de :syntax invalide : %sE411: groupe de surbrillance introuvable : %sE412: Trop peu d'arguments : ":highlight link %s"E413: Trop d'arguments: ":highlight link %s"E414: le groupe a dj des attributs, lien de surbrillance ignorE415: signe gal inattendu : %sE416: '=' manquant : %sE417: argument manquant : %sE418: Valeur invalide : %sE419: Couleur de premier plan inconnueE41: Mmoire puiseE420: Couleur d'arrire-plan inconnueE421: Nom ou numro de couleur non reconnu : %sE422: le code de terminal est trop long : %sE423: Argument invalide : %sE424: Trop d'attributs de surbrillance diffrents en cours d'utilisationE425: Impossible d'aller avant le premier marqueur correspondantE426: Marqueur introuvable : %sE427: Il n'y a qu'un marqueur correspondantE428: Impossible d'aller au-del du dernir marqueur correspondantE429: Le fichier "%s" n'existe pasE42: Aucune d'erreurE430: Chemin de fichiers de marqueurs tronqu pour %s E431: Erreur de format dans le fichier de marqueurs "%s"E432: Le fichier de marqueurs %s n'est pas ordonnE433: Aucun fichier de marqueursE434: Le motif de marqueur est introuvableE435: Marqueur introuvable, tentative pour deviner !E436: Aucune entre "%s" dans termcapE437: capacit de terminal "cm" requiseE438: u_undo: numros de ligne erronsE439: la liste d'annulation est corrompueE43: Le chane de recherche est endommagE440: ligne d'annulation manquanteE441: Il n'y a pas de fentre de prvisualisationE442: Impossible de partager topleft et botright en mme tempsE443: Rotation impossible quand une autre fentre est partageE444: Impossible de fermer la dernire fentreE445: Les modifications de l'autre fentre n'ont pas t enregistresE446: Aucun nom de fichier sous le curseurE447: Le fichier "%s" est introuvable dans 'path'E448: Impossible de charger la fonction %s de la bibliothqueE449: Expression invalide reueE44: L'automate de regexp est corrompuE455: Erreur lors de l'criture du fichier PostScriptE456: Le fichier de ressource PostScript "%s.ps" est introuvableE456: Le fichier de ressource PostScript "cidfont.ps" est introuvableE456: Le fichier de ressource PostScript "prolog.ps" est introuvableE456: Impossible d'ouvrir le fichier "%s"E457: Impossible de lire le fichier de ressource PostScript "%s"E459: Impossible de retourner au rpertoire prcdentE45: L'option 'readonly' est active (ajoutez ! pour passer outre)E460: Les ressources partages seraient perdues (ajoutez ! pour passer outre)E461: Nom de variable invalide : %sE462: Impossible de prparer le rechargement de "%s"E463: Cette zone est verrouille et ne peut pas tre modifieE464: Utilisation ambige d'une commande dfinie par l'utilisateurE465: :winsize requiert deux arguments numriquesE466: :winpos requiert deux arguments numriquesE467: Le compltement personnalis requiert une fonction en argumentE468: Seul le compltement personnalis accepte un argumentE469: Drapeau cscopequickfix %c invalide pour %cE46: La variable "%s" est en lecture seuleE46: Impossible de modifier une variable depuis le bac sable : "%s"E470: Commande annuleE471: Argument requisE472: La commande a chouE473: Erreur interneE474: Argument invalideE475: Argument invalide : %sE476: Commande invalideE477: Le ! n'est pas autorisE478: Pas de panique !E479: Aucune correspondanceE47: Erreur lors de la lecture du fichier d'erreursE480: Aucune correspondance : %sE481: Les plages ne sont pas autorissE482: Impossible de crer le fichier %sE483: Impossible d'obtenir un nom de fichier temporaireE484: Impossible d'ouvrir le fichier "%s"E485: Impossible de lire le fichier %sE486: Motif introuvable : %sE487: L'argument doit tre positifE488: Caractres surnumrairesE48: Opration interdite dans le bac sableE490: Aucune repli trouvE492: Commande inconnueE493: La plage spcifie est inverseE494: Utilisez w ou w>>E495: Aucun nom de ficher d'autocommmande substituer ""E496: Aucun numro de tampon d'autocommande substituer ""E497: Aucune correspondance d'autocommande substituer ""E498: Aucun nom de fichier :source substituer ""E499: Nom de fichier vide pour '%' ou '#', ne marche qu'avec ":p:h"E49: Valeur de dfilement invalideE500: valu en une chane videE501: la fin du fichierE505: E506: Impossible d'crire la copie de secours (! pour passer outre)E507: Erreur de fermeture de la copie de secours (! pour passer outre)E508: Impossible de lire le fichier pour la copie de secours (ajoutez ! pour passer outre)E509: Impossible de crer la copie de secours (ajoutez ! pour passer outre)E50: Trop de \z(E510: Impossible de gnrer la copie de secours (ajoutez ! pour passer outre)E512: Erreur de fermeture de fichierE513: Erreur d'criture, chec de la conversion (videz 'fenc' pour passer outre)E514: erreur d'criture (systme de fichiers plein ?)E515: Aucun tampon n'a t dchargE516: Aucun tampon n'a t effacE517: Aucun tampon n'a t dtruitE518: Option inconnueE519: Option non supporteE51: Trop de %s(E520: Non autoris dans une ligne de modeE521: Nombre requis aprs =E522: Introuvable dans termcapE523: Interdit cet endroitE524: ':' manquantE525: Chane de longueur nulleE526: Nombre manquant aprs <%s>E527: Virgule manquanteE528: Une valeur ' doit tre spcifieE529: 'term' ne doit pas tre une chane videE52: Pas de correspondance pour \z(E530: Impossible de modifier term dans l'interface graphiqueE531: Utilisez ":gui" pour dmarrer l'interface graphiqueE533: Impossible de slectionner une police largeur doubleE534: Police largeur double invalideE535: Caractre invalide aprs <%c>E536: virgule requiseE537: 'commentstring' doit tre vide ou contenir %sE538: La souris n'est pas supporteE539: Caractre <%s> invalideE53: Pas de correspondance pour %s%%(E540: '}' manquantE541: trop d'lmentsE542: parenthses non quilibresE543: Page de codes non valideE544: Le fichier descripteur de clavier est introuvableE545: ':' manquantE546: Mode non autorisE547: Forme de curseur invalideE548: chiffre attenduE549: Pourcentage non autorisE54: %s( ouvrante non fermeE550: ':' manquantE551: lment invalideE552: chiffre attenduE553: Plus d'lmentsE554: Erreur de syntaxe dans %s{...}E555: En bas de la pile de marqueursE556: Au sommet de la pile de marqueursE557: Impossible d'ouvrir le fichier termcapE558: La description du terminal est introuvable dans terminfoE559: La description du terminal est introuvable dans termcapE55: %s) fermante non ouverteE560: Utilisation : cs[cope] %sE561: type de recherche cscope inconnuE562: Utilisation : cstag E563: Erreur statE563: Erreur stat(%s) : %dE564: %s n'est pas un rpertoire ou une base de donnes cscope valideE566: Impossible de crer les tuyaux (pipes) cscopeE567: Aucune connexion cscopeE568: base de donnes cscope redondante non ajouteE569: nombre maximum de connexions cscope atteintE570: erreur fatale dans cs_manage_matchesE571: Dsol, commande dsactive: la bibliothque Tcl n'a pas pu tre charge.E572: code de sortie %dE573: Id utilis pour le serveur invalide : %sE574: Type de registre %d inconnuE579: Imbrication de :if trop importanteE580: :endif sans :ifE581: :else sans :ifE582: :elseif sans :ifE583: Il ne peut y avoir qu'un seul :elseE584: :elseif aprs :elseE585: Imbrication de :while ou :for trop importanteE586: :continue sans :while ou :forE587: :break sans :while ou :forE588: :endfor sans :forE588: :endwhile sans :whileE589: 'backupext' et 'patchmode' sont gauxE590: Il existe dj une fentre de prvisualisationE591: 'winheight' ne peut pas tre plus petit que 'winminheight'E592: 'winwidth' ne peut pas tre plus petit que 'winminwidth'E593: Au moins %d lignes sont ncessairesE594: Au moins %d colonnes sont ncessairesE595: contient des caractres largeur double non-imprimablesE596: Police(s) invalide(s)E597: Impossible de slectionner un jeu de policesE598: Jeu de polices invalideE599 : Valeur de 'imactivatekey' invalideE59: caractre invalide aprs %s@E600: :endtry manquantE601: Imbrication de :try trop importanteE602: :endtry sans :tryE603: :catch sans :tryE604: :catch aprs :finallyE605: Exception non intercepte : %sE606: :finally sans :tryE607: Il ne peut y avoir qu'un seul :finallyE608: Impossible d'mettre des exceptions avec 'Vim' comme prfixeE609: Erreur cscope : %sE60: Trop de %s{...}s complexesE610: Impossible de charger la police Zap '%s'E611: Impossible d'utiliser la police %sE612: Trop de symboles sont dfinisE613: Police d'imprimante inconnue : %sE614: vim_SelFile: impossible de revenir dans le rpertoire courantE615: vim_SelFile: impossible d'obtenir le rpertoire courantE616: vim_SelFile: impossible d'obtenir la police %sE617: Non modifiable dans l'interface graphique GTK+ 2E618: "%s" n'est pas un fichier de ressource PostScriptE619: "%s" n'est pas un fichier de ressource PostScript supportE61: %s* imbriqusE620: La conversion pour imprimer dans l'encodage "%s" a chouE621: La version du fichier de ressource "%s" est erroneE622: Impossible de forker pour cscopeE623: Impossible d'engendrer le processus cscopeE624: Impossible d'ouvrir le fichier "%s"E625: impossible d'ouvrir la base de donnes cscope %sE626: impossible d'obtenir des informations sur la base de donnes cscopeE62: %s%c imbriqusE63: utilisation invalide de \_E64: %s%c ne suit aucun atomeE655: Trop de liens symboliques (cycle ?)E658: Connexion NetBeans perdue pour le tampon %ldE659: Impossible d'invoquer Python rcursivementE65: post-rfrence invalideE661: Dsol, aucune aide en langue '%s' pour %sE662: Au dbut de la liste des modificationsE663: la fin de la liste des modificationsE664: La liste des modifications (changelist) est videE665: Impossible de dmarrer l'IHM graphique, aucune police valide trouveE432: Compilateur %s non supportE667: Fsynch a chouE668: Mode d'accs incorrect au fichier d'infos de connexion NetBeans : "%s"E669: Caractre non-imprimable dans un nom de groupeE66: \z( n'est pas autoris iciE670: Encodages diffrents dans les fichiers d'aide en langue %sE671: Titre de fentre "%s" introuvableE672: Impossible d'ouvrir une fentre dans une application MDIE673: Jeu de caractres et encodage multi-octets incompatiblesE674: 'printmbcharset' ne peut pas tre vide avec un encodage multi-octetsE675: Aucune police par dfaut pour l'impression multi-octetsE676: Pas d'autocommande correspondante pour le tampon acwriteE677: Erreur lors de l'criture du fichier temporaireE678: Caractre invalide aprs %s%%[dxouU]E679: boucle rcursive lors du chargement de syncolor.vimE67: \z1 et co. ne sont pas autoriss iciE680: : numro de tampon invalideE681: le tampon n'est pas chargE682: Dlimiteur ou motif de recherche invalideE683: Nom de fichier manquant ou motif invalideE684: index de Liste hors limites : %ld au-del de la finE473: Erreur interne : %sE686: L'argument de %s doit tre une ListeE687: Moins de destinations que d'lments dans la ListeE688: Plus de destinations que d'lments dans la ListeE689: Seul une Liste ou un Dictionnaire peut tre indexE68: Caractre invalide aprs \zE690: "in" manquant aprs :forE691: Une Liste ne peut tre compare qu'avec une ListeE692: Opration invalide avec les ListesE693: Une Funcref ne peut tre compare qu' une FuncrefE694: Opration invalide avec les FuncrefsE695: Impossible d'indexer une FuncrefE696: Il manque une virgule dans la Liste %sE697: Il manque ']' la fin de la Liste %sE698: variable trop imbrique pour en faire une copieE699: Trop d'argumentsE69: ']' manquant aprs %s%%[E700: Fonction inconnue : %sE701: Type invalide avec len()E702: La fonction de comparaison de sort() a chouE703: Utilisation d'une Funcref comme un NombreE704: Le nom d'une Funcref doit commencer par une majuscule : %sE705: Le nom d'une variable entre en conflit avec la fonction %sE706: Type de variable incohrent pour %sE709: [:] ne peut tre spcifi qu'en dernierE709: [:] requiert une ListeE70: %s%%[] videE710: La Liste a plus d'lments que la destinationE711: La Liste n'a pas assez d'lmentsE712: L'argument de %s doit tre une Liste ou un DictionnaireE713: Impossible d'utiliser une cl vide dans un DictionnaireE714: Liste requiseE715: Dictionnaire requisE716: La cl %s n'existe pas dans le DictionnaireE717: Une entre du Dictionnaire porte dj ce nomE718: Rfrence de fonction (Funcref) requiseE719: Utilisation de [:] impossible avec un DictionnaireE71: Caractre invalide aprs %s%%E720: Il manque ':' dans le Dictionnaire %sE721: Cl "%s" duplique dans le DictionnaireE722: Il manque une virgule dans le Dictionnaire %sE723: Il manque '}' la fin du Dictionnaire %sE724: variable trop imbrique pour tre afficherE725: Appel d'une fonction dict sans Dictionnaire : %sE726: Le pas est nulE727: Dbut au-del de la finE728: Utilisation d'un Dictionnaire comme un NombreE729: Utilisation d'une Funcref comme une ChaneE72: Erreur lors de la fermeture du fichier d'changeE730: Utilisation d'une Liste comme une ChaneE731: Utilisation d'un Dictionnaire comme une ChaneE732: Utilisation de :endfor avec :whileE733: Utilisation de :endwhile avec :forE734: Type de variable erron avec %s=E735: Un Dictionnaire ne peut tre compar qu'avec un DictionnaireE736: Opration invalide avec les DictionnairesE737: un mappage existe dj pour %sE738: Impossible de lister les variables de %sE739: Impossible de crer le rpertoire "%s"E73: La pile des marqueurs est videE741: La valeur de %s est verrouilleE742: Impossible de modifier la valeur de %sE743: variable trop imbrique pour la (d)verrouillerE744: NetBeans n'autorise pas la modification des fichiers en lecture seuleE745: Utilisation d'une Liste comme un NombreE746: Le nom de la fonction %s ne correspond pas le nom du scriptE747: Tampon modifi : impossible de changer de rpertoire (ajoutez ! pour passer outre)E748: Aucun registre n'a t prcdemment utilisE749: tampon videE74: Commande trop complexeE750: Utilisez d'abord :profile start E751: Le nom du fichier ne doit pas contenir de nom de rgionE752: Pas de suggestion orthographique prcdenteE334: Introuvable : %sE754: 8 rgions au maximum sont supportesE755: Rgion invalide dans %sE756: La vrification orthographique n'est pas activeE757: Le fichier ne ressemble pas un fichier orthographiqueE758: Fichier orthographique tronquE759: Erreur de format du fichier orthographiqueE75: Nom trop longE760: Nombre de mots non indiqu dans %sE761: Erreur de format dans le fichier d'affixe FOL, LOW et UPPE762: Un caractre dans FOL, LOW ou UPP est hors-limitesE763: Les caractres de mots diffrent entre les fichier orthographiquesE764: L'option '%s' n'est pas activeE765: 'spellfile' n'a pas %ld entresE766: Pas assez d'arguments pour printf()E767: Trop d'arguments pour printf()E768: Le fichier d'change %s existe dj (:silent! pour passer outre)E769: ']' manquant aprs %s[E76: Trop de [E770: Section non supporte dans le fichier orthographiqueE771: Fichier orthographique obsolte, sa mise jour est ncessaireE772: Le fichier est prvu pour une version de Vim plus rcenteE773: cycle de liens symboliques avec "%s"E774: 'operatorfunc' est videE775: La fonctionnalit d'valuation n'est pas disponibleE776: Aucune liste d'emplacementsE777: Chane ou Liste attendueE778: %s ne semble pas tre un fichier .sugE779: Fichier de suggestions obsolte, mise jour ncessaire : %sE77: Trop de noms de fichiersE780: Fichier .sug prvu pour une version de Vim plus rcente : %sE781: Le fichier .sug ne correspond pas au fichier .spl : %sE782: Erreur lors de la lecture de fichier de suggestions : %sE783: caractres dupliqu dans l'entre MAPE784: Impossible de fermer le dernier ongletE785: complete() n'est utilisable que dans le mode InsertionE786: Les plages ne sont pas autorissE787: Le tampon a t modifi inopinmentE788: L'dition d'un autre tampon n'est plus permiseE789: ']' manquant : %sE78: Marque inconnueE790: undojoin n'est pas autoris aprs une annulationE791: Entre du descripteur de clavier (keymap) videE79: Impossible de dvelopper les mtacaractresE800: Le support de l'arabe n'a pas t compil dans cette version E80: Erreur lors de l'critureE81: utilis en dehors d'un scriptE82: Aucun tampon ne peut tre allou, Vim doit s'arrterE83: L'allocation du tampon a chou : arrtez Vim, librez de la mmoireE84: Aucun tampon n'est modifiE85: Aucun tampon n'est listE86: Le tampon %ld n'existe pasE87: Impossible d'aller aprs le dernier tamponE88: Impossible d'aller avant le premier tamponE89: Le tampon %ld n'a pas t enregistr (ajoutez ! pour passer outre)E90: Impossible de dcharger le dernier tamponE91: L'option 'shell' est videE92: Le tampon %ld n'existe pasE93: Plusieurs tampons correspondent %sE94: Aucun tampon ne correspond %sE95: Un tampon porte dj ce nomE96: Impossible d'utiliser diff sur plus de %ld tamponsE97: diff ne fonctionne pasE98: Le fichier intermdiaire produit par diff n'a pu tre luE99: Le tampon courant n'est pas en mode diffERREUR: Ouvrir un fichier - VimOuvrir un fichier dans une nouvelle fentre - Vimditer dans &Vimditer dans &plusieurs Vimsditer dans le Vim existant - diter dans un seul &Vimdites le(s) fichier(s) slectionn(s) avec VimEncodage :Fin de la fonctionFin du fichier sourcTapez la cl de chiffrement : Entrez le numro du fichier d'change utiliser (0 pour quitter) : Tapez la cl nouveau : Mode dbogage activ. Tapez "cont" pour continuer.Mode Ex activ. Tapez "visual" pour passer en mode Normal.ErreurErreur et interruptionErreur de cration du processus : vrifiez que gvim est bien dans votre chemin !Erreur dtecte en traitant %s :Estimation de mmoire consomme : %d octetsExceptionException intercepte : %sException limine : %sException termine : %sException mise : %sExcution de %sNombre de MAP attendu dans %s ligne %dNombre de REP(SAL) attendu dans %s ligne %dY ou N attendu dans %s ligne %d : %sexpressionSous-correspondances externes : FLAG trouv aprs des drapeaux dans %s ligne %d : %sLe fichier "%s" n'existe pasFichier prservFichiersFiltreChercher et remplacer (utilisez '\\' pour trouver un '\')Suiva&ntSuivantChercher une chane (utilisez '\\' pour chercher un '\')Trouver symboleRechercher :Premier mot dupliqu dans %s ligne %d : %sLe drapeau n'est pas un nombre dans %s ligne %d : %sLa police '%s' n'a pas une largeur fixeChoisir une police - VimLa largeur de Font%ld n'est pas le double de celle de Font0 Largeur de Font0 : %ld Font0: %s Largeur de Font1 : %ld Font1: %s Police :arguments en trop aprs l'optionGnrer la doc deBienvenue, utilisateur de Vim !Aidez les enfants pauvres d'Ouganda !Fin du paragrapheERREUR d'E/S%d mot(s) ignor(s) avec des caractres non-ASCII dans %s%d mot(s) ignor(s) avec des caractres non-ASCIINom de fichier invalideDrapeau non autoris dans %s ligne %d : %sNom de registre invalideCaractre initial non valideligne de saisie_Mthodes de saisieInterruptionInterruption : InterrompuArgument invalide pourLa spcification de la police est invalideNumro de rgion invalide dans %s ligne %d : %sValeur de FLAG invalide dans %s ligne %d : %sLes cls ne correspondent pas !Fermer une connexiondition de liens : Respecter la casseMots entiers seulementMessageMainteneur des messages : Adrien Beau '>' manquantLigne FOL/LOW/UPP manquante dans %sLigne SOFO%s manquante dans %sModifi par Nom :%s version %ld est ncessaire Amigados version 2.04 ou ultrieure est ncessaire NetBeans interdit l'criture des tampons non modifisNouvel ongletAucun lment de syntaxe dfini pour ce tamponAucune abrviation trouveAucun point d'arrt n'est dfiniAucun displayAucun display : L'envoi de l'expression a chou. Aucun fichiers inclusAucun mappage trouvAucune marque positionneAucune correspondance sous le curseur, recherche de la suivanteAucune autocommande correspondantePas de fichier d'changeAucun texte imprimerAnnulation impossible ; continuerAucune commande dfinie par l'utilisateur trouveNon utilisRien annulerNombre de mots aprs l'analyse phontique : %ldOkOuvrir un fichierOuvrir dans un onglet...Ouvrir dans un onglet...L'ouverture du display X a chouL'ouverture du display X a dpass le dlai d'attenteL'ouverture du display X a pris %ld msFichier original "%s"craser le fichier %s existant ?Page %dNetbeans interdit l'criture partielle de ses tamponsSlectionner un patch - VimLe chemin est trop long !Chemin :Motif trouv dans toutes les ligne : %sMotif introuvableAnalyse phontique en cours...Appuyez sur ENTRE ou tapez une commande pour continuerTche d'impression envoye.Imprim : %sImpression de '%s'Impression interrompueImpression de la page %d (%d%%)Rechercher un motifQuestionLecture du fichier d'affixes %s...Relecture du fichier orthographiqueLecture du fichier orthographique %s...Lecture de stdin...Lecture du fichier orthographique "%s"Lecture du fichier viminfo "%s"%s%s%sLecture de la liste de mots %s...Rcupration acheve. Vrifiez que tout est correct.Rinitialiser toutes les connexionsRemplacerRempl&acer toutRemplacer toutRemplacer par :RcuprerRcuprer de tous les projetsRcuprer du fichierRcuprer du projetCompatibilit avec Vi activeLes modes sont dsactivs, le texte saisi est insrSNiFF+ est actuellement Enregistrer sous - VimEnregistrer un fichierEnregistrer la redirectionEnregistrer la session - VimEnregistrer les rglages - VimEnregistrer la vue - VimEnregistrer "%s" ?Examen du dictionnaire : %sExamen des fichiers inclus : %sExamen des marqueurs.Examen : %sWidget scrollbar: Impossible d'obtenir la gomtrie du pixmap 'thumb'chane de rechercheRecherche de "%s"Recherche de "%s" dans "%s"Recherche du fichier inclus %sExamen du fichier de marqueurs %sConsultez ":help E312" pour plus d'information.Consultez ":help W11" pour plus d'information.Consultez ":help W12" pour plus d'information.Consultez ":help W16" pour plus d'information.Slecteur de rpertoire%s%ld sur %ld Lignes ; %ld sur %ld Mots ; %ld sur %ld Octets slectionns%s%ld sur %ld Lignes ; %ld sur %ld Mots ; %ld sur %ld Caractres ; %ld sur %ld octets slectionnsSlectionEnvoi l'imprimante...Montrer la classe de base deMontrer classe dans hirarchieMontrer classe dans hirarchie restreinteAfficher les connexionsMontrer doc deMontrer les fonctions membres surchargesAfficher la taille en PointsMontrer source deAfficher ce messageSymboles dans %s :Taille :Sniff: Erreur lors d'une criture. DconnexionDsol, le fichier d'aide "%s" est introuvableDsol, aucune suggestionDsol, seulement %ld suggestionsDsol, commande dsactive : la bibliothque Perl n'a pas pu tre charge.Sourcer un script - VimSponsorisez le dveloppement de Vim !La taille de la pile s'accrotStyle :Le fichier d'change "Le fichier d'change "%s" existe dj, l'craser ?Un fichier d'change existe dj !Fichiers d'change trouvs :Onglet %dDtacher ce menuLe test du display X a chouMerci d'avoir choisi VimLe fichier a t cr le La seule correspondanceCe Vim n'a pas t compil avec la fonctionnalit diffCette commande cscope ne supporte pas le partage de la fentre. Basculer implmentation/dfinitionTrop d'arguments "+command", "-c command" ou "--cmd command"Trop de drapeaux de compositionTrop d'arguments d'ditionTrop de prfixes reports et/ou de drapeaux de compositionTrop de prfixes reports (PFXPOSTPONE)Trop de rgions dans %s ligne %d : %sHautNombre total de mots : %dTexte en trop dans %s ligne %d : %stapez :q pour quitter VimTapez un nombre ou cliquez avec la souris ( annule) :Impossible de lire le bloc 0 de Impossible d'inscrire un nom de serveur de commandeL'annulation n %ld introuvableInconnuOption inconnueDrapeaux non reconnus dans %s ligne %d : %slment non reconnu ou dupliqu dans %s ligne %d : %s(sans titre)HautUtilisez Vim version 3.0. CUT_BUFFER0 utilis plutt qu'une slection videUtilisation du fichier d'change "%s"VIM - ATTENTIONRemplacer - VimRechercher - VimVIM - Vi AmliorErreur VIMVIM: Impossible d'ouvrir la fentre ! VIMRUN.EXE est introuvable votre $PATH. Les commandes externes ne feront pas de pause une fois termines. Voir :help win32-vimrun pour plus d'informations.Choisir une police - VimVim E458: Erreur d'allocation de couleurs, couleurs possiblement incorrectesAlerte VimVimVimErreur VimErreur Vim : ~aVim quitte avec %d Vim est un logiciel libreVim: vnement %s intercept Vim: Signal mortel intercept Vim: Signal mortel %s intercept Vim: Double signal, sortie Vim: Erreur lors de la lecture de l'entre, sortie... Vim: Erreur: Impossible de dmarrer gvim depuis NetBeans Vim: Fini. Vim: Fentre principale dtruite inopinment Vim: Lecture de stdin... Vim: Une requte "die" a t reue par le gestionnaire de session Vim: Alerte: L'entre ne se fait pas sur un terminal Vim: Alerte: La sortie ne s'effectue pas sur un terminal Vim: prservation des fichiers... W10: Alerte: Modification d'un fichier en lecture seuleW11: Alerte: Le fichier "%s" a chang depuis le dbut de l'ditionW12: Alerte: Le fichier "%s" a t modifi, ainsi que le tampon dans VimW13: Alerte: Le fichier "%s" a t cr aprs le dbut de l'ditionW14: Alerte: La liste des noms de fichier dbordeW15: Alerte: Sparateur de ligne erron, ^M possiblement manquantW16: Alerte: Les permissions de "%s" ont chang depuis le dbut de l'ditionW17: L'arabe requiert l'UTF-8, tapez ':set encoding=utf-8'W18: Caractre invalide dans un nom de groupeALERTE: Le fichier a t modifi depuis que Vim l'a lu !ALERTE: Windows 95/98/ME dtectAlerteAlerte: Liste de mots "%s.%s.spl" ou "%s.ascii.spl" introuvableAlerte: Entre inattendue dans un autre tampon (vrifier autocmdes)Alerte: la composition et NOBREAK sont tous les deux spcifisAlerte: region %s non supporteAlerte: le terminal ne peut pas surlignerLors de l'ouverture du fichier "Position de la fentre : X %d, Y %dMot ajout dans %sMot d'une autre ligneMot retir de %sPerdre une partie du fichier ?criture du fichier orthographique %s...criture du fichier de suggestions %s...criture du fichier viminfo "%s"Valeur de CHECKCOMPOUNDPATTERN errone dans %s ligne %d : %sValeur de COMPOUNDMIN errone dans %s ligne %d : %sValeur de COMPOUNDSYLMAX errone dans %s ligne %d : %sValeur de COMPOUNDWORDMAX errone dans %s ligne %d : %sXSMP: chec de la surveillance de connexion ICEXSMP: SmcOpenConnection a chou : %sXSMP: prise en charge d'une requte save-yourselfXSMP a perdu la connexion ICEXSMP: ouverture de la connexionXref a un(e)Xref est rfrenc parXref rfrenceXref utilise parOUILe quantificateur est nul[ERREUR DE CONVERSION la ligne %ld][CR manquant][Effac][Priph.][Fichier trop volumineux][Aide][OCTET INVALIDE la ligne %ld][Dernire ligne incomplte][Liste des emplacements][NL trouv][NON converti][Nouveau RPERTOIRE][Nouveau fichier][Nouveau fichier][Nouveau][Aucun nom][Attention: tout n'est pas enregistr] [Non dit][Permission refuse][Prvisu][Liste Quickfix][ERREURS DE LECTURE][RO][Erreurs de lecture][appels] total re/malloc() %lu, total free() %lu [converti][chiffr][format dos][dos][fifo/socket][fifo][fichier ...] ouvrir le ou les fichiers spcifis[lignes longues coupes][format mac][mac][noeol][lecture-seule][socket][format unix][unix]aprset lancer diff avec le fichier original pour reprer les changements) tentative de rfrencer un tampon effactentative de rfrencer une fentre effaceAutocommandes marques pour auto-suppression : %s autocommande %savantbloc de %ld lignes copibloc de 1 ligne copitampon invalidepar par Bram Moolenaar et al.inputrestore() a t appel plus de fois qu'inputsave()appel de %simpossible d'effacer les attributs d'OutputObjectImpossible de lire la sortie de 'charconvert'Impossible de modifier le mode de la console ?! Impossible de crer commande de tampon/fentre : objet en cours d'effacementimpossible d'effacer la ligneImpossible d'obtenir la ligneimpossible d'insrer la ligneImpossible d'insrer/ajouter de lignesimpossible d'ouvrir Impossible d'inscrire la commande de rappel : tampon/fentre en effacementImpossible d'inscrire la commande de rappel : rf. tampon/fentre introuvableimpossible de remplacer la ligneimpossible d'enregistrer les informations d'annulationImpossible de remettre la/les ligne(s)impossible de raliser une copie ; effacer tout de mmemodificationmodificationsde fermeturecmde : %sconnectde retour dans %simpossible de sourcer "%s"impossible d'ouvrir le tamponexec de cs_create_connection a choucs_create_connection: fdopen pour fr_fp a choucs_create_connection: fdopen pour to_fp a choucommandes cscope : connexion cscope %s fermecurseur positionn en dehors du tamponutilisation par dfaut de 'bloc 1 effac ?dlerror = "%s"ne quittez pas l'diteur tant que le fichier n'est pas correctement enregistr !variable d'environnementgestionnaire d'erreurliste d'erreurs %d sur %d ; %d erreursexpressions dsactive lors de la compilationlignes en moinsfichier nom / contexte/ ligne fin du sourcement de %slibration de %ld lignesErreur de gvimext.dllaideoption cachedans le chemin --- attribut invalidenumro de tampon invalideexpression invalidenom de marque invalideest un rpertoiren'est pas un fichiern'est pas un fichier ou un priphrique inscriptibleest en lecture seule (ajoutez ! pour passer outre)interruption clavierligne %4ld :ligne %6d, mot %6d - %sligne %ldligne %ld sur %ld --%d%%-- col ligne %ld : %sligne %ld : impossible de sourcer "%s"ligne %ld : sourcement de "%s"ligne en moinsnumro de ligne hors limitesnumro de ligne hors limitesde dconnexionmarque non positionneCorrespondance %dCorrespondance %d sur %dmaximum mch_get_shellsize: pas une console ?! menu Edition->Rglages Globaux->Insertion Permanentemenu dition->Rglages Globaux->Compatibilit Vimenu Aide->Orphelins pour plus d'infomenu Aide->Sponsor/Enregistrement pour plus d'infominimum ligne de modeligne en pluslignes en plusnouveau shell dmarr nonaucune connexion cscope aucune correspondance particulireCe tampon n'existe pasCette fentre n'existe pasAucune synchronisationdnon autoris dans le bac sableintrouvables introuvable dans 'runtimepath' : "%s"pas encore implmentnumro modif. instantpe_line_count vaut zroligne de commande pre-vimrcread sur la socket Netbeansattribut en lecture seuleEnregistrementremplacer par %s (y/n/a/q/l/^E/^Y)?ligne %d colonne %dLa recherche a atteint le BAS, et continue en HAUTLa recherche a atteint le HAUT, et continue en BASle shell le shell a retourn %dd'arrtsoftspace doit tre un nombre entiersourcement "%s"stack_idx devrait tre 0une chane ne peut pas contenir de saut-de-lignesynchronisation sur les commentaires de type CLa synchronisation dbute marqueur %d sur %d%snom du marqueurvers %s sur %stapez :help cp-default pour plus d'infotapez :help iccf pour plus d'informationstapez :help register pour plus d'informationstapez :help sponsor pour plus d'informationstapez :help version7 pour lire les notes de mise jourtapez :help windows95 pour plus d'informationtapez :help ou pour accder l'aide en ligne tapez :q pour sortir du programme tapez :set nocp pour la desactiverdrapeau inconnu : option inconnuevimOption inconnueversion erreur Vimpour lesquels la casse est indiffrente (/ pour que le drapeau soit majuscule)numro de fentre hors limitesfentre invalideavec interface graphique (classic).avec interface graphique Carbon.avec interface graphique Cocoa.avec interface graphique GTK.avec interface graphique GTK-GNOME.avec interface graphique GTK2.avec interface graphique GTK2-GNOME.avec une interface graphique.avec interface graphique Photon.avec interface graphique X11-Athena.avec interface graphique X11-Motif.avec interface graphique X11-neXtaw.sans interface graphique.writelines() requiert une liste de chanespolib-1.0.7/tests/test_obsolete_previousmsgid.po0000664000175000017500000000275112440274247021606 0ustar iziizi00000000000000# Evolution translation to Catalan. # Copyright © 2000, 2004, 2005, 2006 Free Software Foundation, Inc. # Softcatalà , 2000, 2004-2006 # # Víctor Nieto # Aleix Badia i Bosch , 2004 # Xavier Conde Rueda , 2004-2007 # Francesc Dorca , 2004 # Jordi Mas , 2004-2007 # Enric Balletbò i Serra , 2004 # Gil Forcada , 2006, 2011. # David Planella Molas , 2007, 2008, 2009, 2010, 2011, 2012. # Jordi Serratosa , 2012. # #: ../shell/main.c:573 msgid "" msgstr "" "Project-Id-Version: evolution\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=evolution&keywords=I18N+L10N&component=Miscellaneous\n" "POT-Creation-Date: 2012-06-04 00:00+0000\n" "PO-Revision-Date: 2012-03-18 13:14+0100\n" "Last-Translator: David Planella \n" "Language-Team: Catalan \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bits\n" "Language: ca\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: ../addressbook/addressbook.error.xml.h:1 msgid "This address book could not be opened." msgstr "No s'ha pogut obrir aquesta llibreta d'adreces." #, fuzzy #~| msgid "" #~| "Error on %s\n" #~| "%s" #~ msgid "" #~ "Error on %s: %s\n" #~ "%s" #~ msgstr "" #~ "S'ha produït un error en %s:\n" #~ "%s" polib-1.0.7/tests/test_merge_after.po0000664000175000017500000000247112462653730017273 0ustar iziizi00000000000000# translation of django.po to Castellano # This file is distributed under the same license as the PACKAGE package. # Copyright (C) 2007 THE PACKAGE'S COPYRIGHT HOLDER. # msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-13 10:00+0100\n" "PO-Revision-Date: 2007-07-14 13:00-0500\n" "Last-Translator: Mario Gonzalez \n" "Language-Team: Castellano \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" #. this comment will be merged #: some/file.py:1 some/file2.py:2 msgid "" "This entry is already present in pofile, but with different occurrences" msgstr "Some translation ..." #: utils/timesince.py:12 #, fuzzy msgid "year" msgid_plural "years" msgstr[0] "année" msgstr[1] "années" #: foo/bar.py:30 msgid "" "This entry should be removed after the merge and added again as non obsolete" " entry" msgstr "Some translation" #: some/file.py:3 some/file2.py:4 msgid "This entry is not present in pofile and will be appended" msgstr "" #: utils/timesince.py:40 msgid "month" msgid_plural "monthes" msgstr[0] "" msgstr[1] "" #~ msgid "This entry is not present in potfile and will be obsoleted" #~ msgstr "Some translation" polib-1.0.7/tests/test_save_as_pofile.po0000664000175000017500000014733112462653652020002 0ustar iziizi00000000000000msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-08-17 15:35-0400\n" "PO-Revision-Date: 2007-07-14 13:00-0500\n" "Last-Translator: Mario Gonzalez \n" "Language-Team: Castellano \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" msgid "" "\n" "

          To install bookmarklets, drag the link to your bookmarks\n" "toolbar, or right-click the link and add it to your bookmarks. Now you can\n" "select the bookmarklet from any page in the site. Note that some of these\n" "bookmarklets require you to be viewing the site from a computer designated\n" "as \"internal\" (talk to your system administrator if you aren't sure if\n" "your computer is \"internal\").

          \n" msgstr "" "\n" "

          Para instalar bookmarklets, arrastre el enlace a su barra\n" "de favoritos, o pulse con el botón derecho el enlace y añádalo a sus favoritos.\n" "Ahora puede escoger el bookmarklet desde cualquier página en el sitio.\n" "Observer que algunos de estos bookmarklets precisan que esté viendo\n" "el sitio desde un computador señalado como \"interno\" (hable\n" "con su administrador de sistemas si no está seguro de si el suyo lo es).

          \n" msgid " By %(filter_title)s " msgstr " Por %(filter_title)s " msgid "" "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with " "\"%(start)s\".)" msgstr "" "El \"%(attr)s\" de la línea %(line)s no es un atributo válido. (La línea " "empieza por \"%(start)s\".)" msgid "" "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with " "\"%(start)s\".)" msgstr "" "La \"<%(tag)s>\" de la línea %(line)s no es una etiqueta válida. (La línea " "empieza por \"%(start)s\".)" msgid "%(full_result_count)s total" msgstr "%(full_result_count)s total" msgid "%(name)s" msgstr "%(name)s" msgid "%(number)d %(type)s" msgstr "%(number)d %(type)s" msgid "%(object)s with this %(type)s already exists for the given %(field)s." msgstr "%(object)s de este %(type)s ya existen en este %(field)s." msgid "%(optname)s with this %(fieldname)s already exists." msgstr "Ya existe %(optname)s con este %(fieldname)s." msgid "%(score)d rating by %(user)s" msgstr "puntuado %(score)d por %(user)s" msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "%(size)d byte" msgstr[1] "%(size)d bytes" msgid "%(value).1f billion" msgid_plural "%(value).1f billion" msgstr[0] "%(value).1f billión" msgstr[1] "%(value).1f billión" msgid "%(value).1f million" msgid_plural "%(value).1f million" msgstr[0] "%(value).1f millón" msgstr[1] "%(value).1f millión" msgid "%(value).1f trillion" msgid_plural "%(value).1f trillion" msgstr[0] "%(value).1f trillión" msgstr[1] "%(value).1f trillión" msgid "%.1f GB" msgstr "%.1f GB" msgid "%.1f KB" msgstr "%.1f KB" msgid "%.1f MB" msgstr "%.1f MB" msgid "%s does not appear to be a urlpattern object" msgstr "%s no parece ser un objeto urlpattern" msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" msgid "1 result" msgid_plural "%(counter)s results" msgstr[0] "1 resultado" msgstr[1] "%(counter)s resultados" msgid "" "

          By %s:

          \n" "
            \n" msgstr "" "

            Por %s:

            \n" "
              \n" msgid "" "A tag on line %(line)s is missing one or more required attributes. (Line " "starts with \"%(start)s\".)" msgstr "" "A una etiqueta de la línea %(line)s le faltan uno o más atributos " "requeridos. (La línea empieza por \"%(start)s\".)" msgid "A user with that username already exists." msgstr "Ya existe un usuario con este nombre." msgid "A valid URL is required." msgstr "Se precisa una URL válida." msgid "AM" msgstr "AM" msgid "Aargau" msgstr "Aargau" msgid "Action" msgstr "Acción" msgid "Add" msgstr "Agregar" msgid "Add %(name)s" msgstr "Agregar %(name)s" msgid "Add %s" msgstr "Agregar %s" msgid "Add user" msgstr "Añadir usuario" msgid "Added %s." msgstr "Agregado %s." msgid "Aichi" msgstr "Aichi" msgid "Akita" msgstr "Akita" msgid "All" msgstr "Todo" msgid "All dates" msgstr "Todas las fechas" msgid "Anonymous users cannot vote" msgstr "Los usuarios anónimos no pueden votar" msgid "Any date" msgstr "Cualquier fecha" msgid "Aomori" msgstr "Aomori" msgid "App %r not found" msgstr "Aplicación %r no encontrada" msgid "Appenzell Ausserrhoden" msgstr "Appenzell Ausserrhoden" msgid "Appenzell Innerrhoden" msgstr "Appenzell Innerrhoden" msgid "April" msgstr "Abril" msgid "Arabic" msgstr "Árabe" msgid "" "Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " "All of the following related items will be deleted:" msgstr "" "¿Está seguro de que quiere borrar los %(object_name)s " "\"%(escaped_object)s\"? Se borrarán los siguientes objetos relacionados:" msgid "Are you sure?" msgstr "¿Está seguro?" msgid "Argentinean Spanish" msgstr "Español Argentino" msgid "As above, but opens the admin page in a new window." msgstr "" "Como antes, pero abre la página de administración en una nueva ventana." msgid "Aug." msgstr "Ago." msgid "August" msgstr "Agosto" msgid "Baden-Wuerttemberg" msgstr "Baden-Wuerttemberg" msgid "Badly formed XML: %s" msgstr "XML mal formado: %s" msgid "Banovce nad Bebravou" msgstr "Región de Banovce nad Bebravou" msgid "Banska Bystrica" msgstr "Región de Bystrica" msgid "Banska Bystrica region" msgstr "Región de Banska Bystrica" msgid "Banska Stiavnica" msgstr "Región de Banska Stiavnica" msgid "Bardejov" msgstr "Región de Bardejov" msgid "Basel-Land" msgstr "Basel-Land" msgid "Basel-Stadt" msgstr "Basel-Stadt" msgid "Bavaria" msgstr "Bavaria" msgid "Bengali" msgstr "Bengalí" msgid "Berlin" msgstr "Berlín" msgid "Berne" msgstr "Berne" msgid "Bookmarklets" msgstr "Bookmarklets" msgid "Boolean (Either True or False)" msgstr "Booleano (Verdadero o Falso)" msgid "Boolean (Either True, False or None)" msgstr "Booleano (Verdadero, Falso o Nulo)" msgid "Brandenburg" msgstr "Brandenburg" msgid "Bratislava I" msgstr "Región de Bratislava I" msgid "Bratislava II" msgstr "Región de Bratislava II" msgid "Bratislava III" msgstr "Región de Bratislava III" msgid "Bratislava IV" msgstr "Región de Bratislava IV" msgid "Bratislava V" msgstr "Región de Bratislava V" msgid "Bratislava region" msgstr "Región de Bratislava" msgid "Brazilian" msgstr "Brasileño" msgid "Bremen" msgstr "Bremen" msgid "Brezno" msgstr "Región de Brezno" msgid "Bulgarian" msgstr "Búlgaro" msgid "Bytca" msgstr "Región de Bytca" msgid "Cadca" msgstr "Región de Cadca" msgid "Catalan" msgstr "Catalán" msgid "Change" msgstr "Modificar" msgid "Change %s" msgstr "Modificar %s" msgid "Change history: %s" msgstr "Modificar histórico: %s" msgid "Change my password" msgstr "Cambiar mi clave" msgid "Change password" msgstr "Cambiar clave" msgid "Change password: %s" msgstr "Cambiar clave: %s" msgid "Change:" msgstr "Modificar:" msgid "Changed %s." msgstr "Modificado %s." msgid "" "Check this box if the comment is inappropriate. A \"This comment has been " "removed\" message will be displayed instead." msgstr "" "Marque esta caja si el comentario es inapropiado. En su lugar se mostrará " "\"Este comentario ha sido eliminado\"." msgid "Chiba" msgstr "Chiba" msgid "Comma-separated integers" msgstr "Enteros separados por comas" msgid "Comment:" msgstr "Comentario:" msgid "Confirm password:" msgstr "Confirme clave:" msgid "Content object" msgstr "Objeto contenido" msgid "Could not retrieve anything from %s." msgstr "No pude obtener nada de %s." msgid "Croatian" msgstr "Croata" msgid "Currently:" msgstr "Actualmente:" msgid "Czech" msgstr "Checo" msgid "DATETIME_FORMAT" msgstr "j N Y P" msgid "DATE_FORMAT" msgstr "j N Y" msgid "DATE_WITH_TIME_FULL" msgstr "j M Y P" msgid "Danish" msgstr "Danés" msgid "Database error" msgstr "Erorr en la base de datos" msgid "Date (with time)" msgstr "Fecha (con hora)" msgid "Date (without time)" msgstr "Fecha (sin hora)" msgid "Date/time" msgstr "Fecha/hora" msgid "Date:" msgstr "Fecha:" msgid "Dec." msgstr "Dic." msgid "December" msgstr "Diciembre" msgid "Decimal number" msgstr "Número decimal" msgid "Delete" msgstr "Eliminar" msgid "Deleted %s." msgstr "Borrado %s." msgid "" "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " "related objects, but your account doesn't have permission to delete the " "following types of objects:" msgstr "" "Eliminar el %(object_name)s '%(escaped_object)s' provocaría la eliminación " "de objetos relacionados, pero su cuenta no tiene permiso para borrar los " "siguientes tipos de objetos:" msgid "" "Designates that this user has all permissions without explicitly assigning " "them." msgstr "" "Indica que este usuario tiene todos los permisos sin asignárselos " "explícitamente." msgid "Designates whether the user can log into this admin site." msgstr "Indica si el usuario puede entrar en este sitio de administración." msgid "" "Designates whether this user can log into the Django admin. Unselect this " "instead of deleting accounts." msgstr "" "Indica si el usuario puede entrar en este sitio de administración. Desmarque" " esto en lugar de borrar la cuenta." msgid "Detva" msgstr "Región de Detva" msgid "Django administration" msgstr "Administración de Django" msgid "Django site admin" msgstr "Sitio de administración de Django" msgid "Documentation" msgstr "Documentación" msgid "Documentation bookmarklets" msgstr "Bookmarklets de documentación" msgid "Documentation for this page" msgstr "Documentación de esta página" msgid "Dolny Kubin" msgstr "Región de Dolny Kubin" msgid "Dunajska Streda" msgstr "Región de Dunajska Streda" msgid "Duplicate values are not allowed." msgstr "No se admiten valores duplicados." msgid "Dutch" msgstr "Alemán" msgid "E-mail address" msgstr "Dirección de correo electrónico" msgid "E-mail address:" msgstr "Dirección de correo electrónico:" msgid "Edit this object (current window)" msgstr "Editar este objeto (ventana actual)" msgid "Edit this object (new window)" msgstr "Editar este objeto (nueva ventana)" msgid "Ehime" msgstr "Ehime" msgid "Empty values are not allowed here." msgstr "No se admiten valores vacíos." msgid "English" msgstr "Inglés" msgid "Ensure that there are no more than %s decimal places." msgstr "Asegúrese de que no hay más de %s decimales." msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Asegúrese de que no hay más de %s dígitos antes del punto decimal." msgid "Ensure that there are no more than %s digits in total." msgstr "Asegúrese de que no hay más de %s dígitos en total." msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." msgstr "" "Asegúrese de que su texto tiene al menos %(min)d caracteres (actualmente " "tiene %(length)d)." msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." msgstr "" "Asegúrese de que su texto tiene a lo más %(max)d caracteres (actualmente " "tiene %(length)d)." msgid "Ensure this value is greater than or equal to %s." msgstr "Asegúrese de que este valor es mayor o igual a %s." msgid "Ensure this value is less than or equal to %s." msgstr "Asegúrese de que este valor es menor o igual a %s." msgid "Ensure your text is less than %s character." msgid_plural "Ensure your text is less than %s characters." msgstr[0] "Asegúrese de que su texto tiene menos de %s carácter." msgstr[1] "Asegúrese de que su texto tiene menos de %s caracteres." msgid "Enter a 4 digit post code." msgstr "Introduzca un código postal de 4 dígitos." msgid "Enter a list of values." msgstr "Introduzca una lista de valores." msgid "Enter a new password for the user %(username)s." msgstr "" "Introduzca una nueva contraseña para el usuario " "%(username)s." msgid "Enter a number." msgstr "Introduzca un número." msgid "Enter a positive number." msgstr "Introduzca un número positivo." msgid "Enter a postal code in the format XXXXX or XXX XX." msgstr "Introduzca un código postal en el formato XXXXX o XXX XX." msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." msgstr "Introduzca un código postal en el formato XXXXX o XXXX-XXXX." msgid "Enter a postcode. A space is required between the two postcode parts." msgstr "" "Introduzca un código postal. Se necesita un espacio entre las dos partes del" " código." msgid "Enter a valid Finnish social security number." msgstr "Introduzca un número de seguro social finlandés válido." msgid "" "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " "format." msgstr "" "Introduzca un número de tarjeta de identidad de Alemania válida en el " "formato XXXXXXXXXXX-XXXXXXX-XXXXXXX-X." msgid "" "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." msgstr "" "Introduzca un número de identificación de Islandia válido. El formato es " "XXXXXX-XXXX." msgid "Enter a valid Norwegian social security number." msgstr "Introduzca un número de seguro social de Noruega válido." msgid "Enter a valid Social Security number." msgstr "Introduzca un número de Seguro Social válido." msgid "" "Enter a valid Swiss identity or passport card number in X1234567<0 or " "1234567890 format." msgstr "" "Introduzca una identificación suiza válida o un número de pasaporte en el " "formato X1234567<0 or 1234567890." msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." msgstr "" "Introduzca un Número Seguro Social de EEUU válido en el formato XXX-XX-XXXX" msgid "Enter a valid U.S. state abbreviation." msgstr "Introduzca una abreviatura válida de estado de los EEUU." msgid "Enter a valid URL." msgstr "Introduzca una URL válida." msgid "Enter a valid VAT number." msgstr "Introduzca un número VAT válido." msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Introduzca una fecha válida en formato AAAA-MM-DD." msgid "Enter a valid date." msgstr "Introduzca una fecha válida." msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgstr "Introduzca una fecha/hora válida en formato AAAA-MM-DD HH:MM." msgid "Enter a valid date/time." msgstr "Introduzca una fecha/hora válida." msgid "Enter a valid e-mail address." msgstr "Introduzca una dirección de correo electrónico válida" msgid "Enter a valid filename." msgstr "Introduzca un nombre de fichero válido" msgid "Enter a valid time in HH:MM format." msgstr "Introduzca una hora válida en formato HH:MM." msgid "Enter a valid time." msgstr "Introduzca una hora válida." msgid "Enter a valid value." msgstr "Introduzca un valor correcto." msgid "Enter a valid zip code." msgstr "Introduzca un código postal válido." msgid "Enter a whole number between -32,768 and 32,767." msgstr "Introduzca un número entero entre -32,768 y 32,767." msgid "Enter a whole number between 0 and 32,767." msgstr "Introduzca un número entero entre 0 y 32,767." msgid "Enter a whole number." msgstr "Introduzca un número entero." msgid "Enter a zip code in the format XXXX." msgstr "Introduzca un código postal en el formato XXXX." msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." msgstr "Introduzca un código postal en el formato XXXXX o XXXX-XXXX." msgid "Enter a zip code in the format XXXXX-XXX." msgstr "Introduzca un código postal en el formato XXXX-XXXX." msgid "Enter a zip code in the format XXXXX." msgstr "Introduzca un código postal en el formato XXXXX." msgid "Enter a zip code in the format XXXXXXX." msgstr "Introduzca un código postal en el formato XXXXXXX." msgid "Enter only digits separated by commas." msgstr "Introduzca sólo dígitos separados por comas." msgid "Enter the same password as above, for verification." msgstr "Introduzca la misma contraseña que arriba, para verificación" msgid "Enter valid a Chilean RUT" msgstr "Introduzca un RUT chileno válido" msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X." msgstr "Introduzca un RUT chileno válido. El formato es XX.XXX.XXX-X." msgid "Enter valid e-mail addresses separated by commas." msgstr "Introduzca direcciones de correo válidas separadas por comas." msgid "" "Example: '/about/contact/'. Make sure to have leading and trailing slashes." msgstr "" "Ejemplo: '/about/contact/'. Asegúrese de que pone barras al principio y al " "final." msgid "" "Example: 'flatpages/contact_page.html'. If this isn't provided, the system " "will use 'flatpages/default.html'." msgstr "" "Ejemplo: 'flatpages/contact_page.html'. Si no es proporcionado, el sistema " "usará 'flatpages/default.html'." msgid "Feb." msgstr "Feb." msgid "February" msgstr "Febrero" msgid "Feel free to change this password by going to this page:" msgstr "Puede cambiarla accediendo a esta página:" msgid "Fields on %s objects" msgstr "Campos en %s objetos" msgid "File path" msgstr "Ruta de fichero" msgid "Filter" msgstr "Filtro" msgid "Finnish" msgstr "Finés" msgid "" "First, enter a username and password. Then, you'll be able to edit more user" " options." msgstr "" "Primero introduzca un nombre de usuario y una contraseña. Luego podrá editar" " el resto de opciones del usuario." msgid "Flag by %r" msgstr "Marca de %r" msgid "Floating point number" msgstr "Número decimal" msgid "Forgotten your password?" msgstr "¿Has olvidado tu contraseña?" msgid "" "Forgotten your password? Enter your e-mail address below, and we'll reset " "your password and e-mail the new one to you." msgstr "" "¿Ha olvidado su clave? Introduzca su dirección de correo electrónico, y " "crearemos una nueva que le enviaremos por correo." msgid "French" msgstr "Francés" msgid "Fri" msgstr "Vie" msgid "Fribourg" msgstr "Fribourg" msgid "Friday" msgstr "Viernes" msgid "Fukui" msgstr "Fukui" msgid "Fukuoka" msgstr "Fukuoka" msgid "Fukushima" msgstr "Fukushima" msgid "Galanta" msgstr "Galanta" msgid "Galician" msgstr "Gallego" msgid "Gelnica" msgstr "Gelnica" msgid "Geneva" msgstr "Geneva" msgid "German" msgstr "Alemán" msgid "Gifu" msgstr "Gifu" msgid "Glarus" msgstr "Glarus" msgid "Go" msgstr "Buscar" msgid "Graubuenden" msgstr "Graubuenden" msgid "Greek" msgstr "Griego" msgid "Groups" msgstr "Grupos" msgid "Gunma" msgstr "Gunma" msgid "Hamburg" msgstr "Hamburg" msgid "Hebrew" msgstr "Hebreo" msgid "Hessen" msgstr "Hessen" msgid "Hiroshima" msgstr "Hiroshima" msgid "History" msgstr "Histórico" msgid "Hlohovec" msgstr "Hlohovec" msgid "Hokkaido" msgstr "Hokkaido" msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" "Mantenga presionado \"Control\", o \"Command\" en un Mac, para seleccionar " "más de uno." msgid "Home" msgstr "Inicio" msgid "Humenne" msgstr "Humenne" msgid "Hungarian" msgstr "Húngaro" msgid "Hyogo" msgstr "Hyogo" msgid "IP address" msgstr "Dirección IP" msgid "Ibaraki" msgstr "Ibaraki" msgid "Icelandic" msgstr "Islandés" msgid "" "If this is checked, only logged-in users will be able to view the page." msgstr "Si está marcado, sólo los usuarios registrados podrán ver la página." msgid "Ilava" msgstr "Ilava" msgid "Important dates" msgstr "Fechas importantes" msgid "" "In addition to the permissions manually assigned, this user will also get " "all permissions granted to each group he/she is in." msgstr "" "Además de los permisos asignados manualmente, este usuario también tendrá " "todos los permisos de los grupos en los que esté." msgid "Integer" msgstr "Entero" msgid "Invalid CNPJ number." msgstr "Número CNPJ inválido" msgid "Invalid CPF number." msgstr "Número CPF inválido." msgid "Invalid URL: %s" msgstr "URL no válida: %s" msgid "Invalid comment ID" msgstr "ID de comentario no válido" msgid "Invalid date: %s" msgstr "Fecha no válida: %s" msgid "Ishikawa" msgstr "Ishikawa" msgid "Italian" msgstr "Italiano" msgid "Iwate" msgstr "Iwate" msgid "Jan." msgstr "Ene." msgid "January" msgstr "Enero" msgid "Japanese" msgstr "Japonés" msgid "July" msgstr "Julio" msgid "Jumps to the admin page for pages that represent a single object." msgstr "" "Le lleva a la página de administración de páginas que representan un único " "objeto." msgid "" "Jumps you from any page to the documentation for the view that generates " "that page." msgstr "" "Le lleva desde cualquier página a la documentación de la vista que la " "genera." msgid "June" msgstr "Junio" msgid "Jura" msgstr "Jura" msgid "Kagawa" msgstr "Kagawa" msgid "Kagoshima" msgstr "Kagoshima" msgid "Kanagawa" msgstr "Kanagawa" msgid "Kannada" msgstr "Kannada" msgid "Kezmarok" msgstr "Kezmarok" msgid "Kochi" msgstr "Kochi" msgid "Komarno" msgstr "Komarno" msgid "Korean" msgstr "Koreano" msgid "Kosice - okolie" msgstr "Kosice - okolie" msgid "Kosice I" msgstr "Kosice I" msgid "Kosice II" msgstr "Kosice II" msgid "Kosice III" msgstr "Kosice III" msgid "Kosice IV" msgstr "Kosice IV" msgid "Kosice region" msgstr "Región de Kosice" msgid "Krupina" msgstr "Krupina" msgid "Kumamoto" msgstr "Kumamoto" msgid "Kyoto" msgstr "Kyoto" msgid "Kysucke Nove Mesto" msgstr "Kysucke Nove Mesto" msgid "Latvian" msgstr "Latvio" msgid "Levice" msgstr "Levice" msgid "Levoca" msgstr "Levoca" msgid "Line breaks are not allowed here." msgstr "No se permiten saltos de línea." msgid "Liptovsky Mikulas" msgstr "Liptovsky Mikulas" msgid "Log in" msgstr "Identificarse" msgid "Log in again" msgstr "Identificarse de nuevo" msgid "Log out" msgstr "Terminar sesión" msgid "Logged out" msgstr "Sesión terminada" msgid "" "Looks like your browser isn't configured to accept cookies. Please enable " "cookies, reload this page, and try again." msgstr "" "Parece que su navegador no está configurado para aceptar cookies. Actívelas " "por favor, recargue esta página, e inténtelo de nuevo." msgid "Lower Saxony" msgstr "Lower Saxony" msgid "Lowercase letters are not allowed here." msgstr "No se admiten letras minúsculas." msgid "Lucenec" msgstr "Lucenec" msgid "Lucerne" msgstr "Lucerne" msgid "MONTH_DAY_FORMAT" msgstr "j \\de F" msgid "Macedonian" msgstr "Macedonio" msgid "Make sure your uploaded file is at least %s bytes big." msgstr "Asegúrese de que el fichero que envía tiene al menos %s bytes." msgid "Make sure your uploaded file is at most %s bytes big." msgstr "Asegúrese de que el fichero que envía tiene como máximo %s bytes." msgid "Malacky" msgstr "Malacky" msgid "March" msgstr "Marzo" msgid "Martin" msgstr "Martin" msgid "May" msgstr "Mayo" msgid "Mecklenburg-Western Pomerania" msgstr "Mecklenburg-Western Pomerania" msgid "Medzilaborce" msgstr "Medzilaborce" msgid "Michalovce" msgstr "Michalovce" msgid "Mie" msgstr "Mie" msgid "Miyagi" msgstr "Miyagi" msgid "Miyazaki" msgstr "Miyazaki" msgid "Model %(name)r not found in app %(label)r" msgstr "El modelo %(name)s no se ha encontrado en la aplicación %(label)r" msgid "Models available in the %(name)s application." msgstr "Modelos disponibles en la aplicación %(name)s." msgid "Moderator deletion by %r" msgstr "Eliminación del moderador %r" msgid "Mon" msgstr "Lun" msgid "Monday" msgstr "Lunes" msgid "My Actions" msgstr "Mis acciones" msgid "Myjava" msgstr "Myjava" msgid "Nagano" msgstr "Nagano" msgid "Nagasaki" msgstr "Nagasaki" msgid "Namestovo" msgstr "Namestovo" msgid "Nara" msgstr "Nara" msgid "Neuchatel" msgstr "Neuchatel" msgid "New password:" msgstr "Clave nueva:" msgid "Nidwalden" msgstr "Nidwalden" msgid "Niigata" msgstr "Niigata" msgid "Nitra" msgstr "Nitra" msgid "Nitra region" msgstr "Región de Nitra" msgid "No" msgstr "No" msgid "No fields changed." msgstr "No ha cambiado ningún campo." msgid "No file was submitted." msgstr "No se ha enviado ningún fichero" msgid "No file was submitted. Check the encoding type on the form." msgstr "" "No se ha enviado ningún fichero. Compruebe el tipo de codificación en el " "formulario." msgid "No voting for yourself" msgstr "No puedes votarte tú mismo" msgid "Non-numeric characters aren't allowed here." msgstr "No se admiten caracteres no numéricos." msgid "None available" msgstr "Ninguno disponible" msgid "North Rhine-Westphalia" msgstr "North Rhine-Westphalia" msgid "Norwegian" msgstr "Noruego" msgid "Nov." msgstr "Nov." msgid "Nove Mesto nad Vahom" msgstr "Nove Mesto nad Vahom" msgid "Nove Zamky" msgstr "Nove Zamky" msgid "November" msgstr "Noviembre" msgid "Obwalden" msgstr "Obwalden" msgid "Oct." msgstr "Oct." msgid "October" msgstr "Octubre" msgid "Oita" msgstr "Oita" msgid "Okayama" msgstr "Okayama" msgid "Okinawa" msgstr "Okinawa" msgid "Old password:" msgstr "Clave antigua:" msgid "One or more %(fieldname)s in %(name)s:" msgstr "Uno o más %(fieldname)s en %(name)s:" msgid "One or more %(fieldname)s in %(name)s: %(obj)s" msgstr "Uno o más %(fieldname)s en %(name)s: %(obj)s" msgid "One or more of the required fields wasn't submitted" msgstr "No se proporcionó uno o más de los siguientes campos requeridos" msgid "Only POSTs are allowed" msgstr "Sólo se admite POST" msgid "Only alphabetical characters are allowed here." msgstr "Sólo se admiten caracteres alfabéticos." msgid "Optional" msgstr "Opcional" msgid "Order:" msgstr "Orden:" msgid "Ordering" msgstr "Ordenación" msgid "Osaka" msgstr "Osaka" msgid "PM" msgstr "PM" msgid "Page not found" msgstr "Página no encontrada" msgid "Partizanske" msgstr "Partizanske" msgid "Password" msgstr "Contraseña" msgid "Password (again)" msgstr "Contraseña (de nuevo)" msgid "Password change" msgstr "Cambio de clave" msgid "Password change successful" msgstr "Cambio de clave exitoso" msgid "Password changed successfully." msgstr "La clave se ha cambiado exitosamente." msgid "Password reset" msgstr "Recuperar clave" msgid "Password reset successful" msgstr "Recuperación de clave exitosa" msgid "Password:" msgstr "Clave:" msgid "Past 7 days" msgstr "Últimos 7 días" msgid "Permissions" msgstr "Permisos" msgid "Persian" msgstr "Persa" msgid "Personal info" msgstr "Información personal" msgid "Pezinok" msgstr "Pezinok" msgid "Phone number" msgstr "Número de teléfono" msgid "Phone numbers must be in XX-XXXX-XXXX format." msgstr "Los números de teléfono deben tener el formato XXX-XXX-XXXX." msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgstr "" "Los números de teléfono deben guardar el formato XXX-XXX-XXXX. \"%s\" no es " "válido." msgid "Piestany" msgstr "Piestany" msgid "" "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " "\"%(start)s\".)" msgstr "" "Por favor, cierre la etiqueta %(tag)s de la línea %(line)s. (La línea " "empieza por \"%(start)s\".)" msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "Por favor, corrija el siguiente error." msgstr[1] "Por favor, corrija los siguientes errores." msgid "" "Please enter a correct username and password. Note that both fields are " "case-sensitive." msgstr "" "Por favor, introduzca un correcto nombre de usuario y contraseña. Note que " "ambos campos son sensibles a mayúsculas/minúsculas." msgid "Please enter a valid %s." msgstr "Por favor, introduzca un %s válido." msgid "Please enter a valid IP address." msgstr "Por favor introduzca una dirección IP válida." msgid "" "Please enter a valid decimal number with a whole part of at most %s digit." msgid_plural "" "Please enter a valid decimal number with a whole part of at most %s digits." msgstr[0] "" "Por favor, introduzca un número decimal válido con a lo más %s dígito en su " "parte entera." msgstr[1] "" "Por favor, introduzca un número decimal válido con a lo más %s dígitos en su" " parte entera." msgid "Please enter a valid decimal number with at most %s decimal place." msgid_plural "" "Please enter a valid decimal number with at most %s decimal places." msgstr[0] "" "Por favor, introduzca un número decimal válido con a lo más %s dígito " "decimal." msgstr[1] "" "Por favor, introduzca un número decimal válido con a lo más %s dígitos " "decimales." msgid "Please enter a valid decimal number with at most %s total digit." msgid_plural "" "Please enter a valid decimal number with at most %s total digits." msgstr[0] "" "Por favor, introduzca un número decimal válido con a lo más %s dígito en " "total." msgstr[1] "" "Por favor, introduzca un número decimal válido con a lo más %s dígitos en " "total." msgid "Please enter a valid decimal number." msgstr "Por favor, introduzca un número decimal válido." msgid "Please enter a valid floating point number." msgstr "Por favor, introduzca un número decimal válido." msgid "Please enter both fields or leave them both empty." msgstr "Por favor, rellene ambos campos o deje ambos vacíos." msgid "Please enter something for at least one field." msgstr "Por favor, introduzca algo en al menos un campo." msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "" "Please enter valid %(self)s IDs. The values %(value)r are invalid." msgstr[0] "" "Por favor, introduzca IDs de %(self)s válidos. El valor %(value)r no es " "válido." msgstr[1] "" "Por favor, introduzca IDs de %(self)s válidos. Los valores %(value)r no son " "válidos." msgid "" "Please enter your old password, for security's sake, and then enter your new" " password twice so we can verify you typed it in correctly." msgstr "" "Por favor, introduzca su clave antigua, por seguridad, y después introduzca " "la nueva clave dos veces para verificar que la ha escrito correctamente." msgid "" "Please log in again, because your session has expired. Don't worry: Your " "submission has been saved." msgstr "" "Por favor, identifíquese de nuevo, porque su sesión ha caducado. No se " "preocupe: se ha guardado su envío." msgid "Polish" msgstr "Polaco" msgid "Poltar" msgstr "Poltar" msgid "Poprad" msgstr "Poprad" msgid "Portugese" msgstr "Portugés" msgid "Post a photo" msgstr "Postea una fotografía" msgid "" "Posted by %(user)s at %(date)s\n" "\n" "%(comment)s\n" "\n" "http://%(domain)s%(url)s" msgstr "" "Enviado por %(user)s en %(date)s\n" "\n" "%(comment)s\n" "\n" "http://%(domain)s%(url)s" msgid "Povazska Bystrica" msgstr "Povazska Bystrica" msgid "Presov" msgstr "Presov" msgid "Presov region" msgstr "Región de Presov" msgid "Preview comment" msgstr "Previsualizar comentario" msgid "Prievidza" msgstr "Prievidza" msgid "Puchov" msgstr "Puchov" msgid "Ratings" msgstr "Calificaciones" msgid "Recent Actions" msgstr "Acciones recientes" msgid "Relation to parent model" msgstr "Relación con el modelo padre" msgid "Required" msgstr "Requerido" msgid "" "Required. 30 characters or fewer. Alphanumeric characters only (letters, " "digits and underscores)." msgstr "" "Requerido. 30 caracteres o menos. Sólo caracteres alfanuméricos (letras, " "dígitos y guiones bajos)." msgid "Reset my password" msgstr "Recuperar mi clave" msgid "Revuca" msgstr "Revuca" msgid "Rhineland-Palatinate" msgstr "Rhineland-Palatinate" msgid "Rimavska Sobota" msgstr "Rimavska Sobota" msgid "Romanian" msgstr "Rumano" msgid "Roznava" msgstr "Roznava" msgid "Russian" msgstr "Ruso" msgid "Ruzomberok" msgstr "Ruzomberok" msgid "Saarland" msgstr "Saarland" msgid "Sabinov" msgstr "Sabinov" msgid "Saga" msgstr "Saga" msgid "Saitama" msgstr "Saitama" msgid "Sala" msgstr "Sala" msgid "Sat" msgstr "Sab" msgid "Saturday" msgstr "Sábado" msgid "Save" msgstr "Grabar" msgid "Save and add another" msgstr "Grabar y añadir otro" msgid "Save and continue editing" msgstr "Grabar y continuar editando" msgid "Save as new" msgstr "Grabar como nuevo" msgid "Saxony" msgstr "Saxony" msgid "Saxony-Anhalt" msgstr "Saxony-Anhalt" msgid "Schaffhausen" msgstr "Schaffhausen" msgid "Schleswig-Holstein" msgstr "Schleswig-Holstein" msgid "Schwyz" msgstr "Schwyz" msgid "Select %s" msgstr "Escoja %s" msgid "Select %s to change" msgstr "Escoja %s para modificar" msgid "Select a valid choice. %s is not one of the available choices." msgstr "Escoja una opción válida; '%s' no es una de las opciones disponibles." msgid "" "Select a valid choice. That choice is not one of the available choices." msgstr "Escoja una opción válida. Esa opción no está entre las aceptadas." msgid "Select a valid choice; '%(data)s' is not in %(choices)s." msgstr "Escoja una opción válida; '%(data)s' no está en %(choices)s." msgid "Senec" msgstr "Senec" msgid "Senica" msgstr "Senica" msgid "Separate multiple IDs with commas." msgstr "Separe múltiples IDs con comas." msgid "Sept." msgstr "Sept." msgid "September" msgstr "Septiembre" msgid "Serbian" msgstr "Serbio" msgid "Server Error (500)" msgstr "Error de servidor (500)" msgid "Server error" msgstr "Error del servidor" msgid "Server error (500)" msgstr "Error del servidor (500)" msgid "Shiga" msgstr "Shiga" msgid "Shimane" msgstr "Shimane" msgid "Shizuoka" msgstr "Shizuoka" msgid "Show all" msgstr "Mostrarlo todo" msgid "Show object ID" msgstr "Mostrar ID de objeto" msgid "" "Shows the content-type and unique ID for pages that represent a single " "object." msgstr "" "Muestra el tipo de contenido e ID unívoco de las páginas que representan un " "único objeto." msgid "Simplified Chinese" msgstr "Chino simplificado" msgid "Site administration" msgstr "Sitio administrativo" msgid "Skalica" msgstr "Skalica" msgid "Slovak" msgstr "Eslovaco" msgid "Slovenian" msgstr "Esloveno" msgid "Snina" msgstr "Snina" msgid "Sobrance" msgstr "Sobrance" msgid "Solothurn" msgstr "Solothurn" msgid "" "Some text starting on line %(line)s is not allowed in that context. (Line " "starts with \"%(start)s\".)" msgstr "" "Parte del texto que comienza en la línea %(line)s no está permitido en ese " "contexto. (La línea empieza por \"%(start)s\".)" msgid "Somebody tampered with the comment form (security violation)" msgstr "" "Alguien está jugando con el formulario de comentarios (violación de " "seguridad)" msgid "" "Something's wrong with your database installation. Make sure the appropriate" " database tables have been created, and make sure the database is readable " "by the appropriate user." msgstr "" "Algo va mal con la instalación de la base de datos. Asegúrate que las tablas" " necesarias han sido creadas, y que la base de datos puede ser leída por el " "usuario apropiado." msgid "Spanish" msgstr "Español" msgid "Spisska Nova Ves" msgstr "Spisska Nova Ves" msgid "St. Gallen" msgstr "St. Gallen" msgid "Stara Lubovna" msgstr "Stara Lubovna" msgid "String (up to %(max_length)s)" msgstr "Cadena (máximo %(max_length)s)" msgid "Stropkov" msgstr "Stropkov" msgid "Sun" msgstr "Dom" msgid "Sunday" msgstr "Domingo" msgid "Svidnik" msgstr "Svidnik" msgid "Swedish" msgstr "Sueco" msgid "TIME_FORMAT" msgstr "P" msgid "Tamil" msgstr "Tamil" msgid "Telugu" msgstr "Telugu" msgid "Text" msgstr "Texto" msgid "Thanks for spending some quality time with the Web site today." msgstr "Gracias por el tiempo que ha dedicado al sitio web hoy." msgid "Thanks for using our site!" msgstr "¡Gracias por usar nuestro sitio!" msgid "" "That e-mail address doesn't have an associated user account. Are you sure " "you've registered?" msgstr "" "Esta dirección de correo electrónico no tiene una cuenta de usuario " "asociada. ¿Está seguro de que se ha registrado?" msgid "" "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " "starts with \"%(start)s\".)" msgstr "" "El atributo \"%(attr)s\" de la línea %(line)s tiene un valor que no es " "válido. (La línea empieza por \"%(start)s\".)" msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "Se añadió con éxito el %(name)s \"%(obj)s\"." msgid "" "The %(name)s \"%(obj)s\" was added successfully. You may edit it again " "below." msgstr "" "Se agregó con éxito el %(name)s \"%(obj)s. Puede editarlo de nuevo abajo." msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "Se modificó con éxito el %(name)s \"%(obj)s." msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "Se eliminó con éxito el %(name)s \"%(obj)s\"." msgid "The %(site_name)s team" msgstr "El equipo de %(site_name)s" msgid "The %(verbose_name)s was created successfully." msgstr "El %(verbose_name)s se ha creado correctamente." msgid "The %(verbose_name)s was deleted." msgstr "El %(verbose_name)s ha sido eliminado." msgid "The %(verbose_name)s was updated successfully." msgstr "Se actualizó con éxito el %(verbose_name)s." msgid "The Icelandic identification number is not valid." msgstr "El número de identificación de Islandia no es válido." msgid "" "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." msgstr "" "La URL %(url)s devolvió la cabecera Content-Type '%(contenttype)s', que no " "es válida." msgid "The URL %s does not point to a valid QuickTime video." msgstr "La URL %s no apunta a un vídeo QuickTime válido." msgid "The URL %s does not point to a valid image." msgstr "La URL %s no apunta a una imagen válida." msgid "The URL %s is a broken link." msgstr "La URL %s es un enlace roto." msgid "The comment form didn't provide either 'preview' or 'post'" msgstr "" "El formulario de comentario no proporcionó 'previsualizar' ni 'enviar'" msgid "" "The comment form had an invalid 'target' parameter -- the object ID was " "invalid" msgstr "" "El formulario de comentarios tiene un parámetro 'target' no válido (el ID de" " objeto era inválido)" msgid "The format for this field is wrong." msgstr "El formato de este campo es incorrecto." msgid "The submitted file is empty." msgstr "El fichero enviado está vacío." msgid "The two 'new password' fields didn't match." msgstr "" "Las contraseñas introducidas en los campos 'nueva contraseña' no coinciden." msgid "The two password fields didn't match." msgstr "Las dos contraseñas no coinciden." msgid "" "There's been an error. It's been reported to the site administrators via " "e-mail and should be fixed shortly. Thanks for your patience." msgstr "" "Ha ocurrido un error. Se ha informado a los administradores del sitio " "mediante correo electrónico y debería arreglarse en breve. Gracias por su " "paciencia." msgid "This URL appears to be a broken link." msgstr "La URL parece ser un enlace roto." msgid "This account is inactive." msgstr "Esta cuenta está inactiva." msgid "" "This can be either an absolute path (as above) or a full URL starting with " "'http://'." msgstr "" "Esto puede ser bien una ruta absoluta (como antes) o una URL completa que " "empiece con 'http://'." msgid "" "This comment was flagged by %(user)s:\n" "\n" "%(text)s" msgstr "" "Este comentario fue marcado por %(user)s:\n" "\n" "%(text)s" msgid "" "This comment was posted by a sketchy user:\n" "\n" "%(text)s" msgstr "" "Este comentario ha sido colocado por un usuario poco preciso: \n" "\n" "%(text)s" msgid "" "This comment was posted by a user who has posted fewer than %(count)s comment:\n" "\n" "%(text)s" msgid_plural "" "This comment was posted by a user who has posted fewer than %(count)s comments:\n" "\n" "%(text)s" msgstr[0] "" "Este comentario lo envió un usuario que ha enviado menos de %(count)s comentario:\n" "\n" "%(text)s" msgstr[1] "" "Este comentario lo envió un usuario que ha enviado menos de %(count)s comentarios:\n" "\n" "%(text)s" msgid "This field cannot be null." msgstr "Este campo no puede estar vacío." msgid "This field is invalid." msgstr "Este campo no es válido." msgid "This field is required." msgstr "Este campo es obligatorio." msgid "This field must be given if %(field)s is %(value)s" msgstr "Se debe proporcionar este campo si %(field)s es %(value)s" msgid "This field must be given if %(field)s is not %(value)s" msgstr "Se debe proporcionar este campo si %(field)s no es %(value)s" msgid "This field must match the '%s' field." msgstr "Este campo debe concordar con el campo '%s'." msgid "This field requires at least 14 digits" msgstr "Este campo necesita 14 dígitos como máximo" msgid "This field requires at most 11 digits or 14 characters." msgstr "Este campo necesita al menos 11 o 14 caracteres" msgid "This field requires only numbers." msgstr "Este campo sólo acepta números." msgid "This month" msgstr "Este mes" msgid "" "This object doesn't have a change history. It probably wasn't added via this" " admin site." msgstr "" "Este objeto no tiene histórico de cambios. Probablemente no fue añadido " "usando este sitio de administración." msgid "" "This rating is required because you've entered at least one other rating." msgstr "Se precisa esta puntuación porque ha introducido al menos otra más." msgid "" "This should be an absolute path, excluding the domain name. Example: " "'/events/search/'." msgstr "" "Esta ruta debería ser absoluta, excluyendo el nombre de dominio. Ejeplo: " "'/events/search/'." msgid "This value can't be comprised solely of digits." msgstr "Este valor no puede comprender sólo dígitos." msgid "This value must be a decimal number." msgstr "Este valor debe ser un entero." msgid "This value must be a power of %s." msgstr "Este valor debe ser una potencia de %s." msgid "This value must be an integer." msgstr "Este valor debe ser un entero." msgid "This value must be at least %s." msgstr "Este valor debe ser como mínimo %s." msgid "This value must be between %(lower)s and %(upper)s." msgstr "Este valor debe estar entre %(lower)s y %(upper)s." msgid "This value must be either None, True or False." msgstr "Este valor debe ser Verdadero o Falso." msgid "This value must be either True or False." msgstr "Este valor debe ser Verdadero o Falso." msgid "This value must be no more than %s." msgstr "Este valor no debe ser mayor que %s." msgid "This value must contain only letters, numbers and underscores." msgstr "Este valor debe contener sólo letras, números y guiones bajos." msgid "This value must contain only letters, numbers, underscores or hyphens." msgstr "" "Este valor debe contener sólo letras, números, guiones bajos o medios." msgid "" "This value must contain only letters, numbers, underscores, dashes or " "slashes." msgstr "" "Este valor debe contener letras, números, guiones bajos o barras solamente." msgid "This year" msgstr "Este año" msgid "Thu" msgstr "Jue" msgid "Thurgau" msgstr "Thurgau" msgid "Thuringia" msgstr "Thuringia" msgid "Thursday" msgstr "Jueves" msgid "Ticino" msgstr "Ticino" msgid "Time" msgstr "Hora" msgid "Time:" msgstr "Hora:" msgid "Tochigi" msgstr "Tochigi" msgid "Today" msgstr "Hoy" msgid "Tokushima" msgstr "Tokushima" msgid "Tokyo" msgstr "Tokyo" msgid "Topolcany" msgstr "Topolcany" msgid "Tottori" msgstr "Tottori" msgid "Toyama" msgstr "Toyama" msgid "Traditional Chinese" msgstr "Chino tradicional" msgid "Trebisov" msgstr "Trebisov" msgid "Trencin" msgstr "Trencin" msgid "Trencin region" msgstr "Región de Trencin" msgid "Trnava" msgstr "Trnava" msgid "Trnava region" msgstr "Región de Trnava" msgid "Tue" msgstr "Mar" msgid "Tuesday" msgstr "Martes" msgid "Turcianske Teplice" msgstr "Turcianske Teplice" msgid "Turkish" msgstr "Turco" msgid "Tvrdosin" msgstr "Tvrdosin" msgid "U.S. state (two uppercase letters)" msgstr "Estado de los EEUU (dos letras mayúsculas)" msgid "URL" msgstr "URL" msgid "Ukrainian" msgstr "Ucraniano" msgid "Unknown" msgstr "Desconocido" msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" "Envíe una imagen válida. El fichero que ha enviado no era una imagen o se " "trataba de una imagen corrupta." msgid "Uppercase letters are not allowed here." msgstr "No se admiten letras mayúsculas." msgid "Uri" msgstr "Uri" msgid "" "Use '[algo]$[salt]$[hexdigest]' or use the change " "password form." msgstr "" "Use'[algo]$[sal]$[hash hexadecimal]' o use el " "formulario para cambiar la contraseña." msgid "User" msgstr "Usuario" msgid "Username" msgstr "Nombre de usuario" msgid "Username:" msgstr "Usuario:" msgid "Usernames cannot contain the '@' character." msgstr "Los nombres de usuario no pueden contener el carácter '@'." msgid "Valais" msgstr "Valais" msgid "" "Valid HTML is required. Specific errors are:\n" "%s" msgstr "" "Se precisa HTML válido. Los errores específicos son:\n" "%s" msgid "Vaud" msgstr "Vaud" msgid "Velky Krtis" msgstr "Velky Krtis" msgid "View on site" msgstr "Ver en el sitio" msgid "Vranov nad Toplou" msgstr "Vranov nad Toplou" msgid "Wakayama" msgstr "Wakayama" msgid "Watch your mouth! The word %s is not allowed here." msgid_plural "Watch your mouth! The words %s are not allowed here." msgstr[0] "¡Cuida tu vocabulario! Aquí no admitimos la palabra %s." msgstr[1] "¡Cuida tu vocabulario! Aquí no admitimos las palabras %s." msgid "We're sorry, but the requested page could not be found." msgstr "Lo sentimos, pero no se encuentra la página solicitada." msgid "" "We've e-mailed a new password to the e-mail address you submitted. You " "should be receiving it shortly." msgstr "" "Le hemos enviado una clave nueva a la dirección que ha suministrado. Debería" " recibirla en breve." msgid "Wed" msgstr "Mie" msgid "Wednesday" msgstr "Miércoles" msgid "Welcome," msgstr "Bienvenido," msgid "Welsh" msgstr "Galés" msgid "XML text" msgstr "Texto XML" msgid "YEAR_MONTH_FORMAT" msgstr "F Y" msgid "Yamagata" msgstr "Yamagata" msgid "Yamaguchi" msgstr "Yamaguchi" msgid "Yamanashi" msgstr "Yamanashi" msgid "Year must be 1900 or later." msgstr "El año debe ser 1900 o posterior." msgid "Yes" msgstr "Sí" msgid "Yes, I'm sure" msgstr "Sí, estoy seguro" msgid "You don't have permission to edit anything." msgstr "No tiene permiso para editar nada." msgid "You may add another %s below." msgstr "Puede agregar otro %s abajo." msgid "You may edit it again below." msgstr "Puede editarlo de nuevo abajo." msgid "You're receiving this e-mail because you requested a password reset" msgstr "Está recibiendo este mensaje debido a que solicitó recuperar la clave" msgid "" "Your Web browser doesn't appear to have cookies enabled. Cookies are " "required for logging in." msgstr "" "Tu navegador de internet parece no tener las cookies habilitadas. Las " "cookies se necesitan para poder ingresar." msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "" "Su dirección de correo no es su nombre de usuario. Pruebe con '%s' en su " "lugar." msgid "Your name:" msgstr "Tu nombre:" msgid "Your new password is: %(new_password)s" msgstr "Su nueva clave es: %(new_password)s" msgid "Your old password was entered incorrectly. Please enter it again." msgstr "" "Tu contraseña antigua es incorrecta. Por favor, vuelve a introducirla " "correctamente." msgid "Your password was changed." msgstr "Su clave ha sido cambiada." msgid "Your username, in case you've forgotten:" msgstr "Su nombre de usuario, en caso de haberlo olvidado:" msgid "Zarnovica" msgstr "Zarnovica" msgid "Ziar nad Hronom" msgstr "Ziar nad Hronom" msgid "Zilina" msgstr "Zilina" msgid "Zilina region" msgstr "Región de Zilina" msgid "Zlate Moravce" msgstr "Zlate Moravce" msgid "Zug" msgstr "Zug" msgid "Zurich" msgstr "Zurich" msgid "Zvolen" msgstr "Zvolen" msgid "a.m." msgstr "a.m" msgid "action flag" msgstr "marca de acción" msgid "action time" msgstr "hora de acción" msgid "active" msgstr "activo" msgid "all %s" msgstr "todo %s" msgid "and" msgstr "y" msgid "approved by staff" msgstr "aprobado por el staff" msgid "apr" msgstr "abr" msgid "aug" msgstr "ago" msgid "change message" msgstr "mensaje de cambio" msgid "codename" msgstr "nombre en código" msgid "comment" msgstr "comentario" msgid "comments" msgstr "comentarios" msgid "content" msgstr "contenido" msgid "content type" msgstr "tipo de contenido" msgid "content types" msgstr "tipos de contenido" msgid "date joined" msgstr "fecha de creación" msgid "date/time submitted" msgstr "fecha/hora de envío" msgid "day" msgid_plural "days" msgstr[0] "día" msgstr[1] "días" msgid "dec" msgstr "dic" msgid "deletion date" msgstr "fecha de eliminación" msgid "display name" msgstr "nombre para mostrar" msgid "domain name" msgstr "nombre de dominio" msgid "e-mail address" msgstr "dirección de correo" msgid "eight" msgstr "ocho" msgid "enable comments" msgstr "admitir comentarios" msgid "expire date" msgstr "fecha de caducidad" msgid "feb" msgstr "feb" msgid "filter:" msgstr "filtro:" msgid "first name" msgstr "nombre" msgid "five" msgstr "cinco" msgid "flag date" msgstr "fecha de la marca" msgid "flat page" msgstr "página estática" msgid "flat pages" msgstr "páginas estáticas" msgid "for your user account at %(site_name)s" msgstr "de su cuenta de usuario en %(site_name)s." msgid "four" msgstr "cuatro" msgid "free comment" msgstr "comentario libre" msgid "free comments" msgstr "comentarios libres" msgid "group" msgstr "grupo" msgid "groups" msgstr "grupos" msgid "headline" msgstr "encabezado" msgid "hour" msgid_plural "hours" msgstr[0] "hora" msgstr[1] "horas" msgid "ip address" msgstr "dirección ip" msgid "is public" msgstr "es público" msgid "is removed" msgstr "está eliminado" msgid "is valid rating" msgstr "es calificación válida" msgid "jan" msgstr "ene" msgid "jul" msgstr "jul" msgid "jun" msgstr "jun" msgid "karma score" msgstr "punto karma" msgid "karma scores" msgstr "puntos karma" msgid "last login" msgstr "Último registro" msgid "last name" msgstr "apellidos" msgid "log entries" msgstr "entradas de registro" msgid "log entry" msgstr "entrada de registro" msgid "mar" msgstr "mar" msgid "may" msgstr "may" msgid "message" msgstr "mensaje" msgid "midnight" msgstr "media noche" msgid "minute" msgid_plural "minutes" msgstr[0] "minuto" msgstr[1] "minutos" msgid "model:" msgstr "modelo:" msgid "moderator deletion" msgstr "eliminación de moderador" msgid "moderator deletions" msgstr "eliminaciones de moderador" msgid "month" msgid_plural "months" msgstr[0] "mes" msgstr[1] "meses" msgid "name" msgstr "nombre" msgid "nd" msgstr "nd" msgid "nine" msgstr "nueve" msgid "noon" msgstr "medio día" msgid "nov" msgstr "nov" msgid "number of %s" msgstr "número de %s" msgid "object ID" msgstr "ID de objeto" msgid "object id" msgstr "id de objeto" msgid "object repr" msgstr "repr de objeto" msgid "oct" msgstr "oct" msgid "one" msgstr "uno" msgid "or" msgstr "o" msgid "p.m." msgstr "p.m" msgid "password" msgstr "clave" msgid "permission" msgstr "permiso" msgid "permissions" msgstr "permisos" msgid "person's name" msgstr "nombre de la persona" msgid "python model class name" msgstr "nombre de módulo python" msgid "rating #1" msgstr "calificación 1" msgid "rating #2" msgstr "calificación 2" msgid "rating #3" msgstr "calificación 3" msgid "rating #4" msgstr "calificación 4" msgid "rating #5" msgstr "calificación 5" msgid "rating #6" msgstr "calificación 6" msgid "rating #7" msgstr "calificación 7" msgid "rating #8" msgstr "calificación 8" msgid "rd" msgstr "rd" msgid "redirect" msgstr "redirección" msgid "redirect from" msgstr "redirigir desde" msgid "redirect to" msgstr "redirigir a" msgid "redirects" msgstr "redirecciones" msgid "registration required" msgstr "debe estar registrado" msgid "related `%(label)s.%(name)s` objects" msgstr "los objetos relacionados `%(label)s.%(name)s`" msgid "score" msgstr "puntuación" msgid "score date" msgstr "fecha de la puntuación" msgid "sep" msgstr "sep" msgid "session" msgstr "sesión" msgid "session data" msgstr "datos de sesión" msgid "session key" msgstr "clave de sesión" msgid "sessions" msgstr "sesiones" msgid "seven" msgstr "siete" msgid "site" msgstr "sitio" msgid "sites" msgstr "sitios" msgid "six" msgstr "seis" msgid "st" msgstr "st" msgid "staff status" msgstr "es staff" msgid "superuser status" msgstr "es superusuario" msgid "tag:" msgstr "etiqueta:" msgid "template name" msgstr "nombre de plantilla" msgid "th" msgstr "th" msgid "the related `%(label)s.%(type)s` object" msgstr "el objeto relacionado`%(label)s.%(type)s` " msgid "three" msgstr "tres" msgid "title" msgstr "título" msgid "two" msgstr "dos" msgid "user" msgstr "usuario" msgid "user flag" msgstr "marca de usuario" msgid "user flags" msgstr "marcas de usuario" msgid "user permissions" msgstr "permisos" msgid "username" msgstr "nombre de usuario" msgid "users" msgstr "usuarios" msgid "view:" msgstr "vista:" msgid "week" msgid_plural "weeks" msgstr[0] "semana" msgstr[1] "semanas" msgid "year" msgid_plural "years" msgstr[0] "año" msgstr[1] "años" msgid "yes,no,maybe" msgstr "sí,no,tal vez" polib-1.0.7/tests/test_previous_msgid.po0000664000175000017500000000062512440274247020047 0ustar iziizi00000000000000# test file for previous msgid msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" #: disk-utils/cfdisk.c:1825 #| msgctxt "" #| "\n" #| "Some message context" #| msgid "" #| "\n" #| "Partition table entries are not in disk order\n" msgid "The new msgid" msgstr "" #| msgctxt "Some message context" #| msgid "Partition table entries are not in disk order2\n" msgid "The new msgid2" msgstr "" polib-1.0.7/tests/test_noencoding.po0000664000175000017500000000366012440274247017135 0ustar iziizi00000000000000# translation of django.po to Castellano # This file is distributed under the same license as the PACKAGE package. # Copyright (C) 2007 THE PACKAGE'S COPYRIGHT HOLDER. # msgid "" msgstr "" "Project-Id-Version: django\n" #: db/models/manipulators.py:309 #, python-format msgid "%(object)s with this %(type)s already exists for the given %(field)s." msgstr "%(object)s de este %(type)s ya existen en este %(field)s." #: db/models/manipulators.py:310 contrib/admin/views/main.py:342 #: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346 #: core/validators.py:275 msgid "and" msgstr "y" #: db/models/fields/__init__.py:49 #, python-format msgid "%(optname)s with this %(fieldname)s already exists." msgstr "Ya existe %(optname)s con este %(fieldname)s." #: db/models/fields/__init__.py:156 db/models/fields/__init__.py:313 #: db/models/fields/__init__.py:721 db/models/fields/__init__.py:732 #: newforms/fields.py:92 newforms/fields.py:490 newforms/fields.py:566 #: newforms/fields.py:577 newforms/models.py:193 oldforms/__init__.py:373 msgid "This field is required." msgstr "Este campo es obligatorio." #: db/models/fields/__init__.py:411 msgid "This value must be an integer." msgstr "Este valor debe ser un entero." #: db/models/fields/__init__.py:446 msgid "This value must be either True or False." msgstr "Este valor debe ser Verdadero o Falso." #: db/models/fields/__init__.py:467 msgid "This field cannot be null." msgstr "Este campo no puede estar vacío." #: db/models/fields/__init__.py:501 core/validators.py:155 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Introduzca una fecha válida en formato AAAA-MM-DD." #: db/models/fields/__init__.py:570 core/validators.py:164 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgstr "Introduzca una fecha/hora válida en formato AAAA-MM-DD HH:MM." #: db/models/fields/__init__.py:631 msgid "This value must be a decimal number." msgstr "Este valor debe ser un entero." polib-1.0.7/tests/test_pofile_helpers.po0000664000175000017500000000677612440274247020025 0ustar iziizi00000000000000# translation of django.po to Castellano # This file is distributed under the same license as the PACKAGE package. # Copyright (C) 2007 THE PACKAGE'S COPYRIGHT HOLDER. # msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-08-17 15:35-0400\n" "PO-Revision-Date: 2007-07-14 13:00-0500\n" "Last-Translator: Mario Gonzalez \n" "Language-Team: Castellano \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" #: db/models/manipulators.py:309 #, python-format msgid "%(object)s with this %(type)s already exists for the given %(field)s." msgstr "%(object)s de este %(type)s ya existen en este %(field)s." #: db/models/manipulators.py:310 contrib/admin/views/main.py:342 #: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346 #: core/validators.py:275 msgid "and" msgstr "y" #: db/models/manipulators.py:310 contrib/admin/views/main.py:342 #: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346 #: core/validators.py:275 msgctxt "some context" msgid "and" msgstr "y" #: db/models/fields/__init__.py:49 #, python-format msgid "%(optname)s with this %(fieldname)s already exists." msgstr "Ya existe %(optname)s con este %(fieldname)s." #: db/models/fields/__init__.py:156 db/models/fields/__init__.py:313 #: db/models/fields/__init__.py:721 db/models/fields/__init__.py:732 #: newforms/fields.py:92 newforms/fields.py:490 newforms/fields.py:566 #: newforms/fields.py:577 newforms/models.py:193 oldforms/__init__.py:373 msgid "This field is required." msgstr "Este campo es obligatorio." #: db/models/fields/__init__.py:411 msgid "This value must be an integer." msgstr "" #: db/models/fields/__init__.py:446 #, fuzzy, python-format msgid "This value must be either %s or %s." msgstr "Este valor debe ser %s o %s." #: db/models/fields/__init__.py:467 msgid "This field cannot be null." msgstr "" #: db/models/fields/__init__.py:501 core/validators.py:155 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "" #: db/models/fields/__init__.py:570 core/validators.py:164 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgstr "Introduzca una fecha/hora válida en formato AAAA-MM-DD HH:MM." #: db/models/fields/__init__.py:631 #, fuzzy msgid "This value must be a decimal number." msgstr "Este valor debe ser un entero." #: db/models/fields/related.py:710 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "" "Please enter valid %(self)s IDs. The values %(value)r are invalid." msgstr[0] "" "Por favor, introduzca IDs de %(self)s válidos. El valor %(value)r no es " "válido." msgstr[1] "" "Por favor, introduzca IDs de %(self)s válidos. Los valores %(value)r no son " "válidos." #: utils/timesince.py:12 msgid "year" msgid_plural "years" msgstr[0] "año" msgstr[1] "" #~ msgid "label" #~ msgstr "etiqueta" #~ msgid "package" #~ msgstr "pacote" #~ msgid "packages" #~ msgstr "pacotes" #~ msgid "" #~ "This comment was posted by a user who has posted fewer than %(count)s " #~ "comment:\n" #~ "\n" #~ "%(text)sThis comment was posted by a user who has posted fewer than %" #~ "(count)s comments:\n" #~ "\n" #~ "%(text)s" #~ msgstr "" #~ "Este comentário foi enviado por um usuário que enviou menos de %(count)s " #~ "comentário:\n" #~ "\n" #~ "%(text)sEste comentário foi enviado por um usuário que enviou menos de %" #~ "(count)s comentários:\n" #~ "\n" #~ "%(text)s" polib-1.0.7/tests/test_save_as_mofile.po0000664000175000017500000000122512440274247017761 0ustar iziizi00000000000000# 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 , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-08-19 12:30+0200\n" "PO-Revision-Date: 2009-08-19 12:59\n" "Last-Translator: \n" "Language-Team: LANGUAGE \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.4.svn\n" #: templates/base.html:38 msgid "éàîôù" msgstr "éàîôù" polib-1.0.7/tests/test_indented.po0000664000175000017500000000265112440274247016603 0ustar iziizi00000000000000# translation of django.po to Castellano # This file is distributed under the same license as the PACKAGE package. # Copyright (C) 2007 THE PACKAGE'S COPYRIGHT HOLDER. # msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-08-17 15:35-0400\n" "PO-Revision-Date: 2007-07-14 13:00-0500\n" "Last-Translator: Mario Gonzalez \n" "Language-Team: Castellano \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" # Added for previous msgid/msgid_plural/msgctxt testing # Tokens are separated by some tabs and a single space. #| msgctxt "@previous_context" #| msgid "previous untranslated entry" #| msgid_plural "previous untranslated entry plural" msgctxt "@context" msgid "Some msgid" msgstr "Some msgstr" # Same thing with plurals. # Each keyword is followed by some tabs and a single space. #, python-format msgid "" "Please enter valid %(self)s IDs. " "The value %(value)r is invalid." msgid_plural "" "Please enter valid %(self)s IDs. " "The values %(value)r are invalid." msgstr[0] "" "Por favor, introduzca IDs de %(self)s válidos. " "El valor %(value)r no es válido." msgstr[1] "" "Por favor, introduzca IDs de %(self)s válidos. " "Los valores %(value)r no son válidos." polib-1.0.7/tests/test_wrap.po0000664000175000017500000000047512440274247015764 0ustar iziizi00000000000000# test wrapping msgid "" msgstr "" msgid "This line will not be wrapped" msgstr "" msgid "Some line that contain special characters \" and that \t is very, very, very long...: %s \n" msgstr "" msgid "Some line that contain special characters \"foobar\" and that contains whitespace at the end " msgstr "" polib-1.0.7/runtests.sh0000775000175000017500000000022112440274247014465 0ustar iziizi00000000000000#!/bin/sh if which coverage > /dev/null; then coverage run tests/tests.py coverage report else /usr/bin/env python tests/tests.py fi polib-1.0.7/README.rst0000664000175000017500000000217512546744212013741 0ustar iziizi00000000000000===== polib ===== .. image:: https://img.shields.io/pypi/dm/polib.svg :alt: Downloads .. image:: https://img.shields.io/pypi/pyversions/polib.svg :alt: Supported Python versions .. image:: https://img.shields.io/pypi/status/polib.svg :alt: Development Status .. image:: https://img.shields.io/pypi/l/polib.svg :alt: License polib is a library to manipulate, create, modify gettext files (pot, po and mo files). You can load existing files, iterate through it's entries, add, modify entries, comments or metadata, etc... or create new po files from scratch. polib supports out of the box any version of python ranging from 2.4 to latest 3.X version. polib is pretty stable now and is used by many `opensource projects `_. The project code and bugtracker is hosted on `Bitbucket `_. polib is generously documented, you can `browse the documentation online `_, a good start is to read `the quickstart guide `_. Thanks for downloading polib ! polib-1.0.7/LICENSE0000664000175000017500000000205212452221405013237 0ustar iziizi00000000000000Copyright (c) 2006-2015 David Jean Louis. 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. polib-1.0.7/setup.py0000664000175000017500000000464012547137365013771 0ustar iziizi00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- # # License: MIT (see LICENSE file provided) # vim600: fdm=marker tabstop=4 shiftwidth=4 expandtab ai """ polib setup script. """ __author__ = 'David Jean Louis ' try: from setuptools import setup except ImportError: from distutils.core import setup import codecs import polib author_data = __author__.split(' ') maintainer = ' '.join(author_data[0:-1]) maintainer_email = author_data[-1][1:-1] desc = 'A library to manipulate gettext files (po and mo files).' if polib.PY3: enc = {'encoding': 'UTF-8'} else: enc = {} long_desc = r''' %s %s ''' % (open('README.rst', **enc).read(), open('CHANGELOG', **enc).read()) if __name__ == '__main__': setup( name='polib', description=desc, long_description=long_desc, version=polib.__version__, author=maintainer, author_email=maintainer_email, maintainer=maintainer, maintainer_email=maintainer_email, url='http://bitbucket.org/izi/polib/', download_url='https://pypi.python.org/packages/source/p/polib/polib-%s.tar.gz' % polib.__version__, license='MIT', platforms=['posix'], classifiers = [ 'Development Status :: 5 - Production/Stable', 'Environment :: Console', 'Environment :: Web Environment', 'Intended Audience :: Developers', 'Intended Audience :: System Administrators', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent', 'Programming Language :: Python', 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.5', 'Programming Language :: Python :: 2.6', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.0', 'Programming Language :: Python :: 3.1', 'Programming Language :: Python :: 3.2', 'Programming Language :: Python :: 3.3', 'Programming Language :: Python :: 3.4', 'Topic :: Software Development :: Libraries :: Python Modules', 'Topic :: Software Development :: Internationalization', 'Topic :: Software Development :: Localization', 'Topic :: Text Processing :: Linguistic' ], py_modules=['polib'] ) polib-1.0.7/MANIFEST.in0000664000175000017500000000020712440274247014001 0ustar iziizi00000000000000include CHANGELOG LICENSE README.rst *.py *.sh recursive-include tests *.py *.po *.pot *.mo recursive-include docs * prune docs/_build