Changeset 2336

Show
Ignore:
Timestamp:
06/25/07 17:18:17 (2 years ago)
Author:
jmt4b04d4v
Message:

TracSpanishTranslation:

Updated to Trac 0.10.5dev r5756 (changes in 0.10-stable branch up to rev5644).

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • tracspanishtranslation/0.10/es-terms.txt

    r2322 r2336  
    1212Trac Engine 
    1313----------- 
    14 upload/download: 
     14upload/download: cargar/descargar 
    1515  http://forum.wordreference.com/showthread.php?t=23471 
    1616owner = responsable 
     
    2020egg plugin = plugin-egg 
    2121encoding = codificación 
    22 timeline = histórico (TracTermsEs
    23 curtom field = campo personalizado 
     22timeline = cronología (~~TracTermsEs~~
     23custom field = campo personalizado 
    2424Repository checkins = cambios en el repositorio 
    2525bindings = librerías 
     
    4141standalone =  
    4242priority value =  
    43 due = vencimiento 
     43due = estimado/vencimiento 
    4444time = fecha (respecto a version) 
    4545hot backup copy = copia de seguridad 'caliente' 
     
    5858modified = sin traducción (reportes) 
    5959description = sin traducción (reportes) 
    60 _description = descripción 
     60_description = _descripción 
  • tracspanishtranslation/0.10/patchs/trac-spanish-python_utf-8.svndiff

    r2322 r2336  
    11Index: trac/env.py 
    22=================================================================== 
    3 --- trac/env.py (revision 5702
     3--- trac/env.py (revision 5756
    44+++ trac/env.py (working copy) 
     5@@ -70,17 +70,17 @@ 
     6         setups, usually involving running Trac behind a HTTP proxy, you may 
     7         need to use this option to force Trac to use the correct URL.""") 
     8  
     9-    project_name = Option('project', 'name', 'My Project', 
     10+    project_name = Option('project', 'name', 'Mi Proyecto', 
     11         """Name of the project.""") 
     12  
     13-    project_description = Option('project', 'descr', 'My example project', 
     14+    project_description = Option('project', 'descr', 'Mi proyecto ejemplo', 
     15         """Short description of the project.""") 
     16  
     17-    project_url = Option('project', 'url', 'http://example.org/', 
     18+    project_url = Option('project', 'url', 'http://ejemplo.org/', 
     19         """URL of the main project web site.""") 
     20  
     21     project_footer = Option('project', 'footer', 
     22-                            'Visit the Trac open source project at<br />' 
     23+                            'Visite el proyecto open source Trac en<br />' 
     24                             '<a href="http://trac.edgewall.org/">' 
     25                             'http://trac.edgewall.org/</a>', 
     26         """Page footer text (right-aligned).""") 
    527@@ -330,7 +330,7 @@ 
    628  
     
    79101Index: trac/core.py 
    80102=================================================================== 
    81 --- trac/core.py        (revision 5702
     103--- trac/core.py        (revision 5756
    82104+++ trac/core.py        (working copy) 
    83105@@ -45,7 +45,7 @@ 
     
    115137Index: trac/attachment.py 
    116138=================================================================== 
    117 --- trac/attachment.py  (revision 5702
     139--- trac/attachment.py  (revision 5756
    118140+++ trac/attachment.py  (working copy) 
    119141@@ -100,8 +100,8 @@ 
     
    310332Index: trac/db_default.py 
    311333=================================================================== 
    312 --- trac/db_default.py  (revision 5702
     334--- trac/db_default.py  (revision 5756
    313335+++ trac/db_default.py  (working copy) 
    314336@@ -166,106 +166,106 @@ 
     
    577599Index: trac/mimeview/rst.py 
    578600=================================================================== 
    579 --- trac/mimeview/rst.py        (revision 5702
     601--- trac/mimeview/rst.py        (revision 5756
    580602+++ trac/mimeview/rst.py        (working copy) 
    581603@@ -52,9 +52,9 @@ 
     
    611633Index: trac/mimeview/api.py 
    612634=================================================================== 
    613 --- trac/mimeview/api.py        (revision 5702
     635--- trac/mimeview/api.py        (revision 5756
    614636+++ trac/mimeview/api.py        (working copy) 
    615637@@ -376,7 +376,7 @@ 
     
    675697Index: trac/mimeview/tests/php.py 
    676698=================================================================== 
    677 --- trac/mimeview/tests/php.py  (revision 5702
     699--- trac/mimeview/tests/php.py  (revision 5756
    678700+++ trac/mimeview/tests/php.py  (working copy) 
    679701@@ -66,7 +66,7 @@ 
     
    688710Index: trac/mimeview/silvercity.py 
    689711=================================================================== 
    690 --- trac/mimeview/silvercity.py (revision 5702
     712--- trac/mimeview/silvercity.py (revision 5756
    691713+++ trac/mimeview/silvercity.py (working copy) 
    692714@@ -109,7 +109,7 @@ 
     
    701723Index: trac/mimeview/patch.py 
    702724=================================================================== 
    703 --- trac/mimeview/patch.py      (revision 5702
     725--- trac/mimeview/patch.py      (revision 5756
    704726+++ trac/mimeview/patch.py      (working copy) 
    705727@@ -69,7 +69,7 @@ 
     
    714736Index: trac/mimeview/enscript.py 
    715737=================================================================== 
    716 --- trac/mimeview/enscript.py   (revision 5702
     738--- trac/mimeview/enscript.py   (revision 5756
    717739+++ trac/mimeview/enscript.py   (working copy) 
    718740@@ -133,11 +133,11 @@ 
     
    732754Index: trac/mimeview/php.py 
    733755=================================================================== 
    734 --- trac/mimeview/php.py        (revision 5702
     756--- trac/mimeview/php.py        (revision 5756
    735757+++ trac/mimeview/php.py        (working copy) 
    736758@@ -77,13 +77,13 @@ 
     
    765787Index: trac/ticket/api.py 
    766788=================================================================== 
    767 --- trac/ticket/api.py  (revision 5702
     789--- trac/ticket/api.py  (revision 5756
    768790+++ trac/ticket/api.py  (working copy) 
    769791@@ -142,12 +142,12 @@ 
     
    794816Index: trac/ticket/web_ui.py 
    795817=================================================================== 
    796 --- trac/ticket/web_ui.py       (revision 5702
     818--- trac/ticket/web_ui.py       (revision 5756
    797819+++ trac/ticket/web_ui.py       (working copy) 
    798820@@ -57,10 +57,10 @@ 
     
    10061028Index: trac/ticket/report.py 
    10071029=================================================================== 
    1008 --- trac/ticket/report.py       (revision 5702
     1030--- trac/ticket/report.py       (revision 5756
    10091031+++ trac/ticket/report.py       (working copy) 
    10101032@@ -46,7 +46,7 @@ 
     
    11461168Index: trac/ticket/model.py 
    11471169=================================================================== 
    1148 --- trac/ticket/model.py        (revision 5702
     1170--- trac/ticket/model.py        (revision 5756
    11491171+++ trac/ticket/model.py        (working copy) 
    11501172@@ -67,8 +67,8 @@ 
     
    14631485Index: trac/ticket/roadmap.py 
    14641486=================================================================== 
    1465 --- trac/ticket/roadmap.py      (revision 5702
     1487--- trac/ticket/roadmap.py      (revision 5756
    14661488+++ trac/ticket/roadmap.py      (working copy) 
    14671489@@ -129,7 +129,7 @@ 
     
    16051627Index: trac/ticket/query.py 
    16061628=================================================================== 
    1607 --- trac/ticket/query.py        (revision 5702
     1629--- trac/ticket/query.py        (revision 5756
    16081630+++ trac/ticket/query.py        (working copy) 
    16091631@@ -67,11 +67,11 @@ 
     
    16971719Index: trac/db/sqlite_backend.py 
    16981720=================================================================== 
    1699 --- trac/db/sqlite_backend.py   (revision 5702
     1721--- trac/db/sqlite_backend.py   (revision 5756
    17001722+++ trac/db/sqlite_backend.py   (working copy) 
    17011723@@ -116,7 +116,7 @@ 
     
    17301752Index: trac/db/api.py 
    17311753=================================================================== 
    1732 --- trac/db/api.py      (revision 5702
     1754--- trac/db/api.py      (revision 5756
    17331755+++ trac/db/api.py      (working copy) 
    17341756@@ -94,7 +94,7 @@ 
     
    17541776Index: trac/db/pool.py 
    17551777=================================================================== 
    1756 --- trac/db/pool.py     (revision 5702
     1778--- trac/db/pool.py     (revision 5756
    17571779+++ trac/db/pool.py     (working copy) 
    17581780@@ -104,8 +104,8 @@ 
     
    17691791Index: trac/db/mysql_backend.py 
    17701792=================================================================== 
    1771 --- trac/db/mysql_backend.py    (revision 5702
     1793--- trac/db/mysql_backend.py    (revision 5756
    17721794+++ trac/db/mysql_backend.py    (working copy) 
    1773 @@ -1,9 +1,7 @@ 
    1774 -# -*- coding: iso8859-1 -*- 
    1775 +# -*- coding: utf-8 -*- 
    1776  # 
    1777 -# Copyright (C) 2005-2006 Edgewall Software 
    1778 -# Copyright (C) 2005-2006 Christopher Lenz <cmlenz@gmx.de> 
    1779 -# Copyright (C) 2005 Jeff Weiss <trac@jeffweiss.org> 
    1780 -# Copyright (C) 2006 Andres Salomon <dilinger@athenacr.com> 
    1781 +# Copyright (C) 2005 Edgewall Software 
    1782 +# Copyright (C) 2005 Christopher Lenz <cmlenz@gmx.de> 
    1783  # All rights reserved. 
    1784  # 
    1785  # This software is licensed as described in the file COPYING, which 
    1786 @@ -13,170 +11,163 @@ 
    1787  # This software consists of voluntary contributions made by many 
    1788  # individuals. For the exact contribution history, see the revision 
    1789  # history and logs, available at http://trac.edgewall.org/log/. 
    1790 +# 
    1791 +# Author: Christopher Lenz <cmlenz@gmx.de> 
    1792   
    1793 -import re 
    1794 +import os 
    1795 +import urllib 
    1796   
    1797 +from trac.config import Option, IntOption 
    1798  from trac.core import * 
    1799 -from trac.db.api import IDatabaseConnector 
    1800 -from trac.db.util import ConnectionWrapper 
    1801 +from trac.db.pool import ConnectionPool 
    1802 +from trac.util.text import unicode_passwd 
    1803   
    1804 -_like_escape_re = re.compile(r'([/_%])') 
    1805   
    1806 +def get_column_names(cursor): 
    1807 +    return cursor.description and \ 
    1808 +           [(isinstance(d[0], str) and [unicode(d[0], 'utf-8')] or [d[0]])[0] 
    1809 +            for d in cursor.description] or [] 
    1810   
    1811 -class MySQLConnector(Component): 
    1812 -    """MySQL database support for version 4.1 and greater. 
    1813 -     
    1814 -    Database urls should be of the form: 
    1815 -        mysql://user[:password]@host[:port]/database 
    1816 -    """ 
    1817   
    1818 -    implements(IDatabaseConnector) 
    1819 +class IDatabaseConnector(Interface): 
    1820 +    """Extension point interface for components that support the connection to 
    1821 +    relational databases.""" 
    1822   
    1823 -    def get_supported_schemes(self): 
    1824 -        return [('mysql', 1)] 
    1825 +    def get_supported_schemes(): 
    1826 +        """Return the connection URL schemes supported by the connector, and 
    1827 +        their relative priorities as an iterable of `(scheme, priority)` tuples. 
    1828 +        """ 
    1829   
    1830 -    def get_connection(self, path, user=None, password=None, host=None, 
    1831 -                       port=None, params={}): 
    1832 -        return MySQLConnection(path, user, password, host, port, params) 
    1833 
    1834 -    def init_db(self, path, user=None, password=None, host=None, port=None, 
    1835 -                params={}): 
    1836 -        cnx = self.get_connection(path, user, password, host, port, params) 
    1837 -        cursor = cnx.cursor() 
    1838 -        from trac.db_default import schema 
    1839 -        for table in schema: 
    1840 -            for stmt in self.to_sql(table): 
    1841 -                self.env.log.debug(stmt) 
    1842 -                cursor.execute(stmt) 
    1843 -        cnx.commit() 
    1844 
    1845 -    def _collist(self, table, columns): 
    1846 -        """Take a list of columns and impose limits on each so that indexing 
    1847 -        works properly. 
    1848 +    def get_connection(**kwargs): 
    1849 +        """Create a new connection to the database.""" 
    1850           
    1851 -        Some Versions of MySQL limit each index prefix to 500 bytes total, with 
    1852 -        a max of 255 bytes per column. 
    1853 -        """ 
    1854 -        cols = [] 
    1855 -        limit = 333 / len(columns) 
    1856 -        if limit > 255: 
    1857 -            limit = 255 
    1858 -        for c in columns: 
    1859 -            name = '`%s`' % c 
    1860 -            table_col = filter((lambda x: x.name == c), table.columns) 
    1861 -            if len(table_col) == 1 and table_col[0].type.lower() == 'text': 
    1862 -                if name == '`rev`': 
    1863 -                    name += '(20)' 
    1864 -                elif name == '`path`': 
    1865 -                    name += '(255)' 
    1866 -                elif name == '`change_type`': 
    1867 -                    name += '(2)' 
    1868 -                else: 
    1869 -                    name += '(%s)' % limit 
    1870 -            # For non-text columns, we simply throw away the extra bytes. 
    1871 -            # That could certainly be optimized better, but for now let's KISS. 
    1872 -            cols.append(name) 
    1873 -        return ','.join(cols) 
    1874 +    def init_db(**kwargs): 
    1875 +        """Initialize the database.""" 
    1876   
    1877 -    def to_sql(self, table): 
    1878 -        sql = ['CREATE TABLE %s (' % table.name] 
    1879 -        coldefs = [] 
    1880 -        for column in table.columns: 
    1881 -            ctype = column.type 
    1882 -            if column.auto_increment: 
    1883 -                ctype = 'INT UNSIGNED NOT NULL AUTO_INCREMENT' 
    1884 -                # Override the column type, as a text field cannot 
    1885 -                # use auto_increment. 
    1886 -                column.type = 'int' 
    1887 -            coldefs.append('    `%s` %s' % (column.name, ctype)) 
    1888 -        if len(table.key) > 0: 
    1889 -            coldefs.append('    PRIMARY KEY (%s)' % 
    1890 -                           self._collist(table, table.key)) 
    1891 -        sql.append(',\n'.join(coldefs) + '\n)') 
    1892 -        yield '\n'.join(sql) 
    1893 +    def to_sql(table): 
    1894 +        """Return the DDL statements necessary to create the specified table, 
    1895 +        including indices.""" 
    1896   
    1897 -        for index in table.indices: 
    1898 -            yield 'CREATE INDEX %s_%s_idx ON %s (%s);' % (table.name, 
    1899 -                  '_'.join(index.columns), table.name, 
    1900 -                  self._collist(table, index.columns)) 
    1901   
    1902 +class DatabaseManager(Component): 
    1903   
    1904 -class MySQLConnection(ConnectionWrapper): 
    1905 -    """Connection wrapper for MySQL.""" 
    1906 +    connectors = ExtensionPoint(IDatabaseConnector) 
    1907   
    1908 -    poolable = True 
    1909 +    connection_uri = Option('trac', 'database', 'sqlite:db/trac.db', 
    1910 +        """Database connection 
    1911 +        [wiki:TracEnvironment#DatabaseConnectionStrings string] for this 
    1912 +        project""") 
    1913   
    1914 -    def _mysqldb_gt_or_eq(self, v): 
    1915 -        """This function checks whether the version of python-mysqldb 
    1916 -        is greater than or equal to the version that's passed to it. 
    1917 -        Note that the tuple only checks the major, minor, and sub versions; 
    1918 -        the sub-sub version is weird, so we only check for 'final' versions. 
    1919 -        """ 
    1920 -        from MySQLdb import version_info as ver 
    1921 -        if ver[0] < v[0] or ver[1] < v[1] or ver[2] < v[2]: 
    1922 -            return False 
    1923 -        if ver[3] != 'final': 
    1924 -            return False 
    1925 -        return True 
    1926 +    timeout = IntOption('trac', 'timeout', '20', 
    1927 +        """Timeout value for database connection, in seconds. 
    1928 +        Use '0' to specify ''no timeout''. ''(Since 0.11)''""") 
    1929   
    1930 -    def _set_character_set(self, cnx, charset): 
    1931 -        vers = tuple([ int(n) for n in cnx.get_server_info().split('.')[:2] ]) 
    1932 -        if vers < (4, 1): 
     1795@@ -122,7 +122,7 @@ 
     1796     def _set_character_set(self, cnx, charset): 
     1797         vers = tuple([ int(n) for n in cnx.get_server_info().split('.')[:2] ]) 
     1798         if vers < (4, 1): 
    19331799-            raise TracError, 'MySQL servers older than 4.1 are not supported!' 
    1934 -        cnx.query('SET NAMES %s' % charset) 
    1935 -        cnx.store_result() 
    1936 -        cnx.charset = charset 
    1937 +    def __init__(self): 
    1938 +        self._cnx_pool = None 
    1939   
    1940 -    def __init__(self, path, user=None, password=None, host=None, 
    1941 -                 port=None, params={}): 
    1942 -        import MySQLdb 
    1943 +    def init_db(self): 
    1944 +        connector, args = self._get_connector() 
    1945 +        connector.init_db(**args) 
    1946   
    1947 -        if path.startswith('/'): 
    1948 -            path = path[1:] 
    1949 -        if password == None: 
    1950 -            password = '' 
    1951 -        if port == None: 
    1952 -            port = 3306 
    1953 +    def get_connection(self): 
    1954 +        if not self._cnx_pool: 
    1955 +            connector, args = self._get_connector() 
    1956 +            self._cnx_pool = ConnectionPool(5, connector, **args) 
    1957 +        return self._cnx_pool.get_cnx(self.timeout or None) 
    1958   
    1959 -        # python-mysqldb 1.2.1 added a 'charset' arg that is required for 
    1960 -        # unicode stuff.  We hack around that here for older versions; at 
    1961 -        # some point, this hack should be removed, and a strict requirement 
    1962 -        # on 1.2.1 made.  -dilinger 
    1963 -        if (self._mysqldb_gt_or_eq((1, 2, 1))): 
    1964 -            cnx = MySQLdb.connect(db=path, user=user, passwd=password, 
    1965 -                                  host=host, port=port, charset='utf8') 
    1966 -        else: 
    1967 -            cnx = MySQLdb.connect(db=path, user=user, passwd=password, 
    1968 -                                  host=host, port=port, use_unicode=True) 
    1969 -            self._set_character_set(cnx, 'utf8') 
    1970 -        ConnectionWrapper.__init__(self, cnx) 
    1971 -        self._is_closed = False 
    1972 +    def shutdown(self, tid=None): 
    1973 +        if self._cnx_pool: 
    1974 +            self._cnx_pool.shutdown(tid) 
    1975 +            if not tid: 
    1976 +                self._cnx_pool = None 
    1977   
    1978 -    def cast(self, column, type): 
    1979 -        if type == 'int': 
    1980 -            type = 'signed' 
    1981 -        return 'CAST(%s AS %s)' % (column, type) 
    1982 +    def _get_connector(self): ### FIXME: Make it public? 
    1983 +        scheme, args = _parse_db_str(self.connection_uri) 
    1984 +        candidates = {} 
    1985 +        connector = None 
    1986 +        for connector in self.connectors: 
    1987 +            for scheme_, priority in connector.get_supported_schemes(): 
    1988 +                if scheme_ != scheme: 
    1989 +                    continue 
    1990 +                highest = candidates.get(scheme_, (None, 0))[1] 
    1991 +                if priority > highest: 
    1992 +                    candidates[scheme] = (connector, priority) 
    1993 +            connector = candidates.get(scheme, [None])[0] 
    1994 +        if not connector: 
    1995 +            raise TracError('Tipo de base de datos no soportado "%s"' % scheme) 
    1996   
    1997 -    def concat(self, *args): 
    1998 -        return 'concat(%s)' % ', '.join(args) 
    1999 +        if scheme == 'sqlite': 
    2000 +            # Special case for SQLite to support a path relative to the 
    2001 +            # environment directory 
    2002 +            if args['path'] != ':memory:' and \ 
    2003 +                   not args['path'].startswith('/'): 
    2004 +                args['path'] = os.path.join(self.env.path, 
    2005 +                                            args['path'].lstrip('/')) 
    2006   
    2007 -    def like(self): 
    2008 -        return "LIKE %s ESCAPE '/'" 
    2009 +        return connector, args 
    2010   
    2011 -    def like_escape(self, text): 
    2012 -        return _like_escape_re.sub(r'/\1', text) 
    2013   
    2014 -    def get_last_id(self, cursor, table, column='id'): 
    2015 -        return self.cnx.insert_id() 
    2016 +def _parse_db_str(db_str): 
    2017 +    scheme, rest = db_str.split(':', 1) 
    2018   
    2019 -    def rollback(self): 
    2020 -        if self.cnx.ping(): 
    2021 -            self._set_character_set(self.cnx, 'utf8') 
    2022 -            self.cnx.rollback() 
    2023 +    if not rest.startswith('/'): 
    2024 +        if scheme == 'sqlite': 
    2025 +            # Support for relative and in-memory SQLite connection strings 
    2026 +            host = None 
    2027 +            path = rest 
    2028          else: 
    2029 -            self._is_closed = True 
    2030 +            raise TracError('La cadena de conexión a la base de datos debe comenzar con ' 
    2031 +                            'esquema:/') 
    2032 +    else: 
    2033 +        if rest.startswith('/') and not rest.startswith('//'): 
    2034 +            host = None 
    2035 +            rest = rest[1:] 
    2036 +        elif rest.startswith('///'): 
    2037 +            host = None 
    2038 +            rest = rest[3:] 
    2039 +        else: 
    2040 +            rest = rest[2:] 
    2041 +            if rest.find('/') == -1: 
    2042 +                host = rest 
    2043 +                rest = '' 
    2044 +            else: 
    2045 +                host, rest = rest.split('/', 1) 
    2046 +        path = None 
    2047   
    2048 -    def close(self): 
    2049 -        if not self._is_closed: 
    2050 -            self.cnx.close() 
    2051 -            self._is_closed = True 
    2052 +    if host and host.find('@') != -1: 
    2053 +        user, host = host.split('@', 1) 
    2054 +        if user.find(':') != -1: 
    2055 +            user, password = user.split(':', 1) 
    2056 +        else: 
    2057 +            password = None 
    2058 +        if user: 
    2059 +            user = urllib.unquote(user) 
    2060 +        if password: 
    2061 +            password = unicode_passwd(urllib.unquote(password)) 
    2062 +    else: 
    2063 +        user = password = None 
    2064 +    if host and host.find(':') != -1: 
    2065 +        host, port = host.split(':') 
    2066 +        port = int(port) 
    2067 +    else: 
    2068 +        port = None 
    2069 
    2070 +    if not path: 
    2071 +        path = '/' + rest 
    2072 +    if os.name == 'nt': 
    2073 +        # Support local paths containing drive letters on Win32 
    2074 +        if len(rest) > 1 and rest[1] == '|': 
    2075 +            path = "%s:%s" % (rest[0], rest[2:]) 
    2076 
    2077 +    params = {} 
    2078 +    if path.find('?') != -1: 
    2079 +        path, qs = path.split('?', 1) 
    2080 +        qs = qs.split('&') 
    2081 +        for param in qs: 
    2082 +            name, value = param.split('=', 1) 
    2083 +            value = urllib.unquote(value) 
    2084 +            params[name] = value 
    2085 
    2086 +    args = zip(('user', 'password', 'host', 'port', 'path', 'params'), 
    2087 +               (user, password, host, port, path, params)) 
    2088 +    return scheme, dict([(key, value) for key, value in args if value]) 
     1800+            raise TracError, 'Los servidores MySQL anteriores a 4.1 no son soportados!' 
     1801         cnx.query('SET NAMES %s' % charset) 
     1802         cnx.store_result() 
     1803         cnx.charset = charset 
    20891804Index: trac/versioncontrol/api.py 
    20901805=================================================================== 
    2091 --- trac/versioncontrol/api.py  (revision 5702
     1806--- trac/versioncontrol/api.py  (revision 5756
    20921807+++ trac/versioncontrol/api.py  (working copy) 
    20931808@@ -88,9 +88,9 @@ 
     
    21441859Index: trac/versioncontrol/svn_fs.py 
    21451860=================================================================== 
    2146 --- trac/versioncontrol/svn_fs.py       (revision 5702
     1861--- trac/versioncontrol/svn_fs.py       (revision 5756
    21471862+++ trac/versioncontrol/svn_fs.py       (working copy) 
    21481863@@ -254,7 +254,7 @@ 
     
    21851900Index: trac/versioncontrol/svn_authz.py 
    21861901=================================================================== 
    2187 --- trac/versioncontrol/svn_authz.py    (revision 5702
     1902--- trac/versioncontrol/svn_authz.py    (revision 5756
    21881903+++ trac/versioncontrol/svn_authz.py    (working copy) 
    21891904@@ -41,7 +41,7 @@ 
     
    21981913Index: trac/versioncontrol/web_ui/util.py 
    21991914=================================================================== 
    2200 --- trac/versioncontrol/web_ui/util.py  (revision 5702
     1915--- trac/versioncontrol/web_ui/util.py  (revision 5756
    22011916+++ trac/versioncontrol/web_ui/util.py  (working copy) 
     1917@@ -72,7 +72,7 @@ 
     1918     return changes 
     1919  
     1920 def get_path_links(href, fullpath, rev): 
     1921-    links = [{'name': 'root', 'href': href.browser(rev=rev)}] 
     1922+    links = [{'name': 'raíz', 'href': href.browser(rev=rev)}] 
     1923     path = '' 
     1924     for part in [p for p in fullpath.split('/') if p]: 
     1925         path += part + '/' 
    22021926@@ -97,9 +97,9 @@ 
    22031927     try:  
     
    22151939Index: trac/versioncontrol/web_ui/changeset.py 
    22161940=================================================================== 
    2217 --- trac/versioncontrol/web_ui/changeset.py     (revision 5702
     1941--- trac/versioncontrol/web_ui/changeset.py     (revision 5756
    22181942+++ trac/versioncontrol/web_ui/changeset.py     (working copy) 
    22191943@@ -259,9 +259,9 @@ 
     
    22972021Index: trac/versioncontrol/web_ui/log.py 
    22982022=================================================================== 
    2299 --- trac/versioncontrol/web_ui/log.py   (revision 5702
     2023--- trac/versioncontrol/web_ui/log.py   (revision 5756
    23002024+++ trac/versioncontrol/web_ui/log.py   (working copy) 
    23012025@@ -94,7 +94,7 @@ 
     
    23462070Index: trac/versioncontrol/web_ui/browser.py 
    23472071=================================================================== 
    2348 --- trac/versioncontrol/web_ui/browser.py       (revision 5702
     2072--- trac/versioncontrol/web_ui/browser.py       (revision 5756
    23492073+++ trac/versioncontrol/web_ui/browser.py       (working copy) 
    23502074@@ -78,7 +78,7 @@ 
     
    23532077         yield ('mainnav', 'browser', 
    23542078-               html.A('Browse Source', href=req.href.browser())) 
    2355 +               html.A('Ver código fuente', href=req.href.browser())) 
     2079+               html.A('Explorar repositorio', href=req.href.browser())) 
    23562080  
    23572081     # IPermissionRequestor methods 
     
    23952119Index: trac/versioncontrol/cache.py 
    23962120=================================================================== 
    2397 --- trac/versioncontrol/cache.py        (revision 5702
     2121--- trac/versioncontrol/cache.py        (revision 5756
    23982122+++ trac/versioncontrol/cache.py        (working copy) 
    23992123@@ -79,16 +79,16 @@ 
     
    24762200Index: trac/Settings.py 
    24772201=================================================================== 
    2478 --- trac/Settings.py    (revision 5702
     2202--- trac/Settings.py    (revision 5756
    24792203+++ trac/Settings.py    (working copy) 
    24802204@@ -33,7 +33,7 @@ 
     
    24982222Index: trac/scripts/admin.py 
    24992223=================================================================== 
    2500 --- trac/scripts/admin.py       (revision 5702
     2224--- trac/scripts/admin.py       (revision 5756
    25012225+++ trac/scripts/admin.py       (working copy) 
    25022226@@ -67,8 +67,8 @@ 
     
    31922916Index: trac/scripts/tests/admin.py 
    31932917=================================================================== 
    3194 --- trac/scripts/tests/admin.py (revision 5702
     2918--- trac/scripts/tests/admin.py (revision 5756
    31952919+++ trac/scripts/tests/admin.py (working copy) 
    31962920@@ -185,7 +185,7 @@ 
     
    32412965Index: trac/perm.py 
    32422966=================================================================== 
    3243 --- trac/perm.py        (revision 5702
     2967--- trac/perm.py        (revision 5756
    32442968+++ trac/perm.py        (working copy) 
    32452969@@ -32,7 +32,7 @@ 
     
    32632987Index: trac/Search.py 
    32642988=================================================================== 
    3265 --- trac/Search.py      (revision 5702
     2989--- trac/Search.py      (revision 5756
    32662990+++ trac/Search.py      (working copy) 
    32672991@@ -74,7 +74,7 @@ 
     
    33403064Index: trac/config.py 
    33413065=================================================================== 
    3342 --- trac/config.py      (revision 5702
     3066--- trac/config.py      (revision 5756
    33433067+++ trac/config.py      (working copy) 
    33443068@@ -220,7 +220,7 @@ 
     
    33753099Index: trac/loader.py 
    33763100=================================================================== 
    3377 --- trac/loader.py      (revision 5702
     3101--- trac/loader.py      (revision 5756
    33783102+++ trac/loader.py      (working copy) 
    33793103@@ -47,7 +47,7 @@ 
     
    34503174Index: trac/Timeline.py 
    34513175=================================================================== 
    3452 --- trac/Timeline.py    (revision 5702
     3176--- trac/Timeline.py    (revision 5756
    34533177+++ trac/Timeline.py    (working copy) 
    34543178@@ -77,7 +77,7 @@ 
     
    34573181         yield ('mainnav', 'timeline', 
    34583182-               html.A('Timeline', href=req.href.timeline(), accesskey=2)) 
    3459 +               html.A('Histórico', href=req.href.timeline(), accesskey=2)) 
     3183+               html.A('Cronología', href=req.href.timeline(), accesskey=2)) 
    34603184  
    34613185     # IPermissionRequestor methods 
     
    34663190  
    34673191-        req.hdf['title'] = 'Timeline' 
    3468 +        req.hdf['title'] = 'Histórico
     3192+        req.hdf['title'] = 'Cronología
    34693193  
    34703194         # Get the email addresses of all known users 
     
    34803204-            '<a href="%s">Timeline</a></p>',  
    34813205+            '<p>Tal vez quiera ver los otros tipos de eventos del ' 
    3482 +            '<a href="%s">Histórico</a></p>',  
     3206+            '<a href="%s">Cronología</a></p>',  
    34833207             ", ".join(guilty_kinds), ep_name, exc_name, to_unicode(exc), href)) 
    34843208Index: trac/About.py 
    34853209=================================================================== 
    3486 --- trac/About.py       (revision 5702
     3210--- trac/About.py       (revision 5756
    34873211+++ trac/About.py       (working copy) 
    34883212@@ -38,7 +38,7 @@ 
     
    35063230Index: trac/wiki/api.py 
    35073231=================================================================== 
    3508 --- trac/wiki/api.py    (revision 5702
     3232--- trac/wiki/api.py    (revision 5756
    35093233+++ trac/wiki/api.py    (working copy) 
    35103234@@ -143,7 +143,7 @@ 
     
    35373261Index: trac/wiki/web_ui.py 
    35383262=================================================================== 
    3539 --- trac/wiki/web_ui.py (revision 5702
     3263--- trac/wiki/web_ui.py (revision 5756
    35403264+++ trac/wiki/web_ui.py (working copy) 
     3265@@ -51,7 +51,7 @@ 
     3266  
     3267     # IContentConverter methods 
     3268     def get_supported_conversions(self): 
     3269-        yield ('txt', 'Plain Text', 'txt', 'text/x-trac-wiki', 'text/plain', 9) 
     3270+        yield ('txt', 'Texto Plano', 'txt', 'text/x-trac-wiki', 'text/plain', 9) 
     3271  
     3272     def convert_content(self, req, mimetype, content, key): 
     3273         return (content, 'text/plain;charset=utf-8') 
    35413274@@ -67,7 +67,7 @@ 
    35423275         yield ('mainnav', 'wiki', 
     
    36243357Index: trac/wiki/intertrac.py 
    36253358=================================================================== 
    3626 --- trac/wiki/intertrac.py      (revision 5702
     3359--- trac/wiki/intertrac.py      (revision 5756
    36273360+++ trac/wiki/intertrac.py      (working copy) 
    36283361@@ -41,13 +41,13 @@ 
     
    36693402Index: trac/wiki/model.py 
    36703403=================================================================== 
    3671 --- trac/wiki/model.py  (revision 5702
     3404--- trac/wiki/model.py  (revision 5756
    36723405+++ trac/wiki/model.py  (working copy) 
    36733406@@ -68,7 +68,7 @@ 
     
    37063439Index: trac/wiki/formatter.py 
    37073440=================================================================== 
    3708 --- trac/wiki/formatter.py      (revision 5702
     3441--- trac/wiki/formatter.py      (revision 5756
    37093442+++ trac/wiki/formatter.py      (working copy) 
    37103443@@ -72,7 +72,7 @@ 
     
    37583491Index: trac/wiki/macros.py 
    37593492=================================================================== 
    3760 --- trac/wiki/macros.py (revision 5702
     3493--- trac/wiki/macros.py (revision 5756
    37613494+++ trac/wiki/macros.py (working copy) 
    37623495@@ -252,7 +252,7 @@ 
     
    38253558Index: trac/wiki/interwiki.py 
    38263559=================================================================== 
    3827 --- trac/wiki/interwiki.py      (revision 5702
     3560--- trac/wiki/interwiki.py      (revision 5756
    38283561+++ trac/wiki/interwiki.py      (working copy) 
    38293562@@ -131,7 +131,7 @@ 
     
    38473580Index: trac/upgrades/db10.py 
    38483581=================================================================== 
    3849 --- trac/upgrades/db10.py       (revision 5702
     3582--- trac/upgrades/db10.py       (revision 5756
    38503583+++ trac/upgrades/db10.py       (working copy) 
    38513584@@ -22,4 +22,4 @@ 
     
    38573590Index: trac/web/standalone.py 
    38583591=================================================================== 
    3859 --- trac/web/standalone.py      (revision 5702
     3592--- trac/web/standalone.py      (revision 5756
    38603593+++ trac/web/standalone.py      (working copy) 
    38613594@@ -106,26 +106,26 @@ 
     
    39453678Index: trac/web/auth.py 
    39463679=================================================================== 
    3947 --- trac/web/auth.py    (revision 5702
     3680--- trac/web/auth.py    (revision 5756
    39483681+++ trac/web/auth.py    (working copy) 
    3949 @@ -83,7 +83,7 @@ 
     3682@@ -83,12 +83,12 @@ 
    39503683  
    39513684     def get_navigation_items(self, req): 
     
    39543687+            yield ('metanav', 'login', 'sesión iniciada como %s' % req.authname) 
    39553688             yield ('metanav', 'logout', 
    3956                     html.A('Logout', href=req.href.logout())) 
     3689-                   html.A('Logout', href=req.href.logout())) 
     3690+                   html.A('Cerrar Sesión', href=req.href.logout())) 
    39573691         else: 
     3692             yield ('metanav', 'login', 
     3693-                   html.A('Login', href=req.href.login())) 
     3694+                   html.A('Iniciar Sesión', href=req.href.login())) 
     3695  
     3696     # IRequestHandler methods 
     3697  
    39583698@@ -119,10 +119,10 @@ 
    39593699         case sensitive regarding user names and domain names 
     
    40203760Index: trac/web/api.py 
    40213761=================================================================== 
    4022 --- trac/web/api.py     (revision 5702
     3762--- trac/web/api.py     (revision 5756
    40233763+++ trac/web/api.py     (working copy) 
    40243764@@ -408,7 +408,7 @@ 
     
    40333773Index: trac/web/clearsilver.py 
    40343774=================================================================== 
    4035 --- trac/web/clearsilver.py     (revision 5702
     3775--- trac/web/clearsilver.py     (revision 5756
    40363776+++ trac/web/clearsilver.py     (working copy) 
    40373777@@ -132,7 +132,7 @@ 
     
    40463786Index: trac/web/chrome.py 
    40473787=================================================================== 
    4048 --- trac/web/chrome.py  (revision 5702
     3788--- trac/web/chrome.py  (revision 5756
    40493789+++ trac/web/chrome.py  (working copy) 
    40503790@@ -230,7 +230,7 @@ 
     
    40593799Index: trac/web/session.py 
    40603800=================================================================== 
    4061 --- trac/web/session.py (revision 5702
     3801--- trac/web/session.py (revision 5756
    40623802+++ trac/web/session.py (working copy) 
    40633803@@ -99,10 +99,10 @@ 
     
    40783818Index: trac/util/tests/text.py 
    40793819=================================================================== 
    4080 --- trac/util/tests/text.py     (revision 5702
     3820--- trac/util/tests/text.py     (revision 5756
    40813821+++ trac/util/tests/text.py     (working copy) 
    40823822@@ -25,9 +25,9 @@ 
     
    40943834Index: trac/util/datefmt.py 
    40953835=================================================================== 
    4096 --- trac/util/datefmt.py        (revision 5702
     3836--- trac/util/datefmt.py        (revision 5756
    40973837+++ trac/util/datefmt.py        (working copy) 
    40983838@@ -30,17 +30,17 @@ 
     
    41303870Index: trac/notification.py 
    41313871=================================================================== 
    4132 --- trac/notification.py        (revision 5702
     3872--- trac/notification.py        (revision 5756
    41333873+++ trac/notification.py        (working copy) 
    41343874@@ -190,7 +190,7 @@ 
  • tracspanishtranslation/0.10/patchs/trac-spanish-templates_utf-8.svndiff

    r2322 r2336  
    11Index: templates/report.cs 
    22=================================================================== 
    3 --- templates/report.cs (revision 5702
     3--- templates/report.cs (revision 5756
    44+++ templates/report.cs (working copy) 
    55@@ -5,11 +5,11 @@ 
     
    145145-  creating reports. 
    146146+  <strong>Nota:</strong> Véa <a href="<?cs 
    147 +    var:trac.href.wiki ?>/TracReports">TracReports</a> para ayuda acerca de utilizar 
     147+    var:trac.href.wiki ?>/TracReports">TracReports</a> para ayuda sobre cómo utilizar 
    148148+  y crear reportes. 
    149149  </div> 
     
    152152Index: templates/anydiff.cs 
    153153=================================================================== 
    154 --- templates/anydiff.cs        (revision 5702
     154--- templates/anydiff.cs        (revision 5756
    155155+++ templates/anydiff.cs        (working copy) 
    156156@@ -4,41 +4,41 @@ 
     
    200200-  ?>/TracChangeset#ExaminingDifferencesBetweenBranches">TracChangeset</a> for help on using the arbitrary diff feature. 
    201201+  <strong>Nota:</strong> Véa <a href="<?cs var:trac.href.wiki 
    202 +  ?>/TracChangeset#ExaminingDifferencesBetweenBranches">TracChangeset</a> para ayuda acerca de utilizar la característica 'diff arbitrario'. 
     202+  ?>/TracChangeset#ExaminingDifferencesBetweenBranches">TracChangeset</a> para ayuda sobre cómo utilizar la característica 'diff arbitrario'. 
    203203  </div> 
    204204 </div> 
     
    206206Index: templates/log.cs 
    207207=================================================================== 
    208 --- templates/log.cs    (revision 5702
     208--- templates/log.cs    (revision 5756
    209209+++ templates/log.cs    (working copy) 
    210210@@ -4,18 +4,18 @@ 
     
    382382-  ?>/TracRevisionLog">TracRevisionLog</a> for help on using the revision log. 
    383383+  <strong>Nota:</strong> Véa <a href="<?cs var:trac.href.wiki 
    384 +  ?>/TracRevisionLog">TracRevisionLog</a> para ayuda acerca de utilizar la bitácora de revisiones. 
     384+  ?>/TracRevisionLog">TracRevisionLog</a> para ayuda sobre cómo utilizar la bitácora de revisiones. 
    385385  </div> 
    386386  
     
    388388Index: templates/ticket_notify_email.cs 
    389389=================================================================== 
    390 --- templates/ticket_notify_email.cs    (revision 5702
     390--- templates/ticket_notify_email.cs    (revision 5756
    391391+++ templates/ticket_notify_email.cs    (working copy) 
    392392@@ -4,20 +4,20 @@ 
     
    418418Index: templates/browser.cs 
    419419=================================================================== 
    420 --- templates/browser.cs        (revision 5702
     420--- templates/browser.cs        (revision 5756
    421421+++ templates/browser.cs        (working copy) 
    422422@@ -4,9 +4,9 @@ 
     
    461461-     call:sortable_th(browser.order, browser.desc, 'date', 'Age', browser.order_href) ?> 
    462462-     <th class="change">Last Change</th> 
    463 +     call:sortable_th(browser.order, browser.desc, 'date', 'Edad', browser.order_href) ?> 
     463+     call:sortable_th(browser.order, browser.desc, 'date', 'AntigÃŒedad', browser.order_href) ?> 
    464464+     <th class="change">Última modificación</th> 
    465465     </tr> 
     
    500500-     (checked in by <?cs var:file.author ?>, <?cs var:file.age ?> ago) 
    501501+     Revisión <a href="<?cs var:file.changeset_href ?>"><?cs var:file.rev ?></a>, <?cs var:file.size ?> 
    502 +     (creada por <?cs var:file.author ?>, edad <?cs var:file.age ?>) 
     502+     (creada por <?cs var:file.author ?>, antigÃŒedad <?cs var:file.age ?>) 
    503503     </th></tr><tr> 
    504504     <td class="message"><?cs var:file.message ?></td> 
     
    534534-  ?>/TracBrowser">TracBrowser</a> for help on using the browser. 
    535535+  <strong>Nota:</strong> Véa <a href="<?cs var:trac.href.wiki 
    536 +  ?>/TracBrowser">TracBrowser</a> para ayuda acerca de explorar el repositorio. 
     536+  ?>/TracBrowser">TracBrowser</a> para ayuda sobre explorar el repositorio. 
    537537  </div> 
    538538  
     
    549549Index: templates/roadmap.cs 
    550550=================================================================== 
    551 --- templates/roadmap.cs        (revision 5702
     551--- templates/roadmap.cs        (revision 5756
    552552+++ templates/roadmap.cs        (working copy) 
    553553@@ -4,35 +4,35 @@ 
     
    639639-    var:trac.href.wiki ?>/TracRoadmap">TracRoadmap</a> for help on using the roadmap. 
    640640+  <strong>Note:</strong> Véa <a href="<?cs 
    641 +    var:trac.href.wiki ?>/TracRoadmap">TracRoadmap</a> para ayuda acerca de utilizar hitos. 
     641+    var:trac.href.wiki ?>/TracRoadmap">TracRoadmap</a> para ayuda sobre cómo utilizar hitos. 
    642642  </div> 
    643643  
     
    645645Index: templates/ticket.cs 
    646646=================================================================== 
    647 --- templates/ticket.cs (revision 5702
     647--- templates/ticket.cs (revision 5756
    648648+++ templates/ticket.cs (working copy) 
    649649@@ -8,20 +8,20 @@ 
     
    889889Index: templates/macros.cs 
    890890=================================================================== 
    891 --- templates/macros.cs (revision 5702
     891--- templates/macros.cs (revision 5756
    892892+++ templates/macros.cs (working copy) 
    893893@@ -21,9 +21,9 @@ 
     
    931931Index: templates/header.cs 
    932932======