diff --git a/addons/web/__openerp__.py b/addons/web/__openerp__.py index 5c95b327605..3767072ff9d 100644 --- a/addons/web/__openerp__.py +++ b/addons/web/__openerp__.py @@ -1,6 +1,11 @@ { "name" : "web", - "category" : "Hidden", + "category": "Hidden", + "description": + """ + OpenERP Web core module. + This module provides the core of the OpenERP web client. + """, "depends" : [], 'active': True, 'post_load' : 'wsgi_postload', @@ -10,7 +15,7 @@ "static/lib/datejs/parser.js", "static/lib/datejs/sugarpak.js", "static/lib/datejs/extras.js", - "static/lib/jquery/jquery-1.6.2.js", + "static/lib/jquery/jquery-1.6.4.js", "static/lib/jquery.MD5/jquery.md5.js", "static/lib/jquery.form/jquery.form.js", "static/lib/jquery.validate/jquery.validate.js", @@ -42,6 +47,7 @@ "static/src/js/data_import.js", "static/src/js/search.js", "static/src/js/view_form.js", + "static/src/js/view_page.js", "static/src/js/view_list.js", "static/src/js/view_list_editable.js", "static/src/js/view_tree.js", diff --git a/addons/web/common/http.py b/addons/web/common/http.py index 69220eec2d7..ad23dbc0c89 100644 --- a/addons/web/common/http.py +++ b/addons/web/common/http.py @@ -6,11 +6,12 @@ import ast import contextlib import functools import logging -import urllib import os import pprint import sys +import threading import traceback +import urllib import uuid import xmlrpclib @@ -128,17 +129,37 @@ class JsonRequest(WebRequest): "id": null} """ - - def dispatch(self, controller, method, requestf=None, request=None): - """ Calls the method asked for by the JSON-RPC2 request + def dispatch(self, controller, method): + """ Calls the method asked for by the JSON-RPC2 or JSONP request :param controller: the instance of the controller which received the request :param method: the method which received the request - :param requestf: a file-like object containing an encoded JSON-RPC2 request - :param request: a JSON-RPC2 request - :returns: an utf8 encoded JSON-RPC2 reply + :returns: an utf8 encoded JSON-RPC2 or JSONP reply """ + args = self.httprequest.args + jsonp = args.get('jsonp') + requestf = None + request = None + + if jsonp and self.httprequest.method == 'POST': + # jsonp 2 steps step1 POST: save call + self.init(args) + req.session.jsonp_requests[args.get('id')] = self.httprequest.form['r'] + headers=[('Content-Type', 'text/plain; charset=utf-8')] + r = werkzeug.wrappers.Response(request_id, headers=headers) + return r + elif jsonp and args.get('r'): + # jsonp method GET + request = args.get('r') + elif jsonp and args.get('id'): + # jsonp 2 steps step2 GET: run and return result + self.init(args) + request = self.session.jsonp_requests.pop(args.get(id), "") + else: + # regular jsonrpc2 + requestf = self.httprequest.stream + response = {"jsonrpc": "2.0" } error = None try: @@ -188,10 +209,16 @@ class JsonRequest(WebRequest): if _logger.isEnabledFor(logging.DEBUG): _logger.debug("<--\n%s", pprint.pformat(response)) - content = simplejson.dumps(response, cls=nonliterals.NonLiteralEncoder) - return werkzeug.wrappers.Response( - content, headers=[('Content-Type', 'application/json'), - ('Content-Length', len(content))]) + + if jsonp: + mime = 'application/javascript' + body = "%s(%s);" % (jsonp, simplejson.dumps(response, cls=nonliterals.NonLiteralEncoder),) + else: + mime = 'application/json' + body = simplejson.dumps(response, cls=nonliterals.NonLiteralEncoder) + + r = werkzeug.wrappers.Response(body, headers=[('Content-Type', mime), ('Content-Length', len(body))]) + return r def jsonrequest(f): """ Decorator marking the decorated method as being a handler for a @@ -205,8 +232,7 @@ def jsonrequest(f): """ @functools.wraps(f) def json_handler(controller, request, config): - return JsonRequest(request, config).dispatch( - controller, f, requestf=request.stream) + return JsonRequest(request, config).dispatch(controller, f) json_handler.exposed = True return json_handler @@ -281,17 +307,19 @@ STORES = {} @contextlib.contextmanager def session_context(request, storage_path, session_cookie='sessionid'): - session_store = STORES.get(storage_path) + session_store, session_lock = STORES.get(storage_path, (None, None)) if not session_store: session_store = werkzeug.contrib.sessions.FilesystemSessionStore( storage_path) - STORES[storage_path] = session_store + session_lock = threading.Lock() + STORES[storage_path] = session_store, session_lock sid = request.cookies.get(session_cookie) - if sid: - request.session = session_store.get(sid) - else: - request.session = session_store.new() + with session_lock: + if sid: + request.session = session_store.get(sid) + else: + request.session = session_store.new() try: yield request.session @@ -300,32 +328,44 @@ def session_context(request, storage_path, session_cookie='sessionid'): # either by login process or by HTTP requests without an OpenERP # session id, and are generally noise for key, value in request.session.items(): - if isinstance(value, session.OpenERPSession) and not value._uid: + if (isinstance(value, session.OpenERPSession) + and not value._uid + and not value.jsonp_requests + ): + _logger.info('remove session %s: %r', key, value.jsonp_requests) del request.session[key] - # FIXME: remove this when non-literals disappear - if sid: - # Re-load sessions from storage and merge non-literal - # contexts and domains (they're indexed by hash of the - # content so conflicts should auto-resolve), otherwise if - # two requests alter those concurrently the last to finish - # will overwrite the previous one, leading to loss of data - # (a non-literal is lost even though it was sent to the - # client and client errors) - # - # note that domains_store and contexts_store are append-only (we - # only ever add items to them), so we can just update one with the - # other to get the right result, if we want to merge the - # ``context`` dict we'll need something smarter - in_store = session_store.get(sid) - for k, v in request.session.iteritems(): - stored = in_store.get(k) - if stored and isinstance(v, session.OpenERPSession)\ - and v != stored: - v.contexts_store.update(stored.contexts_store) - v.domains_store.update(stored.domains_store) + with session_lock: + if sid: + # Re-load sessions from storage and merge non-literal + # contexts and domains (they're indexed by hash of the + # content so conflicts should auto-resolve), otherwise if + # two requests alter those concurrently the last to finish + # will overwrite the previous one, leading to loss of data + # (a non-literal is lost even though it was sent to the + # client and client errors) + # + # note that domains_store and contexts_store are append-only (we + # only ever add items to them), so we can just update one with the + # other to get the right result, if we want to merge the + # ``context`` dict we'll need something smarter + in_store = session_store.get(sid) + for k, v in request.session.iteritems(): + stored = in_store.get(k) + if stored and isinstance(v, session.OpenERPSession): + v.contexts_store.update(stored.contexts_store) + v.domains_store.update(stored.domains_store) + if not hasattr(v, 'jsonp_requests'): + v.jsonp_requests = {} + v.jsonp_requests.update(getattr( + stored, 'jsonp_requests', {})) - session_store.save(request.session) + # add missing keys + for k, v in in_store.iteritems(): + if k not in request.session: + request.session[k] = v + + session_store.save(request.session) #---------------------------------------------------------- # OpenERP Web Module/Controller Loading and URL Routing @@ -386,6 +426,7 @@ class Root(object): if not os.path.exists(options.session_storage): os.mkdir(options.session_storage, 0700) self.session_storage = options.session_storage + _logger.debug('HTTP sessions stored in: %s', self.session_storage) def __call__(self, environ, start_response): """ Handle a WSGI request @@ -401,12 +442,13 @@ class Root(object): """ request = werkzeug.wrappers.Request(environ) request.parameter_storage_class = werkzeug.datastructures.ImmutableDict + request.app = self if request.path == '/': params = urllib.urlencode(request.args) return werkzeug.utils.redirect(self.root + '?' + params, 301)( environ, start_response) - elif request.path == '/mobile': + elif request.path == '/mobile' or ('#' in request.path): return werkzeug.utils.redirect( '/web_mobile/static/src/web_mobile.html', 301)(environ, start_response) diff --git a/addons/web/common/openerplib/main.py b/addons/web/common/openerplib/main.py index 773ea020d52..76bf7bad6ca 100644 --- a/addons/web/common/openerplib/main.py +++ b/addons/web/common/openerplib/main.py @@ -291,7 +291,7 @@ class Service(object): """ self.connector = connector self.service_name = service_name - self.__logger = _getChildLogger(_getChildLogger(_logger, 'service'),service_name) + self.__logger = _getChildLogger(_getChildLogger(_logger, 'service'),service_name or "") def __getattr__(self, method): """ @@ -363,7 +363,8 @@ class Connection(object): if not self.database or not self.login or self.password is None: raise AuthenticationError("Credentials not provided") - + + # TODO use authenticate instead of login self.user_id = self.get_service("common").login(self.database, self.login, self.password) if not self.user_id: raise AuthenticationError("Authentication failure") @@ -406,7 +407,7 @@ class Model(object): """ self.connection = connection self.model_name = model_name - self.__logger = _getChildLogger(_getChildLogger(_logger, 'object'), model_name) + self.__logger = _getChildLogger(_getChildLogger(_logger, 'object'), model_name or "") def __getattr__(self, method): """ diff --git a/addons/web/common/session.py b/addons/web/common/session.py index e8027db8ea4..be1a2b749da 100644 --- a/addons/web/common/session.py +++ b/addons/web/common/session.py @@ -37,6 +37,7 @@ class OpenERPSession(object): self.context = {} self.contexts_store = {} self.domains_store = {} + self.jsonp_requests = {} # FIXME use a LRU def __getstate__(self): state = dict(self.__dict__) @@ -58,8 +59,9 @@ class OpenERPSession(object): self._login = login self._password = password - def login(self, db, login, password): - uid = self.proxy('common').login(db, login, password) + def authenticate(self, db, login, password, env): + # TODO use the openerplib API once it exposes authenticate() + uid = self.proxy('common').authenticate(db, login, password, env) self.bind(db, uid, login, password) if uid: self.get_context() diff --git a/addons/web/common/xml2json.py b/addons/web/common/xml2json.py index 16022624fe7..1f2e74691b9 100644 --- a/addons/web/common/xml2json.py +++ b/addons/web/common/xml2json.py @@ -16,7 +16,7 @@ class Xml2Json(object): return Xml2Json.convert_element(root) @staticmethod - def convert_element(el, skip_whitespaces=True): + def convert_element(el, preserve_whitespaces=False): res = {} if el.tag[0] == "{": ns, name = el.tag.rsplit("}", 1) @@ -28,11 +28,11 @@ class Xml2Json(object): for k, v in el.items(): res["attrs"][k] = v kids = [] - if el.text and (not skip_whitespaces or el.text.strip() != ''): + if el.text and (preserve_whitespaces or el.text.strip() != ''): kids.append(el.text) for kid in el: - kids.append(Xml2Json.convert_element(kid)) - if kid.tail and (not skip_whitespaces or kid.tail.strip() != ''): + kids.append(Xml2Json.convert_element(kid, preserve_whitespaces)) + if kid.tail and (preserve_whitespaces or kid.tail.strip() != ''): kids.append(kid.tail) res["children"] = kids return res diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 6af0268b3bf..6a7ab94a645 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -10,12 +10,14 @@ import os import re import simplejson import time +import urllib2 import xmlrpclib import zlib from xml.etree import ElementTree from cStringIO import StringIO import babel.messages.pofile +import werkzeug.utils import web.common openerpweb = web.common.http @@ -103,6 +105,7 @@ class WebClient(openerpweb.Controller): addons = self.server_wide_modules(req) else: addons = addons.split(',') + r = [] for addon in addons: manifest = openerpweb.addons_manifest.get(addon, None) if not manifest: @@ -112,7 +115,8 @@ class WebClient(openerpweb.Controller): globlist = manifest.get(key, []) for pattern in globlist: for path in glob.glob(os.path.normpath(os.path.join(addons_path, addon, pattern))): - yield path, path[len(addons_path):] + r.append( (path, path[len(addons_path):])) + return r def manifest_list(self, req, mods, extension): if not req.debug: @@ -197,6 +201,14 @@ class WebClient(openerpweb.Controller): } return r + @openerpweb.httprequest + def login(self, req, db, login, key): + req.session.authenticate(db, login, key, {}) + redirect = werkzeug.utils.redirect('/web/webclient/home', 303) + cookie_val = urllib2.quote(simplejson.dumps(req.session_id)) + redirect.set_cookie('session0|session_id', cookie_val) + return redirect + @openerpweb.jsonrequest def translations(self, req, mods, lang): lang_model = req.session.model('res.lang') @@ -240,6 +252,25 @@ class WebClient(openerpweb.Controller): "version": web.common.release.version } +class Proxy(openerpweb.Controller): + _cp_path = '/web/proxy' + + @openerpweb.jsonrequest + def load(self, req, path): + """ Proxies an HTTP request through a JSON request. + + It is strongly recommended to not request binary files through this, + as the result will be a binary data blob as well. + + :param req: OpenERP request + :param path: actual request path + :return: file content + """ + from werkzeug.test import Client + from werkzeug.wrappers import BaseResponse + + return Client(req.httprequest.app, BaseResponse).get(path).data + class Database(openerpweb.Controller): _cp_path = "/web/database" @@ -268,7 +299,7 @@ class Database(openerpweb.Controller): params['db_lang'], params['create_admin_pwd'] ) - + try: return req.session.proxy("db").create(*create_attrs) except xmlrpclib.Fault, e: @@ -335,8 +366,16 @@ class Session(openerpweb.Controller): _cp_path = "/web/session" @openerpweb.jsonrequest - def login(self, req, db, login, password): - req.session.login(db, login, password) + def authenticate(self, req, db, login, password, base_location=None): + wsgienv = req.httprequest.environ + release = web.common.release + env = dict( + base_location=base_location, + HTTP_HOST=wsgienv['HTTP_HOST'], + REMOTE_ADDR=wsgienv['REMOTE_ADDR'], + user_agent="%s / %s" % (release.name, release.version), + ) + req.session.authenticate(db, login, password, env) ctx = req.session.get_context() if req.session._uid else {} return { @@ -349,7 +388,6 @@ class Session(openerpweb.Controller): @openerpweb.jsonrequest def get_session_info(self, req): - req.session.assert_valid(force=True) return { "uid": req.session._uid, "context": req.session.get_context() if req.session._uid else False, @@ -602,9 +640,17 @@ def fix_view_modes(action): :param dict action: an action descriptor :returns: nothing, the action is modified in place """ - if 'views' not in action: + if not action.get('views'): generate_views(action) + id_form = None + for index, (id, mode) in enumerate(action['views']): + if mode == 'form': + id_form = id + break + if id_form is not None: + action['views'].insert(index + 1, (id_form, 'page')) + if action.pop('view_type', 'form') != 'form': return action @@ -778,12 +824,15 @@ class DataSet(openerpweb.Controller): return Model.unlink(ids, req.session.eval_context(req.context)) def call_common(self, req, model, method, args, domain_id=None, context_id=None): - domain = args[domain_id] if domain_id and len(args) - 1 >= domain_id else [] - context = args[context_id] if context_id and len(args) - 1 >= context_id else {} + has_domain = domain_id is not None and domain_id < len(args) + has_context = context_id is not None and context_id < len(args) + + domain = args[domain_id] if has_domain else [] + context = args[context_id] if has_context else {} c, d = eval_context_and_domain(req.session, context, domain) - if domain_id and len(args) - 1 >= domain_id: + if has_domain: args[domain_id] = d - if context_id and len(args) - 1 >= context_id: + if has_context: args[context_id] = c for i in xrange(len(args)): @@ -841,12 +890,12 @@ class View(openerpweb.Controller): context = req.session.eval_context(req.context) fvg = Model.fields_view_get(view_id, view_type, context, toolbar, submenu) # todo fme?: check that we should pass the evaluated context here - self.process_view(req.session, fvg, context, transform) + self.process_view(req.session, fvg, context, transform, (view_type == 'kanban')) if toolbar and transform: self.process_toolbar(req, fvg['toolbar']) return fvg - def process_view(self, session, fvg, context, transform): + def process_view(self, session, fvg, context, transform, preserve_whitespaces=False): # depending on how it feels, xmlrpclib.ServerProxy can translate # XML-RPC strings to ``str`` or ``unicode``. ElementTree does not # enjoy unicode strings which can not be trivially converted to @@ -864,7 +913,7 @@ class View(openerpweb.Controller): xml = self.transform_view(arch, session, evaluation_context) else: xml = ElementTree.fromstring(arch) - fvg['arch'] = web.common.xml2json.Xml2Json.convert_element(xml) + fvg['arch'] = web.common.xml2json.Xml2Json.convert_element(xml, preserve_whitespaces) for field in fvg['fields'].itervalues(): if field.get('views'): @@ -1064,6 +1113,44 @@ class SearchView(View): }, context) return to_return + @openerpweb.jsonrequest + def add_to_dashboard(self, req, menu_id, action_id, context_to_save, domain, view_mode, name=''): + ctx = web.common.nonliterals.CompoundContext(context_to_save) + ctx.session = req.session + ctx = ctx.evaluate() + domain = web.common.nonliterals.CompoundDomain(domain) + domain.session = req.session + domain = domain.evaluate() + + dashboard_action = load_actions_from_ir_values(req, 'action', 'tree_but_open', + [('ir.ui.menu', menu_id)], False) + if dashboard_action: + action = dashboard_action[0][2] + if action['res_model'] == 'board.board' and action['views'][0][1] == 'form': + # Maybe should check the content instead of model board.board ? + view_id = action['views'][0][0] + board = req.session.model(action['res_model']).fields_view_get(view_id, 'form') + if board and 'arch' in board: + xml = ElementTree.fromstring(board['arch']) + column = xml.find('./board/column') + if column: + new_action = ElementTree.Element('action', { + 'name' : str(action_id), + 'string' : name, + 'view_mode' : view_mode, + 'context' : str(ctx), + 'domain' : str(domain) + }) + column.insert(0, new_action) + arch = ElementTree.tostring(xml, 'utf-8') + return req.session.model('ir.ui.view.custom').create({ + 'user_id': req.session._uid, + 'ref_id': view_id, + 'arch': arch + }, req.session.eval_context(req.context)) + + return False + class Binary(openerpweb.Controller): _cp_path = "/web/binary" @@ -1122,7 +1209,7 @@ class Binary(openerpweb.Controller): } """ data = ufile.read() - args = [ufile.content_length, ufile.filename, + args = [len(data), ufile.filename, ufile.content_type, base64.b64encode(data)] except Exception, e: args = [False, e.message] @@ -1220,13 +1307,16 @@ class Export(View): records = [] for field_name, field in fields_sequence: - if import_compat and (exclude and field_name in exclude): - continue - if import_compat and field.get('readonly'): - # If none of the field's states unsets readonly, skip the field - if all(dict(attrs).get('readonly', True) - for attrs in field.get('states', {}).values()): + if import_compat: + if exclude and field_name in exclude: continue + if 'function' in field: + continue + if field.get('readonly'): + # If none of the field's states unsets readonly, skip the field + if all(dict(attrs).get('readonly', True) + for attrs in field.get('states', {}).values()): + continue id = prefix + (prefix and '/'or '') + field_name name = parent_name + (parent_name and '/' or '') + field['string'] @@ -1348,7 +1438,7 @@ class Export(View): context = req.session.eval_context(req.context) Model = req.session.model(model) - ids = ids or Model.search(domain, context=context) + ids = ids or Model.search(domain, 0, False, False, context) field_names = map(operator.itemgetter('name'), fields) import_data = Model.export_data(ids, field_names, context).get('datas',[]) diff --git a/addons/web/po/ar.po b/addons/web/po/ar.po index 34c7beccf4a..ed3cc0eca1c 100644 --- a/addons/web/po/ar.po +++ b/addons/web/po/ar.po @@ -7,54 +7,399 @@ msgid "" msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2011-10-07 10:38+0200\n" +"POT-Creation-Date: 2011-12-20 18:48+0100\n" "PO-Revision-Date: 2011-11-08 05:44+0000\n" "Last-Translator: Ahmad Khayyat \n" "Language-Team: Arabic \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-21 05:49+0000\n" -"X-Generator: Launchpad (build 14299)\n" +"X-Launchpad-Export-Date: 2011-12-21 05:27+0000\n" +"X-Generator: Launchpad (build 14538)\n" -#: addons/web/static/src/js/view_form.js:355 +#: addons/web/static/src/js/chrome.js:162 +#: addons/web/static/src/js/chrome.js:175 +#: addons/web/static/src/js/chrome.js:369 +#: addons/web/static/src/js/view_form.js:358 +#: addons/web/static/src/js/view_form.js:1078 +#: addons/web/static/src/xml/base.xml:0 +msgid "Ok" +msgstr "تم" + +#: addons/web/static/src/js/chrome.js:668 +msgid "About" +msgstr "" + +#: addons/web/static/src/js/chrome.js:748 +msgid "Preferences" +msgstr "" + +#: addons/web/static/src/js/chrome.js:752 +msgid "Change password" +msgstr "" + +#: addons/web/static/src/js/chrome.js:753 +#: addons/web/static/src/js/search.js:235 +#: addons/web/static/src/js/search.js:276 +#: addons/web/static/src/js/view_editor.js:97 +#: addons/web/static/src/js/view_editor.js:778 +#: addons/web/static/src/js/view_editor.js:907 +#: addons/web/static/src/js/view_form.js:1085 +#: addons/web/static/src/xml/base.xml:0 +msgid "Cancel" +msgstr "إلغاء" + +#: addons/web/static/src/js/chrome.js:754 +#: addons/web/static/src/js/view_editor.js:75 +#: addons/web/static/src/js/views.js:871 addons/web/static/src/xml/base.xml:0 +msgid "Save" +msgstr "حفظ" + +#: addons/web/static/src/js/chrome.js:774 addons/web/static/src/xml/base.xml:0 +msgid "Change Password" +msgstr "" + +#: addons/web/static/src/js/data_export.js:6 +msgid "Export Data" +msgstr "" + +#: addons/web/static/src/js/data_export.js:23 +#: addons/web/static/src/js/data_import.js:73 +#: addons/web/static/src/js/view_editor.js:49 +#: addons/web/static/src/js/view_editor.js:387 +#: addons/web/static/src/js/view_form.js:2775 +#: addons/web/static/src/js/views.js:872 +msgid "Close" +msgstr "إغلاق" + +#: addons/web/static/src/js/data_export.js:24 +msgid "Export To File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:34 +msgid "Import Data" +msgstr "" + +#: addons/web/static/src/js/data_import.js:74 +msgid "Import File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:109 +msgid "External ID" +msgstr "" + +#: addons/web/static/src/js/search.js:233 +msgid "Filter Entry" +msgstr "" + +#: addons/web/static/src/js/search.js:238 +#: addons/web/static/src/js/search.js:279 +msgid "OK" +msgstr "" + +#: addons/web/static/src/js/search.js:274 addons/web/static/src/xml/base.xml:0 +msgid "Add to Dashboard" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "Invalid Search" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "triggered from search view" +msgstr "" + +#: addons/web/static/src/js/search.js:490 +#, python-format +msgid "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s" +msgstr "" + +#: addons/web/static/src/js/search.js:822 +msgid "not a valid integer" +msgstr "" + +#: addons/web/static/src/js/search.js:836 +msgid "not a valid number" +msgstr "" + +#: addons/web/static/src/js/search.js:898 +msgid "Yes" +msgstr "" + +#: addons/web/static/src/js/search.js:899 +msgid "No" +msgstr "" + +#: addons/web/static/src/js/search.js:1252 +msgid "contains" +msgstr "" + +#: addons/web/static/src/js/search.js:1253 +msgid "doesn't contain" +msgstr "" + +#: addons/web/static/src/js/search.js:1254 +#: addons/web/static/src/js/search.js:1269 +#: addons/web/static/src/js/search.js:1289 +#: addons/web/static/src/js/search.js:1309 +#: addons/web/static/src/js/search.js:1331 +msgid "is equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1255 +#: addons/web/static/src/js/search.js:1270 +#: addons/web/static/src/js/search.js:1290 +#: addons/web/static/src/js/search.js:1310 +#: addons/web/static/src/js/search.js:1332 +msgid "is not equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1256 +#: addons/web/static/src/js/search.js:1271 +#: addons/web/static/src/js/search.js:1291 +#: addons/web/static/src/js/search.js:1311 +#: addons/web/static/src/js/search.js:1333 +msgid "greater than" +msgstr "" + +#: addons/web/static/src/js/search.js:1257 +#: addons/web/static/src/js/search.js:1272 +#: addons/web/static/src/js/search.js:1292 +#: addons/web/static/src/js/search.js:1312 +#: addons/web/static/src/js/search.js:1334 +msgid "less than" +msgstr "" + +#: addons/web/static/src/js/search.js:1258 +#: addons/web/static/src/js/search.js:1273 +#: addons/web/static/src/js/search.js:1293 +#: addons/web/static/src/js/search.js:1313 +#: addons/web/static/src/js/search.js:1335 +msgid "greater or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1259 +#: addons/web/static/src/js/search.js:1274 +#: addons/web/static/src/js/search.js:1294 +#: addons/web/static/src/js/search.js:1314 +#: addons/web/static/src/js/search.js:1336 +msgid "less or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1325 +#: addons/web/static/src/js/search.js:1350 +msgid "is" +msgstr "" + +#: addons/web/static/src/js/search.js:1351 +msgid "is not" +msgstr "" + +#: addons/web/static/src/js/search.js:1364 +msgid "is true" +msgstr "" + +#: addons/web/static/src/js/search.js:1365 +msgid "is false" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:42 +msgid "ViewEditor" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:46 +#: addons/web/static/src/js/view_list.js:17 +#: addons/web/static/src/xml/base.xml:0 +msgid "Create" +msgstr "إنشاء" + +#: addons/web/static/src/js/view_editor.js:47 +#: addons/web/static/src/xml/base.xml:0 +msgid "Edit" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:48 +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove" +msgstr "إزالة" + +#: addons/web/static/src/js/view_editor.js:71 +#, python-format +msgid "Create a view (%s)" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:170 +msgid "Do you really want to remove this view?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:367 +#, python-format +msgid "View Editor %d - %s" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:371 +msgid "Preview" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:442 +msgid "Do you really want to remove this node?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:756 +#: addons/web/static/src/js/view_editor.js:883 +msgid "Properties" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:760 +#: addons/web/static/src/js/view_editor.js:887 +msgid "Update" +msgstr "" + +#: addons/web/static/src/js/view_form.js:17 +msgid "Form" +msgstr "" + +#: addons/web/static/src/js/view_form.js:401 msgid "" "Warning, the record has been modified, your changes will be discarded." msgstr "تحذير، تم تحرير السجل، تعديلاتك سيتم تجاهلها" -#: addons/web/static/src/js/view_form.js:1659 +#: addons/web/static/src/js/view_form.js:612 +msgid "Attachments" +msgstr "" + +#: addons/web/static/src/js/view_form.js:650 +#, python-format +msgid "Do you really want to delete the attachment %s?" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1075 +msgid "Confirm" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1838 msgid "   Search More..." msgstr "    مزيداً من البحث..." -#: addons/web/static/src/js/view_form.js:1672 +#: addons/web/static/src/js/view_form.js:1851 #, python-format msgid "   Create \"%s\"" msgstr "   إنشاء \"%s\"" -#: addons/web/static/src/js/view_form.js:1678 +#: addons/web/static/src/js/view_form.js:1857 msgid "   Create and Edit..." msgstr "   إنشاء و تحرير..." -#: addons/web/static/src/js/views.js:568 +#: addons/web/static/src/js/view_form.js:2404 +#: addons/web/static/src/xml/base.xml:0 +msgid "Add" +msgstr "اضافة" + +#: addons/web/static/src/js/view_list.js:8 +msgid "List" +msgstr "" + +#: addons/web/static/src/js/view_list.js:269 +msgid "Unlimited" +msgstr "" + +#: addons/web/static/src/js/view_list.js:516 +msgid "Do you really want to remove these records?" +msgstr "" + +#: addons/web/static/src/js/view_list.js:1202 +msgid "Undefined" +msgstr "" + +#: addons/web/static/src/js/view_page.js:8 +msgid "Page" +msgstr "" + +#: addons/web/static/src/js/view_page.js:52 +msgid "Do you really want to delete this record?" +msgstr "" + +#: addons/web/static/src/js/view_page.js:227 +msgid "Download" +msgstr "" + +#: addons/web/static/src/js/view_tree.js:11 +msgid "Tree" +msgstr "" + +#: addons/web/static/src/js/views.js:590 +msgid "Search: " +msgstr "" + +#: addons/web/static/src/js/views.js:710 +msgid "Customize" +msgstr "" + +#: addons/web/static/src/js/views.js:713 +msgid "Manage Views" +msgstr "" + +#: addons/web/static/src/js/views.js:715 addons/web/static/src/js/views.js:719 +#: addons/web/static/src/js/views.js:724 +msgid "Manage views of the current object" +msgstr "" + +#: addons/web/static/src/js/views.js:717 +msgid "Edit Workflow" +msgstr "" + +#: addons/web/static/src/js/views.js:722 +msgid "Customize Object" +msgstr "" + +#: addons/web/static/src/js/views.js:726 +msgid "Translate" +msgstr "" + +#: addons/web/static/src/js/views.js:728 +msgid "Technical translation" +msgstr "" + +#: addons/web/static/src/js/views.js:733 +msgid "Other Options" +msgstr "" + +#: addons/web/static/src/js/views.js:736 addons/web/static/src/xml/base.xml:0 +msgid "Import" +msgstr "استيراد" + +#: addons/web/static/src/js/views.js:739 addons/web/static/src/xml/base.xml:0 +msgid "Export" +msgstr "تصدير" + +#: addons/web/static/src/js/views.js:742 +msgid "View Log" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Reports" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Actions" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Links" +msgstr "" + +#: addons/web/static/src/js/views.js:831 msgid "You must choose at least one record." msgstr "عليك إختيار سجل واحد علي الأقل." -#: addons/web/static/src/js/views.js:569 +#: addons/web/static/src/js/views.js:832 msgid "Warning" msgstr "تحذير" -#: addons/web/static/src/js/views.js:609 +#: addons/web/static/src/js/views.js:866 msgid "Translations" msgstr "ترجمات" -#: addons/web/static/src/js/views.js:614 addons/web/static/src/xml/base.xml:0 -msgid "Save" -msgstr "حفظ" - -#: addons/web/static/src/js/views.js:615 -msgid "Close" -msgstr "إغلاق" - #: addons/web/static/src/xml/base.xml:0 msgid "x" msgstr "x" @@ -83,10 +428,6 @@ msgstr "." msgid "Loading..." msgstr "جاري التحميل..." -#: addons/web/static/src/xml/base.xml:0 -msgid "Create" -msgstr "إنشاء" - #: addons/web/static/src/xml/base.xml:0 msgid "Drop" msgstr "إزالة" @@ -269,20 +610,32 @@ msgid "Disable all tips" msgstr "تعطيل جميع الإرشادات" #: addons/web/static/src/xml/base.xml:0 -msgid "View#" -msgstr "View#" +msgid "More…" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Fields" -msgstr "حقول" +msgid "Debug View#" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "View labels" -msgstr "عرض التسميات" +msgid "- Fields View Get" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Sidebar Relates" -msgstr "روابط الشريط الجانبي" +msgid "- Edit" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "View" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit SearchView" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit Action" +msgstr "" #: addons/web/static/src/xml/base.xml:0 msgid "Field" @@ -292,62 +645,10 @@ msgstr "حقل" msgid ":" msgstr ":" -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate view" -msgstr "ترجمة العرض" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate sidebar" -msgstr "ترجمة الشريط الجانبي" - #: addons/web/static/src/xml/base.xml:0 msgid "Delete" msgstr "حذف" -#: addons/web/static/src/xml/base.xml:0 -msgid "First" -msgstr "الأول" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<" -msgstr "<" - -#: addons/web/static/src/xml/base.xml:0 -msgid ">" -msgstr ">" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Last" -msgstr "الأخير" - -#: addons/web/static/src/xml/base.xml:0 -msgid "♻" -msgstr "♻" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Save & Edit" -msgstr "حفظ و تحرير" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Create & Edit" -msgstr "إنشاء و تحرير" - -#: addons/web/static/src/xml/base.xml:0 -msgid "New" -msgstr "جديد" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Duplicate" -msgstr "تكرار" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Readonly/Editable" -msgstr "للقراءة فقط/قابل للتحرير" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<<" -msgstr ">>" - #: addons/web/static/src/xml/base.xml:0 msgid "0" msgstr "0" @@ -357,28 +658,88 @@ msgid "/" msgstr "/" #: addons/web/static/src/xml/base.xml:0 -msgid ">>" -msgstr ">>" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Add" -msgstr "اضافة" +msgid "Duplicate" +msgstr "تكرار" #: addons/web/static/src/xml/base.xml:0 msgid "Unhandled widget" msgstr "أداة غير معالجة" +#: addons/web/static/src/xml/base.xml:0 +msgid "Notebook Page \"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "\"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Modifiers:" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "?" msgstr "؟" #: addons/web/static/src/xml/base.xml:0 -msgid "#" -msgstr "#" +msgid "(nolabel)" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Done" -msgstr "تم" +msgid "Field:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Object:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Widget:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Size:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Context:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Domain:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "On change:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Relation:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Selection:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "[" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "]" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#" +msgstr "#" #: addons/web/static/src/xml/base.xml:0 msgid "Open..." @@ -412,18 +773,38 @@ msgstr "حفظ كـ" msgid "Clear" msgstr "إفراغ" +#: addons/web/static/src/xml/base.xml:0 +msgid "Button" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(no string)" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Special:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Button Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Method:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Action ID:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Advanced Filter" msgstr "مرشحات متقدمة" -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Filters --" -msgstr "-- مرشحات --" - -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Actions --" -msgstr "-- إجراءات --" - #: addons/web/static/src/xml/base.xml:0 msgid "Save Filter" msgstr "حفظ المرشح" @@ -440,6 +821,18 @@ msgstr "اسم المرشح:" msgid "(Any existing filter with the same name will be replaced)" msgstr "(لاحظ أن أي مرشح بنفس الاسم سيتم إستبداله)" +#: addons/web/static/src/xml/base.xml:0 +msgid "Select Dashboard to add this filter to:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Title of new Dashboard item:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filters" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Any of the following conditions must match" msgstr "يجب تطابق أي من الشروط التالية" @@ -460,10 +853,6 @@ msgstr "إضافة شرط" msgid "and" msgstr "و" -#: addons/web/static/src/xml/base.xml:0 -msgid "Cancel" -msgstr "إلغاء" - #: addons/web/static/src/xml/base.xml:0 msgid "Save & New" msgstr "حفظ و جديد" @@ -472,10 +861,6 @@ msgstr "حفظ و جديد" msgid "Save & Close" msgstr "حفظ و إغلاق" -#: addons/web/static/src/xml/base.xml:0 -msgid "Export" -msgstr "تصدير" - #: addons/web/static/src/xml/base.xml:0 msgid "" "This wizard will export all data that matches the current search criteria to " @@ -516,10 +901,6 @@ msgstr "حقول للتصدير" msgid "Save fields list" msgstr "حفظ قائمة الحقول" -#: addons/web/static/src/xml/base.xml:0 -msgid "Remove" -msgstr "إزالة" - #: addons/web/static/src/xml/base.xml:0 msgid "Remove All" msgstr "إزالة الكل" @@ -536,10 +917,6 @@ msgstr " " msgid "Save as:" msgstr "حفظ باسم:" -#: addons/web/static/src/xml/base.xml:0 -msgid "Ok" -msgstr "تم" - #: addons/web/static/src/xml/base.xml:0 msgid "Saved exports:" msgstr "مُصدرة محفوظة:" @@ -556,10 +933,6 @@ msgstr "كلمة المرور الجديدة:" msgid "Confirm Password:" msgstr "تأكيد كلمة المرور:" -#: addons/web/static/src/xml/base.xml:0 -msgid "Import" -msgstr "استيراد" - #: addons/web/static/src/xml/base.xml:0 msgid "1. Import a .CSV file" msgstr "إستيراد ملف .CSV" diff --git a/addons/web/po/bn.po b/addons/web/po/bn.po new file mode 100644 index 00000000000..747a958dfe2 --- /dev/null +++ b/addons/web/po/bn.po @@ -0,0 +1,1050 @@ +# Bengali translation for openerp-web +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the openerp-web package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: openerp-web\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2011-12-20 18:48+0100\n" +"PO-Revision-Date: 2011-11-24 12:45+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Bengali \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-12-21 05:27+0000\n" +"X-Generator: Launchpad (build 14538)\n" + +#: addons/web/static/src/js/chrome.js:162 +#: addons/web/static/src/js/chrome.js:175 +#: addons/web/static/src/js/chrome.js:369 +#: addons/web/static/src/js/view_form.js:358 +#: addons/web/static/src/js/view_form.js:1078 +#: addons/web/static/src/xml/base.xml:0 +msgid "Ok" +msgstr "" + +#: addons/web/static/src/js/chrome.js:668 +msgid "About" +msgstr "" + +#: addons/web/static/src/js/chrome.js:748 +msgid "Preferences" +msgstr "" + +#: addons/web/static/src/js/chrome.js:752 +msgid "Change password" +msgstr "" + +#: addons/web/static/src/js/chrome.js:753 +#: addons/web/static/src/js/search.js:235 +#: addons/web/static/src/js/search.js:276 +#: addons/web/static/src/js/view_editor.js:97 +#: addons/web/static/src/js/view_editor.js:778 +#: addons/web/static/src/js/view_editor.js:907 +#: addons/web/static/src/js/view_form.js:1085 +#: addons/web/static/src/xml/base.xml:0 +msgid "Cancel" +msgstr "" + +#: addons/web/static/src/js/chrome.js:754 +#: addons/web/static/src/js/view_editor.js:75 +#: addons/web/static/src/js/views.js:871 addons/web/static/src/xml/base.xml:0 +msgid "Save" +msgstr "" + +#: addons/web/static/src/js/chrome.js:774 addons/web/static/src/xml/base.xml:0 +msgid "Change Password" +msgstr "" + +#: addons/web/static/src/js/data_export.js:6 +msgid "Export Data" +msgstr "" + +#: addons/web/static/src/js/data_export.js:23 +#: addons/web/static/src/js/data_import.js:73 +#: addons/web/static/src/js/view_editor.js:49 +#: addons/web/static/src/js/view_editor.js:387 +#: addons/web/static/src/js/view_form.js:2775 +#: addons/web/static/src/js/views.js:872 +msgid "Close" +msgstr "" + +#: addons/web/static/src/js/data_export.js:24 +msgid "Export To File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:34 +msgid "Import Data" +msgstr "" + +#: addons/web/static/src/js/data_import.js:74 +msgid "Import File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:109 +msgid "External ID" +msgstr "" + +#: addons/web/static/src/js/search.js:233 +msgid "Filter Entry" +msgstr "" + +#: addons/web/static/src/js/search.js:238 +#: addons/web/static/src/js/search.js:279 +msgid "OK" +msgstr "" + +#: addons/web/static/src/js/search.js:274 addons/web/static/src/xml/base.xml:0 +msgid "Add to Dashboard" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "Invalid Search" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "triggered from search view" +msgstr "" + +#: addons/web/static/src/js/search.js:490 +#, python-format +msgid "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s" +msgstr "" + +#: addons/web/static/src/js/search.js:822 +msgid "not a valid integer" +msgstr "" + +#: addons/web/static/src/js/search.js:836 +msgid "not a valid number" +msgstr "" + +#: addons/web/static/src/js/search.js:898 +msgid "Yes" +msgstr "" + +#: addons/web/static/src/js/search.js:899 +msgid "No" +msgstr "" + +#: addons/web/static/src/js/search.js:1252 +msgid "contains" +msgstr "" + +#: addons/web/static/src/js/search.js:1253 +msgid "doesn't contain" +msgstr "" + +#: addons/web/static/src/js/search.js:1254 +#: addons/web/static/src/js/search.js:1269 +#: addons/web/static/src/js/search.js:1289 +#: addons/web/static/src/js/search.js:1309 +#: addons/web/static/src/js/search.js:1331 +msgid "is equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1255 +#: addons/web/static/src/js/search.js:1270 +#: addons/web/static/src/js/search.js:1290 +#: addons/web/static/src/js/search.js:1310 +#: addons/web/static/src/js/search.js:1332 +msgid "is not equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1256 +#: addons/web/static/src/js/search.js:1271 +#: addons/web/static/src/js/search.js:1291 +#: addons/web/static/src/js/search.js:1311 +#: addons/web/static/src/js/search.js:1333 +msgid "greater than" +msgstr "" + +#: addons/web/static/src/js/search.js:1257 +#: addons/web/static/src/js/search.js:1272 +#: addons/web/static/src/js/search.js:1292 +#: addons/web/static/src/js/search.js:1312 +#: addons/web/static/src/js/search.js:1334 +msgid "less than" +msgstr "" + +#: addons/web/static/src/js/search.js:1258 +#: addons/web/static/src/js/search.js:1273 +#: addons/web/static/src/js/search.js:1293 +#: addons/web/static/src/js/search.js:1313 +#: addons/web/static/src/js/search.js:1335 +msgid "greater or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1259 +#: addons/web/static/src/js/search.js:1274 +#: addons/web/static/src/js/search.js:1294 +#: addons/web/static/src/js/search.js:1314 +#: addons/web/static/src/js/search.js:1336 +msgid "less or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1325 +#: addons/web/static/src/js/search.js:1350 +msgid "is" +msgstr "" + +#: addons/web/static/src/js/search.js:1351 +msgid "is not" +msgstr "" + +#: addons/web/static/src/js/search.js:1364 +msgid "is true" +msgstr "" + +#: addons/web/static/src/js/search.js:1365 +msgid "is false" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:42 +msgid "ViewEditor" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:46 +#: addons/web/static/src/js/view_list.js:17 +#: addons/web/static/src/xml/base.xml:0 +msgid "Create" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:47 +#: addons/web/static/src/xml/base.xml:0 +msgid "Edit" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:48 +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:71 +#, python-format +msgid "Create a view (%s)" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:170 +msgid "Do you really want to remove this view?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:367 +#, python-format +msgid "View Editor %d - %s" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:371 +msgid "Preview" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:442 +msgid "Do you really want to remove this node?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:756 +#: addons/web/static/src/js/view_editor.js:883 +msgid "Properties" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:760 +#: addons/web/static/src/js/view_editor.js:887 +msgid "Update" +msgstr "" + +#: addons/web/static/src/js/view_form.js:17 +msgid "Form" +msgstr "" + +#: addons/web/static/src/js/view_form.js:401 +msgid "" +"Warning, the record has been modified, your changes will be discarded." +msgstr "" + +#: addons/web/static/src/js/view_form.js:612 +msgid "Attachments" +msgstr "" + +#: addons/web/static/src/js/view_form.js:650 +#, python-format +msgid "Do you really want to delete the attachment %s?" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1075 +msgid "Confirm" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1838 +msgid "   Search More..." +msgstr "" + +#: addons/web/static/src/js/view_form.js:1851 +#, python-format +msgid "   Create \"%s\"" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1857 +msgid "   Create and Edit..." +msgstr "" + +#: addons/web/static/src/js/view_form.js:2404 +#: addons/web/static/src/xml/base.xml:0 +msgid "Add" +msgstr "" + +#: addons/web/static/src/js/view_list.js:8 +msgid "List" +msgstr "" + +#: addons/web/static/src/js/view_list.js:269 +msgid "Unlimited" +msgstr "" + +#: addons/web/static/src/js/view_list.js:516 +msgid "Do you really want to remove these records?" +msgstr "" + +#: addons/web/static/src/js/view_list.js:1202 +msgid "Undefined" +msgstr "" + +#: addons/web/static/src/js/view_page.js:8 +msgid "Page" +msgstr "" + +#: addons/web/static/src/js/view_page.js:52 +msgid "Do you really want to delete this record?" +msgstr "" + +#: addons/web/static/src/js/view_page.js:227 +msgid "Download" +msgstr "" + +#: addons/web/static/src/js/view_tree.js:11 +msgid "Tree" +msgstr "" + +#: addons/web/static/src/js/views.js:590 +msgid "Search: " +msgstr "" + +#: addons/web/static/src/js/views.js:710 +msgid "Customize" +msgstr "" + +#: addons/web/static/src/js/views.js:713 +msgid "Manage Views" +msgstr "" + +#: addons/web/static/src/js/views.js:715 addons/web/static/src/js/views.js:719 +#: addons/web/static/src/js/views.js:724 +msgid "Manage views of the current object" +msgstr "" + +#: addons/web/static/src/js/views.js:717 +msgid "Edit Workflow" +msgstr "" + +#: addons/web/static/src/js/views.js:722 +msgid "Customize Object" +msgstr "" + +#: addons/web/static/src/js/views.js:726 +msgid "Translate" +msgstr "" + +#: addons/web/static/src/js/views.js:728 +msgid "Technical translation" +msgstr "" + +#: addons/web/static/src/js/views.js:733 +msgid "Other Options" +msgstr "" + +#: addons/web/static/src/js/views.js:736 addons/web/static/src/xml/base.xml:0 +msgid "Import" +msgstr "" + +#: addons/web/static/src/js/views.js:739 addons/web/static/src/xml/base.xml:0 +msgid "Export" +msgstr "" + +#: addons/web/static/src/js/views.js:742 +msgid "View Log" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Reports" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Actions" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Links" +msgstr "" + +#: addons/web/static/src/js/views.js:831 +msgid "You must choose at least one record." +msgstr "" + +#: addons/web/static/src/js/views.js:832 +msgid "Warning" +msgstr "" + +#: addons/web/static/src/js/views.js:866 +msgid "Translations" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "x" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#{title}" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#{text}" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Powered by" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "openerp.com" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Loading..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Drop" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Backup" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Restore" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Password" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Back to Login" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "CREATE DATABASE" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Master password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "New database name:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Load Demonstration data:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Default language:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Admin password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Confirm password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "DROP DATABASE" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Database:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Master Password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "BACKUP DATABASE" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "RESTORE DATABASE" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "File:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "CHANGE MASTER PASSWORD" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "New master password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Confirm new master password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "User:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Database" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Login" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Bad username or password" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"We think that daily job activities can be more intuitive, efficient, " +"automated, .. and even fun." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP's vision to be:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Full featured" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"Today's enterprise challenges are multiple. We provide one module for each " +"need." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Open Source" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"To Build a great product, we rely on the knowledge of thousands of " +"contributors." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "User Friendly" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"In order to be productive, people need clean and easy to use interface." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid ")" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "LOGOUT" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "«" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "»" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "oe_secondary_menu_item" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "oe_secondary_submenu_item" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Hide this tip" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Disable all tips" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "More…" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Debug View#" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Fields View Get" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "View" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit SearchView" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit Action" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Field" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid ":" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Delete" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "0" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "/" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Duplicate" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Unhandled widget" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Notebook Page \"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "\"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Modifiers:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "?" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(nolabel)" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Field:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Object:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Widget:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Size:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Context:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Domain:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "On change:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Relation:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Selection:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "[" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "]" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Open..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Create..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Uploading ..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Select" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save As" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Clear" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Button" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(no string)" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Special:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Button Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Method:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Action ID:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filter" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save Filter" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Manage Filters" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Filter Name:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(Any existing filter with the same name will be replaced)" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Select Dashboard to add this filter to:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Title of new Dashboard item:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filters" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Any of the following conditions must match" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "All the following conditions must match" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "None of the following conditions must match" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Add condition" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "and" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save & New" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save & Close" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"This wizard will export all data that matches the current search criteria to " +"a CSV file.\n" +" You can export all data or only the fields that can be " +"reimported after modification." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Import Compatible Export" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export all Data" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export Formats" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Available fields" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Fields to export" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save fields list" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove All" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Name" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid " " +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save as:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Saved exports:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Old Password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "New Password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Confirm Password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "1. Import a .CSV file" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"Select a .CSV file to import. If you need a sample of file to import,\n" +" you should use the export tool with the \"Import Compatible\" option." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "CSV File:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "2. Check your file format" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Import Options" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Does your file have titles?" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Separator:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Delimiter:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Encoding:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "UTF-8" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Latin 1" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Lines to skip" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "The import failed due to:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Here is a preview of the file we could not import:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP Web" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Version" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Copyright © 2011-TODAY OpenERP SA. All Rights Reserved." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP is a trademark of the" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP SA Company" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Licenced under the terms of" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "GNU Affero General Public License" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "About OpenERP" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"is a free enterprise-scale software system that is designed to boost\n" +" productivity and profit through data integration. It connects, " +"improves and\n" +" manages business processes in areas such as sales, finance, " +"supply chain,\n" +" project management, production, services, CRM, etc..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"The system is platform-independent, and can be installed on Windows, Mac OS " +"X,\n" +" and various Linux and other Unix-based distributions. Its " +"architecture enables\n" +" new functionality to be rapidly created, modifications to be " +"made to a\n" +" production system and migration to a new version to be " +"straightforward." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"Depending on your needs, OpenERP is available through a web or application " +"client." +msgstr "" diff --git a/addons/web/po/da.po b/addons/web/po/da.po index d40db04e29e..3b280b9dd11 100644 --- a/addons/web/po/da.po +++ b/addons/web/po/da.po @@ -7,56 +7,401 @@ msgid "" msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2011-10-07 10:38+0200\n" +"POT-Creation-Date: 2011-12-20 18:48+0100\n" "PO-Revision-Date: 2011-11-08 21:58+0000\n" "Last-Translator: Jonas Mortensen \n" "Language-Team: Danish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-21 05:49+0000\n" -"X-Generator: Launchpad (build 14299)\n" +"X-Launchpad-Export-Date: 2011-12-21 05:27+0000\n" +"X-Generator: Launchpad (build 14538)\n" -#: addons/web/static/src/js/view_form.js:355 +#: addons/web/static/src/js/chrome.js:162 +#: addons/web/static/src/js/chrome.js:175 +#: addons/web/static/src/js/chrome.js:369 +#: addons/web/static/src/js/view_form.js:358 +#: addons/web/static/src/js/view_form.js:1078 +#: addons/web/static/src/xml/base.xml:0 +msgid "Ok" +msgstr "Ok" + +#: addons/web/static/src/js/chrome.js:668 +msgid "About" +msgstr "" + +#: addons/web/static/src/js/chrome.js:748 +msgid "Preferences" +msgstr "" + +#: addons/web/static/src/js/chrome.js:752 +msgid "Change password" +msgstr "" + +#: addons/web/static/src/js/chrome.js:753 +#: addons/web/static/src/js/search.js:235 +#: addons/web/static/src/js/search.js:276 +#: addons/web/static/src/js/view_editor.js:97 +#: addons/web/static/src/js/view_editor.js:778 +#: addons/web/static/src/js/view_editor.js:907 +#: addons/web/static/src/js/view_form.js:1085 +#: addons/web/static/src/xml/base.xml:0 +msgid "Cancel" +msgstr "Annullér" + +#: addons/web/static/src/js/chrome.js:754 +#: addons/web/static/src/js/view_editor.js:75 +#: addons/web/static/src/js/views.js:871 addons/web/static/src/xml/base.xml:0 +msgid "Save" +msgstr "Gem" + +#: addons/web/static/src/js/chrome.js:774 addons/web/static/src/xml/base.xml:0 +msgid "Change Password" +msgstr "" + +#: addons/web/static/src/js/data_export.js:6 +msgid "Export Data" +msgstr "" + +#: addons/web/static/src/js/data_export.js:23 +#: addons/web/static/src/js/data_import.js:73 +#: addons/web/static/src/js/view_editor.js:49 +#: addons/web/static/src/js/view_editor.js:387 +#: addons/web/static/src/js/view_form.js:2775 +#: addons/web/static/src/js/views.js:872 +msgid "Close" +msgstr "Luk" + +#: addons/web/static/src/js/data_export.js:24 +msgid "Export To File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:34 +msgid "Import Data" +msgstr "" + +#: addons/web/static/src/js/data_import.js:74 +msgid "Import File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:109 +msgid "External ID" +msgstr "" + +#: addons/web/static/src/js/search.js:233 +msgid "Filter Entry" +msgstr "" + +#: addons/web/static/src/js/search.js:238 +#: addons/web/static/src/js/search.js:279 +msgid "OK" +msgstr "" + +#: addons/web/static/src/js/search.js:274 addons/web/static/src/xml/base.xml:0 +msgid "Add to Dashboard" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "Invalid Search" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "triggered from search view" +msgstr "" + +#: addons/web/static/src/js/search.js:490 +#, python-format +msgid "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s" +msgstr "" + +#: addons/web/static/src/js/search.js:822 +msgid "not a valid integer" +msgstr "" + +#: addons/web/static/src/js/search.js:836 +msgid "not a valid number" +msgstr "" + +#: addons/web/static/src/js/search.js:898 +msgid "Yes" +msgstr "" + +#: addons/web/static/src/js/search.js:899 +msgid "No" +msgstr "" + +#: addons/web/static/src/js/search.js:1252 +msgid "contains" +msgstr "" + +#: addons/web/static/src/js/search.js:1253 +msgid "doesn't contain" +msgstr "" + +#: addons/web/static/src/js/search.js:1254 +#: addons/web/static/src/js/search.js:1269 +#: addons/web/static/src/js/search.js:1289 +#: addons/web/static/src/js/search.js:1309 +#: addons/web/static/src/js/search.js:1331 +msgid "is equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1255 +#: addons/web/static/src/js/search.js:1270 +#: addons/web/static/src/js/search.js:1290 +#: addons/web/static/src/js/search.js:1310 +#: addons/web/static/src/js/search.js:1332 +msgid "is not equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1256 +#: addons/web/static/src/js/search.js:1271 +#: addons/web/static/src/js/search.js:1291 +#: addons/web/static/src/js/search.js:1311 +#: addons/web/static/src/js/search.js:1333 +msgid "greater than" +msgstr "" + +#: addons/web/static/src/js/search.js:1257 +#: addons/web/static/src/js/search.js:1272 +#: addons/web/static/src/js/search.js:1292 +#: addons/web/static/src/js/search.js:1312 +#: addons/web/static/src/js/search.js:1334 +msgid "less than" +msgstr "" + +#: addons/web/static/src/js/search.js:1258 +#: addons/web/static/src/js/search.js:1273 +#: addons/web/static/src/js/search.js:1293 +#: addons/web/static/src/js/search.js:1313 +#: addons/web/static/src/js/search.js:1335 +msgid "greater or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1259 +#: addons/web/static/src/js/search.js:1274 +#: addons/web/static/src/js/search.js:1294 +#: addons/web/static/src/js/search.js:1314 +#: addons/web/static/src/js/search.js:1336 +msgid "less or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1325 +#: addons/web/static/src/js/search.js:1350 +msgid "is" +msgstr "" + +#: addons/web/static/src/js/search.js:1351 +msgid "is not" +msgstr "" + +#: addons/web/static/src/js/search.js:1364 +msgid "is true" +msgstr "" + +#: addons/web/static/src/js/search.js:1365 +msgid "is false" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:42 +msgid "ViewEditor" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:46 +#: addons/web/static/src/js/view_list.js:17 +#: addons/web/static/src/xml/base.xml:0 +msgid "Create" +msgstr "Opret" + +#: addons/web/static/src/js/view_editor.js:47 +#: addons/web/static/src/xml/base.xml:0 +msgid "Edit" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:48 +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove" +msgstr "Fjern" + +#: addons/web/static/src/js/view_editor.js:71 +#, python-format +msgid "Create a view (%s)" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:170 +msgid "Do you really want to remove this view?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:367 +#, python-format +msgid "View Editor %d - %s" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:371 +msgid "Preview" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:442 +msgid "Do you really want to remove this node?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:756 +#: addons/web/static/src/js/view_editor.js:883 +msgid "Properties" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:760 +#: addons/web/static/src/js/view_editor.js:887 +msgid "Update" +msgstr "" + +#: addons/web/static/src/js/view_form.js:17 +msgid "Form" +msgstr "" + +#: addons/web/static/src/js/view_form.js:401 msgid "" "Warning, the record has been modified, your changes will be discarded." msgstr "" "Advarsel, registreringen er blevet ændret, dine ændringer vil derfor blive " "kasseret." -#: addons/web/static/src/js/view_form.js:1659 +#: addons/web/static/src/js/view_form.js:612 +msgid "Attachments" +msgstr "" + +#: addons/web/static/src/js/view_form.js:650 +#, python-format +msgid "Do you really want to delete the attachment %s?" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1075 +msgid "Confirm" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1838 msgid "   Search More..." msgstr "   Søg efter mere...." -#: addons/web/static/src/js/view_form.js:1672 +#: addons/web/static/src/js/view_form.js:1851 #, python-format msgid "   Create \"%s\"" msgstr "   Create \"%s\"" -#: addons/web/static/src/js/view_form.js:1678 +#: addons/web/static/src/js/view_form.js:1857 msgid "   Create and Edit..." msgstr "   Opret og rediger..." -#: addons/web/static/src/js/views.js:568 +#: addons/web/static/src/js/view_form.js:2404 +#: addons/web/static/src/xml/base.xml:0 +msgid "Add" +msgstr "Tilføj" + +#: addons/web/static/src/js/view_list.js:8 +msgid "List" +msgstr "" + +#: addons/web/static/src/js/view_list.js:269 +msgid "Unlimited" +msgstr "" + +#: addons/web/static/src/js/view_list.js:516 +msgid "Do you really want to remove these records?" +msgstr "" + +#: addons/web/static/src/js/view_list.js:1202 +msgid "Undefined" +msgstr "" + +#: addons/web/static/src/js/view_page.js:8 +msgid "Page" +msgstr "" + +#: addons/web/static/src/js/view_page.js:52 +msgid "Do you really want to delete this record?" +msgstr "" + +#: addons/web/static/src/js/view_page.js:227 +msgid "Download" +msgstr "" + +#: addons/web/static/src/js/view_tree.js:11 +msgid "Tree" +msgstr "" + +#: addons/web/static/src/js/views.js:590 +msgid "Search: " +msgstr "" + +#: addons/web/static/src/js/views.js:710 +msgid "Customize" +msgstr "" + +#: addons/web/static/src/js/views.js:713 +msgid "Manage Views" +msgstr "" + +#: addons/web/static/src/js/views.js:715 addons/web/static/src/js/views.js:719 +#: addons/web/static/src/js/views.js:724 +msgid "Manage views of the current object" +msgstr "" + +#: addons/web/static/src/js/views.js:717 +msgid "Edit Workflow" +msgstr "" + +#: addons/web/static/src/js/views.js:722 +msgid "Customize Object" +msgstr "" + +#: addons/web/static/src/js/views.js:726 +msgid "Translate" +msgstr "" + +#: addons/web/static/src/js/views.js:728 +msgid "Technical translation" +msgstr "" + +#: addons/web/static/src/js/views.js:733 +msgid "Other Options" +msgstr "" + +#: addons/web/static/src/js/views.js:736 addons/web/static/src/xml/base.xml:0 +msgid "Import" +msgstr "Importér" + +#: addons/web/static/src/js/views.js:739 addons/web/static/src/xml/base.xml:0 +msgid "Export" +msgstr "Eksportér" + +#: addons/web/static/src/js/views.js:742 +msgid "View Log" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Reports" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Actions" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Links" +msgstr "" + +#: addons/web/static/src/js/views.js:831 msgid "You must choose at least one record." msgstr "Du skal vælge mindst en registrering." -#: addons/web/static/src/js/views.js:569 +#: addons/web/static/src/js/views.js:832 msgid "Warning" msgstr "Advarsel" -#: addons/web/static/src/js/views.js:609 +#: addons/web/static/src/js/views.js:866 msgid "Translations" msgstr "Oversættelser" -#: addons/web/static/src/js/views.js:614 addons/web/static/src/xml/base.xml:0 -msgid "Save" -msgstr "Gem" - -#: addons/web/static/src/js/views.js:615 -msgid "Close" -msgstr "Luk" - #: addons/web/static/src/xml/base.xml:0 msgid "x" msgstr "x" @@ -85,10 +430,6 @@ msgstr "," msgid "Loading..." msgstr "Indlæser..." -#: addons/web/static/src/xml/base.xml:0 -msgid "Create" -msgstr "Opret" - #: addons/web/static/src/xml/base.xml:0 msgid "Drop" msgstr "Drop" @@ -275,20 +616,32 @@ msgid "Disable all tips" msgstr "Deaktiver alle tips" #: addons/web/static/src/xml/base.xml:0 -msgid "View#" -msgstr "View#" +msgid "More…" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Fields" -msgstr "Felter" +msgid "Debug View#" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "View labels" -msgstr "Vis etiketter" +msgid "- Fields View Get" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Sidebar Relates" -msgstr "Relaterede til Sidebare" +msgid "- Edit" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "View" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit SearchView" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit Action" +msgstr "" #: addons/web/static/src/xml/base.xml:0 msgid "Field" @@ -298,62 +651,10 @@ msgstr "Felt" msgid ":" msgstr ":" -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate view" -msgstr "Se oversættelse" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate sidebar" -msgstr "Oversæt sidebar" - #: addons/web/static/src/xml/base.xml:0 msgid "Delete" msgstr "Slet" -#: addons/web/static/src/xml/base.xml:0 -msgid "First" -msgstr "Første" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<" -msgstr "<" - -#: addons/web/static/src/xml/base.xml:0 -msgid ">" -msgstr ">" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Last" -msgstr "Sidste" - -#: addons/web/static/src/xml/base.xml:0 -msgid "♻" -msgstr "♻" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Save & Edit" -msgstr "Gem & Rediger" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Create & Edit" -msgstr "Opret & Rediger" - -#: addons/web/static/src/xml/base.xml:0 -msgid "New" -msgstr "Ny" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Duplicate" -msgstr "Duplikér" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Readonly/Editable" -msgstr "Skrivebeskyttet/redigerbar" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<<" -msgstr "<<" - #: addons/web/static/src/xml/base.xml:0 msgid "0" msgstr "0" @@ -363,28 +664,88 @@ msgid "/" msgstr "/" #: addons/web/static/src/xml/base.xml:0 -msgid ">>" -msgstr ">>" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Add" -msgstr "Tilføj" +msgid "Duplicate" +msgstr "Duplikér" #: addons/web/static/src/xml/base.xml:0 msgid "Unhandled widget" msgstr "Ubehandlet widget" +#: addons/web/static/src/xml/base.xml:0 +msgid "Notebook Page \"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "\"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Modifiers:" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "?" msgstr "?" #: addons/web/static/src/xml/base.xml:0 -msgid "#" -msgstr "#" +msgid "(nolabel)" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Done" -msgstr "Udført" +msgid "Field:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Object:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Widget:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Size:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Context:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Domain:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "On change:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Relation:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Selection:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "[" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "]" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#" +msgstr "#" #: addons/web/static/src/xml/base.xml:0 msgid "Open..." @@ -418,18 +779,38 @@ msgstr "Gem Som" msgid "Clear" msgstr "Ryd" +#: addons/web/static/src/xml/base.xml:0 +msgid "Button" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(no string)" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Special:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Button Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Method:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Action ID:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Advanced Filter" msgstr "Avanceret filtrering" -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Filters --" -msgstr "-- Filtreringer --" - -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Actions --" -msgstr "-- Handlinger --" - #: addons/web/static/src/xml/base.xml:0 msgid "Save Filter" msgstr "Gem filter" @@ -446,6 +827,18 @@ msgstr "Filter Navn:" msgid "(Any existing filter with the same name will be replaced)" msgstr "(Et hvert filter med samme navn vil blive overskrevet)" +#: addons/web/static/src/xml/base.xml:0 +msgid "Select Dashboard to add this filter to:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Title of new Dashboard item:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filters" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Any of the following conditions must match" msgstr "Enhver af de følgende betingelser skal være opfyldt" @@ -466,10 +859,6 @@ msgstr "Tilføj betingelse" msgid "and" msgstr "og" -#: addons/web/static/src/xml/base.xml:0 -msgid "Cancel" -msgstr "Annullér" - #: addons/web/static/src/xml/base.xml:0 msgid "Save & New" msgstr "Gem & Ny" @@ -478,10 +867,6 @@ msgstr "Gem & Ny" msgid "Save & Close" msgstr "Gem & Luk" -#: addons/web/static/src/xml/base.xml:0 -msgid "Export" -msgstr "Eksportér" - #: addons/web/static/src/xml/base.xml:0 msgid "" "This wizard will export all data that matches the current search criteria to " @@ -522,10 +907,6 @@ msgstr "Felter der kan eksporteres" msgid "Save fields list" msgstr "Gem listen med felter" -#: addons/web/static/src/xml/base.xml:0 -msgid "Remove" -msgstr "Fjern" - #: addons/web/static/src/xml/base.xml:0 msgid "Remove All" msgstr "Fjern alle" @@ -542,10 +923,6 @@ msgstr " " msgid "Save as:" msgstr "Gem som:" -#: addons/web/static/src/xml/base.xml:0 -msgid "Ok" -msgstr "Ok" - #: addons/web/static/src/xml/base.xml:0 msgid "Saved exports:" msgstr "Gem eksporteringer" @@ -562,10 +939,6 @@ msgstr "Ny adgangskode:" msgid "Confirm Password:" msgstr "Bekræft adgangskode:" -#: addons/web/static/src/xml/base.xml:0 -msgid "Import" -msgstr "Importér" - #: addons/web/static/src/xml/base.xml:0 msgid "1. Import a .CSV file" msgstr "1. Importér en .CSV fil" diff --git a/addons/web/po/de.po b/addons/web/po/de.po index 72778500484..6fdf5ac1ff7 100644 --- a/addons/web/po/de.po +++ b/addons/web/po/de.po @@ -7,66 +7,411 @@ msgid "" msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2011-10-07 10:38+0200\n" -"PO-Revision-Date: 2011-10-10 20:59+0000\n" -"Last-Translator: Felix Schubert \n" +"POT-Creation-Date: 2011-12-20 18:48+0100\n" +"PO-Revision-Date: 2011-12-20 22:49+0000\n" +"Last-Translator: Ferdinand @ Camptocamp \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n" -"X-Generator: Launchpad (build 14299)\n" +"X-Launchpad-Export-Date: 2011-12-21 05:27+0000\n" +"X-Generator: Launchpad (build 14538)\n" -#: addons/web/static/src/js/view_form.js:355 +#: addons/web/static/src/js/chrome.js:162 +#: addons/web/static/src/js/chrome.js:175 +#: addons/web/static/src/js/chrome.js:369 +#: addons/web/static/src/js/view_form.js:358 +#: addons/web/static/src/js/view_form.js:1078 +#: addons/web/static/src/xml/base.xml:0 +msgid "Ok" +msgstr "Ok" + +#: addons/web/static/src/js/chrome.js:668 +msgid "About" +msgstr "Info" + +#: addons/web/static/src/js/chrome.js:748 +msgid "Preferences" +msgstr "Einstellungen" + +#: addons/web/static/src/js/chrome.js:752 +msgid "Change password" +msgstr "Passwort ändern" + +#: addons/web/static/src/js/chrome.js:753 +#: addons/web/static/src/js/search.js:235 +#: addons/web/static/src/js/search.js:276 +#: addons/web/static/src/js/view_editor.js:97 +#: addons/web/static/src/js/view_editor.js:778 +#: addons/web/static/src/js/view_editor.js:907 +#: addons/web/static/src/js/view_form.js:1085 +#: addons/web/static/src/xml/base.xml:0 +msgid "Cancel" +msgstr "Abbrechen" + +#: addons/web/static/src/js/chrome.js:754 +#: addons/web/static/src/js/view_editor.js:75 +#: addons/web/static/src/js/views.js:871 addons/web/static/src/xml/base.xml:0 +msgid "Save" +msgstr "Speichern" + +#: addons/web/static/src/js/chrome.js:774 addons/web/static/src/xml/base.xml:0 +msgid "Change Password" +msgstr "Passwort ändern" + +#: addons/web/static/src/js/data_export.js:6 +msgid "Export Data" +msgstr "Daten exportieren" + +#: addons/web/static/src/js/data_export.js:23 +#: addons/web/static/src/js/data_import.js:73 +#: addons/web/static/src/js/view_editor.js:49 +#: addons/web/static/src/js/view_editor.js:387 +#: addons/web/static/src/js/view_form.js:2775 +#: addons/web/static/src/js/views.js:872 +msgid "Close" +msgstr "Schließen" + +#: addons/web/static/src/js/data_export.js:24 +msgid "Export To File" +msgstr "In Datei exportieren" + +#: addons/web/static/src/js/data_import.js:34 +msgid "Import Data" +msgstr "Daten importieren" + +#: addons/web/static/src/js/data_import.js:74 +msgid "Import File" +msgstr "Datei importieren" + +#: addons/web/static/src/js/data_import.js:109 +msgid "External ID" +msgstr "Externe ID" + +#: addons/web/static/src/js/search.js:233 +msgid "Filter Entry" +msgstr "Eintrag filtern" + +#: addons/web/static/src/js/search.js:238 +#: addons/web/static/src/js/search.js:279 +msgid "OK" +msgstr "OK" + +#: addons/web/static/src/js/search.js:274 addons/web/static/src/xml/base.xml:0 +msgid "Add to Dashboard" +msgstr "Zur Anzeigetafel hinzufügen" + +#: addons/web/static/src/js/search.js:403 +msgid "Invalid Search" +msgstr "Ungültige Suche" + +#: addons/web/static/src/js/search.js:403 +msgid "triggered from search view" +msgstr "von der Suchansicht ausgelöst" + +#: addons/web/static/src/js/search.js:490 +#, python-format +msgid "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s" +msgstr "Ungültiger Wert für Feld %(fieldname)s: [%(value)s] is %(message)s" + +#: addons/web/static/src/js/search.js:822 +msgid "not a valid integer" +msgstr "ungültiger Trigger" + +#: addons/web/static/src/js/search.js:836 +msgid "not a valid number" +msgstr "ungültige Nummer" + +#: addons/web/static/src/js/search.js:898 +msgid "Yes" +msgstr "Ja." + +#: addons/web/static/src/js/search.js:899 +msgid "No" +msgstr "Nein" + +#: addons/web/static/src/js/search.js:1252 +msgid "contains" +msgstr "enthält" + +#: addons/web/static/src/js/search.js:1253 +msgid "doesn't contain" +msgstr "enthält nicht" + +#: addons/web/static/src/js/search.js:1254 +#: addons/web/static/src/js/search.js:1269 +#: addons/web/static/src/js/search.js:1289 +#: addons/web/static/src/js/search.js:1309 +#: addons/web/static/src/js/search.js:1331 +msgid "is equal to" +msgstr "Ist gleich" + +#: addons/web/static/src/js/search.js:1255 +#: addons/web/static/src/js/search.js:1270 +#: addons/web/static/src/js/search.js:1290 +#: addons/web/static/src/js/search.js:1310 +#: addons/web/static/src/js/search.js:1332 +msgid "is not equal to" +msgstr "ist ungleich" + +#: addons/web/static/src/js/search.js:1256 +#: addons/web/static/src/js/search.js:1271 +#: addons/web/static/src/js/search.js:1291 +#: addons/web/static/src/js/search.js:1311 +#: addons/web/static/src/js/search.js:1333 +msgid "greater than" +msgstr "ist größer als" + +#: addons/web/static/src/js/search.js:1257 +#: addons/web/static/src/js/search.js:1272 +#: addons/web/static/src/js/search.js:1292 +#: addons/web/static/src/js/search.js:1312 +#: addons/web/static/src/js/search.js:1334 +msgid "less than" +msgstr "ist kleiner als" + +#: addons/web/static/src/js/search.js:1258 +#: addons/web/static/src/js/search.js:1273 +#: addons/web/static/src/js/search.js:1293 +#: addons/web/static/src/js/search.js:1313 +#: addons/web/static/src/js/search.js:1335 +msgid "greater or equal than" +msgstr "ist größer oder gleich als" + +#: addons/web/static/src/js/search.js:1259 +#: addons/web/static/src/js/search.js:1274 +#: addons/web/static/src/js/search.js:1294 +#: addons/web/static/src/js/search.js:1314 +#: addons/web/static/src/js/search.js:1336 +msgid "less or equal than" +msgstr "ist kleiner oder gleich als" + +#: addons/web/static/src/js/search.js:1325 +#: addons/web/static/src/js/search.js:1350 +msgid "is" +msgstr "ist" + +#: addons/web/static/src/js/search.js:1351 +msgid "is not" +msgstr "ist nicht" + +#: addons/web/static/src/js/search.js:1364 +msgid "is true" +msgstr "ist Wahr" + +#: addons/web/static/src/js/search.js:1365 +msgid "is false" +msgstr "ist falsch" + +#: addons/web/static/src/js/view_editor.js:42 +msgid "ViewEditor" +msgstr "Sicht-Editor" + +#: addons/web/static/src/js/view_editor.js:46 +#: addons/web/static/src/js/view_list.js:17 +#: addons/web/static/src/xml/base.xml:0 +msgid "Create" +msgstr "Erzeugen" + +#: addons/web/static/src/js/view_editor.js:47 +#: addons/web/static/src/xml/base.xml:0 +msgid "Edit" +msgstr "Bearbeiten" + +#: addons/web/static/src/js/view_editor.js:48 +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove" +msgstr "Löschen" + +#: addons/web/static/src/js/view_editor.js:71 +#, python-format +msgid "Create a view (%s)" +msgstr "Erstelle Sicht (%s)" + +#: addons/web/static/src/js/view_editor.js:170 +msgid "Do you really want to remove this view?" +msgstr "Möchten Sie diese Sicht wirklich entfernen" + +#: addons/web/static/src/js/view_editor.js:367 +#, python-format +msgid "View Editor %d - %s" +msgstr "Sicht Editor %d - %s" + +#: addons/web/static/src/js/view_editor.js:371 +msgid "Preview" +msgstr "Voransicht" + +#: addons/web/static/src/js/view_editor.js:442 +msgid "Do you really want to remove this node?" +msgstr "Möchten Sie diesen Knoten wirklich entfernen?" + +#: addons/web/static/src/js/view_editor.js:756 +#: addons/web/static/src/js/view_editor.js:883 +msgid "Properties" +msgstr "Eigenschaften" + +#: addons/web/static/src/js/view_editor.js:760 +#: addons/web/static/src/js/view_editor.js:887 +msgid "Update" +msgstr "Aktualisieren" + +#: addons/web/static/src/js/view_form.js:17 +msgid "Form" +msgstr "Formular" + +#: addons/web/static/src/js/view_form.js:401 msgid "" "Warning, the record has been modified, your changes will be discarded." msgstr "" "Achtung der Datensatz wurde bearbeitet, alle Änderungen werden verworfen!" -#: addons/web/static/src/js/view_form.js:1659 +#: addons/web/static/src/js/view_form.js:612 +msgid "Attachments" +msgstr "Anhänge" + +#: addons/web/static/src/js/view_form.js:650 +#, python-format +msgid "Do you really want to delete the attachment %s?" +msgstr "Wollen Sie den Anhang %s wirklich löschen" + +#: addons/web/static/src/js/view_form.js:1075 +msgid "Confirm" +msgstr "Bestätigen" + +#: addons/web/static/src/js/view_form.js:1838 msgid "   Search More..." msgstr "   Suche mehr..." -#: addons/web/static/src/js/view_form.js:1672 +#: addons/web/static/src/js/view_form.js:1851 #, python-format msgid "   Create \"%s\"" msgstr "   Anlegen \"%s\"" -#: addons/web/static/src/js/view_form.js:1678 +#: addons/web/static/src/js/view_form.js:1857 msgid "   Create and Edit..." msgstr "   Anlegen und Bearbeiten..." -#: addons/web/static/src/js/views.js:568 +#: addons/web/static/src/js/view_form.js:2404 +#: addons/web/static/src/xml/base.xml:0 +msgid "Add" +msgstr "Hinzufügen" + +#: addons/web/static/src/js/view_list.js:8 +msgid "List" +msgstr "Liste" + +#: addons/web/static/src/js/view_list.js:269 +msgid "Unlimited" +msgstr "Unbegrenzt" + +#: addons/web/static/src/js/view_list.js:516 +msgid "Do you really want to remove these records?" +msgstr "Möchten Sie diese Datensätze wirklich löschen" + +#: addons/web/static/src/js/view_list.js:1202 +msgid "Undefined" +msgstr "Undefiniert" + +#: addons/web/static/src/js/view_page.js:8 +msgid "Page" +msgstr "Seite" + +#: addons/web/static/src/js/view_page.js:52 +msgid "Do you really want to delete this record?" +msgstr "Möchten Sie diesen Datensatz wirklich löschen?" + +#: addons/web/static/src/js/view_page.js:227 +msgid "Download" +msgstr "Herunterladen" + +#: addons/web/static/src/js/view_tree.js:11 +msgid "Tree" +msgstr "Baum" + +#: addons/web/static/src/js/views.js:590 +msgid "Search: " +msgstr "Suche: " + +#: addons/web/static/src/js/views.js:710 +msgid "Customize" +msgstr "Anpassen" + +#: addons/web/static/src/js/views.js:713 +msgid "Manage Views" +msgstr "Ansichten verwalten" + +#: addons/web/static/src/js/views.js:715 addons/web/static/src/js/views.js:719 +#: addons/web/static/src/js/views.js:724 +msgid "Manage views of the current object" +msgstr "Ansichten des aktuelllen Objekts verwalten" + +#: addons/web/static/src/js/views.js:717 +msgid "Edit Workflow" +msgstr "Workflow bearbeiten" + +#: addons/web/static/src/js/views.js:722 +msgid "Customize Object" +msgstr "Objekt anpassen" + +#: addons/web/static/src/js/views.js:726 +msgid "Translate" +msgstr "Übersetzen" + +#: addons/web/static/src/js/views.js:728 +msgid "Technical translation" +msgstr "Technische Übersetzung" + +#: addons/web/static/src/js/views.js:733 +msgid "Other Options" +msgstr "Weitere Optionen" + +#: addons/web/static/src/js/views.js:736 addons/web/static/src/xml/base.xml:0 +msgid "Import" +msgstr "Import" + +#: addons/web/static/src/js/views.js:739 addons/web/static/src/xml/base.xml:0 +msgid "Export" +msgstr "Export" + +#: addons/web/static/src/js/views.js:742 +msgid "View Log" +msgstr "Protokoll anzeigen" + +#: addons/web/static/src/js/views.js:751 +msgid "Reports" +msgstr "Berichte" + +#: addons/web/static/src/js/views.js:751 +msgid "Actions" +msgstr "Aktionen" + +#: addons/web/static/src/js/views.js:751 +msgid "Links" +msgstr "Links" + +#: addons/web/static/src/js/views.js:831 msgid "You must choose at least one record." msgstr "Sie müssen mindestens einen Datensatz auswählen" -#: addons/web/static/src/js/views.js:569 +#: addons/web/static/src/js/views.js:832 msgid "Warning" msgstr "Warnung!" -#: addons/web/static/src/js/views.js:609 +#: addons/web/static/src/js/views.js:866 msgid "Translations" msgstr "Übersetzungen" -#: addons/web/static/src/js/views.js:614 addons/web/static/src/xml/base.xml:0 -msgid "Save" -msgstr "Speichern" - -#: addons/web/static/src/js/views.js:615 -msgid "Close" -msgstr "Schließen" - #: addons/web/static/src/xml/base.xml:0 msgid "x" msgstr "x" #: addons/web/static/src/xml/base.xml:0 msgid "#{title}" -msgstr "" +msgstr "#{title}" #: addons/web/static/src/xml/base.xml:0 msgid "#{text}" -msgstr "" +msgstr "#{text}" #: addons/web/static/src/xml/base.xml:0 msgid "Powered by" @@ -84,10 +429,6 @@ msgstr "." msgid "Loading..." msgstr "Lade..." -#: addons/web/static/src/xml/base.xml:0 -msgid "Create" -msgstr "Erzeugen" - #: addons/web/static/src/xml/base.xml:0 msgid "Drop" msgstr "Löschen" @@ -276,20 +617,32 @@ msgid "Disable all tips" msgstr "Deaktiviere alle Tipps" #: addons/web/static/src/xml/base.xml:0 -msgid "View#" -msgstr "Ansicht#" +msgid "More…" +msgstr "Mehr ..." #: addons/web/static/src/xml/base.xml:0 -msgid "Fields" -msgstr "Felder" +msgid "Debug View#" +msgstr "Source von Sicht#" #: addons/web/static/src/xml/base.xml:0 -msgid "View labels" -msgstr "Feldbeschreibung anzeigen" +msgid "- Fields View Get" +msgstr "- Fields View Get" #: addons/web/static/src/xml/base.xml:0 -msgid "Sidebar Relates" -msgstr "Seitenleiste bezieht sich auf" +msgid "- Edit" +msgstr "- Edit" + +#: addons/web/static/src/xml/base.xml:0 +msgid "View" +msgstr "Sicht" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit SearchView" +msgstr "- Edit SearchView" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit Action" +msgstr "- Edit Action" #: addons/web/static/src/xml/base.xml:0 msgid "Field" @@ -299,62 +652,10 @@ msgstr "Feld" msgid ":" msgstr ":" -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate view" -msgstr "Übersetungsansicht" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate sidebar" -msgstr "Seitenleiste übersetzen" - #: addons/web/static/src/xml/base.xml:0 msgid "Delete" msgstr "Löschen" -#: addons/web/static/src/xml/base.xml:0 -msgid "First" -msgstr "Erste" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<" -msgstr "<" - -#: addons/web/static/src/xml/base.xml:0 -msgid ">" -msgstr ">" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Last" -msgstr "Ende" - -#: addons/web/static/src/xml/base.xml:0 -msgid "♻" -msgstr "♻" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Save & Edit" -msgstr "Sichern & Bearbeiten" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Create & Edit" -msgstr "Anlegen & Bearbeiten" - -#: addons/web/static/src/xml/base.xml:0 -msgid "New" -msgstr "Neu" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Duplicate" -msgstr "Kopieren" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Readonly/Editable" -msgstr "Lesezugriff/Bearbeitbar" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<<" -msgstr "<<" - #: addons/web/static/src/xml/base.xml:0 msgid "0" msgstr "0" @@ -364,28 +665,88 @@ msgid "/" msgstr "/" #: addons/web/static/src/xml/base.xml:0 -msgid ">>" -msgstr ">>" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Add" -msgstr "Hinzufügen" +msgid "Duplicate" +msgstr "Kopieren" #: addons/web/static/src/xml/base.xml:0 msgid "Unhandled widget" -msgstr "" +msgstr "unbekanntes Oberflächenelement" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Notebook Page \"" +msgstr "Notizbuch Seite \"" + +#: addons/web/static/src/xml/base.xml:0 +msgid "\"" +msgstr "\"" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Modifiers:" +msgstr "Modifikatoren:" #: addons/web/static/src/xml/base.xml:0 msgid "?" msgstr "?" #: addons/web/static/src/xml/base.xml:0 -msgid "#" -msgstr "Nr." +msgid "(nolabel)" +msgstr "(keine Bezeichnung)" #: addons/web/static/src/xml/base.xml:0 -msgid "Done" -msgstr "Abgeschlossen" +msgid "Field:" +msgstr "Feld:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Object:" +msgstr "Objekt:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Type:" +msgstr "Typ:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Widget:" +msgstr "Bedienelement:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Size:" +msgstr "Größe:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Context:" +msgstr "Kontext:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Domain:" +msgstr "Domäne:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "On change:" +msgstr "Bei Änderung" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Relation:" +msgstr "Relation:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Selection:" +msgstr "Auswahl:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "[" +msgstr "[" + +#: addons/web/static/src/xml/base.xml:0 +msgid "]" +msgstr "]" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-" +msgstr "-" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#" +msgstr "Nr." #: addons/web/static/src/xml/base.xml:0 msgid "Open..." @@ -419,18 +780,38 @@ msgstr "Speichern unter" msgid "Clear" msgstr "Leeren" +#: addons/web/static/src/xml/base.xml:0 +msgid "Button" +msgstr "Schaltfläche" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(no string)" +msgstr "(keine Zeichen)" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Special:" +msgstr "Spezial:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Button Type:" +msgstr "Schaltfläche Typ:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Method:" +msgstr "Methode:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Action ID:" +msgstr "Aktion ID:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search" +msgstr "Suche" + #: addons/web/static/src/xml/base.xml:0 msgid "Advanced Filter" msgstr "Erweiterter Filter" -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Filters --" -msgstr "-- Filter --" - -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Actions --" -msgstr "-- Aktionen --" - #: addons/web/static/src/xml/base.xml:0 msgid "Save Filter" msgstr "Filter speichern" @@ -447,6 +828,18 @@ msgstr "Filter Name:" msgid "(Any existing filter with the same name will be replaced)" msgstr "(Jeder existierende Filter mit dem selben Namen wird ersetzt)" +#: addons/web/static/src/xml/base.xml:0 +msgid "Select Dashboard to add this filter to:" +msgstr "Anzeigetafel wählen, zu der der Filter hinzugefügt werden soll" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Title of new Dashboard item:" +msgstr "Titel des neuen Elements einer Anzeigetafel" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filters" +msgstr "Erweiterte Filter" + #: addons/web/static/src/xml/base.xml:0 msgid "Any of the following conditions must match" msgstr "Eine der folgenden Bedingungen muss zutreffen" @@ -467,10 +860,6 @@ msgstr "Bedingung hinzufügen" msgid "and" msgstr "und" -#: addons/web/static/src/xml/base.xml:0 -msgid "Cancel" -msgstr "Abbrechen" - #: addons/web/static/src/xml/base.xml:0 msgid "Save & New" msgstr "Speichern & Neu" @@ -479,10 +868,6 @@ msgstr "Speichern & Neu" msgid "Save & Close" msgstr "Speichern & Beenden" -#: addons/web/static/src/xml/base.xml:0 -msgid "Export" -msgstr "Export" - #: addons/web/static/src/xml/base.xml:0 msgid "" "This wizard will export all data that matches the current search criteria to " @@ -523,10 +908,6 @@ msgstr "Zu exportierende Felder" msgid "Save fields list" msgstr "Feldliste speichern" -#: addons/web/static/src/xml/base.xml:0 -msgid "Remove" -msgstr "Löschen" - #: addons/web/static/src/xml/base.xml:0 msgid "Remove All" msgstr "Alle löschen" @@ -543,10 +924,6 @@ msgstr " " msgid "Save as:" msgstr "Speichern unter:" -#: addons/web/static/src/xml/base.xml:0 -msgid "Ok" -msgstr "Ok" - #: addons/web/static/src/xml/base.xml:0 msgid "Saved exports:" msgstr "Gespeicherte Exporte:" @@ -563,10 +940,6 @@ msgstr "Neues Passwort:" msgid "Confirm Password:" msgstr "Passwort bestätigen:" -#: addons/web/static/src/xml/base.xml:0 -msgid "Import" -msgstr "Import" - #: addons/web/static/src/xml/base.xml:0 msgid "1. Import a .CSV file" msgstr "1. Importiere eine .CSV Datei" diff --git a/addons/web/po/es.po b/addons/web/po/es.po index e53b5e2631b..399fd58b1a1 100644 --- a/addons/web/po/es.po +++ b/addons/web/po/es.po @@ -7,55 +7,400 @@ msgid "" msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2011-10-07 10:38+0200\n" +"POT-Creation-Date: 2011-12-20 18:48+0100\n" "PO-Revision-Date: 2011-10-19 07:27+0000\n" "Last-Translator: Amós Oviedo \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n" -"X-Generator: Launchpad (build 14299)\n" +"X-Launchpad-Export-Date: 2011-12-21 05:27+0000\n" +"X-Generator: Launchpad (build 14538)\n" -#: addons/web/static/src/js/view_form.js:355 +#: addons/web/static/src/js/chrome.js:162 +#: addons/web/static/src/js/chrome.js:175 +#: addons/web/static/src/js/chrome.js:369 +#: addons/web/static/src/js/view_form.js:358 +#: addons/web/static/src/js/view_form.js:1078 +#: addons/web/static/src/xml/base.xml:0 +msgid "Ok" +msgstr "Ok" + +#: addons/web/static/src/js/chrome.js:668 +msgid "About" +msgstr "" + +#: addons/web/static/src/js/chrome.js:748 +msgid "Preferences" +msgstr "" + +#: addons/web/static/src/js/chrome.js:752 +msgid "Change password" +msgstr "" + +#: addons/web/static/src/js/chrome.js:753 +#: addons/web/static/src/js/search.js:235 +#: addons/web/static/src/js/search.js:276 +#: addons/web/static/src/js/view_editor.js:97 +#: addons/web/static/src/js/view_editor.js:778 +#: addons/web/static/src/js/view_editor.js:907 +#: addons/web/static/src/js/view_form.js:1085 +#: addons/web/static/src/xml/base.xml:0 +msgid "Cancel" +msgstr "Cancelar" + +#: addons/web/static/src/js/chrome.js:754 +#: addons/web/static/src/js/view_editor.js:75 +#: addons/web/static/src/js/views.js:871 addons/web/static/src/xml/base.xml:0 +msgid "Save" +msgstr "Guardar" + +#: addons/web/static/src/js/chrome.js:774 addons/web/static/src/xml/base.xml:0 +msgid "Change Password" +msgstr "" + +#: addons/web/static/src/js/data_export.js:6 +msgid "Export Data" +msgstr "" + +#: addons/web/static/src/js/data_export.js:23 +#: addons/web/static/src/js/data_import.js:73 +#: addons/web/static/src/js/view_editor.js:49 +#: addons/web/static/src/js/view_editor.js:387 +#: addons/web/static/src/js/view_form.js:2775 +#: addons/web/static/src/js/views.js:872 +msgid "Close" +msgstr "Cerrar" + +#: addons/web/static/src/js/data_export.js:24 +msgid "Export To File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:34 +msgid "Import Data" +msgstr "" + +#: addons/web/static/src/js/data_import.js:74 +msgid "Import File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:109 +msgid "External ID" +msgstr "" + +#: addons/web/static/src/js/search.js:233 +msgid "Filter Entry" +msgstr "" + +#: addons/web/static/src/js/search.js:238 +#: addons/web/static/src/js/search.js:279 +msgid "OK" +msgstr "" + +#: addons/web/static/src/js/search.js:274 addons/web/static/src/xml/base.xml:0 +msgid "Add to Dashboard" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "Invalid Search" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "triggered from search view" +msgstr "" + +#: addons/web/static/src/js/search.js:490 +#, python-format +msgid "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s" +msgstr "" + +#: addons/web/static/src/js/search.js:822 +msgid "not a valid integer" +msgstr "" + +#: addons/web/static/src/js/search.js:836 +msgid "not a valid number" +msgstr "" + +#: addons/web/static/src/js/search.js:898 +msgid "Yes" +msgstr "" + +#: addons/web/static/src/js/search.js:899 +msgid "No" +msgstr "" + +#: addons/web/static/src/js/search.js:1252 +msgid "contains" +msgstr "" + +#: addons/web/static/src/js/search.js:1253 +msgid "doesn't contain" +msgstr "" + +#: addons/web/static/src/js/search.js:1254 +#: addons/web/static/src/js/search.js:1269 +#: addons/web/static/src/js/search.js:1289 +#: addons/web/static/src/js/search.js:1309 +#: addons/web/static/src/js/search.js:1331 +msgid "is equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1255 +#: addons/web/static/src/js/search.js:1270 +#: addons/web/static/src/js/search.js:1290 +#: addons/web/static/src/js/search.js:1310 +#: addons/web/static/src/js/search.js:1332 +msgid "is not equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1256 +#: addons/web/static/src/js/search.js:1271 +#: addons/web/static/src/js/search.js:1291 +#: addons/web/static/src/js/search.js:1311 +#: addons/web/static/src/js/search.js:1333 +msgid "greater than" +msgstr "" + +#: addons/web/static/src/js/search.js:1257 +#: addons/web/static/src/js/search.js:1272 +#: addons/web/static/src/js/search.js:1292 +#: addons/web/static/src/js/search.js:1312 +#: addons/web/static/src/js/search.js:1334 +msgid "less than" +msgstr "" + +#: addons/web/static/src/js/search.js:1258 +#: addons/web/static/src/js/search.js:1273 +#: addons/web/static/src/js/search.js:1293 +#: addons/web/static/src/js/search.js:1313 +#: addons/web/static/src/js/search.js:1335 +msgid "greater or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1259 +#: addons/web/static/src/js/search.js:1274 +#: addons/web/static/src/js/search.js:1294 +#: addons/web/static/src/js/search.js:1314 +#: addons/web/static/src/js/search.js:1336 +msgid "less or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1325 +#: addons/web/static/src/js/search.js:1350 +msgid "is" +msgstr "" + +#: addons/web/static/src/js/search.js:1351 +msgid "is not" +msgstr "" + +#: addons/web/static/src/js/search.js:1364 +msgid "is true" +msgstr "" + +#: addons/web/static/src/js/search.js:1365 +msgid "is false" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:42 +msgid "ViewEditor" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:46 +#: addons/web/static/src/js/view_list.js:17 +#: addons/web/static/src/xml/base.xml:0 +msgid "Create" +msgstr "Crear" + +#: addons/web/static/src/js/view_editor.js:47 +#: addons/web/static/src/xml/base.xml:0 +msgid "Edit" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:48 +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove" +msgstr "Eliminar" + +#: addons/web/static/src/js/view_editor.js:71 +#, python-format +msgid "Create a view (%s)" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:170 +msgid "Do you really want to remove this view?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:367 +#, python-format +msgid "View Editor %d - %s" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:371 +msgid "Preview" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:442 +msgid "Do you really want to remove this node?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:756 +#: addons/web/static/src/js/view_editor.js:883 +msgid "Properties" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:760 +#: addons/web/static/src/js/view_editor.js:887 +msgid "Update" +msgstr "" + +#: addons/web/static/src/js/view_form.js:17 +msgid "Form" +msgstr "" + +#: addons/web/static/src/js/view_form.js:401 msgid "" "Warning, the record has been modified, your changes will be discarded." msgstr "" "Advertencia, el registro se ha modificado, los cambios serán descartados." -#: addons/web/static/src/js/view_form.js:1659 +#: addons/web/static/src/js/view_form.js:612 +msgid "Attachments" +msgstr "" + +#: addons/web/static/src/js/view_form.js:650 +#, python-format +msgid "Do you really want to delete the attachment %s?" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1075 +msgid "Confirm" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1838 msgid "   Search More..." msgstr "   Buscar más..." -#: addons/web/static/src/js/view_form.js:1672 +#: addons/web/static/src/js/view_form.js:1851 #, python-format msgid "   Create \"%s\"" msgstr "   Crear \"%s\"" -#: addons/web/static/src/js/view_form.js:1678 +#: addons/web/static/src/js/view_form.js:1857 msgid "   Create and Edit..." msgstr "   Crear y Editar..." -#: addons/web/static/src/js/views.js:568 +#: addons/web/static/src/js/view_form.js:2404 +#: addons/web/static/src/xml/base.xml:0 +msgid "Add" +msgstr "Añadir" + +#: addons/web/static/src/js/view_list.js:8 +msgid "List" +msgstr "" + +#: addons/web/static/src/js/view_list.js:269 +msgid "Unlimited" +msgstr "" + +#: addons/web/static/src/js/view_list.js:516 +msgid "Do you really want to remove these records?" +msgstr "" + +#: addons/web/static/src/js/view_list.js:1202 +msgid "Undefined" +msgstr "" + +#: addons/web/static/src/js/view_page.js:8 +msgid "Page" +msgstr "" + +#: addons/web/static/src/js/view_page.js:52 +msgid "Do you really want to delete this record?" +msgstr "" + +#: addons/web/static/src/js/view_page.js:227 +msgid "Download" +msgstr "" + +#: addons/web/static/src/js/view_tree.js:11 +msgid "Tree" +msgstr "" + +#: addons/web/static/src/js/views.js:590 +msgid "Search: " +msgstr "" + +#: addons/web/static/src/js/views.js:710 +msgid "Customize" +msgstr "" + +#: addons/web/static/src/js/views.js:713 +msgid "Manage Views" +msgstr "" + +#: addons/web/static/src/js/views.js:715 addons/web/static/src/js/views.js:719 +#: addons/web/static/src/js/views.js:724 +msgid "Manage views of the current object" +msgstr "" + +#: addons/web/static/src/js/views.js:717 +msgid "Edit Workflow" +msgstr "" + +#: addons/web/static/src/js/views.js:722 +msgid "Customize Object" +msgstr "" + +#: addons/web/static/src/js/views.js:726 +msgid "Translate" +msgstr "" + +#: addons/web/static/src/js/views.js:728 +msgid "Technical translation" +msgstr "" + +#: addons/web/static/src/js/views.js:733 +msgid "Other Options" +msgstr "" + +#: addons/web/static/src/js/views.js:736 addons/web/static/src/xml/base.xml:0 +msgid "Import" +msgstr "Importar" + +#: addons/web/static/src/js/views.js:739 addons/web/static/src/xml/base.xml:0 +msgid "Export" +msgstr "Exportar" + +#: addons/web/static/src/js/views.js:742 +msgid "View Log" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Reports" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Actions" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Links" +msgstr "" + +#: addons/web/static/src/js/views.js:831 msgid "You must choose at least one record." msgstr "Debe seleccionar al menos un registro." -#: addons/web/static/src/js/views.js:569 +#: addons/web/static/src/js/views.js:832 msgid "Warning" msgstr "Advertencia" -#: addons/web/static/src/js/views.js:609 +#: addons/web/static/src/js/views.js:866 msgid "Translations" msgstr "Traducciones" -#: addons/web/static/src/js/views.js:614 addons/web/static/src/xml/base.xml:0 -msgid "Save" -msgstr "Guardar" - -#: addons/web/static/src/js/views.js:615 -msgid "Close" -msgstr "Cerrar" - #: addons/web/static/src/xml/base.xml:0 msgid "x" msgstr "x" @@ -84,10 +429,6 @@ msgstr "." msgid "Loading..." msgstr "Cargando…" -#: addons/web/static/src/xml/base.xml:0 -msgid "Create" -msgstr "Crear" - #: addons/web/static/src/xml/base.xml:0 msgid "Drop" msgstr "Eliminar" @@ -276,20 +617,32 @@ msgid "Disable all tips" msgstr "Desactivar todas las sugerencias" #: addons/web/static/src/xml/base.xml:0 -msgid "View#" -msgstr "Vista#" +msgid "More…" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Fields" -msgstr "Campos" +msgid "Debug View#" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "View labels" -msgstr "Ver etiquetas" +msgid "- Fields View Get" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Sidebar Relates" -msgstr "Se relaciona con la barra lateral" +msgid "- Edit" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "View" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit SearchView" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit Action" +msgstr "" #: addons/web/static/src/xml/base.xml:0 msgid "Field" @@ -299,62 +652,10 @@ msgstr "Campo" msgid ":" msgstr ":" -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate view" -msgstr "Traducir vista" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate sidebar" -msgstr "Traducir barra lateral" - #: addons/web/static/src/xml/base.xml:0 msgid "Delete" msgstr "Borrar" -#: addons/web/static/src/xml/base.xml:0 -msgid "First" -msgstr "Primero" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<" -msgstr "<" - -#: addons/web/static/src/xml/base.xml:0 -msgid ">" -msgstr ">" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Last" -msgstr "Último" - -#: addons/web/static/src/xml/base.xml:0 -msgid "♻" -msgstr "♻" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Save & Edit" -msgstr "Guardar y Editar" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Create & Edit" -msgstr "Crear y Editar" - -#: addons/web/static/src/xml/base.xml:0 -msgid "New" -msgstr "Nuevo" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Duplicate" -msgstr "Duplicar" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Readonly/Editable" -msgstr "Sólo Lectura/Editable" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<<" -msgstr "<<" - #: addons/web/static/src/xml/base.xml:0 msgid "0" msgstr "0" @@ -364,28 +665,88 @@ msgid "/" msgstr "/" #: addons/web/static/src/xml/base.xml:0 -msgid ">>" -msgstr ">>" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Add" -msgstr "Añadir" +msgid "Duplicate" +msgstr "Duplicar" #: addons/web/static/src/xml/base.xml:0 msgid "Unhandled widget" msgstr "Widget no controlado" +#: addons/web/static/src/xml/base.xml:0 +msgid "Notebook Page \"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "\"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Modifiers:" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "?" msgstr "?" #: addons/web/static/src/xml/base.xml:0 -msgid "#" -msgstr "#" +msgid "(nolabel)" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Done" -msgstr "Hecho" +msgid "Field:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Object:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Widget:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Size:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Context:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Domain:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "On change:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Relation:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Selection:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "[" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "]" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#" +msgstr "#" #: addons/web/static/src/xml/base.xml:0 msgid "Open..." @@ -419,18 +780,38 @@ msgstr "Guardar como" msgid "Clear" msgstr "Limpiar" +#: addons/web/static/src/xml/base.xml:0 +msgid "Button" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(no string)" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Special:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Button Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Method:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Action ID:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Advanced Filter" msgstr "Filtro Avanzado" -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Filters --" -msgstr "-- Filtros --" - -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Actions --" -msgstr "-- Acciones --" - #: addons/web/static/src/xml/base.xml:0 msgid "Save Filter" msgstr "Guardar Filtro" @@ -447,6 +828,18 @@ msgstr "Nombre del Filtro" msgid "(Any existing filter with the same name will be replaced)" msgstr "(Cualquier filtro existente con el mismo nombre será reemplazado)" +#: addons/web/static/src/xml/base.xml:0 +msgid "Select Dashboard to add this filter to:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Title of new Dashboard item:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filters" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Any of the following conditions must match" msgstr "Cualquiera de las condiciones siguientes deben coincidir" @@ -467,10 +860,6 @@ msgstr "Añadir condición" msgid "and" msgstr "y" -#: addons/web/static/src/xml/base.xml:0 -msgid "Cancel" -msgstr "Cancelar" - #: addons/web/static/src/xml/base.xml:0 msgid "Save & New" msgstr "Guardar y Nuevo" @@ -479,10 +868,6 @@ msgstr "Guardar y Nuevo" msgid "Save & Close" msgstr "Guardar y Cerrar" -#: addons/web/static/src/xml/base.xml:0 -msgid "Export" -msgstr "Exportar" - #: addons/web/static/src/xml/base.xml:0 msgid "" "This wizard will export all data that matches the current search criteria to " @@ -523,10 +908,6 @@ msgstr "Campos a exportar" msgid "Save fields list" msgstr "Guardar lista de campos" -#: addons/web/static/src/xml/base.xml:0 -msgid "Remove" -msgstr "Eliminar" - #: addons/web/static/src/xml/base.xml:0 msgid "Remove All" msgstr "Eliminar Todo" @@ -543,10 +924,6 @@ msgstr " " msgid "Save as:" msgstr "Guardar como:" -#: addons/web/static/src/xml/base.xml:0 -msgid "Ok" -msgstr "Ok" - #: addons/web/static/src/xml/base.xml:0 msgid "Saved exports:" msgstr "Exportaciones guardadas:" @@ -563,10 +940,6 @@ msgstr "Contraseña nueva:" msgid "Confirm Password:" msgstr "Confirmar la contraseña:" -#: addons/web/static/src/xml/base.xml:0 -msgid "Import" -msgstr "Importar" - #: addons/web/static/src/xml/base.xml:0 msgid "1. Import a .CSV file" msgstr "1. Importar un archivo .CSV" diff --git a/addons/web/po/es_EC.po b/addons/web/po/es_EC.po index fc98c8bb536..9b6e19eac11 100644 --- a/addons/web/po/es_EC.po +++ b/addons/web/po/es_EC.po @@ -7,55 +7,400 @@ msgid "" msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2011-10-07 10:38+0200\n" +"POT-Creation-Date: 2011-12-20 18:48+0100\n" "PO-Revision-Date: 2011-10-07 18:16+0000\n" "Last-Translator: Cristian Salamea (Gnuthink) \n" "Language-Team: Spanish (Ecuador) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n" -"X-Generator: Launchpad (build 14299)\n" +"X-Launchpad-Export-Date: 2011-12-21 05:28+0000\n" +"X-Generator: Launchpad (build 14538)\n" -#: addons/web/static/src/js/view_form.js:355 +#: addons/web/static/src/js/chrome.js:162 +#: addons/web/static/src/js/chrome.js:175 +#: addons/web/static/src/js/chrome.js:369 +#: addons/web/static/src/js/view_form.js:358 +#: addons/web/static/src/js/view_form.js:1078 +#: addons/web/static/src/xml/base.xml:0 +msgid "Ok" +msgstr "Ok" + +#: addons/web/static/src/js/chrome.js:668 +msgid "About" +msgstr "" + +#: addons/web/static/src/js/chrome.js:748 +msgid "Preferences" +msgstr "" + +#: addons/web/static/src/js/chrome.js:752 +msgid "Change password" +msgstr "" + +#: addons/web/static/src/js/chrome.js:753 +#: addons/web/static/src/js/search.js:235 +#: addons/web/static/src/js/search.js:276 +#: addons/web/static/src/js/view_editor.js:97 +#: addons/web/static/src/js/view_editor.js:778 +#: addons/web/static/src/js/view_editor.js:907 +#: addons/web/static/src/js/view_form.js:1085 +#: addons/web/static/src/xml/base.xml:0 +msgid "Cancel" +msgstr "Cancelar" + +#: addons/web/static/src/js/chrome.js:754 +#: addons/web/static/src/js/view_editor.js:75 +#: addons/web/static/src/js/views.js:871 addons/web/static/src/xml/base.xml:0 +msgid "Save" +msgstr "Guardar" + +#: addons/web/static/src/js/chrome.js:774 addons/web/static/src/xml/base.xml:0 +msgid "Change Password" +msgstr "" + +#: addons/web/static/src/js/data_export.js:6 +msgid "Export Data" +msgstr "" + +#: addons/web/static/src/js/data_export.js:23 +#: addons/web/static/src/js/data_import.js:73 +#: addons/web/static/src/js/view_editor.js:49 +#: addons/web/static/src/js/view_editor.js:387 +#: addons/web/static/src/js/view_form.js:2775 +#: addons/web/static/src/js/views.js:872 +msgid "Close" +msgstr "Cerrar" + +#: addons/web/static/src/js/data_export.js:24 +msgid "Export To File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:34 +msgid "Import Data" +msgstr "" + +#: addons/web/static/src/js/data_import.js:74 +msgid "Import File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:109 +msgid "External ID" +msgstr "" + +#: addons/web/static/src/js/search.js:233 +msgid "Filter Entry" +msgstr "" + +#: addons/web/static/src/js/search.js:238 +#: addons/web/static/src/js/search.js:279 +msgid "OK" +msgstr "" + +#: addons/web/static/src/js/search.js:274 addons/web/static/src/xml/base.xml:0 +msgid "Add to Dashboard" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "Invalid Search" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "triggered from search view" +msgstr "" + +#: addons/web/static/src/js/search.js:490 +#, python-format +msgid "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s" +msgstr "" + +#: addons/web/static/src/js/search.js:822 +msgid "not a valid integer" +msgstr "" + +#: addons/web/static/src/js/search.js:836 +msgid "not a valid number" +msgstr "" + +#: addons/web/static/src/js/search.js:898 +msgid "Yes" +msgstr "" + +#: addons/web/static/src/js/search.js:899 +msgid "No" +msgstr "" + +#: addons/web/static/src/js/search.js:1252 +msgid "contains" +msgstr "" + +#: addons/web/static/src/js/search.js:1253 +msgid "doesn't contain" +msgstr "" + +#: addons/web/static/src/js/search.js:1254 +#: addons/web/static/src/js/search.js:1269 +#: addons/web/static/src/js/search.js:1289 +#: addons/web/static/src/js/search.js:1309 +#: addons/web/static/src/js/search.js:1331 +msgid "is equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1255 +#: addons/web/static/src/js/search.js:1270 +#: addons/web/static/src/js/search.js:1290 +#: addons/web/static/src/js/search.js:1310 +#: addons/web/static/src/js/search.js:1332 +msgid "is not equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1256 +#: addons/web/static/src/js/search.js:1271 +#: addons/web/static/src/js/search.js:1291 +#: addons/web/static/src/js/search.js:1311 +#: addons/web/static/src/js/search.js:1333 +msgid "greater than" +msgstr "" + +#: addons/web/static/src/js/search.js:1257 +#: addons/web/static/src/js/search.js:1272 +#: addons/web/static/src/js/search.js:1292 +#: addons/web/static/src/js/search.js:1312 +#: addons/web/static/src/js/search.js:1334 +msgid "less than" +msgstr "" + +#: addons/web/static/src/js/search.js:1258 +#: addons/web/static/src/js/search.js:1273 +#: addons/web/static/src/js/search.js:1293 +#: addons/web/static/src/js/search.js:1313 +#: addons/web/static/src/js/search.js:1335 +msgid "greater or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1259 +#: addons/web/static/src/js/search.js:1274 +#: addons/web/static/src/js/search.js:1294 +#: addons/web/static/src/js/search.js:1314 +#: addons/web/static/src/js/search.js:1336 +msgid "less or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1325 +#: addons/web/static/src/js/search.js:1350 +msgid "is" +msgstr "" + +#: addons/web/static/src/js/search.js:1351 +msgid "is not" +msgstr "" + +#: addons/web/static/src/js/search.js:1364 +msgid "is true" +msgstr "" + +#: addons/web/static/src/js/search.js:1365 +msgid "is false" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:42 +msgid "ViewEditor" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:46 +#: addons/web/static/src/js/view_list.js:17 +#: addons/web/static/src/xml/base.xml:0 +msgid "Create" +msgstr "Crear" + +#: addons/web/static/src/js/view_editor.js:47 +#: addons/web/static/src/xml/base.xml:0 +msgid "Edit" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:48 +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove" +msgstr "Eliminar" + +#: addons/web/static/src/js/view_editor.js:71 +#, python-format +msgid "Create a view (%s)" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:170 +msgid "Do you really want to remove this view?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:367 +#, python-format +msgid "View Editor %d - %s" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:371 +msgid "Preview" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:442 +msgid "Do you really want to remove this node?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:756 +#: addons/web/static/src/js/view_editor.js:883 +msgid "Properties" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:760 +#: addons/web/static/src/js/view_editor.js:887 +msgid "Update" +msgstr "" + +#: addons/web/static/src/js/view_form.js:17 +msgid "Form" +msgstr "" + +#: addons/web/static/src/js/view_form.js:401 msgid "" "Warning, the record has been modified, your changes will be discarded." msgstr "" "Aviso, el registro ha sido modificado, sus cambios serán descartados." -#: addons/web/static/src/js/view_form.js:1659 +#: addons/web/static/src/js/view_form.js:612 +msgid "Attachments" +msgstr "" + +#: addons/web/static/src/js/view_form.js:650 +#, python-format +msgid "Do you really want to delete the attachment %s?" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1075 +msgid "Confirm" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1838 msgid "   Search More..." msgstr "   Buscar Más..." -#: addons/web/static/src/js/view_form.js:1672 +#: addons/web/static/src/js/view_form.js:1851 #, python-format msgid "   Create \"%s\"" msgstr "   Crear \"%s\"" -#: addons/web/static/src/js/view_form.js:1678 +#: addons/web/static/src/js/view_form.js:1857 msgid "   Create and Edit..." msgstr "   Crear y Editar..." -#: addons/web/static/src/js/views.js:568 +#: addons/web/static/src/js/view_form.js:2404 +#: addons/web/static/src/xml/base.xml:0 +msgid "Add" +msgstr "Agregar" + +#: addons/web/static/src/js/view_list.js:8 +msgid "List" +msgstr "" + +#: addons/web/static/src/js/view_list.js:269 +msgid "Unlimited" +msgstr "" + +#: addons/web/static/src/js/view_list.js:516 +msgid "Do you really want to remove these records?" +msgstr "" + +#: addons/web/static/src/js/view_list.js:1202 +msgid "Undefined" +msgstr "" + +#: addons/web/static/src/js/view_page.js:8 +msgid "Page" +msgstr "" + +#: addons/web/static/src/js/view_page.js:52 +msgid "Do you really want to delete this record?" +msgstr "" + +#: addons/web/static/src/js/view_page.js:227 +msgid "Download" +msgstr "" + +#: addons/web/static/src/js/view_tree.js:11 +msgid "Tree" +msgstr "" + +#: addons/web/static/src/js/views.js:590 +msgid "Search: " +msgstr "" + +#: addons/web/static/src/js/views.js:710 +msgid "Customize" +msgstr "" + +#: addons/web/static/src/js/views.js:713 +msgid "Manage Views" +msgstr "" + +#: addons/web/static/src/js/views.js:715 addons/web/static/src/js/views.js:719 +#: addons/web/static/src/js/views.js:724 +msgid "Manage views of the current object" +msgstr "" + +#: addons/web/static/src/js/views.js:717 +msgid "Edit Workflow" +msgstr "" + +#: addons/web/static/src/js/views.js:722 +msgid "Customize Object" +msgstr "" + +#: addons/web/static/src/js/views.js:726 +msgid "Translate" +msgstr "" + +#: addons/web/static/src/js/views.js:728 +msgid "Technical translation" +msgstr "" + +#: addons/web/static/src/js/views.js:733 +msgid "Other Options" +msgstr "" + +#: addons/web/static/src/js/views.js:736 addons/web/static/src/xml/base.xml:0 +msgid "Import" +msgstr "Importar" + +#: addons/web/static/src/js/views.js:739 addons/web/static/src/xml/base.xml:0 +msgid "Export" +msgstr "Exportar" + +#: addons/web/static/src/js/views.js:742 +msgid "View Log" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Reports" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Actions" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Links" +msgstr "" + +#: addons/web/static/src/js/views.js:831 msgid "You must choose at least one record." msgstr "Debe seleccionar al menos un registro." -#: addons/web/static/src/js/views.js:569 +#: addons/web/static/src/js/views.js:832 msgid "Warning" msgstr "Advertencia" -#: addons/web/static/src/js/views.js:609 +#: addons/web/static/src/js/views.js:866 msgid "Translations" msgstr "Traducciones" -#: addons/web/static/src/js/views.js:614 addons/web/static/src/xml/base.xml:0 -msgid "Save" -msgstr "Guardar" - -#: addons/web/static/src/js/views.js:615 -msgid "Close" -msgstr "Cerrar" - #: addons/web/static/src/xml/base.xml:0 msgid "x" msgstr "x" @@ -84,10 +429,6 @@ msgstr "." msgid "Loading..." msgstr "Cargando..." -#: addons/web/static/src/xml/base.xml:0 -msgid "Create" -msgstr "Crear" - #: addons/web/static/src/xml/base.xml:0 msgid "Drop" msgstr "Borrar" @@ -276,20 +617,32 @@ msgid "Disable all tips" msgstr "Desactivar todas las sugerencias" #: addons/web/static/src/xml/base.xml:0 -msgid "View#" -msgstr "View#" +msgid "More…" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Fields" -msgstr "Campos" +msgid "Debug View#" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "View labels" -msgstr "Ver etiquetas" +msgid "- Fields View Get" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Sidebar Relates" -msgstr "Columna lateral relacionada" +msgid "- Edit" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "View" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit SearchView" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit Action" +msgstr "" #: addons/web/static/src/xml/base.xml:0 msgid "Field" @@ -299,62 +652,10 @@ msgstr "Campo" msgid ":" msgstr ":" -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate view" -msgstr "Traducir vista" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate sidebar" -msgstr "Traducir Barra lateral" - #: addons/web/static/src/xml/base.xml:0 msgid "Delete" msgstr "Eliminar" -#: addons/web/static/src/xml/base.xml:0 -msgid "First" -msgstr "Primero" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<" -msgstr "<" - -#: addons/web/static/src/xml/base.xml:0 -msgid ">" -msgstr ">" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Last" -msgstr "Último" - -#: addons/web/static/src/xml/base.xml:0 -msgid "♻" -msgstr "♻" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Save & Edit" -msgstr "Grabar & Editar" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Create & Edit" -msgstr "Crear & Editar" - -#: addons/web/static/src/xml/base.xml:0 -msgid "New" -msgstr "Nuevo" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Duplicate" -msgstr "Duplicar" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Readonly/Editable" -msgstr "Sólo Lectura/Editable" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<<" -msgstr "<<" - #: addons/web/static/src/xml/base.xml:0 msgid "0" msgstr "0" @@ -364,28 +665,88 @@ msgid "/" msgstr "/" #: addons/web/static/src/xml/base.xml:0 -msgid ">>" -msgstr ">>" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Add" -msgstr "Agregar" +msgid "Duplicate" +msgstr "Duplicar" #: addons/web/static/src/xml/base.xml:0 msgid "Unhandled widget" msgstr "Wdiget no controlado" +#: addons/web/static/src/xml/base.xml:0 +msgid "Notebook Page \"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "\"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Modifiers:" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "?" msgstr "?" #: addons/web/static/src/xml/base.xml:0 -msgid "#" -msgstr "#" +msgid "(nolabel)" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Done" -msgstr "Realizado" +msgid "Field:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Object:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Widget:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Size:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Context:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Domain:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "On change:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Relation:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Selection:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "[" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "]" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#" +msgstr "#" #: addons/web/static/src/xml/base.xml:0 msgid "Open..." @@ -419,18 +780,38 @@ msgstr "Guardar Como" msgid "Clear" msgstr "Limpiar" +#: addons/web/static/src/xml/base.xml:0 +msgid "Button" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(no string)" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Special:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Button Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Method:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Action ID:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Advanced Filter" msgstr "Filtro Avanzado" -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Filters --" -msgstr "-- Filtros --" - -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Actions --" -msgstr "-- Acciones --" - #: addons/web/static/src/xml/base.xml:0 msgid "Save Filter" msgstr "Guardar Filtro" @@ -447,6 +828,18 @@ msgstr "Nombre del Filtro:" msgid "(Any existing filter with the same name will be replaced)" msgstr "(Cualquier filtro existente con el mismo nombre será reemplazado)" +#: addons/web/static/src/xml/base.xml:0 +msgid "Select Dashboard to add this filter to:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Title of new Dashboard item:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filters" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Any of the following conditions must match" msgstr "Cualquiera de las siguientes condiciones debe coincidir" @@ -467,10 +860,6 @@ msgstr "Agregar condición" msgid "and" msgstr "y" -#: addons/web/static/src/xml/base.xml:0 -msgid "Cancel" -msgstr "Cancelar" - #: addons/web/static/src/xml/base.xml:0 msgid "Save & New" msgstr "Grabar & Nuevo" @@ -479,10 +868,6 @@ msgstr "Grabar & Nuevo" msgid "Save & Close" msgstr "Grabar & Cerrar" -#: addons/web/static/src/xml/base.xml:0 -msgid "Export" -msgstr "Exportar" - #: addons/web/static/src/xml/base.xml:0 msgid "" "This wizard will export all data that matches the current search criteria to " @@ -523,10 +908,6 @@ msgstr "Campos a exportar" msgid "Save fields list" msgstr "Guardar lista de campos" -#: addons/web/static/src/xml/base.xml:0 -msgid "Remove" -msgstr "Eliminar" - #: addons/web/static/src/xml/base.xml:0 msgid "Remove All" msgstr "Borrar todo" @@ -543,10 +924,6 @@ msgstr " " msgid "Save as:" msgstr "Guardar Como:" -#: addons/web/static/src/xml/base.xml:0 -msgid "Ok" -msgstr "Ok" - #: addons/web/static/src/xml/base.xml:0 msgid "Saved exports:" msgstr "Exportaciones guardadas:" @@ -563,10 +940,6 @@ msgstr "Nueva Password:" msgid "Confirm Password:" msgstr "Confirmar Password:" -#: addons/web/static/src/xml/base.xml:0 -msgid "Import" -msgstr "Importar" - #: addons/web/static/src/xml/base.xml:0 msgid "1. Import a .CSV file" msgstr "1. Importar a archivo .CSV" diff --git a/addons/web/po/et.po b/addons/web/po/et.po index b9362cd0fdc..86130e9f56d 100644 --- a/addons/web/po/et.po +++ b/addons/web/po/et.po @@ -7,54 +7,399 @@ msgid "" msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2011-10-07 10:38+0200\n" +"POT-Creation-Date: 2011-12-20 18:48+0100\n" "PO-Revision-Date: 2011-10-10 18:30+0000\n" "Last-Translator: Aare Vesi \n" "Language-Team: Estonian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n" -"X-Generator: Launchpad (build 14299)\n" +"X-Launchpad-Export-Date: 2011-12-21 05:27+0000\n" +"X-Generator: Launchpad (build 14538)\n" -#: addons/web/static/src/js/view_form.js:355 +#: addons/web/static/src/js/chrome.js:162 +#: addons/web/static/src/js/chrome.js:175 +#: addons/web/static/src/js/chrome.js:369 +#: addons/web/static/src/js/view_form.js:358 +#: addons/web/static/src/js/view_form.js:1078 +#: addons/web/static/src/xml/base.xml:0 +msgid "Ok" +msgstr "Ok" + +#: addons/web/static/src/js/chrome.js:668 +msgid "About" +msgstr "" + +#: addons/web/static/src/js/chrome.js:748 +msgid "Preferences" +msgstr "" + +#: addons/web/static/src/js/chrome.js:752 +msgid "Change password" +msgstr "" + +#: addons/web/static/src/js/chrome.js:753 +#: addons/web/static/src/js/search.js:235 +#: addons/web/static/src/js/search.js:276 +#: addons/web/static/src/js/view_editor.js:97 +#: addons/web/static/src/js/view_editor.js:778 +#: addons/web/static/src/js/view_editor.js:907 +#: addons/web/static/src/js/view_form.js:1085 +#: addons/web/static/src/xml/base.xml:0 +msgid "Cancel" +msgstr "Tühista" + +#: addons/web/static/src/js/chrome.js:754 +#: addons/web/static/src/js/view_editor.js:75 +#: addons/web/static/src/js/views.js:871 addons/web/static/src/xml/base.xml:0 +msgid "Save" +msgstr "Salvesta" + +#: addons/web/static/src/js/chrome.js:774 addons/web/static/src/xml/base.xml:0 +msgid "Change Password" +msgstr "" + +#: addons/web/static/src/js/data_export.js:6 +msgid "Export Data" +msgstr "" + +#: addons/web/static/src/js/data_export.js:23 +#: addons/web/static/src/js/data_import.js:73 +#: addons/web/static/src/js/view_editor.js:49 +#: addons/web/static/src/js/view_editor.js:387 +#: addons/web/static/src/js/view_form.js:2775 +#: addons/web/static/src/js/views.js:872 +msgid "Close" +msgstr "" + +#: addons/web/static/src/js/data_export.js:24 +msgid "Export To File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:34 +msgid "Import Data" +msgstr "" + +#: addons/web/static/src/js/data_import.js:74 +msgid "Import File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:109 +msgid "External ID" +msgstr "" + +#: addons/web/static/src/js/search.js:233 +msgid "Filter Entry" +msgstr "" + +#: addons/web/static/src/js/search.js:238 +#: addons/web/static/src/js/search.js:279 +msgid "OK" +msgstr "" + +#: addons/web/static/src/js/search.js:274 addons/web/static/src/xml/base.xml:0 +msgid "Add to Dashboard" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "Invalid Search" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "triggered from search view" +msgstr "" + +#: addons/web/static/src/js/search.js:490 +#, python-format +msgid "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s" +msgstr "" + +#: addons/web/static/src/js/search.js:822 +msgid "not a valid integer" +msgstr "" + +#: addons/web/static/src/js/search.js:836 +msgid "not a valid number" +msgstr "" + +#: addons/web/static/src/js/search.js:898 +msgid "Yes" +msgstr "" + +#: addons/web/static/src/js/search.js:899 +msgid "No" +msgstr "" + +#: addons/web/static/src/js/search.js:1252 +msgid "contains" +msgstr "" + +#: addons/web/static/src/js/search.js:1253 +msgid "doesn't contain" +msgstr "" + +#: addons/web/static/src/js/search.js:1254 +#: addons/web/static/src/js/search.js:1269 +#: addons/web/static/src/js/search.js:1289 +#: addons/web/static/src/js/search.js:1309 +#: addons/web/static/src/js/search.js:1331 +msgid "is equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1255 +#: addons/web/static/src/js/search.js:1270 +#: addons/web/static/src/js/search.js:1290 +#: addons/web/static/src/js/search.js:1310 +#: addons/web/static/src/js/search.js:1332 +msgid "is not equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1256 +#: addons/web/static/src/js/search.js:1271 +#: addons/web/static/src/js/search.js:1291 +#: addons/web/static/src/js/search.js:1311 +#: addons/web/static/src/js/search.js:1333 +msgid "greater than" +msgstr "" + +#: addons/web/static/src/js/search.js:1257 +#: addons/web/static/src/js/search.js:1272 +#: addons/web/static/src/js/search.js:1292 +#: addons/web/static/src/js/search.js:1312 +#: addons/web/static/src/js/search.js:1334 +msgid "less than" +msgstr "" + +#: addons/web/static/src/js/search.js:1258 +#: addons/web/static/src/js/search.js:1273 +#: addons/web/static/src/js/search.js:1293 +#: addons/web/static/src/js/search.js:1313 +#: addons/web/static/src/js/search.js:1335 +msgid "greater or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1259 +#: addons/web/static/src/js/search.js:1274 +#: addons/web/static/src/js/search.js:1294 +#: addons/web/static/src/js/search.js:1314 +#: addons/web/static/src/js/search.js:1336 +msgid "less or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1325 +#: addons/web/static/src/js/search.js:1350 +msgid "is" +msgstr "" + +#: addons/web/static/src/js/search.js:1351 +msgid "is not" +msgstr "" + +#: addons/web/static/src/js/search.js:1364 +msgid "is true" +msgstr "" + +#: addons/web/static/src/js/search.js:1365 +msgid "is false" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:42 +msgid "ViewEditor" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:46 +#: addons/web/static/src/js/view_list.js:17 +#: addons/web/static/src/xml/base.xml:0 +msgid "Create" +msgstr "Loo" + +#: addons/web/static/src/js/view_editor.js:47 +#: addons/web/static/src/xml/base.xml:0 +msgid "Edit" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:48 +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove" +msgstr "Eemalda" + +#: addons/web/static/src/js/view_editor.js:71 +#, python-format +msgid "Create a view (%s)" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:170 +msgid "Do you really want to remove this view?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:367 +#, python-format +msgid "View Editor %d - %s" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:371 +msgid "Preview" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:442 +msgid "Do you really want to remove this node?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:756 +#: addons/web/static/src/js/view_editor.js:883 +msgid "Properties" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:760 +#: addons/web/static/src/js/view_editor.js:887 +msgid "Update" +msgstr "" + +#: addons/web/static/src/js/view_form.js:17 +msgid "Form" +msgstr "" + +#: addons/web/static/src/js/view_form.js:401 msgid "" "Warning, the record has been modified, your changes will be discarded." msgstr "" -#: addons/web/static/src/js/view_form.js:1659 +#: addons/web/static/src/js/view_form.js:612 +msgid "Attachments" +msgstr "" + +#: addons/web/static/src/js/view_form.js:650 +#, python-format +msgid "Do you really want to delete the attachment %s?" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1075 +msgid "Confirm" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1838 msgid "   Search More..." msgstr "" -#: addons/web/static/src/js/view_form.js:1672 +#: addons/web/static/src/js/view_form.js:1851 #, python-format msgid "   Create \"%s\"" msgstr "" -#: addons/web/static/src/js/view_form.js:1678 +#: addons/web/static/src/js/view_form.js:1857 msgid "   Create and Edit..." msgstr "" -#: addons/web/static/src/js/views.js:568 +#: addons/web/static/src/js/view_form.js:2404 +#: addons/web/static/src/xml/base.xml:0 +msgid "Add" +msgstr "Lisa" + +#: addons/web/static/src/js/view_list.js:8 +msgid "List" +msgstr "" + +#: addons/web/static/src/js/view_list.js:269 +msgid "Unlimited" +msgstr "" + +#: addons/web/static/src/js/view_list.js:516 +msgid "Do you really want to remove these records?" +msgstr "" + +#: addons/web/static/src/js/view_list.js:1202 +msgid "Undefined" +msgstr "" + +#: addons/web/static/src/js/view_page.js:8 +msgid "Page" +msgstr "" + +#: addons/web/static/src/js/view_page.js:52 +msgid "Do you really want to delete this record?" +msgstr "" + +#: addons/web/static/src/js/view_page.js:227 +msgid "Download" +msgstr "" + +#: addons/web/static/src/js/view_tree.js:11 +msgid "Tree" +msgstr "" + +#: addons/web/static/src/js/views.js:590 +msgid "Search: " +msgstr "" + +#: addons/web/static/src/js/views.js:710 +msgid "Customize" +msgstr "" + +#: addons/web/static/src/js/views.js:713 +msgid "Manage Views" +msgstr "" + +#: addons/web/static/src/js/views.js:715 addons/web/static/src/js/views.js:719 +#: addons/web/static/src/js/views.js:724 +msgid "Manage views of the current object" +msgstr "" + +#: addons/web/static/src/js/views.js:717 +msgid "Edit Workflow" +msgstr "" + +#: addons/web/static/src/js/views.js:722 +msgid "Customize Object" +msgstr "" + +#: addons/web/static/src/js/views.js:726 +msgid "Translate" +msgstr "" + +#: addons/web/static/src/js/views.js:728 +msgid "Technical translation" +msgstr "" + +#: addons/web/static/src/js/views.js:733 +msgid "Other Options" +msgstr "" + +#: addons/web/static/src/js/views.js:736 addons/web/static/src/xml/base.xml:0 +msgid "Import" +msgstr "Import" + +#: addons/web/static/src/js/views.js:739 addons/web/static/src/xml/base.xml:0 +msgid "Export" +msgstr "Eksport" + +#: addons/web/static/src/js/views.js:742 +msgid "View Log" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Reports" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Actions" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Links" +msgstr "" + +#: addons/web/static/src/js/views.js:831 msgid "You must choose at least one record." msgstr "" -#: addons/web/static/src/js/views.js:569 +#: addons/web/static/src/js/views.js:832 msgid "Warning" msgstr "Hoiatus" -#: addons/web/static/src/js/views.js:609 +#: addons/web/static/src/js/views.js:866 msgid "Translations" msgstr "Tõlked" -#: addons/web/static/src/js/views.js:614 addons/web/static/src/xml/base.xml:0 -msgid "Save" -msgstr "Salvesta" - -#: addons/web/static/src/js/views.js:615 -msgid "Close" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "x" msgstr "" @@ -83,10 +428,6 @@ msgstr "" msgid "Loading..." msgstr "Laadimine..." -#: addons/web/static/src/xml/base.xml:0 -msgid "Create" -msgstr "Loo" - #: addons/web/static/src/xml/base.xml:0 msgid "Drop" msgstr "Hülga" @@ -267,19 +608,31 @@ msgid "Disable all tips" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "View#" +msgid "More…" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Fields" -msgstr "Väljad" - -#: addons/web/static/src/xml/base.xml:0 -msgid "View labels" +msgid "Debug View#" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Sidebar Relates" +msgid "- Fields View Get" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "View" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit SearchView" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit Action" msgstr "" #: addons/web/static/src/xml/base.xml:0 @@ -290,62 +643,10 @@ msgstr "Väli" msgid ":" msgstr "" -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate view" -msgstr "Tõlke vaade" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate sidebar" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "Delete" msgstr "Kustuta" -#: addons/web/static/src/xml/base.xml:0 -msgid "First" -msgstr "Esimene" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid ">" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Last" -msgstr "Viimane" - -#: addons/web/static/src/xml/base.xml:0 -msgid "♻" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Save & Edit" -msgstr "Salvesta & Muuda" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Create & Edit" -msgstr "Loo & Muuda" - -#: addons/web/static/src/xml/base.xml:0 -msgid "New" -msgstr "Uus" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Duplicate" -msgstr "Tee koopia" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Readonly/Editable" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<<" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "0" msgstr "" @@ -355,28 +656,88 @@ msgid "/" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid ">>" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Add" -msgstr "Lisa" +msgid "Duplicate" +msgstr "Tee koopia" #: addons/web/static/src/xml/base.xml:0 msgid "Unhandled widget" msgstr "" +#: addons/web/static/src/xml/base.xml:0 +msgid "Notebook Page \"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "\"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Modifiers:" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "?" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "#" +msgid "(nolabel)" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Done" -msgstr "Valmis" +msgid "Field:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Object:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Widget:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Size:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Context:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Domain:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "On change:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Relation:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Selection:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "[" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "]" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#" +msgstr "" #: addons/web/static/src/xml/base.xml:0 msgid "Open..." @@ -410,18 +771,38 @@ msgstr "Salvesta kui" msgid "Clear" msgstr "Tühjenda" +#: addons/web/static/src/xml/base.xml:0 +msgid "Button" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(no string)" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Special:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Button Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Method:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Action ID:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Advanced Filter" msgstr "Täiustatud filter" -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Filters --" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Actions --" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "Save Filter" msgstr "Salvesta filter" @@ -438,6 +819,18 @@ msgstr "" msgid "(Any existing filter with the same name will be replaced)" msgstr "" +#: addons/web/static/src/xml/base.xml:0 +msgid "Select Dashboard to add this filter to:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Title of new Dashboard item:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filters" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Any of the following conditions must match" msgstr "" @@ -458,10 +851,6 @@ msgstr "Lisa tingimus" msgid "and" msgstr "ja" -#: addons/web/static/src/xml/base.xml:0 -msgid "Cancel" -msgstr "Tühista" - #: addons/web/static/src/xml/base.xml:0 msgid "Save & New" msgstr "" @@ -470,10 +859,6 @@ msgstr "" msgid "Save & Close" msgstr "" -#: addons/web/static/src/xml/base.xml:0 -msgid "Export" -msgstr "Eksport" - #: addons/web/static/src/xml/base.xml:0 msgid "" "This wizard will export all data that matches the current search criteria to " @@ -510,10 +895,6 @@ msgstr "" msgid "Save fields list" msgstr "" -#: addons/web/static/src/xml/base.xml:0 -msgid "Remove" -msgstr "Eemalda" - #: addons/web/static/src/xml/base.xml:0 msgid "Remove All" msgstr "Eemalda kõik" @@ -530,10 +911,6 @@ msgstr "" msgid "Save as:" msgstr "Salvesta kui:" -#: addons/web/static/src/xml/base.xml:0 -msgid "Ok" -msgstr "Ok" - #: addons/web/static/src/xml/base.xml:0 msgid "Saved exports:" msgstr "" @@ -550,10 +927,6 @@ msgstr "Uus salasõna:" msgid "Confirm Password:" msgstr "Kinnita salasõna:" -#: addons/web/static/src/xml/base.xml:0 -msgid "Import" -msgstr "Import" - #: addons/web/static/src/xml/base.xml:0 msgid "1. Import a .CSV file" msgstr "" diff --git a/addons/web/po/fr.po b/addons/web/po/fr.po index fcbcce3b1a7..3ff66a77461 100644 --- a/addons/web/po/fr.po +++ b/addons/web/po/fr.po @@ -7,55 +7,400 @@ msgid "" msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2011-10-07 10:38+0200\n" -"PO-Revision-Date: 2011-10-23 12:20+0000\n" +"POT-Creation-Date: 2011-12-20 18:48+0100\n" +"PO-Revision-Date: 2011-12-05 16:17+0000\n" "Last-Translator: Xavier (Open ERP) \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n" -"X-Generator: Launchpad (build 14299)\n" +"X-Launchpad-Export-Date: 2011-12-21 05:27+0000\n" +"X-Generator: Launchpad (build 14538)\n" -#: addons/web/static/src/js/view_form.js:355 +#: addons/web/static/src/js/chrome.js:162 +#: addons/web/static/src/js/chrome.js:175 +#: addons/web/static/src/js/chrome.js:369 +#: addons/web/static/src/js/view_form.js:358 +#: addons/web/static/src/js/view_form.js:1078 +#: addons/web/static/src/xml/base.xml:0 +msgid "Ok" +msgstr "" + +#: addons/web/static/src/js/chrome.js:668 +msgid "About" +msgstr "" + +#: addons/web/static/src/js/chrome.js:748 +msgid "Preferences" +msgstr "" + +#: addons/web/static/src/js/chrome.js:752 +msgid "Change password" +msgstr "" + +#: addons/web/static/src/js/chrome.js:753 +#: addons/web/static/src/js/search.js:235 +#: addons/web/static/src/js/search.js:276 +#: addons/web/static/src/js/view_editor.js:97 +#: addons/web/static/src/js/view_editor.js:778 +#: addons/web/static/src/js/view_editor.js:907 +#: addons/web/static/src/js/view_form.js:1085 +#: addons/web/static/src/xml/base.xml:0 +msgid "Cancel" +msgstr "" + +#: addons/web/static/src/js/chrome.js:754 +#: addons/web/static/src/js/view_editor.js:75 +#: addons/web/static/src/js/views.js:871 addons/web/static/src/xml/base.xml:0 +msgid "Save" +msgstr "Enregistrer" + +#: addons/web/static/src/js/chrome.js:774 addons/web/static/src/xml/base.xml:0 +msgid "Change Password" +msgstr "" + +#: addons/web/static/src/js/data_export.js:6 +msgid "Export Data" +msgstr "" + +#: addons/web/static/src/js/data_export.js:23 +#: addons/web/static/src/js/data_import.js:73 +#: addons/web/static/src/js/view_editor.js:49 +#: addons/web/static/src/js/view_editor.js:387 +#: addons/web/static/src/js/view_form.js:2775 +#: addons/web/static/src/js/views.js:872 +msgid "Close" +msgstr "Fermer" + +#: addons/web/static/src/js/data_export.js:24 +msgid "Export To File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:34 +msgid "Import Data" +msgstr "" + +#: addons/web/static/src/js/data_import.js:74 +msgid "Import File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:109 +msgid "External ID" +msgstr "" + +#: addons/web/static/src/js/search.js:233 +msgid "Filter Entry" +msgstr "" + +#: addons/web/static/src/js/search.js:238 +#: addons/web/static/src/js/search.js:279 +msgid "OK" +msgstr "" + +#: addons/web/static/src/js/search.js:274 addons/web/static/src/xml/base.xml:0 +msgid "Add to Dashboard" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "Invalid Search" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "triggered from search view" +msgstr "" + +#: addons/web/static/src/js/search.js:490 +#, python-format +msgid "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s" +msgstr "" + +#: addons/web/static/src/js/search.js:822 +msgid "not a valid integer" +msgstr "" + +#: addons/web/static/src/js/search.js:836 +msgid "not a valid number" +msgstr "" + +#: addons/web/static/src/js/search.js:898 +msgid "Yes" +msgstr "" + +#: addons/web/static/src/js/search.js:899 +msgid "No" +msgstr "" + +#: addons/web/static/src/js/search.js:1252 +msgid "contains" +msgstr "" + +#: addons/web/static/src/js/search.js:1253 +msgid "doesn't contain" +msgstr "" + +#: addons/web/static/src/js/search.js:1254 +#: addons/web/static/src/js/search.js:1269 +#: addons/web/static/src/js/search.js:1289 +#: addons/web/static/src/js/search.js:1309 +#: addons/web/static/src/js/search.js:1331 +msgid "is equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1255 +#: addons/web/static/src/js/search.js:1270 +#: addons/web/static/src/js/search.js:1290 +#: addons/web/static/src/js/search.js:1310 +#: addons/web/static/src/js/search.js:1332 +msgid "is not equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1256 +#: addons/web/static/src/js/search.js:1271 +#: addons/web/static/src/js/search.js:1291 +#: addons/web/static/src/js/search.js:1311 +#: addons/web/static/src/js/search.js:1333 +msgid "greater than" +msgstr "" + +#: addons/web/static/src/js/search.js:1257 +#: addons/web/static/src/js/search.js:1272 +#: addons/web/static/src/js/search.js:1292 +#: addons/web/static/src/js/search.js:1312 +#: addons/web/static/src/js/search.js:1334 +msgid "less than" +msgstr "" + +#: addons/web/static/src/js/search.js:1258 +#: addons/web/static/src/js/search.js:1273 +#: addons/web/static/src/js/search.js:1293 +#: addons/web/static/src/js/search.js:1313 +#: addons/web/static/src/js/search.js:1335 +msgid "greater or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1259 +#: addons/web/static/src/js/search.js:1274 +#: addons/web/static/src/js/search.js:1294 +#: addons/web/static/src/js/search.js:1314 +#: addons/web/static/src/js/search.js:1336 +msgid "less or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1325 +#: addons/web/static/src/js/search.js:1350 +msgid "is" +msgstr "" + +#: addons/web/static/src/js/search.js:1351 +msgid "is not" +msgstr "" + +#: addons/web/static/src/js/search.js:1364 +msgid "is true" +msgstr "" + +#: addons/web/static/src/js/search.js:1365 +msgid "is false" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:42 +msgid "ViewEditor" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:46 +#: addons/web/static/src/js/view_list.js:17 +#: addons/web/static/src/xml/base.xml:0 +msgid "Create" +msgstr "Créer" + +#: addons/web/static/src/js/view_editor.js:47 +#: addons/web/static/src/xml/base.xml:0 +msgid "Edit" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:48 +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:71 +#, python-format +msgid "Create a view (%s)" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:170 +msgid "Do you really want to remove this view?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:367 +#, python-format +msgid "View Editor %d - %s" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:371 +msgid "Preview" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:442 +msgid "Do you really want to remove this node?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:756 +#: addons/web/static/src/js/view_editor.js:883 +msgid "Properties" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:760 +#: addons/web/static/src/js/view_editor.js:887 +msgid "Update" +msgstr "" + +#: addons/web/static/src/js/view_form.js:17 +msgid "Form" +msgstr "" + +#: addons/web/static/src/js/view_form.js:401 msgid "" "Warning, the record has been modified, your changes will be discarded." msgstr "" "Attention, l'enregistrement a été modifié, vos changements seront perdus." -#: addons/web/static/src/js/view_form.js:1659 +#: addons/web/static/src/js/view_form.js:612 +msgid "Attachments" +msgstr "" + +#: addons/web/static/src/js/view_form.js:650 +#, python-format +msgid "Do you really want to delete the attachment %s?" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1075 +msgid "Confirm" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1838 msgid "   Search More..." msgstr "" -#: addons/web/static/src/js/view_form.js:1672 +#: addons/web/static/src/js/view_form.js:1851 #, python-format msgid "   Create \"%s\"" msgstr "" -#: addons/web/static/src/js/view_form.js:1678 +#: addons/web/static/src/js/view_form.js:1857 msgid "   Create and Edit..." msgstr "" -#: addons/web/static/src/js/views.js:568 +#: addons/web/static/src/js/view_form.js:2404 +#: addons/web/static/src/xml/base.xml:0 +msgid "Add" +msgstr "" + +#: addons/web/static/src/js/view_list.js:8 +msgid "List" +msgstr "" + +#: addons/web/static/src/js/view_list.js:269 +msgid "Unlimited" +msgstr "" + +#: addons/web/static/src/js/view_list.js:516 +msgid "Do you really want to remove these records?" +msgstr "" + +#: addons/web/static/src/js/view_list.js:1202 +msgid "Undefined" +msgstr "" + +#: addons/web/static/src/js/view_page.js:8 +msgid "Page" +msgstr "" + +#: addons/web/static/src/js/view_page.js:52 +msgid "Do you really want to delete this record?" +msgstr "" + +#: addons/web/static/src/js/view_page.js:227 +msgid "Download" +msgstr "" + +#: addons/web/static/src/js/view_tree.js:11 +msgid "Tree" +msgstr "" + +#: addons/web/static/src/js/views.js:590 +msgid "Search: " +msgstr "Rechercher : " + +#: addons/web/static/src/js/views.js:710 +msgid "Customize" +msgstr "" + +#: addons/web/static/src/js/views.js:713 +msgid "Manage Views" +msgstr "" + +#: addons/web/static/src/js/views.js:715 addons/web/static/src/js/views.js:719 +#: addons/web/static/src/js/views.js:724 +msgid "Manage views of the current object" +msgstr "" + +#: addons/web/static/src/js/views.js:717 +msgid "Edit Workflow" +msgstr "" + +#: addons/web/static/src/js/views.js:722 +msgid "Customize Object" +msgstr "" + +#: addons/web/static/src/js/views.js:726 +msgid "Translate" +msgstr "" + +#: addons/web/static/src/js/views.js:728 +msgid "Technical translation" +msgstr "" + +#: addons/web/static/src/js/views.js:733 +msgid "Other Options" +msgstr "" + +#: addons/web/static/src/js/views.js:736 addons/web/static/src/xml/base.xml:0 +msgid "Import" +msgstr "" + +#: addons/web/static/src/js/views.js:739 addons/web/static/src/xml/base.xml:0 +msgid "Export" +msgstr "" + +#: addons/web/static/src/js/views.js:742 +msgid "View Log" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Reports" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Actions" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Links" +msgstr "" + +#: addons/web/static/src/js/views.js:831 msgid "You must choose at least one record." msgstr "Vous devez choisir au moins un enregistrement" -#: addons/web/static/src/js/views.js:569 +#: addons/web/static/src/js/views.js:832 msgid "Warning" msgstr "Attention" -#: addons/web/static/src/js/views.js:609 +#: addons/web/static/src/js/views.js:866 msgid "Translations" msgstr "Traductions" -#: addons/web/static/src/js/views.js:614 addons/web/static/src/xml/base.xml:0 -msgid "Save" -msgstr "Enregistrer" - -#: addons/web/static/src/js/views.js:615 -msgid "Close" -msgstr "Fermer" - #: addons/web/static/src/xml/base.xml:0 msgid "x" msgstr "x" @@ -84,10 +429,6 @@ msgstr "." msgid "Loading..." msgstr "Chargement..." -#: addons/web/static/src/xml/base.xml:0 -msgid "Create" -msgstr "Créer" - #: addons/web/static/src/xml/base.xml:0 msgid "Drop" msgstr "" @@ -268,19 +609,31 @@ msgid "Disable all tips" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "View#" +msgid "More…" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Fields" +msgid "Debug View#" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "View labels" +msgid "- Fields View Get" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Sidebar Relates" +msgid "- Edit" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "View" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit SearchView" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit Action" msgstr "" #: addons/web/static/src/xml/base.xml:0 @@ -291,62 +644,10 @@ msgstr "" msgid ":" msgstr ":" -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate view" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate sidebar" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "Delete" msgstr "Supprimer" -#: addons/web/static/src/xml/base.xml:0 -msgid "First" -msgstr "Premier" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<" -msgstr "<" - -#: addons/web/static/src/xml/base.xml:0 -msgid ">" -msgstr ">" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Last" -msgstr "Dernier" - -#: addons/web/static/src/xml/base.xml:0 -msgid "♻" -msgstr "♻" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Save & Edit" -msgstr "Enregistrer et éditer" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Create & Edit" -msgstr "Créer et éditer" - -#: addons/web/static/src/xml/base.xml:0 -msgid "New" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Duplicate" -msgstr "Dupliquer" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Readonly/Editable" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<<" -msgstr "<<" - #: addons/web/static/src/xml/base.xml:0 msgid "0" msgstr "0" @@ -356,28 +657,88 @@ msgid "/" msgstr "/" #: addons/web/static/src/xml/base.xml:0 -msgid ">>" -msgstr ">>" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Add" -msgstr "" +msgid "Duplicate" +msgstr "Dupliquer" #: addons/web/static/src/xml/base.xml:0 msgid "Unhandled widget" msgstr "" +#: addons/web/static/src/xml/base.xml:0 +msgid "Notebook Page \"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "\"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Modifiers:" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "?" msgstr "?" #: addons/web/static/src/xml/base.xml:0 -msgid "#" +msgid "(nolabel)" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Done" -msgstr "Terminé" +msgid "Field:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Object:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Widget:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Size:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Context:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Domain:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "On change:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Relation:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Selection:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "[" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "]" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#" +msgstr "" #: addons/web/static/src/xml/base.xml:0 msgid "Open..." @@ -411,18 +772,38 @@ msgstr "" msgid "Clear" msgstr "" +#: addons/web/static/src/xml/base.xml:0 +msgid "Button" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(no string)" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Special:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Button Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Method:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Action ID:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Advanced Filter" msgstr "" -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Filters --" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Actions --" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "Save Filter" msgstr "" @@ -439,6 +820,18 @@ msgstr "" msgid "(Any existing filter with the same name will be replaced)" msgstr "" +#: addons/web/static/src/xml/base.xml:0 +msgid "Select Dashboard to add this filter to:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Title of new Dashboard item:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filters" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Any of the following conditions must match" msgstr "" @@ -459,10 +852,6 @@ msgstr "" msgid "and" msgstr "" -#: addons/web/static/src/xml/base.xml:0 -msgid "Cancel" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "Save & New" msgstr "" @@ -471,10 +860,6 @@ msgstr "" msgid "Save & Close" msgstr "" -#: addons/web/static/src/xml/base.xml:0 -msgid "Export" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "" "This wizard will export all data that matches the current search criteria to " @@ -511,10 +896,6 @@ msgstr "" msgid "Save fields list" msgstr "" -#: addons/web/static/src/xml/base.xml:0 -msgid "Remove" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "Remove All" msgstr "" @@ -531,10 +912,6 @@ msgstr "" msgid "Save as:" msgstr "" -#: addons/web/static/src/xml/base.xml:0 -msgid "Ok" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "Saved exports:" msgstr "" @@ -551,10 +928,6 @@ msgstr "" msgid "Confirm Password:" msgstr "" -#: addons/web/static/src/xml/base.xml:0 -msgid "Import" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "1. Import a .CSV file" msgstr "" diff --git a/addons/web/po/gl.po b/addons/web/po/gl.po index 7a8fefab03c..50a075c4913 100644 --- a/addons/web/po/gl.po +++ b/addons/web/po/gl.po @@ -7,54 +7,399 @@ msgid "" msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2011-10-07 10:38+0200\n" +"POT-Creation-Date: 2011-12-20 18:48+0100\n" "PO-Revision-Date: 2011-10-19 07:54+0000\n" "Last-Translator: Amós Oviedo \n" "Language-Team: Galician \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n" -"X-Generator: Launchpad (build 14299)\n" +"X-Launchpad-Export-Date: 2011-12-21 05:27+0000\n" +"X-Generator: Launchpad (build 14538)\n" -#: addons/web/static/src/js/view_form.js:355 +#: addons/web/static/src/js/chrome.js:162 +#: addons/web/static/src/js/chrome.js:175 +#: addons/web/static/src/js/chrome.js:369 +#: addons/web/static/src/js/view_form.js:358 +#: addons/web/static/src/js/view_form.js:1078 +#: addons/web/static/src/xml/base.xml:0 +msgid "Ok" +msgstr "Ok" + +#: addons/web/static/src/js/chrome.js:668 +msgid "About" +msgstr "" + +#: addons/web/static/src/js/chrome.js:748 +msgid "Preferences" +msgstr "" + +#: addons/web/static/src/js/chrome.js:752 +msgid "Change password" +msgstr "" + +#: addons/web/static/src/js/chrome.js:753 +#: addons/web/static/src/js/search.js:235 +#: addons/web/static/src/js/search.js:276 +#: addons/web/static/src/js/view_editor.js:97 +#: addons/web/static/src/js/view_editor.js:778 +#: addons/web/static/src/js/view_editor.js:907 +#: addons/web/static/src/js/view_form.js:1085 +#: addons/web/static/src/xml/base.xml:0 +msgid "Cancel" +msgstr "Cancelar" + +#: addons/web/static/src/js/chrome.js:754 +#: addons/web/static/src/js/view_editor.js:75 +#: addons/web/static/src/js/views.js:871 addons/web/static/src/xml/base.xml:0 +msgid "Save" +msgstr "Gardar" + +#: addons/web/static/src/js/chrome.js:774 addons/web/static/src/xml/base.xml:0 +msgid "Change Password" +msgstr "" + +#: addons/web/static/src/js/data_export.js:6 +msgid "Export Data" +msgstr "" + +#: addons/web/static/src/js/data_export.js:23 +#: addons/web/static/src/js/data_import.js:73 +#: addons/web/static/src/js/view_editor.js:49 +#: addons/web/static/src/js/view_editor.js:387 +#: addons/web/static/src/js/view_form.js:2775 +#: addons/web/static/src/js/views.js:872 +msgid "Close" +msgstr "Pechar" + +#: addons/web/static/src/js/data_export.js:24 +msgid "Export To File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:34 +msgid "Import Data" +msgstr "" + +#: addons/web/static/src/js/data_import.js:74 +msgid "Import File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:109 +msgid "External ID" +msgstr "" + +#: addons/web/static/src/js/search.js:233 +msgid "Filter Entry" +msgstr "" + +#: addons/web/static/src/js/search.js:238 +#: addons/web/static/src/js/search.js:279 +msgid "OK" +msgstr "" + +#: addons/web/static/src/js/search.js:274 addons/web/static/src/xml/base.xml:0 +msgid "Add to Dashboard" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "Invalid Search" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "triggered from search view" +msgstr "" + +#: addons/web/static/src/js/search.js:490 +#, python-format +msgid "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s" +msgstr "" + +#: addons/web/static/src/js/search.js:822 +msgid "not a valid integer" +msgstr "" + +#: addons/web/static/src/js/search.js:836 +msgid "not a valid number" +msgstr "" + +#: addons/web/static/src/js/search.js:898 +msgid "Yes" +msgstr "" + +#: addons/web/static/src/js/search.js:899 +msgid "No" +msgstr "" + +#: addons/web/static/src/js/search.js:1252 +msgid "contains" +msgstr "" + +#: addons/web/static/src/js/search.js:1253 +msgid "doesn't contain" +msgstr "" + +#: addons/web/static/src/js/search.js:1254 +#: addons/web/static/src/js/search.js:1269 +#: addons/web/static/src/js/search.js:1289 +#: addons/web/static/src/js/search.js:1309 +#: addons/web/static/src/js/search.js:1331 +msgid "is equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1255 +#: addons/web/static/src/js/search.js:1270 +#: addons/web/static/src/js/search.js:1290 +#: addons/web/static/src/js/search.js:1310 +#: addons/web/static/src/js/search.js:1332 +msgid "is not equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1256 +#: addons/web/static/src/js/search.js:1271 +#: addons/web/static/src/js/search.js:1291 +#: addons/web/static/src/js/search.js:1311 +#: addons/web/static/src/js/search.js:1333 +msgid "greater than" +msgstr "" + +#: addons/web/static/src/js/search.js:1257 +#: addons/web/static/src/js/search.js:1272 +#: addons/web/static/src/js/search.js:1292 +#: addons/web/static/src/js/search.js:1312 +#: addons/web/static/src/js/search.js:1334 +msgid "less than" +msgstr "" + +#: addons/web/static/src/js/search.js:1258 +#: addons/web/static/src/js/search.js:1273 +#: addons/web/static/src/js/search.js:1293 +#: addons/web/static/src/js/search.js:1313 +#: addons/web/static/src/js/search.js:1335 +msgid "greater or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1259 +#: addons/web/static/src/js/search.js:1274 +#: addons/web/static/src/js/search.js:1294 +#: addons/web/static/src/js/search.js:1314 +#: addons/web/static/src/js/search.js:1336 +msgid "less or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1325 +#: addons/web/static/src/js/search.js:1350 +msgid "is" +msgstr "" + +#: addons/web/static/src/js/search.js:1351 +msgid "is not" +msgstr "" + +#: addons/web/static/src/js/search.js:1364 +msgid "is true" +msgstr "" + +#: addons/web/static/src/js/search.js:1365 +msgid "is false" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:42 +msgid "ViewEditor" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:46 +#: addons/web/static/src/js/view_list.js:17 +#: addons/web/static/src/xml/base.xml:0 +msgid "Create" +msgstr "Crear" + +#: addons/web/static/src/js/view_editor.js:47 +#: addons/web/static/src/xml/base.xml:0 +msgid "Edit" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:48 +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove" +msgstr "Eliminar" + +#: addons/web/static/src/js/view_editor.js:71 +#, python-format +msgid "Create a view (%s)" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:170 +msgid "Do you really want to remove this view?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:367 +#, python-format +msgid "View Editor %d - %s" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:371 +msgid "Preview" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:442 +msgid "Do you really want to remove this node?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:756 +#: addons/web/static/src/js/view_editor.js:883 +msgid "Properties" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:760 +#: addons/web/static/src/js/view_editor.js:887 +msgid "Update" +msgstr "" + +#: addons/web/static/src/js/view_form.js:17 +msgid "Form" +msgstr "" + +#: addons/web/static/src/js/view_form.js:401 msgid "" "Warning, the record has been modified, your changes will be discarded." msgstr "Advertencia, o rexistro modificouse, os cambios serán descartados." -#: addons/web/static/src/js/view_form.js:1659 +#: addons/web/static/src/js/view_form.js:612 +msgid "Attachments" +msgstr "" + +#: addons/web/static/src/js/view_form.js:650 +#, python-format +msgid "Do you really want to delete the attachment %s?" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1075 +msgid "Confirm" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1838 msgid "   Search More..." msgstr "   Buscar máis..." -#: addons/web/static/src/js/view_form.js:1672 +#: addons/web/static/src/js/view_form.js:1851 #, python-format msgid "   Create \"%s\"" msgstr "   Crear \"%s\"" -#: addons/web/static/src/js/view_form.js:1678 +#: addons/web/static/src/js/view_form.js:1857 msgid "   Create and Edit..." msgstr "   Crear e Editar..." -#: addons/web/static/src/js/views.js:568 +#: addons/web/static/src/js/view_form.js:2404 +#: addons/web/static/src/xml/base.xml:0 +msgid "Add" +msgstr "Engadir" + +#: addons/web/static/src/js/view_list.js:8 +msgid "List" +msgstr "" + +#: addons/web/static/src/js/view_list.js:269 +msgid "Unlimited" +msgstr "" + +#: addons/web/static/src/js/view_list.js:516 +msgid "Do you really want to remove these records?" +msgstr "" + +#: addons/web/static/src/js/view_list.js:1202 +msgid "Undefined" +msgstr "" + +#: addons/web/static/src/js/view_page.js:8 +msgid "Page" +msgstr "" + +#: addons/web/static/src/js/view_page.js:52 +msgid "Do you really want to delete this record?" +msgstr "" + +#: addons/web/static/src/js/view_page.js:227 +msgid "Download" +msgstr "" + +#: addons/web/static/src/js/view_tree.js:11 +msgid "Tree" +msgstr "" + +#: addons/web/static/src/js/views.js:590 +msgid "Search: " +msgstr "" + +#: addons/web/static/src/js/views.js:710 +msgid "Customize" +msgstr "" + +#: addons/web/static/src/js/views.js:713 +msgid "Manage Views" +msgstr "" + +#: addons/web/static/src/js/views.js:715 addons/web/static/src/js/views.js:719 +#: addons/web/static/src/js/views.js:724 +msgid "Manage views of the current object" +msgstr "" + +#: addons/web/static/src/js/views.js:717 +msgid "Edit Workflow" +msgstr "" + +#: addons/web/static/src/js/views.js:722 +msgid "Customize Object" +msgstr "" + +#: addons/web/static/src/js/views.js:726 +msgid "Translate" +msgstr "" + +#: addons/web/static/src/js/views.js:728 +msgid "Technical translation" +msgstr "" + +#: addons/web/static/src/js/views.js:733 +msgid "Other Options" +msgstr "" + +#: addons/web/static/src/js/views.js:736 addons/web/static/src/xml/base.xml:0 +msgid "Import" +msgstr "Importar" + +#: addons/web/static/src/js/views.js:739 addons/web/static/src/xml/base.xml:0 +msgid "Export" +msgstr "Exportar" + +#: addons/web/static/src/js/views.js:742 +msgid "View Log" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Reports" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Actions" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Links" +msgstr "" + +#: addons/web/static/src/js/views.js:831 msgid "You must choose at least one record." msgstr "Debe seleccionar polo menos un rexistro." -#: addons/web/static/src/js/views.js:569 +#: addons/web/static/src/js/views.js:832 msgid "Warning" msgstr "Advertencia" -#: addons/web/static/src/js/views.js:609 +#: addons/web/static/src/js/views.js:866 msgid "Translations" msgstr "Traducións" -#: addons/web/static/src/js/views.js:614 addons/web/static/src/xml/base.xml:0 -msgid "Save" -msgstr "Gardar" - -#: addons/web/static/src/js/views.js:615 -msgid "Close" -msgstr "Pechar" - #: addons/web/static/src/xml/base.xml:0 msgid "x" msgstr "x" @@ -83,10 +428,6 @@ msgstr "." msgid "Loading..." msgstr "Cargando…" -#: addons/web/static/src/xml/base.xml:0 -msgid "Create" -msgstr "Crear" - #: addons/web/static/src/xml/base.xml:0 msgid "Drop" msgstr "Eliminar" @@ -275,20 +616,32 @@ msgid "Disable all tips" msgstr "Desactivar todas as suxerencias" #: addons/web/static/src/xml/base.xml:0 -msgid "View#" -msgstr "Vista#" +msgid "More…" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Fields" -msgstr "Campos" +msgid "Debug View#" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "View labels" -msgstr "Ver etiquetas" +msgid "- Fields View Get" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Sidebar Relates" -msgstr "Relaciónase coa barra lateral" +msgid "- Edit" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "View" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit SearchView" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit Action" +msgstr "" #: addons/web/static/src/xml/base.xml:0 msgid "Field" @@ -298,62 +651,10 @@ msgstr "Campo" msgid ":" msgstr ":" -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate view" -msgstr "Traducir vista" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate sidebar" -msgstr "Traducir barra lateral" - #: addons/web/static/src/xml/base.xml:0 msgid "Delete" msgstr "Borrar" -#: addons/web/static/src/xml/base.xml:0 -msgid "First" -msgstr "Primeiro" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<" -msgstr "<" - -#: addons/web/static/src/xml/base.xml:0 -msgid ">" -msgstr ">" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Last" -msgstr "Último" - -#: addons/web/static/src/xml/base.xml:0 -msgid "♻" -msgstr "♻" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Save & Edit" -msgstr "Gardar e Editar" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Create & Edit" -msgstr "Crear e Editar" - -#: addons/web/static/src/xml/base.xml:0 -msgid "New" -msgstr "Novo" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Duplicate" -msgstr "Duplicar" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Readonly/Editable" -msgstr "Só Lectura/Editable" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<<" -msgstr "<<" - #: addons/web/static/src/xml/base.xml:0 msgid "0" msgstr "0" @@ -363,28 +664,88 @@ msgid "/" msgstr "/" #: addons/web/static/src/xml/base.xml:0 -msgid ">>" -msgstr ">>" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Add" -msgstr "Engadir" +msgid "Duplicate" +msgstr "Duplicar" #: addons/web/static/src/xml/base.xml:0 msgid "Unhandled widget" msgstr "Widget non controlado" +#: addons/web/static/src/xml/base.xml:0 +msgid "Notebook Page \"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "\"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Modifiers:" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "?" msgstr "?" #: addons/web/static/src/xml/base.xml:0 -msgid "#" -msgstr "#" +msgid "(nolabel)" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Done" -msgstr "Feito" +msgid "Field:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Object:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Widget:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Size:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Context:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Domain:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "On change:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Relation:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Selection:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "[" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "]" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#" +msgstr "#" #: addons/web/static/src/xml/base.xml:0 msgid "Open..." @@ -418,18 +779,38 @@ msgstr "Gardar como" msgid "Clear" msgstr "Limpar" +#: addons/web/static/src/xml/base.xml:0 +msgid "Button" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(no string)" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Special:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Button Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Method:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Action ID:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Advanced Filter" msgstr "Filtro Avanzado" -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Filters --" -msgstr "-- Filtros --" - -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Actions --" -msgstr "-- Accións --" - #: addons/web/static/src/xml/base.xml:0 msgid "Save Filter" msgstr "Gardar Filtro" @@ -446,6 +827,18 @@ msgstr "Nome do Filtro" msgid "(Any existing filter with the same name will be replaced)" msgstr "(Calquer filtro existente co mesmo nome será reemplazado)" +#: addons/web/static/src/xml/base.xml:0 +msgid "Select Dashboard to add this filter to:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Title of new Dashboard item:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filters" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Any of the following conditions must match" msgstr "Calquera das condicións seguintes deben coincidir" @@ -466,10 +859,6 @@ msgstr "Engadir condición" msgid "and" msgstr "e" -#: addons/web/static/src/xml/base.xml:0 -msgid "Cancel" -msgstr "Cancelar" - #: addons/web/static/src/xml/base.xml:0 msgid "Save & New" msgstr "Gardar e Novo" @@ -478,10 +867,6 @@ msgstr "Gardar e Novo" msgid "Save & Close" msgstr "Gardar e Pechar" -#: addons/web/static/src/xml/base.xml:0 -msgid "Export" -msgstr "Exportar" - #: addons/web/static/src/xml/base.xml:0 msgid "" "This wizard will export all data that matches the current search criteria to " @@ -522,10 +907,6 @@ msgstr "Campos a exportar" msgid "Save fields list" msgstr "Gardar lista de campos" -#: addons/web/static/src/xml/base.xml:0 -msgid "Remove" -msgstr "Eliminar" - #: addons/web/static/src/xml/base.xml:0 msgid "Remove All" msgstr "Eliminar Todo" @@ -542,10 +923,6 @@ msgstr " " msgid "Save as:" msgstr "Gardar como:" -#: addons/web/static/src/xml/base.xml:0 -msgid "Ok" -msgstr "Ok" - #: addons/web/static/src/xml/base.xml:0 msgid "Saved exports:" msgstr "Exportacións gardadas:" @@ -562,10 +939,6 @@ msgstr "Contrasinal nova:" msgid "Confirm Password:" msgstr "Confirmar contrasinal:" -#: addons/web/static/src/xml/base.xml:0 -msgid "Import" -msgstr "Importar" - #: addons/web/static/src/xml/base.xml:0 msgid "1. Import a .CSV file" msgstr "1. Importar un arquivo .CSV" diff --git a/addons/web/po/hr.po b/addons/web/po/hr.po new file mode 100644 index 00000000000..eaa7e2760dd --- /dev/null +++ b/addons/web/po/hr.po @@ -0,0 +1,1051 @@ +# Croatian translation for openerp-web +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the openerp-web package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: openerp-web\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2011-12-20 18:48+0100\n" +"PO-Revision-Date: 2011-12-21 15:10+0000\n" +"Last-Translator: Goran Kliska \n" +"Language-Team: Croatian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-12-22 05:32+0000\n" +"X-Generator: Launchpad (build 14560)\n" + +#: addons/web/static/src/js/chrome.js:162 +#: addons/web/static/src/js/chrome.js:175 +#: addons/web/static/src/js/chrome.js:369 +#: addons/web/static/src/js/view_form.js:358 +#: addons/web/static/src/js/view_form.js:1078 +#: addons/web/static/src/xml/base.xml:0 +msgid "Ok" +msgstr "U redu" + +#: addons/web/static/src/js/chrome.js:668 +msgid "About" +msgstr "O programu" + +#: addons/web/static/src/js/chrome.js:748 +msgid "Preferences" +msgstr "Postavke" + +#: addons/web/static/src/js/chrome.js:752 +msgid "Change password" +msgstr "Promjena lozinke" + +#: addons/web/static/src/js/chrome.js:753 +#: addons/web/static/src/js/search.js:235 +#: addons/web/static/src/js/search.js:276 +#: addons/web/static/src/js/view_editor.js:97 +#: addons/web/static/src/js/view_editor.js:778 +#: addons/web/static/src/js/view_editor.js:907 +#: addons/web/static/src/js/view_form.js:1085 +#: addons/web/static/src/xml/base.xml:0 +msgid "Cancel" +msgstr "Odustani" + +#: addons/web/static/src/js/chrome.js:754 +#: addons/web/static/src/js/view_editor.js:75 +#: addons/web/static/src/js/views.js:871 addons/web/static/src/xml/base.xml:0 +msgid "Save" +msgstr "Snimi" + +#: addons/web/static/src/js/chrome.js:774 addons/web/static/src/xml/base.xml:0 +msgid "Change Password" +msgstr "Promijeni lozinku" + +#: addons/web/static/src/js/data_export.js:6 +msgid "Export Data" +msgstr "Izvoz podataka" + +#: addons/web/static/src/js/data_export.js:23 +#: addons/web/static/src/js/data_import.js:73 +#: addons/web/static/src/js/view_editor.js:49 +#: addons/web/static/src/js/view_editor.js:387 +#: addons/web/static/src/js/view_form.js:2775 +#: addons/web/static/src/js/views.js:872 +msgid "Close" +msgstr "Zatvori" + +#: addons/web/static/src/js/data_export.js:24 +msgid "Export To File" +msgstr "Izvoz u datoteku" + +#: addons/web/static/src/js/data_import.js:34 +msgid "Import Data" +msgstr "Uvoz podataka" + +#: addons/web/static/src/js/data_import.js:74 +msgid "Import File" +msgstr "Uvezi datoteku" + +#: addons/web/static/src/js/data_import.js:109 +msgid "External ID" +msgstr "External ID" + +#: addons/web/static/src/js/search.js:233 +msgid "Filter Entry" +msgstr "Upis filtera" + +#: addons/web/static/src/js/search.js:238 +#: addons/web/static/src/js/search.js:279 +msgid "OK" +msgstr "U redu" + +#: addons/web/static/src/js/search.js:274 addons/web/static/src/xml/base.xml:0 +msgid "Add to Dashboard" +msgstr "Dodaj na nadzornu ploču" + +#: addons/web/static/src/js/search.js:403 +msgid "Invalid Search" +msgstr "Neispravno traženje" + +#: addons/web/static/src/js/search.js:403 +msgid "triggered from search view" +msgstr "" + +#: addons/web/static/src/js/search.js:490 +#, python-format +msgid "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s" +msgstr "" +"neispravna vrijednost za polje %(fieldname)s: [%(value)s] is %(message)s" + +#: addons/web/static/src/js/search.js:822 +msgid "not a valid integer" +msgstr "nije cijeli broj" + +#: addons/web/static/src/js/search.js:836 +msgid "not a valid number" +msgstr "nije ispravan broj" + +#: addons/web/static/src/js/search.js:898 +msgid "Yes" +msgstr "Da" + +#: addons/web/static/src/js/search.js:899 +msgid "No" +msgstr "Ne" + +#: addons/web/static/src/js/search.js:1252 +msgid "contains" +msgstr "sadrži" + +#: addons/web/static/src/js/search.js:1253 +msgid "doesn't contain" +msgstr "ne sadrži" + +#: addons/web/static/src/js/search.js:1254 +#: addons/web/static/src/js/search.js:1269 +#: addons/web/static/src/js/search.js:1289 +#: addons/web/static/src/js/search.js:1309 +#: addons/web/static/src/js/search.js:1331 +msgid "is equal to" +msgstr "je jednako" + +#: addons/web/static/src/js/search.js:1255 +#: addons/web/static/src/js/search.js:1270 +#: addons/web/static/src/js/search.js:1290 +#: addons/web/static/src/js/search.js:1310 +#: addons/web/static/src/js/search.js:1332 +msgid "is not equal to" +msgstr "nije jednako" + +#: addons/web/static/src/js/search.js:1256 +#: addons/web/static/src/js/search.js:1271 +#: addons/web/static/src/js/search.js:1291 +#: addons/web/static/src/js/search.js:1311 +#: addons/web/static/src/js/search.js:1333 +msgid "greater than" +msgstr "veće od" + +#: addons/web/static/src/js/search.js:1257 +#: addons/web/static/src/js/search.js:1272 +#: addons/web/static/src/js/search.js:1292 +#: addons/web/static/src/js/search.js:1312 +#: addons/web/static/src/js/search.js:1334 +msgid "less than" +msgstr "manje od" + +#: addons/web/static/src/js/search.js:1258 +#: addons/web/static/src/js/search.js:1273 +#: addons/web/static/src/js/search.js:1293 +#: addons/web/static/src/js/search.js:1313 +#: addons/web/static/src/js/search.js:1335 +msgid "greater or equal than" +msgstr "veće ili jednako" + +#: addons/web/static/src/js/search.js:1259 +#: addons/web/static/src/js/search.js:1274 +#: addons/web/static/src/js/search.js:1294 +#: addons/web/static/src/js/search.js:1314 +#: addons/web/static/src/js/search.js:1336 +msgid "less or equal than" +msgstr "manje ili jednako" + +#: addons/web/static/src/js/search.js:1325 +#: addons/web/static/src/js/search.js:1350 +msgid "is" +msgstr "je" + +#: addons/web/static/src/js/search.js:1351 +msgid "is not" +msgstr "nije" + +#: addons/web/static/src/js/search.js:1364 +msgid "is true" +msgstr "je istina" + +#: addons/web/static/src/js/search.js:1365 +msgid "is false" +msgstr "je laž" + +#: addons/web/static/src/js/view_editor.js:42 +msgid "ViewEditor" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:46 +#: addons/web/static/src/js/view_list.js:17 +#: addons/web/static/src/xml/base.xml:0 +msgid "Create" +msgstr "Kreiraj" + +#: addons/web/static/src/js/view_editor.js:47 +#: addons/web/static/src/xml/base.xml:0 +msgid "Edit" +msgstr "Uredi" + +#: addons/web/static/src/js/view_editor.js:48 +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove" +msgstr "Ukloni" + +#: addons/web/static/src/js/view_editor.js:71 +#, python-format +msgid "Create a view (%s)" +msgstr "Kreiranje pogleda (%s)" + +#: addons/web/static/src/js/view_editor.js:170 +msgid "Do you really want to remove this view?" +msgstr "Želite ukloniti ovaj pogled?" + +#: addons/web/static/src/js/view_editor.js:367 +#, python-format +msgid "View Editor %d - %s" +msgstr "Uređivač pogleda %d - %s" + +#: addons/web/static/src/js/view_editor.js:371 +msgid "Preview" +msgstr "Prikaz" + +#: addons/web/static/src/js/view_editor.js:442 +msgid "Do you really want to remove this node?" +msgstr "Da li zaista želite obrisati ovaj čvor?" + +#: addons/web/static/src/js/view_editor.js:756 +#: addons/web/static/src/js/view_editor.js:883 +msgid "Properties" +msgstr "Svojstva" + +#: addons/web/static/src/js/view_editor.js:760 +#: addons/web/static/src/js/view_editor.js:887 +msgid "Update" +msgstr "Ažuriraj" + +#: addons/web/static/src/js/view_form.js:17 +msgid "Form" +msgstr "Forma" + +#: addons/web/static/src/js/view_form.js:401 +msgid "" +"Warning, the record has been modified, your changes will be discarded." +msgstr "Upozorenje, zapis je promjenjen. Promjene se neće zapisati." + +#: addons/web/static/src/js/view_form.js:612 +msgid "Attachments" +msgstr "Privici" + +#: addons/web/static/src/js/view_form.js:650 +#, python-format +msgid "Do you really want to delete the attachment %s?" +msgstr "Obrisati privitak %s?" + +#: addons/web/static/src/js/view_form.js:1075 +msgid "Confirm" +msgstr "Potvrdi" + +#: addons/web/static/src/js/view_form.js:1838 +msgid "   Search More..." +msgstr "   Traži dalje..." + +#: addons/web/static/src/js/view_form.js:1851 +#, python-format +msgid "   Create \"%s\"" +msgstr "   Kreiraj \"%s\"" + +#: addons/web/static/src/js/view_form.js:1857 +msgid "   Create and Edit..." +msgstr "   Kreiraj i uredi..." + +#: addons/web/static/src/js/view_form.js:2404 +#: addons/web/static/src/xml/base.xml:0 +msgid "Add" +msgstr "Dodaj" + +#: addons/web/static/src/js/view_list.js:8 +msgid "List" +msgstr "Lista" + +#: addons/web/static/src/js/view_list.js:269 +msgid "Unlimited" +msgstr "Neograničen" + +#: addons/web/static/src/js/view_list.js:516 +msgid "Do you really want to remove these records?" +msgstr "Zaista želite obrisati ove zapise?" + +#: addons/web/static/src/js/view_list.js:1202 +msgid "Undefined" +msgstr "Nedefiniran" + +#: addons/web/static/src/js/view_page.js:8 +msgid "Page" +msgstr "Stranica" + +#: addons/web/static/src/js/view_page.js:52 +msgid "Do you really want to delete this record?" +msgstr "Da li zaista želite obrisati ovaj zapis?" + +#: addons/web/static/src/js/view_page.js:227 +msgid "Download" +msgstr "Preuzimanje" + +#: addons/web/static/src/js/view_tree.js:11 +msgid "Tree" +msgstr "Stablo" + +#: addons/web/static/src/js/views.js:590 +msgid "Search: " +msgstr "Traži: " + +#: addons/web/static/src/js/views.js:710 +msgid "Customize" +msgstr "Prilagodi" + +#: addons/web/static/src/js/views.js:713 +msgid "Manage Views" +msgstr "Upravljanje pogledima" + +#: addons/web/static/src/js/views.js:715 addons/web/static/src/js/views.js:719 +#: addons/web/static/src/js/views.js:724 +msgid "Manage views of the current object" +msgstr "Pogledi trenutnog objekta" + +#: addons/web/static/src/js/views.js:717 +msgid "Edit Workflow" +msgstr "Uredi tijek rada" + +#: addons/web/static/src/js/views.js:722 +msgid "Customize Object" +msgstr "Prilagodi objekt" + +#: addons/web/static/src/js/views.js:726 +msgid "Translate" +msgstr "Prevedi" + +#: addons/web/static/src/js/views.js:728 +msgid "Technical translation" +msgstr "Tehnički prijevod" + +#: addons/web/static/src/js/views.js:733 +msgid "Other Options" +msgstr "Ostale postavke" + +#: addons/web/static/src/js/views.js:736 addons/web/static/src/xml/base.xml:0 +msgid "Import" +msgstr "Uvoz" + +#: addons/web/static/src/js/views.js:739 addons/web/static/src/xml/base.xml:0 +msgid "Export" +msgstr "Izvoz" + +#: addons/web/static/src/js/views.js:742 +msgid "View Log" +msgstr "Prikaži zapisnik" + +#: addons/web/static/src/js/views.js:751 +msgid "Reports" +msgstr "Izvještaji" + +#: addons/web/static/src/js/views.js:751 +msgid "Actions" +msgstr "Akcije" + +#: addons/web/static/src/js/views.js:751 +msgid "Links" +msgstr "Poveznice" + +#: addons/web/static/src/js/views.js:831 +msgid "You must choose at least one record." +msgstr "Odaberite barem jedan zapis." + +#: addons/web/static/src/js/views.js:832 +msgid "Warning" +msgstr "Upozorenje" + +#: addons/web/static/src/js/views.js:866 +msgid "Translations" +msgstr "Prijevodi" + +#: addons/web/static/src/xml/base.xml:0 +msgid "x" +msgstr "x" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#{title}" +msgstr "#{title}" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#{text}" +msgstr "#{text}" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Powered by" +msgstr "Powered by" + +#: addons/web/static/src/xml/base.xml:0 +msgid "openerp.com" +msgstr "openerp.com" + +#: addons/web/static/src/xml/base.xml:0 +msgid "." +msgstr "." + +#: addons/web/static/src/xml/base.xml:0 +msgid "Loading..." +msgstr "Učitavanje..." + +#: addons/web/static/src/xml/base.xml:0 +msgid "Drop" +msgstr "Obriši" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Backup" +msgstr "Arhiviranje/Backup" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Restore" +msgstr "Obnovi" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Password" +msgstr "Zaporka" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Back to Login" +msgstr "Nazad na prijavu" + +#: addons/web/static/src/xml/base.xml:0 +msgid "CREATE DATABASE" +msgstr "Nova baza podataka" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Master password:" +msgstr "Glavna zaporka" + +#: addons/web/static/src/xml/base.xml:0 +msgid "New database name:" +msgstr "Naziv nove baze podataka:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Load Demonstration data:" +msgstr "Učitaj demonstracijske podatke:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Default language:" +msgstr "Zadani jezik:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Admin password:" +msgstr "Lozinka administratora" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Confirm password:" +msgstr "Potvrda lozinke:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "DROP DATABASE" +msgstr "Briši bazu podataka" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Database:" +msgstr "Baza podataka:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Master Password:" +msgstr "Glavna lozinka" + +#: addons/web/static/src/xml/base.xml:0 +msgid "BACKUP DATABASE" +msgstr "Backup baze podataka" + +#: addons/web/static/src/xml/base.xml:0 +msgid "RESTORE DATABASE" +msgstr "Obnovi bazu podatka (restore)" + +#: addons/web/static/src/xml/base.xml:0 +msgid "File:" +msgstr "Datoteka:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "CHANGE MASTER PASSWORD" +msgstr "Promjeni glavnu zaporku" + +#: addons/web/static/src/xml/base.xml:0 +msgid "New master password:" +msgstr "Nova glavna zaporka:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Confirm new master password:" +msgstr "Potvrdi glavnu zaporku:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "User:" +msgstr "Korisnik:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Password:" +msgstr "Zaporka:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Database" +msgstr "Baza podataka" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Login" +msgstr "Korisničko ime" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Bad username or password" +msgstr "Neispravno korisničko ime ili lozinka" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"We think that daily job activities can be more intuitive, efficient, " +"automated, .. and even fun." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP's vision to be:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Full featured" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"Today's enterprise challenges are multiple. We provide one module for each " +"need." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Open Source" +msgstr "Otvorenog koda" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"To Build a great product, we rely on the knowledge of thousands of " +"contributors." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "User Friendly" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"In order to be productive, people need clean and easy to use interface." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(" +msgstr "(" + +#: addons/web/static/src/xml/base.xml:0 +msgid ")" +msgstr ")" + +#: addons/web/static/src/xml/base.xml:0 +msgid "LOGOUT" +msgstr "ODJAVA" + +#: addons/web/static/src/xml/base.xml:0 +msgid "«" +msgstr "«" + +#: addons/web/static/src/xml/base.xml:0 +msgid "»" +msgstr "»" + +#: addons/web/static/src/xml/base.xml:0 +msgid "oe_secondary_menu_item" +msgstr "oe_secondary_menu_item" + +#: addons/web/static/src/xml/base.xml:0 +msgid "oe_secondary_submenu_item" +msgstr "oe_secondary_submenu_item" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Hide this tip" +msgstr "Sakrij savjet" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Disable all tips" +msgstr "Sakrij sve savjete" + +#: addons/web/static/src/xml/base.xml:0 +msgid "More…" +msgstr "Više..." + +#: addons/web/static/src/xml/base.xml:0 +msgid "Debug View#" +msgstr "Debug pogled#" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Fields View Get" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit" +msgstr "- Uredi" + +#: addons/web/static/src/xml/base.xml:0 +msgid "View" +msgstr "Pogled" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit SearchView" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit Action" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Field" +msgstr "Polje" + +#: addons/web/static/src/xml/base.xml:0 +msgid ":" +msgstr ":" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Delete" +msgstr "Obriši" + +#: addons/web/static/src/xml/base.xml:0 +msgid "0" +msgstr "0" + +#: addons/web/static/src/xml/base.xml:0 +msgid "/" +msgstr "/" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Duplicate" +msgstr "Dupliciraj" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Unhandled widget" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Notebook Page \"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "\"" +msgstr "\"" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Modifiers:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "?" +msgstr "?" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(nolabel)" +msgstr "(bezlabele)" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Field:" +msgstr "Polje:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Object:" +msgstr "Objekt:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Type:" +msgstr "Tip:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Widget:" +msgstr "Widget:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Size:" +msgstr "Veličina" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Context:" +msgstr "Kontekst:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Domain:" +msgstr "Domena:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "On change:" +msgstr "On change:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Relation:" +msgstr "Relacija:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Selection:" +msgstr "Odabir:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "[" +msgstr "[" + +#: addons/web/static/src/xml/base.xml:0 +msgid "]" +msgstr "]" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-" +msgstr "-" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#" +msgstr "#" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Open..." +msgstr "Otvori…" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Create..." +msgstr "Kreiraj..." + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search..." +msgstr "Traži…" + +#: addons/web/static/src/xml/base.xml:0 +msgid "..." +msgstr "..." + +#: addons/web/static/src/xml/base.xml:0 +msgid "Uploading ..." +msgstr "Učitavanje..." + +#: addons/web/static/src/xml/base.xml:0 +msgid "Select" +msgstr "Odaberi" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save As" +msgstr "Spremi kao" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Clear" +msgstr "Očisti" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Button" +msgstr "Gumb" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(no string)" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Special:" +msgstr "Posebno:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Button Type:" +msgstr "Vrsta gumba:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Method:" +msgstr "Metoda:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Action ID:" +msgstr "Action ID:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search" +msgstr "Traži" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filter" +msgstr "Napredni filter" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save Filter" +msgstr "Spremi filter" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Manage Filters" +msgstr "Uredi filtere" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Filter Name:" +msgstr "Naziv" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(Any existing filter with the same name will be replaced)" +msgstr "(Zamjenit će postojeći filter istog naziva)" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Select Dashboard to add this filter to:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Title of new Dashboard item:" +msgstr "Naslov novog prikaza" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filters" +msgstr "Napredni filteri" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Any of the following conditions must match" +msgstr "Barem jedan od uvjeta zadovoljava" + +#: addons/web/static/src/xml/base.xml:0 +msgid "All the following conditions must match" +msgstr "Svi uvjeti zadovoljavaju" + +#: addons/web/static/src/xml/base.xml:0 +msgid "None of the following conditions must match" +msgstr "Niti jedan od uvjeta zadovoljava" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Add condition" +msgstr "Dodaj uvjet" + +#: addons/web/static/src/xml/base.xml:0 +msgid "and" +msgstr "i" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save & New" +msgstr "Spremi i novi" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save & Close" +msgstr "Snimi i zatvori" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"This wizard will export all data that matches the current search criteria to " +"a CSV file.\n" +" You can export all data or only the fields that can be " +"reimported after modification." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export Type:" +msgstr "Vrsta izvoza:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Import Compatible Export" +msgstr "Izvoz kompatibilan uvozu" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export all Data" +msgstr "Izvoz svih podataka" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export Formats" +msgstr "Formati izvoza" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Available fields" +msgstr "Dostupna polja" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Fields to export" +msgstr "Polja za izvoz" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save fields list" +msgstr "Snimi popis polja" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove All" +msgstr "Ukloni sve" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Name" +msgstr "Naziv" + +#: addons/web/static/src/xml/base.xml:0 +msgid " " +msgstr " " + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save as:" +msgstr "Spremi kao:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Saved exports:" +msgstr "Snimljeni izvozi" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Old Password:" +msgstr "Stara lozinka:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "New Password:" +msgstr "Nova lozinka:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Confirm Password:" +msgstr "Potvrda lozinke:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "1. Import a .CSV file" +msgstr "Uvezi .CSV datoteku" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"Select a .CSV file to import. If you need a sample of file to import,\n" +" you should use the export tool with the \"Import Compatible\" option." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "CSV File:" +msgstr "CSV datoteka:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "2. Check your file format" +msgstr "2. Provjera formata datoteke" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Import Options" +msgstr "Opcije uvoza" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Does your file have titles?" +msgstr "Datoteka ima naslove" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Separator:" +msgstr "Razdjelnik:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Delimiter:" +msgstr "Graničnik:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Encoding:" +msgstr "Kodna stranica:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "UTF-8" +msgstr "UTF-8" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Latin 1" +msgstr "Latin 1" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Lines to skip" +msgstr "Preskočiti linija" + +#: addons/web/static/src/xml/base.xml:0 +msgid "The import failed due to:" +msgstr "Uvoz nije izvršen:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Here is a preview of the file we could not import:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP Web" +msgstr "OpenERP Web" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Version" +msgstr "Verzija" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Copyright © 2011-TODAY OpenERP SA. All Rights Reserved." +msgstr "Copyright © 2011-TODAY OpenERP SA. All Rights Reserved." + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP is a trademark of the" +msgstr "OpenERP is a trademark of the" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP SA Company" +msgstr "OpenERP SA Company" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Licenced under the terms of" +msgstr "Licenced under the terms of" + +#: addons/web/static/src/xml/base.xml:0 +msgid "GNU Affero General Public License" +msgstr "GNU Affero General Public License" + +#: addons/web/static/src/xml/base.xml:0 +msgid "About OpenERP" +msgstr "O OpenERP" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP" +msgstr "OpenERP" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"is a free enterprise-scale software system that is designed to boost\n" +" productivity and profit through data integration. It connects, " +"improves and\n" +" manages business processes in areas such as sales, finance, " +"supply chain,\n" +" project management, production, services, CRM, etc..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"The system is platform-independent, and can be installed on Windows, Mac OS " +"X,\n" +" and various Linux and other Unix-based distributions. Its " +"architecture enables\n" +" new functionality to be rapidly created, modifications to be " +"made to a\n" +" production system and migration to a new version to be " +"straightforward." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"Depending on your needs, OpenERP is available through a web or application " +"client." +msgstr "" diff --git a/addons/web/po/it.po b/addons/web/po/it.po index a3899989d7e..026b5482c13 100644 --- a/addons/web/po/it.po +++ b/addons/web/po/it.po @@ -7,56 +7,401 @@ msgid "" msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2011-10-07 10:38+0200\n" +"POT-Creation-Date: 2011-12-20 18:48+0100\n" "PO-Revision-Date: 2011-10-08 13:39+0000\n" "Last-Translator: Nicola Riolini - Micronaet \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n" -"X-Generator: Launchpad (build 14299)\n" +"X-Launchpad-Export-Date: 2011-12-21 05:27+0000\n" +"X-Generator: Launchpad (build 14538)\n" -#: addons/web/static/src/js/view_form.js:355 +#: addons/web/static/src/js/chrome.js:162 +#: addons/web/static/src/js/chrome.js:175 +#: addons/web/static/src/js/chrome.js:369 +#: addons/web/static/src/js/view_form.js:358 +#: addons/web/static/src/js/view_form.js:1078 +#: addons/web/static/src/xml/base.xml:0 +msgid "Ok" +msgstr "Ok" + +#: addons/web/static/src/js/chrome.js:668 +msgid "About" +msgstr "" + +#: addons/web/static/src/js/chrome.js:748 +msgid "Preferences" +msgstr "" + +#: addons/web/static/src/js/chrome.js:752 +msgid "Change password" +msgstr "" + +#: addons/web/static/src/js/chrome.js:753 +#: addons/web/static/src/js/search.js:235 +#: addons/web/static/src/js/search.js:276 +#: addons/web/static/src/js/view_editor.js:97 +#: addons/web/static/src/js/view_editor.js:778 +#: addons/web/static/src/js/view_editor.js:907 +#: addons/web/static/src/js/view_form.js:1085 +#: addons/web/static/src/xml/base.xml:0 +msgid "Cancel" +msgstr "Annulla" + +#: addons/web/static/src/js/chrome.js:754 +#: addons/web/static/src/js/view_editor.js:75 +#: addons/web/static/src/js/views.js:871 addons/web/static/src/xml/base.xml:0 +msgid "Save" +msgstr "Salva" + +#: addons/web/static/src/js/chrome.js:774 addons/web/static/src/xml/base.xml:0 +msgid "Change Password" +msgstr "" + +#: addons/web/static/src/js/data_export.js:6 +msgid "Export Data" +msgstr "" + +#: addons/web/static/src/js/data_export.js:23 +#: addons/web/static/src/js/data_import.js:73 +#: addons/web/static/src/js/view_editor.js:49 +#: addons/web/static/src/js/view_editor.js:387 +#: addons/web/static/src/js/view_form.js:2775 +#: addons/web/static/src/js/views.js:872 +msgid "Close" +msgstr "Chiudi" + +#: addons/web/static/src/js/data_export.js:24 +msgid "Export To File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:34 +msgid "Import Data" +msgstr "" + +#: addons/web/static/src/js/data_import.js:74 +msgid "Import File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:109 +msgid "External ID" +msgstr "" + +#: addons/web/static/src/js/search.js:233 +msgid "Filter Entry" +msgstr "" + +#: addons/web/static/src/js/search.js:238 +#: addons/web/static/src/js/search.js:279 +msgid "OK" +msgstr "" + +#: addons/web/static/src/js/search.js:274 addons/web/static/src/xml/base.xml:0 +msgid "Add to Dashboard" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "Invalid Search" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "triggered from search view" +msgstr "" + +#: addons/web/static/src/js/search.js:490 +#, python-format +msgid "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s" +msgstr "" + +#: addons/web/static/src/js/search.js:822 +msgid "not a valid integer" +msgstr "" + +#: addons/web/static/src/js/search.js:836 +msgid "not a valid number" +msgstr "" + +#: addons/web/static/src/js/search.js:898 +msgid "Yes" +msgstr "" + +#: addons/web/static/src/js/search.js:899 +msgid "No" +msgstr "" + +#: addons/web/static/src/js/search.js:1252 +msgid "contains" +msgstr "" + +#: addons/web/static/src/js/search.js:1253 +msgid "doesn't contain" +msgstr "" + +#: addons/web/static/src/js/search.js:1254 +#: addons/web/static/src/js/search.js:1269 +#: addons/web/static/src/js/search.js:1289 +#: addons/web/static/src/js/search.js:1309 +#: addons/web/static/src/js/search.js:1331 +msgid "is equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1255 +#: addons/web/static/src/js/search.js:1270 +#: addons/web/static/src/js/search.js:1290 +#: addons/web/static/src/js/search.js:1310 +#: addons/web/static/src/js/search.js:1332 +msgid "is not equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1256 +#: addons/web/static/src/js/search.js:1271 +#: addons/web/static/src/js/search.js:1291 +#: addons/web/static/src/js/search.js:1311 +#: addons/web/static/src/js/search.js:1333 +msgid "greater than" +msgstr "" + +#: addons/web/static/src/js/search.js:1257 +#: addons/web/static/src/js/search.js:1272 +#: addons/web/static/src/js/search.js:1292 +#: addons/web/static/src/js/search.js:1312 +#: addons/web/static/src/js/search.js:1334 +msgid "less than" +msgstr "" + +#: addons/web/static/src/js/search.js:1258 +#: addons/web/static/src/js/search.js:1273 +#: addons/web/static/src/js/search.js:1293 +#: addons/web/static/src/js/search.js:1313 +#: addons/web/static/src/js/search.js:1335 +msgid "greater or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1259 +#: addons/web/static/src/js/search.js:1274 +#: addons/web/static/src/js/search.js:1294 +#: addons/web/static/src/js/search.js:1314 +#: addons/web/static/src/js/search.js:1336 +msgid "less or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1325 +#: addons/web/static/src/js/search.js:1350 +msgid "is" +msgstr "" + +#: addons/web/static/src/js/search.js:1351 +msgid "is not" +msgstr "" + +#: addons/web/static/src/js/search.js:1364 +msgid "is true" +msgstr "" + +#: addons/web/static/src/js/search.js:1365 +msgid "is false" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:42 +msgid "ViewEditor" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:46 +#: addons/web/static/src/js/view_list.js:17 +#: addons/web/static/src/xml/base.xml:0 +msgid "Create" +msgstr "Crea" + +#: addons/web/static/src/js/view_editor.js:47 +#: addons/web/static/src/xml/base.xml:0 +msgid "Edit" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:48 +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove" +msgstr "Rimuovi" + +#: addons/web/static/src/js/view_editor.js:71 +#, python-format +msgid "Create a view (%s)" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:170 +msgid "Do you really want to remove this view?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:367 +#, python-format +msgid "View Editor %d - %s" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:371 +msgid "Preview" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:442 +msgid "Do you really want to remove this node?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:756 +#: addons/web/static/src/js/view_editor.js:883 +msgid "Properties" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:760 +#: addons/web/static/src/js/view_editor.js:887 +msgid "Update" +msgstr "" + +#: addons/web/static/src/js/view_form.js:17 +msgid "Form" +msgstr "" + +#: addons/web/static/src/js/view_form.js:401 msgid "" "Warning, the record has been modified, your changes will be discarded." msgstr "" "Attenzione, il record è stato modificato, i vostri cambiamenti verranno " "scartati." -#: addons/web/static/src/js/view_form.js:1659 +#: addons/web/static/src/js/view_form.js:612 +msgid "Attachments" +msgstr "" + +#: addons/web/static/src/js/view_form.js:650 +#, python-format +msgid "Do you really want to delete the attachment %s?" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1075 +msgid "Confirm" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1838 msgid "   Search More..." msgstr "   Cerca ancora..." -#: addons/web/static/src/js/view_form.js:1672 +#: addons/web/static/src/js/view_form.js:1851 #, python-format msgid "   Create \"%s\"" msgstr "   Crea \"%s\"" -#: addons/web/static/src/js/view_form.js:1678 +#: addons/web/static/src/js/view_form.js:1857 msgid "   Create and Edit..." msgstr "   Crea e modifica..." -#: addons/web/static/src/js/views.js:568 +#: addons/web/static/src/js/view_form.js:2404 +#: addons/web/static/src/xml/base.xml:0 +msgid "Add" +msgstr "Aggiungi" + +#: addons/web/static/src/js/view_list.js:8 +msgid "List" +msgstr "" + +#: addons/web/static/src/js/view_list.js:269 +msgid "Unlimited" +msgstr "" + +#: addons/web/static/src/js/view_list.js:516 +msgid "Do you really want to remove these records?" +msgstr "" + +#: addons/web/static/src/js/view_list.js:1202 +msgid "Undefined" +msgstr "" + +#: addons/web/static/src/js/view_page.js:8 +msgid "Page" +msgstr "" + +#: addons/web/static/src/js/view_page.js:52 +msgid "Do you really want to delete this record?" +msgstr "" + +#: addons/web/static/src/js/view_page.js:227 +msgid "Download" +msgstr "" + +#: addons/web/static/src/js/view_tree.js:11 +msgid "Tree" +msgstr "" + +#: addons/web/static/src/js/views.js:590 +msgid "Search: " +msgstr "" + +#: addons/web/static/src/js/views.js:710 +msgid "Customize" +msgstr "" + +#: addons/web/static/src/js/views.js:713 +msgid "Manage Views" +msgstr "" + +#: addons/web/static/src/js/views.js:715 addons/web/static/src/js/views.js:719 +#: addons/web/static/src/js/views.js:724 +msgid "Manage views of the current object" +msgstr "" + +#: addons/web/static/src/js/views.js:717 +msgid "Edit Workflow" +msgstr "" + +#: addons/web/static/src/js/views.js:722 +msgid "Customize Object" +msgstr "" + +#: addons/web/static/src/js/views.js:726 +msgid "Translate" +msgstr "" + +#: addons/web/static/src/js/views.js:728 +msgid "Technical translation" +msgstr "" + +#: addons/web/static/src/js/views.js:733 +msgid "Other Options" +msgstr "" + +#: addons/web/static/src/js/views.js:736 addons/web/static/src/xml/base.xml:0 +msgid "Import" +msgstr "Importa" + +#: addons/web/static/src/js/views.js:739 addons/web/static/src/xml/base.xml:0 +msgid "Export" +msgstr "Esporta" + +#: addons/web/static/src/js/views.js:742 +msgid "View Log" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Reports" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Actions" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Links" +msgstr "" + +#: addons/web/static/src/js/views.js:831 msgid "You must choose at least one record." msgstr "E' necessario selezionare almeno un record." -#: addons/web/static/src/js/views.js:569 +#: addons/web/static/src/js/views.js:832 msgid "Warning" msgstr "Attenzione" -#: addons/web/static/src/js/views.js:609 +#: addons/web/static/src/js/views.js:866 msgid "Translations" msgstr "Traduzioni" -#: addons/web/static/src/js/views.js:614 addons/web/static/src/xml/base.xml:0 -msgid "Save" -msgstr "Salva" - -#: addons/web/static/src/js/views.js:615 -msgid "Close" -msgstr "Chiudi" - #: addons/web/static/src/xml/base.xml:0 msgid "x" msgstr "x" @@ -85,10 +430,6 @@ msgstr "." msgid "Loading..." msgstr "Caricamento..." -#: addons/web/static/src/xml/base.xml:0 -msgid "Create" -msgstr "Crea" - #: addons/web/static/src/xml/base.xml:0 msgid "Drop" msgstr "Elimina" @@ -277,19 +618,31 @@ msgid "Disable all tips" msgstr "Disabilita tutti i consigli" #: addons/web/static/src/xml/base.xml:0 -msgid "View#" -msgstr "Vista à" +msgid "More…" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Fields" -msgstr "Campi" +msgid "Debug View#" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "View labels" -msgstr "Visualizza etichette" +msgid "- Fields View Get" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Sidebar Relates" +msgid "- Edit" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "View" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit SearchView" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit Action" msgstr "" #: addons/web/static/src/xml/base.xml:0 @@ -300,62 +653,10 @@ msgstr "Campo" msgid ":" msgstr ":" -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate view" -msgstr "Traduci vista" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate sidebar" -msgstr "Traduci barra laterale" - #: addons/web/static/src/xml/base.xml:0 msgid "Delete" msgstr "Elimina" -#: addons/web/static/src/xml/base.xml:0 -msgid "First" -msgstr "Primo" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<" -msgstr "<" - -#: addons/web/static/src/xml/base.xml:0 -msgid ">" -msgstr ">" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Last" -msgstr "Ultimo" - -#: addons/web/static/src/xml/base.xml:0 -msgid "♻" -msgstr "♻" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Save & Edit" -msgstr "Salva & Modifica" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Create & Edit" -msgstr "Crea & Modifica" - -#: addons/web/static/src/xml/base.xml:0 -msgid "New" -msgstr "Nuovo" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Duplicate" -msgstr "Duplica" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Readonly/Editable" -msgstr "Sola lettura / Modificabile" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<<" -msgstr "<<" - #: addons/web/static/src/xml/base.xml:0 msgid "0" msgstr "0" @@ -365,28 +666,88 @@ msgid "/" msgstr "/" #: addons/web/static/src/xml/base.xml:0 -msgid ">>" -msgstr ">>" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Add" -msgstr "Aggiungi" +msgid "Duplicate" +msgstr "Duplica" #: addons/web/static/src/xml/base.xml:0 msgid "Unhandled widget" msgstr "" +#: addons/web/static/src/xml/base.xml:0 +msgid "Notebook Page \"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "\"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Modifiers:" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "?" msgstr "?" #: addons/web/static/src/xml/base.xml:0 -msgid "#" -msgstr "#" +msgid "(nolabel)" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Done" -msgstr "Completato" +msgid "Field:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Object:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Widget:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Size:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Context:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Domain:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "On change:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Relation:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Selection:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "[" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "]" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#" +msgstr "#" #: addons/web/static/src/xml/base.xml:0 msgid "Open..." @@ -420,18 +781,38 @@ msgstr "Salva come" msgid "Clear" msgstr "Pulisci" +#: addons/web/static/src/xml/base.xml:0 +msgid "Button" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(no string)" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Special:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Button Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Method:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Action ID:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Advanced Filter" msgstr "Filtro avanzato" -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Filters --" -msgstr "-- Filtri --" - -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Actions --" -msgstr "-- Azioni --" - #: addons/web/static/src/xml/base.xml:0 msgid "Save Filter" msgstr "Salva Filtro" @@ -448,6 +829,18 @@ msgstr "Nome filtro:" msgid "(Any existing filter with the same name will be replaced)" msgstr "(Eventuali filtri esistenti con lo stesso nome saranno rimpiazzati)" +#: addons/web/static/src/xml/base.xml:0 +msgid "Select Dashboard to add this filter to:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Title of new Dashboard item:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filters" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Any of the following conditions must match" msgstr "" @@ -468,10 +861,6 @@ msgstr "Aggiungi condizione" msgid "and" msgstr "e" -#: addons/web/static/src/xml/base.xml:0 -msgid "Cancel" -msgstr "Annulla" - #: addons/web/static/src/xml/base.xml:0 msgid "Save & New" msgstr "Salva & Nuovo" @@ -480,10 +869,6 @@ msgstr "Salva & Nuovo" msgid "Save & Close" msgstr "Salva & Chiudi" -#: addons/web/static/src/xml/base.xml:0 -msgid "Export" -msgstr "Esporta" - #: addons/web/static/src/xml/base.xml:0 msgid "" "This wizard will export all data that matches the current search criteria to " @@ -520,10 +905,6 @@ msgstr "Campi da esportare" msgid "Save fields list" msgstr "Salva l'elenco dei campi" -#: addons/web/static/src/xml/base.xml:0 -msgid "Remove" -msgstr "Rimuovi" - #: addons/web/static/src/xml/base.xml:0 msgid "Remove All" msgstr "Rimuovi tutto" @@ -540,10 +921,6 @@ msgstr " " msgid "Save as:" msgstr "Salva come:" -#: addons/web/static/src/xml/base.xml:0 -msgid "Ok" -msgstr "Ok" - #: addons/web/static/src/xml/base.xml:0 msgid "Saved exports:" msgstr "Esportazioni salvate:" @@ -560,10 +937,6 @@ msgstr "Nuova password:" msgid "Confirm Password:" msgstr "Conferma password:" -#: addons/web/static/src/xml/base.xml:0 -msgid "Import" -msgstr "Importa" - #: addons/web/static/src/xml/base.xml:0 msgid "1. Import a .CSV file" msgstr "1. Importa un file .CSV" diff --git a/addons/web/po/nl.po b/addons/web/po/nl.po new file mode 100644 index 00000000000..8bea65d0687 --- /dev/null +++ b/addons/web/po/nl.po @@ -0,0 +1,1082 @@ +# Dutch translation for openerp-web +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the openerp-web package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: openerp-web\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2011-12-20 18:48+0100\n" +"PO-Revision-Date: 2011-12-06 11:39+0000\n" +"Last-Translator: Douwe Wullink (Dypalio) \n" +"Language-Team: Dutch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-12-21 05:27+0000\n" +"X-Generator: Launchpad (build 14538)\n" + +#: addons/web/static/src/js/chrome.js:162 +#: addons/web/static/src/js/chrome.js:175 +#: addons/web/static/src/js/chrome.js:369 +#: addons/web/static/src/js/view_form.js:358 +#: addons/web/static/src/js/view_form.js:1078 +#: addons/web/static/src/xml/base.xml:0 +msgid "Ok" +msgstr "Ok" + +#: addons/web/static/src/js/chrome.js:668 +msgid "About" +msgstr "" + +#: addons/web/static/src/js/chrome.js:748 +msgid "Preferences" +msgstr "" + +#: addons/web/static/src/js/chrome.js:752 +msgid "Change password" +msgstr "" + +#: addons/web/static/src/js/chrome.js:753 +#: addons/web/static/src/js/search.js:235 +#: addons/web/static/src/js/search.js:276 +#: addons/web/static/src/js/view_editor.js:97 +#: addons/web/static/src/js/view_editor.js:778 +#: addons/web/static/src/js/view_editor.js:907 +#: addons/web/static/src/js/view_form.js:1085 +#: addons/web/static/src/xml/base.xml:0 +msgid "Cancel" +msgstr "Annuleren" + +#: addons/web/static/src/js/chrome.js:754 +#: addons/web/static/src/js/view_editor.js:75 +#: addons/web/static/src/js/views.js:871 addons/web/static/src/xml/base.xml:0 +msgid "Save" +msgstr "Opslaan" + +#: addons/web/static/src/js/chrome.js:774 addons/web/static/src/xml/base.xml:0 +msgid "Change Password" +msgstr "" + +#: addons/web/static/src/js/data_export.js:6 +msgid "Export Data" +msgstr "" + +#: addons/web/static/src/js/data_export.js:23 +#: addons/web/static/src/js/data_import.js:73 +#: addons/web/static/src/js/view_editor.js:49 +#: addons/web/static/src/js/view_editor.js:387 +#: addons/web/static/src/js/view_form.js:2775 +#: addons/web/static/src/js/views.js:872 +msgid "Close" +msgstr "Sluiten" + +#: addons/web/static/src/js/data_export.js:24 +msgid "Export To File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:34 +msgid "Import Data" +msgstr "" + +#: addons/web/static/src/js/data_import.js:74 +msgid "Import File" +msgstr "Bestand importeren" + +#: addons/web/static/src/js/data_import.js:109 +msgid "External ID" +msgstr "Externe ID" + +#: addons/web/static/src/js/search.js:233 +msgid "Filter Entry" +msgstr "Filter regel" + +#: addons/web/static/src/js/search.js:238 +#: addons/web/static/src/js/search.js:279 +msgid "OK" +msgstr "OK" + +#: addons/web/static/src/js/search.js:274 addons/web/static/src/xml/base.xml:0 +msgid "Add to Dashboard" +msgstr "Aan dashboard toevoegen" + +#: addons/web/static/src/js/search.js:403 +msgid "Invalid Search" +msgstr "Ongeldige zoekopdracht" + +#: addons/web/static/src/js/search.js:403 +msgid "triggered from search view" +msgstr "" + +#: addons/web/static/src/js/search.js:490 +#, python-format +msgid "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s" +msgstr "Onjuiste waarde bij veld %(fieldname)s: [%(value)s] is %(message)s" + +#: addons/web/static/src/js/search.js:822 +msgid "not a valid integer" +msgstr "geen geldig geheel getal" + +#: addons/web/static/src/js/search.js:836 +msgid "not a valid number" +msgstr "geen geldig getal" + +#: addons/web/static/src/js/search.js:898 +msgid "Yes" +msgstr "" + +#: addons/web/static/src/js/search.js:899 +msgid "No" +msgstr "" + +#: addons/web/static/src/js/search.js:1252 +msgid "contains" +msgstr "bevat" + +#: addons/web/static/src/js/search.js:1253 +msgid "doesn't contain" +msgstr "bevat niet" + +#: addons/web/static/src/js/search.js:1254 +#: addons/web/static/src/js/search.js:1269 +#: addons/web/static/src/js/search.js:1289 +#: addons/web/static/src/js/search.js:1309 +#: addons/web/static/src/js/search.js:1331 +msgid "is equal to" +msgstr "is gelijk aan" + +#: addons/web/static/src/js/search.js:1255 +#: addons/web/static/src/js/search.js:1270 +#: addons/web/static/src/js/search.js:1290 +#: addons/web/static/src/js/search.js:1310 +#: addons/web/static/src/js/search.js:1332 +msgid "is not equal to" +msgstr "is niet gelijk aan" + +#: addons/web/static/src/js/search.js:1256 +#: addons/web/static/src/js/search.js:1271 +#: addons/web/static/src/js/search.js:1291 +#: addons/web/static/src/js/search.js:1311 +#: addons/web/static/src/js/search.js:1333 +msgid "greater than" +msgstr "is groter dan" + +#: addons/web/static/src/js/search.js:1257 +#: addons/web/static/src/js/search.js:1272 +#: addons/web/static/src/js/search.js:1292 +#: addons/web/static/src/js/search.js:1312 +#: addons/web/static/src/js/search.js:1334 +msgid "less than" +msgstr "kleiner dan" + +#: addons/web/static/src/js/search.js:1258 +#: addons/web/static/src/js/search.js:1273 +#: addons/web/static/src/js/search.js:1293 +#: addons/web/static/src/js/search.js:1313 +#: addons/web/static/src/js/search.js:1335 +msgid "greater or equal than" +msgstr "is groter of gelijk aan" + +#: addons/web/static/src/js/search.js:1259 +#: addons/web/static/src/js/search.js:1274 +#: addons/web/static/src/js/search.js:1294 +#: addons/web/static/src/js/search.js:1314 +#: addons/web/static/src/js/search.js:1336 +msgid "less or equal than" +msgstr "is kleiner of gelijk aan" + +#: addons/web/static/src/js/search.js:1325 +#: addons/web/static/src/js/search.js:1350 +msgid "is" +msgstr "is" + +#: addons/web/static/src/js/search.js:1351 +msgid "is not" +msgstr "is niet" + +#: addons/web/static/src/js/search.js:1364 +msgid "is true" +msgstr "is waar" + +#: addons/web/static/src/js/search.js:1365 +msgid "is false" +msgstr "is onwaar" + +#: addons/web/static/src/js/view_editor.js:42 +msgid "ViewEditor" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:46 +#: addons/web/static/src/js/view_list.js:17 +#: addons/web/static/src/xml/base.xml:0 +msgid "Create" +msgstr "Maken" + +#: addons/web/static/src/js/view_editor.js:47 +#: addons/web/static/src/xml/base.xml:0 +msgid "Edit" +msgstr "Wijzigen" + +#: addons/web/static/src/js/view_editor.js:48 +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove" +msgstr "Verwijderen" + +#: addons/web/static/src/js/view_editor.js:71 +#, python-format +msgid "Create a view (%s)" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:170 +msgid "Do you really want to remove this view?" +msgstr "Wilt u deze weergave werkelijk verwijderen?" + +#: addons/web/static/src/js/view_editor.js:367 +#, python-format +msgid "View Editor %d - %s" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:371 +msgid "Preview" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:442 +msgid "Do you really want to remove this node?" +msgstr "Wilt u dit knooppunt werkelijk verwijderen?" + +#: addons/web/static/src/js/view_editor.js:756 +#: addons/web/static/src/js/view_editor.js:883 +msgid "Properties" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:760 +#: addons/web/static/src/js/view_editor.js:887 +msgid "Update" +msgstr "" + +#: addons/web/static/src/js/view_form.js:17 +msgid "Form" +msgstr "" + +#: addons/web/static/src/js/view_form.js:401 +msgid "" +"Warning, the record has been modified, your changes will be discarded." +msgstr "Letop: het record is gewijzigd; uw wijzigingen gaan verloren." + +#: addons/web/static/src/js/view_form.js:612 +msgid "Attachments" +msgstr "Bijlages" + +#: addons/web/static/src/js/view_form.js:650 +#, python-format +msgid "Do you really want to delete the attachment %s?" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1075 +msgid "Confirm" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1838 +msgid "   Search More..." +msgstr "   Zoek verder..." + +#: addons/web/static/src/js/view_form.js:1851 +#, python-format +msgid "   Create \"%s\"" +msgstr "   Maak \"%s\"" + +#: addons/web/static/src/js/view_form.js:1857 +msgid "   Create and Edit..." +msgstr "   Maak en wijzig..." + +#: addons/web/static/src/js/view_form.js:2404 +#: addons/web/static/src/xml/base.xml:0 +msgid "Add" +msgstr "Toevoegen" + +#: addons/web/static/src/js/view_list.js:8 +msgid "List" +msgstr "" + +#: addons/web/static/src/js/view_list.js:269 +msgid "Unlimited" +msgstr "Onbeperkt" + +#: addons/web/static/src/js/view_list.js:516 +msgid "Do you really want to remove these records?" +msgstr "Wilt u deze records werkelijk verwijderen?" + +#: addons/web/static/src/js/view_list.js:1202 +msgid "Undefined" +msgstr "Onbepaald" + +#: addons/web/static/src/js/view_page.js:8 +msgid "Page" +msgstr "" + +#: addons/web/static/src/js/view_page.js:52 +msgid "Do you really want to delete this record?" +msgstr "Wilt u dit record werkelijk verwijderen?" + +#: addons/web/static/src/js/view_page.js:227 +msgid "Download" +msgstr "" + +#: addons/web/static/src/js/view_tree.js:11 +msgid "Tree" +msgstr "" + +#: addons/web/static/src/js/views.js:590 +msgid "Search: " +msgstr "Zoeken: " + +#: addons/web/static/src/js/views.js:710 +msgid "Customize" +msgstr "Aanpassen" + +#: addons/web/static/src/js/views.js:713 +msgid "Manage Views" +msgstr "Weergaven beheren" + +#: addons/web/static/src/js/views.js:715 addons/web/static/src/js/views.js:719 +#: addons/web/static/src/js/views.js:724 +msgid "Manage views of the current object" +msgstr "Weergaven van huidig object beheren" + +#: addons/web/static/src/js/views.js:717 +msgid "Edit Workflow" +msgstr "Workflow wijzigen" + +#: addons/web/static/src/js/views.js:722 +msgid "Customize Object" +msgstr "Object aanpassen" + +#: addons/web/static/src/js/views.js:726 +msgid "Translate" +msgstr "Vertalen" + +#: addons/web/static/src/js/views.js:728 +msgid "Technical translation" +msgstr "Technische vertaling" + +#: addons/web/static/src/js/views.js:733 +msgid "Other Options" +msgstr "Overige opties" + +#: addons/web/static/src/js/views.js:736 addons/web/static/src/xml/base.xml:0 +msgid "Import" +msgstr "Importeren" + +#: addons/web/static/src/js/views.js:739 addons/web/static/src/xml/base.xml:0 +msgid "Export" +msgstr "Exporteren" + +#: addons/web/static/src/js/views.js:742 +msgid "View Log" +msgstr "Log bekijken" + +#: addons/web/static/src/js/views.js:751 +msgid "Reports" +msgstr "Overzichten" + +#: addons/web/static/src/js/views.js:751 +msgid "Actions" +msgstr "Acties" + +#: addons/web/static/src/js/views.js:751 +msgid "Links" +msgstr "Verwijzingen" + +#: addons/web/static/src/js/views.js:831 +msgid "You must choose at least one record." +msgstr "U moet tenminste één record kiezen." + +#: addons/web/static/src/js/views.js:832 +msgid "Warning" +msgstr "Waarschuwing" + +#: addons/web/static/src/js/views.js:866 +msgid "Translations" +msgstr "Vertalingen" + +#: addons/web/static/src/xml/base.xml:0 +msgid "x" +msgstr "x" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#{title}" +msgstr "#{title}" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#{text}" +msgstr "#{text}" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Powered by" +msgstr "Powered by" + +#: addons/web/static/src/xml/base.xml:0 +msgid "openerp.com" +msgstr "openerp.com" + +#: addons/web/static/src/xml/base.xml:0 +msgid "." +msgstr "." + +#: addons/web/static/src/xml/base.xml:0 +msgid "Loading..." +msgstr "Laden..." + +#: addons/web/static/src/xml/base.xml:0 +msgid "Drop" +msgstr "Verwijderen" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Backup" +msgstr "Backup" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Restore" +msgstr "Terugzetten" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Password" +msgstr "Wachtwoord" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Back to Login" +msgstr "Terug naar aanmelding" + +#: addons/web/static/src/xml/base.xml:0 +msgid "CREATE DATABASE" +msgstr "DATABASE MAKEN" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Master password:" +msgstr "Master wachtwoord:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "New database name:" +msgstr "Naam nieuwe database:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Load Demonstration data:" +msgstr "Demonstratiegegevens laden:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Default language:" +msgstr "Standaardtaal:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Admin password:" +msgstr "Admin wachtwoord:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Confirm password:" +msgstr "Bevestig wachtwoord:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "DROP DATABASE" +msgstr "DATABASE VERWIJDEREN" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Database:" +msgstr "Database:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Master Password:" +msgstr "Master wachtwoord:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "BACKUP DATABASE" +msgstr "DATABASE BACKUP" + +#: addons/web/static/src/xml/base.xml:0 +msgid "RESTORE DATABASE" +msgstr "DATABASE TERUGZETTEN" + +#: addons/web/static/src/xml/base.xml:0 +msgid "File:" +msgstr "Bestand:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "CHANGE MASTER PASSWORD" +msgstr "MASTER WACHTWOORD WIJZIGEN" + +#: addons/web/static/src/xml/base.xml:0 +msgid "New master password:" +msgstr "Nieuw master wachtwoord:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Confirm new master password:" +msgstr "Bevestig nieuw master wachtwoord:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "User:" +msgstr "Gebruiker:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Password:" +msgstr "Wachtwoord:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Database" +msgstr "Database" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Login" +msgstr "Aanmelden" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Bad username or password" +msgstr "Verkeerde gebruikersnaam of wachtwoord" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"We think that daily job activities can be more intuitive, efficient, " +"automated, .. and even fun." +msgstr "" +"Wij denken dat dagelijks werk intuïtiever, efficiënter, automatischer kan " +"zijn, ...en zelfs leuk." + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP's vision to be:" +msgstr "OpenERP's visie is:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Full featured" +msgstr "Uitgebreide functionaliteit" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"Today's enterprise challenges are multiple. We provide one module for each " +"need." +msgstr "" +"Bedrijven kennen vandaag de dag veel uitdagingen. We hebben een module voor " +"elke behoefte." + +#: addons/web/static/src/xml/base.xml:0 +msgid "Open Source" +msgstr "Open Source" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"To Build a great product, we rely on the knowledge of thousands of " +"contributors." +msgstr "" +"Om een prima product te bouwen, rekenen we op de kennis van duizenden " +"bijdragers." + +#: addons/web/static/src/xml/base.xml:0 +msgid "User Friendly" +msgstr "Gebruikersvriendelijk" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"In order to be productive, people need clean and easy to use interface." +msgstr "" +"Om productief te zijn hebben mensen een net en simpel gebruikersinterface " +"nodig." + +#: addons/web/static/src/xml/base.xml:0 +msgid "(" +msgstr "(" + +#: addons/web/static/src/xml/base.xml:0 +msgid ")" +msgstr ")" + +#: addons/web/static/src/xml/base.xml:0 +msgid "LOGOUT" +msgstr "AFMELDEN" + +#: addons/web/static/src/xml/base.xml:0 +msgid "«" +msgstr "«" + +#: addons/web/static/src/xml/base.xml:0 +msgid "»" +msgstr "»" + +#: addons/web/static/src/xml/base.xml:0 +msgid "oe_secondary_menu_item" +msgstr "oe_secondary_menu_item" + +#: addons/web/static/src/xml/base.xml:0 +msgid "oe_secondary_submenu_item" +msgstr "oe_secondary_submenu_item" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Hide this tip" +msgstr "Verberg deze tip" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Disable all tips" +msgstr "Alle tips uitzetten" + +#: addons/web/static/src/xml/base.xml:0 +msgid "More…" +msgstr "Meer..." + +#: addons/web/static/src/xml/base.xml:0 +msgid "Debug View#" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Fields View Get" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "View" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit SearchView" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit Action" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Field" +msgstr "Veld" + +#: addons/web/static/src/xml/base.xml:0 +msgid ":" +msgstr ":" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Delete" +msgstr "Verwijderen" + +#: addons/web/static/src/xml/base.xml:0 +msgid "0" +msgstr "0" + +#: addons/web/static/src/xml/base.xml:0 +msgid "/" +msgstr "/" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Duplicate" +msgstr "Dupliceren" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Unhandled widget" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Notebook Page \"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "\"" +msgstr "\"" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Modifiers:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "?" +msgstr "?" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(nolabel)" +msgstr "(nolabel)" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Field:" +msgstr "Veld:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Object:" +msgstr "Object:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Type:" +msgstr "Soort:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Widget:" +msgstr "Widget:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Size:" +msgstr "Grootte:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Context:" +msgstr "Context:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Domain:" +msgstr "Domein:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "On change:" +msgstr "On change:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Relation:" +msgstr "Relatie:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Selection:" +msgstr "Selectie:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "[" +msgstr "[" + +#: addons/web/static/src/xml/base.xml:0 +msgid "]" +msgstr "]" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-" +msgstr "-" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#" +msgstr "#" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Open..." +msgstr "Openen..." + +#: addons/web/static/src/xml/base.xml:0 +msgid "Create..." +msgstr "Aanmaken…" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search..." +msgstr "Zoeken…" + +#: addons/web/static/src/xml/base.xml:0 +msgid "..." +msgstr "..." + +#: addons/web/static/src/xml/base.xml:0 +msgid "Uploading ..." +msgstr "Uploaden ..." + +#: addons/web/static/src/xml/base.xml:0 +msgid "Select" +msgstr "Selecteren" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save As" +msgstr "Opslaan als" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Clear" +msgstr "Wissen" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Button" +msgstr "Button" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(no string)" +msgstr "(no string)" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Special:" +msgstr "Special:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Button Type:" +msgstr "Button Type:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Method:" +msgstr "Method:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Action ID:" +msgstr "Action ID:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filter" +msgstr "Geavanceerd filter" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save Filter" +msgstr "Filter opslaan" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Manage Filters" +msgstr "Filters beheren" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Filter Name:" +msgstr "Filternaam:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(Any existing filter with the same name will be replaced)" +msgstr "(Een bestaand filter met dezelfde naam wordt vervangen)" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Select Dashboard to add this filter to:" +msgstr "Selecteer Dashboard om dit filter aan toe te voegen:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Title of new Dashboard item:" +msgstr "Titel van nieuw dashboard item:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filters" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Any of the following conditions must match" +msgstr "Één van de volgende voorwaarden moet voldoen" + +#: addons/web/static/src/xml/base.xml:0 +msgid "All the following conditions must match" +msgstr "Alle volgende voorwaarden moeten voldoen" + +#: addons/web/static/src/xml/base.xml:0 +msgid "None of the following conditions must match" +msgstr "Geen van de volgende voorwaarden mag voldoen" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Add condition" +msgstr "Voorwaarde toevoegen" + +#: addons/web/static/src/xml/base.xml:0 +msgid "and" +msgstr "en" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save & New" +msgstr "Opslaan & Nieuw" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save & Close" +msgstr "Opslaan & Sluiten" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"This wizard will export all data that matches the current search criteria to " +"a CSV file.\n" +" You can export all data or only the fields that can be " +"reimported after modification." +msgstr "" +"Deze assistent exporteert alle gegevens die aan de huidige zoekcriteria " +"voldoen naar een CSV bestand.\n" +" U kunt alle gegevens exporteren of alleen de velden die na " +"wijziging opnieuw kunnen worden geïmporteerd." + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export Type:" +msgstr "Soort export:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Import Compatible Export" +msgstr "Import compatibele export" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export all Data" +msgstr "Alle gegevens exporteren" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export Formats" +msgstr "Export Formaten" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Available fields" +msgstr "Beschikbare velden" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Fields to export" +msgstr "Te exporteren velden" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save fields list" +msgstr "Veldenlijst opslaan" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove All" +msgstr "Alles verwijderen" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Name" +msgstr "Naam" + +#: addons/web/static/src/xml/base.xml:0 +msgid " " +msgstr " " + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save as:" +msgstr "Opslaan als:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Saved exports:" +msgstr "Opgeslagen exports:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Old Password:" +msgstr "Oud wachtwoord:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "New Password:" +msgstr "Nieuw wachtwoord:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Confirm Password:" +msgstr "Bevestig wachtwoord:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "1. Import a .CSV file" +msgstr "1. Importeer een .CSV bestand" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"Select a .CSV file to import. If you need a sample of file to import,\n" +" you should use the export tool with the \"Import Compatible\" option." +msgstr "" +"Selecteer een .CSV bestand voor import. Voor een voorbeeld van een " +"importbestand,\n" +" kunt u de export tool gebruiken met de \"Import Compatibel\" optie." + +#: addons/web/static/src/xml/base.xml:0 +msgid "CSV File:" +msgstr "CSV bestand:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "2. Check your file format" +msgstr "2. Controleer uw bestandsformaat" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Import Options" +msgstr "Importeeropties" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Does your file have titles?" +msgstr "Heeft uw bestand titels?" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Separator:" +msgstr "Scheidingsteken:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Delimiter:" +msgstr "Veldscheidingsteken:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Encoding:" +msgstr "Codering:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "UTF-8" +msgstr "UTF-8" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Latin 1" +msgstr "Latin 1" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Lines to skip" +msgstr "Regels om over te slaan" + +#: addons/web/static/src/xml/base.xml:0 +msgid "The import failed due to:" +msgstr "Importeren mislukt wegens:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Here is a preview of the file we could not import:" +msgstr "Hier is een voorbeeld van het bestand dat we niet konden importeren:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP Web" +msgstr "OpenERP Web" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Version" +msgstr "Versie" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Copyright © 2011-TODAY OpenERP SA. All Rights Reserved." +msgstr "Copyright © 2011-VANDAAG OpenERP SA. Alle rechten voorbehouden." + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP is a trademark of the" +msgstr "OpenERP is een handelsmerk van" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP SA Company" +msgstr "OpenERP SA" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Licenced under the terms of" +msgstr "Gelicentieerd onder voorwaarden van" + +#: addons/web/static/src/xml/base.xml:0 +msgid "GNU Affero General Public License" +msgstr "GNU Affero General Public License" + +#: addons/web/static/src/xml/base.xml:0 +msgid "About OpenERP" +msgstr "Over OpenERP" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP" +msgstr "OpenERP" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"is a free enterprise-scale software system that is designed to boost\n" +" productivity and profit through data integration. It connects, " +"improves and\n" +" manages business processes in areas such as sales, finance, " +"supply chain,\n" +" project management, production, services, CRM, etc..." +msgstr "" +"is een vrij verkrijgbaar bedrijfsniveau software pakket dat is ontworpen om " +"uw productiviteit\n" +" en winst te verhogen door data integratie. Het verbindt, " +"verbetert en beheert\n" +" bedrijfsprocessen op gebieden zoals verkoop, financiën, inkoop, " +"project management,\n" +" productie, diensten, CRM, etc..." + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"The system is platform-independent, and can be installed on Windows, Mac OS " +"X,\n" +" and various Linux and other Unix-based distributions. Its " +"architecture enables\n" +" new functionality to be rapidly created, modifications to be " +"made to a\n" +" production system and migration to a new version to be " +"straightforward." +msgstr "" +"Het systeem is platform-onafhankelijk, and kan geïnstalleerd worden op " +"Windows, Mac OS X,\n" +" en verschillende Linux en andere Unix-achtige distributies. Haar " +"architectuur maakt het\n" +" mogelijk om snel nieuwe functionaliteit te maken, wijzigingen " +"aan te brengen aan een \n" +" productie systeem en migraties naar een nieuwe versie eenvoudig " +"te houden." + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"Depending on your needs, OpenERP is available through a web or application " +"client." +msgstr "" +"Naar behoefte is OpenERP als webapplicatie of als client-serverapplicatie " +"beschikbaar." diff --git a/addons/web/po/nl_BE.po b/addons/web/po/nl_BE.po index 43f52ade62e..aa1429a1c95 100644 --- a/addons/web/po/nl_BE.po +++ b/addons/web/po/nl_BE.po @@ -7,56 +7,401 @@ msgid "" msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2011-10-07 10:38+0200\n" +"POT-Creation-Date: 2011-12-20 18:48+0100\n" "PO-Revision-Date: 2011-10-07 12:50+0000\n" "Last-Translator: Niels Huylebroeck \n" "Language-Team: Dutch (Belgium) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n" -"X-Generator: Launchpad (build 14299)\n" +"X-Launchpad-Export-Date: 2011-12-21 05:27+0000\n" +"X-Generator: Launchpad (build 14538)\n" -#: addons/web/static/src/js/view_form.js:355 +#: addons/web/static/src/js/chrome.js:162 +#: addons/web/static/src/js/chrome.js:175 +#: addons/web/static/src/js/chrome.js:369 +#: addons/web/static/src/js/view_form.js:358 +#: addons/web/static/src/js/view_form.js:1078 +#: addons/web/static/src/xml/base.xml:0 +msgid "Ok" +msgstr "Ok" + +#: addons/web/static/src/js/chrome.js:668 +msgid "About" +msgstr "" + +#: addons/web/static/src/js/chrome.js:748 +msgid "Preferences" +msgstr "" + +#: addons/web/static/src/js/chrome.js:752 +msgid "Change password" +msgstr "" + +#: addons/web/static/src/js/chrome.js:753 +#: addons/web/static/src/js/search.js:235 +#: addons/web/static/src/js/search.js:276 +#: addons/web/static/src/js/view_editor.js:97 +#: addons/web/static/src/js/view_editor.js:778 +#: addons/web/static/src/js/view_editor.js:907 +#: addons/web/static/src/js/view_form.js:1085 +#: addons/web/static/src/xml/base.xml:0 +msgid "Cancel" +msgstr "Annuleren" + +#: addons/web/static/src/js/chrome.js:754 +#: addons/web/static/src/js/view_editor.js:75 +#: addons/web/static/src/js/views.js:871 addons/web/static/src/xml/base.xml:0 +msgid "Save" +msgstr "Opslaan" + +#: addons/web/static/src/js/chrome.js:774 addons/web/static/src/xml/base.xml:0 +msgid "Change Password" +msgstr "" + +#: addons/web/static/src/js/data_export.js:6 +msgid "Export Data" +msgstr "" + +#: addons/web/static/src/js/data_export.js:23 +#: addons/web/static/src/js/data_import.js:73 +#: addons/web/static/src/js/view_editor.js:49 +#: addons/web/static/src/js/view_editor.js:387 +#: addons/web/static/src/js/view_form.js:2775 +#: addons/web/static/src/js/views.js:872 +msgid "Close" +msgstr "Sluiten" + +#: addons/web/static/src/js/data_export.js:24 +msgid "Export To File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:34 +msgid "Import Data" +msgstr "" + +#: addons/web/static/src/js/data_import.js:74 +msgid "Import File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:109 +msgid "External ID" +msgstr "" + +#: addons/web/static/src/js/search.js:233 +msgid "Filter Entry" +msgstr "" + +#: addons/web/static/src/js/search.js:238 +#: addons/web/static/src/js/search.js:279 +msgid "OK" +msgstr "" + +#: addons/web/static/src/js/search.js:274 addons/web/static/src/xml/base.xml:0 +msgid "Add to Dashboard" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "Invalid Search" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "triggered from search view" +msgstr "" + +#: addons/web/static/src/js/search.js:490 +#, python-format +msgid "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s" +msgstr "" + +#: addons/web/static/src/js/search.js:822 +msgid "not a valid integer" +msgstr "" + +#: addons/web/static/src/js/search.js:836 +msgid "not a valid number" +msgstr "" + +#: addons/web/static/src/js/search.js:898 +msgid "Yes" +msgstr "" + +#: addons/web/static/src/js/search.js:899 +msgid "No" +msgstr "" + +#: addons/web/static/src/js/search.js:1252 +msgid "contains" +msgstr "" + +#: addons/web/static/src/js/search.js:1253 +msgid "doesn't contain" +msgstr "" + +#: addons/web/static/src/js/search.js:1254 +#: addons/web/static/src/js/search.js:1269 +#: addons/web/static/src/js/search.js:1289 +#: addons/web/static/src/js/search.js:1309 +#: addons/web/static/src/js/search.js:1331 +msgid "is equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1255 +#: addons/web/static/src/js/search.js:1270 +#: addons/web/static/src/js/search.js:1290 +#: addons/web/static/src/js/search.js:1310 +#: addons/web/static/src/js/search.js:1332 +msgid "is not equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1256 +#: addons/web/static/src/js/search.js:1271 +#: addons/web/static/src/js/search.js:1291 +#: addons/web/static/src/js/search.js:1311 +#: addons/web/static/src/js/search.js:1333 +msgid "greater than" +msgstr "" + +#: addons/web/static/src/js/search.js:1257 +#: addons/web/static/src/js/search.js:1272 +#: addons/web/static/src/js/search.js:1292 +#: addons/web/static/src/js/search.js:1312 +#: addons/web/static/src/js/search.js:1334 +msgid "less than" +msgstr "" + +#: addons/web/static/src/js/search.js:1258 +#: addons/web/static/src/js/search.js:1273 +#: addons/web/static/src/js/search.js:1293 +#: addons/web/static/src/js/search.js:1313 +#: addons/web/static/src/js/search.js:1335 +msgid "greater or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1259 +#: addons/web/static/src/js/search.js:1274 +#: addons/web/static/src/js/search.js:1294 +#: addons/web/static/src/js/search.js:1314 +#: addons/web/static/src/js/search.js:1336 +msgid "less or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1325 +#: addons/web/static/src/js/search.js:1350 +msgid "is" +msgstr "" + +#: addons/web/static/src/js/search.js:1351 +msgid "is not" +msgstr "" + +#: addons/web/static/src/js/search.js:1364 +msgid "is true" +msgstr "" + +#: addons/web/static/src/js/search.js:1365 +msgid "is false" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:42 +msgid "ViewEditor" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:46 +#: addons/web/static/src/js/view_list.js:17 +#: addons/web/static/src/xml/base.xml:0 +msgid "Create" +msgstr "Creër" + +#: addons/web/static/src/js/view_editor.js:47 +#: addons/web/static/src/xml/base.xml:0 +msgid "Edit" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:48 +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove" +msgstr "Verwijderen" + +#: addons/web/static/src/js/view_editor.js:71 +#, python-format +msgid "Create a view (%s)" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:170 +msgid "Do you really want to remove this view?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:367 +#, python-format +msgid "View Editor %d - %s" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:371 +msgid "Preview" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:442 +msgid "Do you really want to remove this node?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:756 +#: addons/web/static/src/js/view_editor.js:883 +msgid "Properties" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:760 +#: addons/web/static/src/js/view_editor.js:887 +msgid "Update" +msgstr "" + +#: addons/web/static/src/js/view_form.js:17 +msgid "Form" +msgstr "" + +#: addons/web/static/src/js/view_form.js:401 msgid "" "Warning, the record has been modified, your changes will be discarded." msgstr "" "Opgelet, het record werd gewijzigd, uw veranderingen zullen niet opgeslagen " "worden." -#: addons/web/static/src/js/view_form.js:1659 +#: addons/web/static/src/js/view_form.js:612 +msgid "Attachments" +msgstr "" + +#: addons/web/static/src/js/view_form.js:650 +#, python-format +msgid "Do you really want to delete the attachment %s?" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1075 +msgid "Confirm" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1838 msgid "   Search More..." msgstr "   Uitgebreid zoeken..." -#: addons/web/static/src/js/view_form.js:1672 +#: addons/web/static/src/js/view_form.js:1851 #, python-format msgid "   Create \"%s\"" msgstr "   Creër \"%s\"" -#: addons/web/static/src/js/view_form.js:1678 +#: addons/web/static/src/js/view_form.js:1857 msgid "   Create and Edit..." msgstr "   Creër en bewerk..." -#: addons/web/static/src/js/views.js:568 +#: addons/web/static/src/js/view_form.js:2404 +#: addons/web/static/src/xml/base.xml:0 +msgid "Add" +msgstr "Toevoegen" + +#: addons/web/static/src/js/view_list.js:8 +msgid "List" +msgstr "" + +#: addons/web/static/src/js/view_list.js:269 +msgid "Unlimited" +msgstr "" + +#: addons/web/static/src/js/view_list.js:516 +msgid "Do you really want to remove these records?" +msgstr "" + +#: addons/web/static/src/js/view_list.js:1202 +msgid "Undefined" +msgstr "" + +#: addons/web/static/src/js/view_page.js:8 +msgid "Page" +msgstr "" + +#: addons/web/static/src/js/view_page.js:52 +msgid "Do you really want to delete this record?" +msgstr "" + +#: addons/web/static/src/js/view_page.js:227 +msgid "Download" +msgstr "" + +#: addons/web/static/src/js/view_tree.js:11 +msgid "Tree" +msgstr "" + +#: addons/web/static/src/js/views.js:590 +msgid "Search: " +msgstr "" + +#: addons/web/static/src/js/views.js:710 +msgid "Customize" +msgstr "" + +#: addons/web/static/src/js/views.js:713 +msgid "Manage Views" +msgstr "" + +#: addons/web/static/src/js/views.js:715 addons/web/static/src/js/views.js:719 +#: addons/web/static/src/js/views.js:724 +msgid "Manage views of the current object" +msgstr "" + +#: addons/web/static/src/js/views.js:717 +msgid "Edit Workflow" +msgstr "" + +#: addons/web/static/src/js/views.js:722 +msgid "Customize Object" +msgstr "" + +#: addons/web/static/src/js/views.js:726 +msgid "Translate" +msgstr "" + +#: addons/web/static/src/js/views.js:728 +msgid "Technical translation" +msgstr "" + +#: addons/web/static/src/js/views.js:733 +msgid "Other Options" +msgstr "" + +#: addons/web/static/src/js/views.js:736 addons/web/static/src/xml/base.xml:0 +msgid "Import" +msgstr "Importeren" + +#: addons/web/static/src/js/views.js:739 addons/web/static/src/xml/base.xml:0 +msgid "Export" +msgstr "Exporteren" + +#: addons/web/static/src/js/views.js:742 +msgid "View Log" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Reports" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Actions" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Links" +msgstr "" + +#: addons/web/static/src/js/views.js:831 msgid "You must choose at least one record." msgstr "U moet minstens een record selecteren." -#: addons/web/static/src/js/views.js:569 +#: addons/web/static/src/js/views.js:832 msgid "Warning" msgstr "Waarschuwing" -#: addons/web/static/src/js/views.js:609 +#: addons/web/static/src/js/views.js:866 msgid "Translations" msgstr "Vertalingen" -#: addons/web/static/src/js/views.js:614 addons/web/static/src/xml/base.xml:0 -msgid "Save" -msgstr "Opslaan" - -#: addons/web/static/src/js/views.js:615 -msgid "Close" -msgstr "Sluiten" - #: addons/web/static/src/xml/base.xml:0 msgid "x" msgstr "x" @@ -85,10 +430,6 @@ msgstr "." msgid "Loading..." msgstr "Laden..." -#: addons/web/static/src/xml/base.xml:0 -msgid "Create" -msgstr "Creër" - #: addons/web/static/src/xml/base.xml:0 msgid "Drop" msgstr "Drop" @@ -277,19 +618,31 @@ msgid "Disable all tips" msgstr "Verberg alle tips" #: addons/web/static/src/xml/base.xml:0 -msgid "View#" -msgstr "View#" +msgid "More…" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Fields" -msgstr "Velden" +msgid "Debug View#" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "View labels" -msgstr "Toon labels" +msgid "- Fields View Get" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Sidebar Relates" +msgid "- Edit" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "View" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit SearchView" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit Action" msgstr "" #: addons/web/static/src/xml/base.xml:0 @@ -300,62 +653,10 @@ msgstr "Veld" msgid ":" msgstr ":" -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate view" -msgstr "Vertaal scherm" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate sidebar" -msgstr "Vertaal balk" - #: addons/web/static/src/xml/base.xml:0 msgid "Delete" msgstr "Verwijder" -#: addons/web/static/src/xml/base.xml:0 -msgid "First" -msgstr "Eerste" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<" -msgstr "<" - -#: addons/web/static/src/xml/base.xml:0 -msgid ">" -msgstr ">" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Last" -msgstr "Laatste" - -#: addons/web/static/src/xml/base.xml:0 -msgid "♻" -msgstr "♻" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Save & Edit" -msgstr "Opslaan & Bewerken" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Create & Edit" -msgstr "Creër & Bewerk" - -#: addons/web/static/src/xml/base.xml:0 -msgid "New" -msgstr "Nieuw" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Duplicate" -msgstr "Dupliceer" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Readonly/Editable" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<<" -msgstr "<<" - #: addons/web/static/src/xml/base.xml:0 msgid "0" msgstr "0" @@ -365,28 +666,88 @@ msgid "/" msgstr "/" #: addons/web/static/src/xml/base.xml:0 -msgid ">>" -msgstr ">>" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Add" -msgstr "Toevoegen" +msgid "Duplicate" +msgstr "Dupliceer" #: addons/web/static/src/xml/base.xml:0 msgid "Unhandled widget" msgstr "Niet-verwerkbare widget" +#: addons/web/static/src/xml/base.xml:0 +msgid "Notebook Page \"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "\"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Modifiers:" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "?" msgstr "?" #: addons/web/static/src/xml/base.xml:0 -msgid "#" -msgstr "#" +msgid "(nolabel)" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Done" -msgstr "Voltooid" +msgid "Field:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Object:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Widget:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Size:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Context:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Domain:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "On change:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Relation:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Selection:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "[" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "]" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#" +msgstr "#" #: addons/web/static/src/xml/base.xml:0 msgid "Open..." @@ -420,18 +781,38 @@ msgstr "Opslaan als" msgid "Clear" msgstr "Leegmaken" +#: addons/web/static/src/xml/base.xml:0 +msgid "Button" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(no string)" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Special:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Button Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Method:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Action ID:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Advanced Filter" msgstr "Geavanceerde filter" -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Filters --" -msgstr "-- Filters --" - -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Actions --" -msgstr "-- Acties --" - #: addons/web/static/src/xml/base.xml:0 msgid "Save Filter" msgstr "Filter opslaan" @@ -448,6 +829,18 @@ msgstr "Filternaam:" msgid "(Any existing filter with the same name will be replaced)" msgstr "(Bestaande filters met dezelfde naam worden overschreven)" +#: addons/web/static/src/xml/base.xml:0 +msgid "Select Dashboard to add this filter to:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Title of new Dashboard item:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filters" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Any of the following conditions must match" msgstr "Een van de volgende voorwaarden moet overeenstemmen" @@ -468,10 +861,6 @@ msgstr "Voorwaarde toevoegen" msgid "and" msgstr "" -#: addons/web/static/src/xml/base.xml:0 -msgid "Cancel" -msgstr "Annuleren" - #: addons/web/static/src/xml/base.xml:0 msgid "Save & New" msgstr "Opslaan & Nieuwe" @@ -480,10 +869,6 @@ msgstr "Opslaan & Nieuwe" msgid "Save & Close" msgstr "Opslaan & Sluiten" -#: addons/web/static/src/xml/base.xml:0 -msgid "Export" -msgstr "Exporteren" - #: addons/web/static/src/xml/base.xml:0 msgid "" "This wizard will export all data that matches the current search criteria to " @@ -520,10 +905,6 @@ msgstr "Te exporteren velden" msgid "Save fields list" msgstr "Export definitie opslaan" -#: addons/web/static/src/xml/base.xml:0 -msgid "Remove" -msgstr "Verwijderen" - #: addons/web/static/src/xml/base.xml:0 msgid "Remove All" msgstr "Alles verwijderen" @@ -540,10 +921,6 @@ msgstr " " msgid "Save as:" msgstr "Opslaan als:" -#: addons/web/static/src/xml/base.xml:0 -msgid "Ok" -msgstr "Ok" - #: addons/web/static/src/xml/base.xml:0 msgid "Saved exports:" msgstr "Export definities" @@ -560,10 +937,6 @@ msgstr "Nieuw wachtwoord:" msgid "Confirm Password:" msgstr "Bevestig wachtwoord:" -#: addons/web/static/src/xml/base.xml:0 -msgid "Import" -msgstr "Importeren" - #: addons/web/static/src/xml/base.xml:0 msgid "1. Import a .CSV file" msgstr "1. Importeer een .CSV bestand" diff --git a/addons/web/po/pl.po b/addons/web/po/pl.po index 56f004a0197..56953fff613 100644 --- a/addons/web/po/pl.po +++ b/addons/web/po/pl.po @@ -7,54 +7,399 @@ msgid "" msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2011-10-07 10:38+0200\n" +"POT-Creation-Date: 2011-12-20 18:48+0100\n" "PO-Revision-Date: 2011-11-04 16:44+0000\n" "Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n" -"X-Generator: Launchpad (build 14299)\n" +"X-Launchpad-Export-Date: 2011-12-21 05:27+0000\n" +"X-Generator: Launchpad (build 14538)\n" -#: addons/web/static/src/js/view_form.js:355 +#: addons/web/static/src/js/chrome.js:162 +#: addons/web/static/src/js/chrome.js:175 +#: addons/web/static/src/js/chrome.js:369 +#: addons/web/static/src/js/view_form.js:358 +#: addons/web/static/src/js/view_form.js:1078 +#: addons/web/static/src/xml/base.xml:0 +msgid "Ok" +msgstr "" + +#: addons/web/static/src/js/chrome.js:668 +msgid "About" +msgstr "" + +#: addons/web/static/src/js/chrome.js:748 +msgid "Preferences" +msgstr "" + +#: addons/web/static/src/js/chrome.js:752 +msgid "Change password" +msgstr "" + +#: addons/web/static/src/js/chrome.js:753 +#: addons/web/static/src/js/search.js:235 +#: addons/web/static/src/js/search.js:276 +#: addons/web/static/src/js/view_editor.js:97 +#: addons/web/static/src/js/view_editor.js:778 +#: addons/web/static/src/js/view_editor.js:907 +#: addons/web/static/src/js/view_form.js:1085 +#: addons/web/static/src/xml/base.xml:0 +msgid "Cancel" +msgstr "Anuluj" + +#: addons/web/static/src/js/chrome.js:754 +#: addons/web/static/src/js/view_editor.js:75 +#: addons/web/static/src/js/views.js:871 addons/web/static/src/xml/base.xml:0 +msgid "Save" +msgstr "Zapisz" + +#: addons/web/static/src/js/chrome.js:774 addons/web/static/src/xml/base.xml:0 +msgid "Change Password" +msgstr "" + +#: addons/web/static/src/js/data_export.js:6 +msgid "Export Data" +msgstr "" + +#: addons/web/static/src/js/data_export.js:23 +#: addons/web/static/src/js/data_import.js:73 +#: addons/web/static/src/js/view_editor.js:49 +#: addons/web/static/src/js/view_editor.js:387 +#: addons/web/static/src/js/view_form.js:2775 +#: addons/web/static/src/js/views.js:872 +msgid "Close" +msgstr "Zamknij" + +#: addons/web/static/src/js/data_export.js:24 +msgid "Export To File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:34 +msgid "Import Data" +msgstr "" + +#: addons/web/static/src/js/data_import.js:74 +msgid "Import File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:109 +msgid "External ID" +msgstr "" + +#: addons/web/static/src/js/search.js:233 +msgid "Filter Entry" +msgstr "" + +#: addons/web/static/src/js/search.js:238 +#: addons/web/static/src/js/search.js:279 +msgid "OK" +msgstr "" + +#: addons/web/static/src/js/search.js:274 addons/web/static/src/xml/base.xml:0 +msgid "Add to Dashboard" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "Invalid Search" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "triggered from search view" +msgstr "" + +#: addons/web/static/src/js/search.js:490 +#, python-format +msgid "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s" +msgstr "" + +#: addons/web/static/src/js/search.js:822 +msgid "not a valid integer" +msgstr "" + +#: addons/web/static/src/js/search.js:836 +msgid "not a valid number" +msgstr "" + +#: addons/web/static/src/js/search.js:898 +msgid "Yes" +msgstr "" + +#: addons/web/static/src/js/search.js:899 +msgid "No" +msgstr "" + +#: addons/web/static/src/js/search.js:1252 +msgid "contains" +msgstr "" + +#: addons/web/static/src/js/search.js:1253 +msgid "doesn't contain" +msgstr "" + +#: addons/web/static/src/js/search.js:1254 +#: addons/web/static/src/js/search.js:1269 +#: addons/web/static/src/js/search.js:1289 +#: addons/web/static/src/js/search.js:1309 +#: addons/web/static/src/js/search.js:1331 +msgid "is equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1255 +#: addons/web/static/src/js/search.js:1270 +#: addons/web/static/src/js/search.js:1290 +#: addons/web/static/src/js/search.js:1310 +#: addons/web/static/src/js/search.js:1332 +msgid "is not equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1256 +#: addons/web/static/src/js/search.js:1271 +#: addons/web/static/src/js/search.js:1291 +#: addons/web/static/src/js/search.js:1311 +#: addons/web/static/src/js/search.js:1333 +msgid "greater than" +msgstr "" + +#: addons/web/static/src/js/search.js:1257 +#: addons/web/static/src/js/search.js:1272 +#: addons/web/static/src/js/search.js:1292 +#: addons/web/static/src/js/search.js:1312 +#: addons/web/static/src/js/search.js:1334 +msgid "less than" +msgstr "" + +#: addons/web/static/src/js/search.js:1258 +#: addons/web/static/src/js/search.js:1273 +#: addons/web/static/src/js/search.js:1293 +#: addons/web/static/src/js/search.js:1313 +#: addons/web/static/src/js/search.js:1335 +msgid "greater or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1259 +#: addons/web/static/src/js/search.js:1274 +#: addons/web/static/src/js/search.js:1294 +#: addons/web/static/src/js/search.js:1314 +#: addons/web/static/src/js/search.js:1336 +msgid "less or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1325 +#: addons/web/static/src/js/search.js:1350 +msgid "is" +msgstr "" + +#: addons/web/static/src/js/search.js:1351 +msgid "is not" +msgstr "" + +#: addons/web/static/src/js/search.js:1364 +msgid "is true" +msgstr "" + +#: addons/web/static/src/js/search.js:1365 +msgid "is false" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:42 +msgid "ViewEditor" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:46 +#: addons/web/static/src/js/view_list.js:17 +#: addons/web/static/src/xml/base.xml:0 +msgid "Create" +msgstr "Utwórz" + +#: addons/web/static/src/js/view_editor.js:47 +#: addons/web/static/src/xml/base.xml:0 +msgid "Edit" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:48 +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove" +msgstr "Usuń" + +#: addons/web/static/src/js/view_editor.js:71 +#, python-format +msgid "Create a view (%s)" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:170 +msgid "Do you really want to remove this view?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:367 +#, python-format +msgid "View Editor %d - %s" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:371 +msgid "Preview" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:442 +msgid "Do you really want to remove this node?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:756 +#: addons/web/static/src/js/view_editor.js:883 +msgid "Properties" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:760 +#: addons/web/static/src/js/view_editor.js:887 +msgid "Update" +msgstr "" + +#: addons/web/static/src/js/view_form.js:17 +msgid "Form" +msgstr "" + +#: addons/web/static/src/js/view_form.js:401 msgid "" "Warning, the record has been modified, your changes will be discarded." msgstr "Uwaga, rekord został zmodyfikowany, twoje zmiany zostaną odrzucone." -#: addons/web/static/src/js/view_form.js:1659 +#: addons/web/static/src/js/view_form.js:612 +msgid "Attachments" +msgstr "" + +#: addons/web/static/src/js/view_form.js:650 +#, python-format +msgid "Do you really want to delete the attachment %s?" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1075 +msgid "Confirm" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1838 msgid "   Search More..." msgstr "   Szukaj dalej..." -#: addons/web/static/src/js/view_form.js:1672 +#: addons/web/static/src/js/view_form.js:1851 #, python-format msgid "   Create \"%s\"" msgstr "   Utwórz \"%s\"" -#: addons/web/static/src/js/view_form.js:1678 +#: addons/web/static/src/js/view_form.js:1857 msgid "   Create and Edit..." msgstr "   Utwórz i edytuj..." -#: addons/web/static/src/js/views.js:568 +#: addons/web/static/src/js/view_form.js:2404 +#: addons/web/static/src/xml/base.xml:0 +msgid "Add" +msgstr "Dodaj" + +#: addons/web/static/src/js/view_list.js:8 +msgid "List" +msgstr "" + +#: addons/web/static/src/js/view_list.js:269 +msgid "Unlimited" +msgstr "" + +#: addons/web/static/src/js/view_list.js:516 +msgid "Do you really want to remove these records?" +msgstr "" + +#: addons/web/static/src/js/view_list.js:1202 +msgid "Undefined" +msgstr "" + +#: addons/web/static/src/js/view_page.js:8 +msgid "Page" +msgstr "" + +#: addons/web/static/src/js/view_page.js:52 +msgid "Do you really want to delete this record?" +msgstr "" + +#: addons/web/static/src/js/view_page.js:227 +msgid "Download" +msgstr "" + +#: addons/web/static/src/js/view_tree.js:11 +msgid "Tree" +msgstr "" + +#: addons/web/static/src/js/views.js:590 +msgid "Search: " +msgstr "" + +#: addons/web/static/src/js/views.js:710 +msgid "Customize" +msgstr "" + +#: addons/web/static/src/js/views.js:713 +msgid "Manage Views" +msgstr "" + +#: addons/web/static/src/js/views.js:715 addons/web/static/src/js/views.js:719 +#: addons/web/static/src/js/views.js:724 +msgid "Manage views of the current object" +msgstr "" + +#: addons/web/static/src/js/views.js:717 +msgid "Edit Workflow" +msgstr "" + +#: addons/web/static/src/js/views.js:722 +msgid "Customize Object" +msgstr "" + +#: addons/web/static/src/js/views.js:726 +msgid "Translate" +msgstr "" + +#: addons/web/static/src/js/views.js:728 +msgid "Technical translation" +msgstr "" + +#: addons/web/static/src/js/views.js:733 +msgid "Other Options" +msgstr "" + +#: addons/web/static/src/js/views.js:736 addons/web/static/src/xml/base.xml:0 +msgid "Import" +msgstr "Importuj" + +#: addons/web/static/src/js/views.js:739 addons/web/static/src/xml/base.xml:0 +msgid "Export" +msgstr "Eksportuj" + +#: addons/web/static/src/js/views.js:742 +msgid "View Log" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Reports" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Actions" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Links" +msgstr "" + +#: addons/web/static/src/js/views.js:831 msgid "You must choose at least one record." msgstr "Musisz wybrac co najmniej jeden rekord." -#: addons/web/static/src/js/views.js:569 +#: addons/web/static/src/js/views.js:832 msgid "Warning" msgstr "Ostrzeżenie" -#: addons/web/static/src/js/views.js:609 +#: addons/web/static/src/js/views.js:866 msgid "Translations" msgstr "Tłumaczenia" -#: addons/web/static/src/js/views.js:614 addons/web/static/src/xml/base.xml:0 -msgid "Save" -msgstr "Zapisz" - -#: addons/web/static/src/js/views.js:615 -msgid "Close" -msgstr "Zamknij" - #: addons/web/static/src/xml/base.xml:0 msgid "x" msgstr "" @@ -83,10 +428,6 @@ msgstr "" msgid "Loading..." msgstr "Wczytywanie..." -#: addons/web/static/src/xml/base.xml:0 -msgid "Create" -msgstr "Utwórz" - #: addons/web/static/src/xml/base.xml:0 msgid "Drop" msgstr "Usuń bazę danych" @@ -270,19 +611,31 @@ msgid "Disable all tips" msgstr "Wyłącz wszystkie wskazówki" #: addons/web/static/src/xml/base.xml:0 -msgid "View#" +msgid "More…" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Fields" -msgstr "Pola" +msgid "Debug View#" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "View labels" -msgstr "Pokaż etykiety" +msgid "- Fields View Get" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Sidebar Relates" +msgid "- Edit" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "View" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit SearchView" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit Action" msgstr "" #: addons/web/static/src/xml/base.xml:0 @@ -293,62 +646,10 @@ msgstr "Pole" msgid ":" msgstr "" -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate view" -msgstr "Przetłumacz widok" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate sidebar" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "Delete" msgstr "Usuń" -#: addons/web/static/src/xml/base.xml:0 -msgid "First" -msgstr "Pierwsze" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid ">" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Last" -msgstr "Ostatnie" - -#: addons/web/static/src/xml/base.xml:0 -msgid "♻" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Save & Edit" -msgstr "Zapisz i edytuj" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Create & Edit" -msgstr "Utwórz i edytuj" - -#: addons/web/static/src/xml/base.xml:0 -msgid "New" -msgstr "Nowy" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Duplicate" -msgstr "Duplikuj" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Readonly/Editable" -msgstr "Tylko odczyt/Edytowalne" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<<" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "0" msgstr "" @@ -358,28 +659,88 @@ msgid "/" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid ">>" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Add" -msgstr "Dodaj" +msgid "Duplicate" +msgstr "Duplikuj" #: addons/web/static/src/xml/base.xml:0 msgid "Unhandled widget" msgstr "" +#: addons/web/static/src/xml/base.xml:0 +msgid "Notebook Page \"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "\"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Modifiers:" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "?" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "#" +msgid "(nolabel)" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Done" -msgstr "Wykonano" +msgid "Field:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Object:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Widget:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Size:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Context:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Domain:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "On change:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Relation:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Selection:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "[" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "]" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#" +msgstr "" #: addons/web/static/src/xml/base.xml:0 msgid "Open..." @@ -413,18 +774,38 @@ msgstr "Zapisz jako" msgid "Clear" msgstr "Wyczyść" +#: addons/web/static/src/xml/base.xml:0 +msgid "Button" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(no string)" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Special:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Button Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Method:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Action ID:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Advanced Filter" msgstr "Zaawansowany filtr" -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Filters --" -msgstr "-- Filtry --" - -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Actions --" -msgstr "-- Akcje --" - #: addons/web/static/src/xml/base.xml:0 msgid "Save Filter" msgstr "Zapisz filtr" @@ -441,6 +822,18 @@ msgstr "Nazwa filtra:" msgid "(Any existing filter with the same name will be replaced)" msgstr "(Każdy filtr o tej samej nazwie zostanie zamazany)" +#: addons/web/static/src/xml/base.xml:0 +msgid "Select Dashboard to add this filter to:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Title of new Dashboard item:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filters" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Any of the following conditions must match" msgstr "Jeden z tych warunków musi być spełniony" @@ -461,10 +854,6 @@ msgstr "Dodaj warunek" msgid "and" msgstr "i" -#: addons/web/static/src/xml/base.xml:0 -msgid "Cancel" -msgstr "Anuluj" - #: addons/web/static/src/xml/base.xml:0 msgid "Save & New" msgstr "Zapisz i nowy" @@ -473,10 +862,6 @@ msgstr "Zapisz i nowy" msgid "Save & Close" msgstr "Zapisz i zamknij" -#: addons/web/static/src/xml/base.xml:0 -msgid "Export" -msgstr "Eksportuj" - #: addons/web/static/src/xml/base.xml:0 msgid "" "This wizard will export all data that matches the current search criteria to " @@ -517,10 +902,6 @@ msgstr "Pola do eksportu" msgid "Save fields list" msgstr "Zapisz listę pól" -#: addons/web/static/src/xml/base.xml:0 -msgid "Remove" -msgstr "Usuń" - #: addons/web/static/src/xml/base.xml:0 msgid "Remove All" msgstr "Usuń wszystko" @@ -537,10 +918,6 @@ msgstr "" msgid "Save as:" msgstr "Zapisz jako:" -#: addons/web/static/src/xml/base.xml:0 -msgid "Ok" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "Saved exports:" msgstr "Zapisane eksporty" @@ -557,10 +934,6 @@ msgstr "Nowe hasło:" msgid "Confirm Password:" msgstr "Potwierdź hasło:" -#: addons/web/static/src/xml/base.xml:0 -msgid "Import" -msgstr "Importuj" - #: addons/web/static/src/xml/base.xml:0 msgid "1. Import a .CSV file" msgstr "1. Importuj plik .CSV" diff --git a/addons/web/po/pt.po b/addons/web/po/pt.po index ca98e18bce9..c7ca84f62cb 100644 --- a/addons/web/po/pt.po +++ b/addons/web/po/pt.po @@ -7,55 +7,400 @@ msgid "" msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2011-10-07 10:38+0200\n" +"POT-Creation-Date: 2011-12-20 18:48+0100\n" "PO-Revision-Date: 2011-11-21 22:22+0000\n" "Last-Translator: Daniel Reis \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-22 05:13+0000\n" -"X-Generator: Launchpad (build 14299)\n" +"X-Launchpad-Export-Date: 2011-12-21 05:27+0000\n" +"X-Generator: Launchpad (build 14538)\n" -#: addons/web/static/src/js/view_form.js:355 +#: addons/web/static/src/js/chrome.js:162 +#: addons/web/static/src/js/chrome.js:175 +#: addons/web/static/src/js/chrome.js:369 +#: addons/web/static/src/js/view_form.js:358 +#: addons/web/static/src/js/view_form.js:1078 +#: addons/web/static/src/xml/base.xml:0 +msgid "Ok" +msgstr "Ok" + +#: addons/web/static/src/js/chrome.js:668 +msgid "About" +msgstr "" + +#: addons/web/static/src/js/chrome.js:748 +msgid "Preferences" +msgstr "" + +#: addons/web/static/src/js/chrome.js:752 +msgid "Change password" +msgstr "" + +#: addons/web/static/src/js/chrome.js:753 +#: addons/web/static/src/js/search.js:235 +#: addons/web/static/src/js/search.js:276 +#: addons/web/static/src/js/view_editor.js:97 +#: addons/web/static/src/js/view_editor.js:778 +#: addons/web/static/src/js/view_editor.js:907 +#: addons/web/static/src/js/view_form.js:1085 +#: addons/web/static/src/xml/base.xml:0 +msgid "Cancel" +msgstr "Cancelar" + +#: addons/web/static/src/js/chrome.js:754 +#: addons/web/static/src/js/view_editor.js:75 +#: addons/web/static/src/js/views.js:871 addons/web/static/src/xml/base.xml:0 +msgid "Save" +msgstr "Guardar" + +#: addons/web/static/src/js/chrome.js:774 addons/web/static/src/xml/base.xml:0 +msgid "Change Password" +msgstr "" + +#: addons/web/static/src/js/data_export.js:6 +msgid "Export Data" +msgstr "" + +#: addons/web/static/src/js/data_export.js:23 +#: addons/web/static/src/js/data_import.js:73 +#: addons/web/static/src/js/view_editor.js:49 +#: addons/web/static/src/js/view_editor.js:387 +#: addons/web/static/src/js/view_form.js:2775 +#: addons/web/static/src/js/views.js:872 +msgid "Close" +msgstr "Fechar" + +#: addons/web/static/src/js/data_export.js:24 +msgid "Export To File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:34 +msgid "Import Data" +msgstr "" + +#: addons/web/static/src/js/data_import.js:74 +msgid "Import File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:109 +msgid "External ID" +msgstr "" + +#: addons/web/static/src/js/search.js:233 +msgid "Filter Entry" +msgstr "" + +#: addons/web/static/src/js/search.js:238 +#: addons/web/static/src/js/search.js:279 +msgid "OK" +msgstr "" + +#: addons/web/static/src/js/search.js:274 addons/web/static/src/xml/base.xml:0 +msgid "Add to Dashboard" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "Invalid Search" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "triggered from search view" +msgstr "" + +#: addons/web/static/src/js/search.js:490 +#, python-format +msgid "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s" +msgstr "" + +#: addons/web/static/src/js/search.js:822 +msgid "not a valid integer" +msgstr "" + +#: addons/web/static/src/js/search.js:836 +msgid "not a valid number" +msgstr "" + +#: addons/web/static/src/js/search.js:898 +msgid "Yes" +msgstr "" + +#: addons/web/static/src/js/search.js:899 +msgid "No" +msgstr "" + +#: addons/web/static/src/js/search.js:1252 +msgid "contains" +msgstr "" + +#: addons/web/static/src/js/search.js:1253 +msgid "doesn't contain" +msgstr "" + +#: addons/web/static/src/js/search.js:1254 +#: addons/web/static/src/js/search.js:1269 +#: addons/web/static/src/js/search.js:1289 +#: addons/web/static/src/js/search.js:1309 +#: addons/web/static/src/js/search.js:1331 +msgid "is equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1255 +#: addons/web/static/src/js/search.js:1270 +#: addons/web/static/src/js/search.js:1290 +#: addons/web/static/src/js/search.js:1310 +#: addons/web/static/src/js/search.js:1332 +msgid "is not equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1256 +#: addons/web/static/src/js/search.js:1271 +#: addons/web/static/src/js/search.js:1291 +#: addons/web/static/src/js/search.js:1311 +#: addons/web/static/src/js/search.js:1333 +msgid "greater than" +msgstr "" + +#: addons/web/static/src/js/search.js:1257 +#: addons/web/static/src/js/search.js:1272 +#: addons/web/static/src/js/search.js:1292 +#: addons/web/static/src/js/search.js:1312 +#: addons/web/static/src/js/search.js:1334 +msgid "less than" +msgstr "" + +#: addons/web/static/src/js/search.js:1258 +#: addons/web/static/src/js/search.js:1273 +#: addons/web/static/src/js/search.js:1293 +#: addons/web/static/src/js/search.js:1313 +#: addons/web/static/src/js/search.js:1335 +msgid "greater or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1259 +#: addons/web/static/src/js/search.js:1274 +#: addons/web/static/src/js/search.js:1294 +#: addons/web/static/src/js/search.js:1314 +#: addons/web/static/src/js/search.js:1336 +msgid "less or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1325 +#: addons/web/static/src/js/search.js:1350 +msgid "is" +msgstr "" + +#: addons/web/static/src/js/search.js:1351 +msgid "is not" +msgstr "" + +#: addons/web/static/src/js/search.js:1364 +msgid "is true" +msgstr "" + +#: addons/web/static/src/js/search.js:1365 +msgid "is false" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:42 +msgid "ViewEditor" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:46 +#: addons/web/static/src/js/view_list.js:17 +#: addons/web/static/src/xml/base.xml:0 +msgid "Create" +msgstr "Criar" + +#: addons/web/static/src/js/view_editor.js:47 +#: addons/web/static/src/xml/base.xml:0 +msgid "Edit" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:48 +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove" +msgstr "Remover" + +#: addons/web/static/src/js/view_editor.js:71 +#, python-format +msgid "Create a view (%s)" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:170 +msgid "Do you really want to remove this view?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:367 +#, python-format +msgid "View Editor %d - %s" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:371 +msgid "Preview" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:442 +msgid "Do you really want to remove this node?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:756 +#: addons/web/static/src/js/view_editor.js:883 +msgid "Properties" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:760 +#: addons/web/static/src/js/view_editor.js:887 +msgid "Update" +msgstr "" + +#: addons/web/static/src/js/view_form.js:17 +msgid "Form" +msgstr "" + +#: addons/web/static/src/js/view_form.js:401 msgid "" "Warning, the record has been modified, your changes will be discarded." msgstr "" "Atenção, o o registo foi modificado, as suas alterações serão descartadas." -#: addons/web/static/src/js/view_form.js:1659 +#: addons/web/static/src/js/view_form.js:612 +msgid "Attachments" +msgstr "" + +#: addons/web/static/src/js/view_form.js:650 +#, python-format +msgid "Do you really want to delete the attachment %s?" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1075 +msgid "Confirm" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1838 msgid "   Search More..." msgstr "" -#: addons/web/static/src/js/view_form.js:1672 +#: addons/web/static/src/js/view_form.js:1851 #, python-format msgid "   Create \"%s\"" msgstr "" -#: addons/web/static/src/js/view_form.js:1678 +#: addons/web/static/src/js/view_form.js:1857 msgid "   Create and Edit..." msgstr "" -#: addons/web/static/src/js/views.js:568 +#: addons/web/static/src/js/view_form.js:2404 +#: addons/web/static/src/xml/base.xml:0 +msgid "Add" +msgstr "Acrescentar" + +#: addons/web/static/src/js/view_list.js:8 +msgid "List" +msgstr "" + +#: addons/web/static/src/js/view_list.js:269 +msgid "Unlimited" +msgstr "" + +#: addons/web/static/src/js/view_list.js:516 +msgid "Do you really want to remove these records?" +msgstr "" + +#: addons/web/static/src/js/view_list.js:1202 +msgid "Undefined" +msgstr "" + +#: addons/web/static/src/js/view_page.js:8 +msgid "Page" +msgstr "" + +#: addons/web/static/src/js/view_page.js:52 +msgid "Do you really want to delete this record?" +msgstr "" + +#: addons/web/static/src/js/view_page.js:227 +msgid "Download" +msgstr "" + +#: addons/web/static/src/js/view_tree.js:11 +msgid "Tree" +msgstr "" + +#: addons/web/static/src/js/views.js:590 +msgid "Search: " +msgstr "" + +#: addons/web/static/src/js/views.js:710 +msgid "Customize" +msgstr "" + +#: addons/web/static/src/js/views.js:713 +msgid "Manage Views" +msgstr "" + +#: addons/web/static/src/js/views.js:715 addons/web/static/src/js/views.js:719 +#: addons/web/static/src/js/views.js:724 +msgid "Manage views of the current object" +msgstr "" + +#: addons/web/static/src/js/views.js:717 +msgid "Edit Workflow" +msgstr "" + +#: addons/web/static/src/js/views.js:722 +msgid "Customize Object" +msgstr "" + +#: addons/web/static/src/js/views.js:726 +msgid "Translate" +msgstr "" + +#: addons/web/static/src/js/views.js:728 +msgid "Technical translation" +msgstr "" + +#: addons/web/static/src/js/views.js:733 +msgid "Other Options" +msgstr "" + +#: addons/web/static/src/js/views.js:736 addons/web/static/src/xml/base.xml:0 +msgid "Import" +msgstr "Importar" + +#: addons/web/static/src/js/views.js:739 addons/web/static/src/xml/base.xml:0 +msgid "Export" +msgstr "Exportar" + +#: addons/web/static/src/js/views.js:742 +msgid "View Log" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Reports" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Actions" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Links" +msgstr "" + +#: addons/web/static/src/js/views.js:831 msgid "You must choose at least one record." msgstr "Escolha pelo menos um registo." -#: addons/web/static/src/js/views.js:569 +#: addons/web/static/src/js/views.js:832 msgid "Warning" msgstr "Aviso" -#: addons/web/static/src/js/views.js:609 +#: addons/web/static/src/js/views.js:866 msgid "Translations" msgstr "Traduções" -#: addons/web/static/src/js/views.js:614 addons/web/static/src/xml/base.xml:0 -msgid "Save" -msgstr "Guardar" - -#: addons/web/static/src/js/views.js:615 -msgid "Close" -msgstr "Fechar" - #: addons/web/static/src/xml/base.xml:0 msgid "x" msgstr "x" @@ -84,10 +429,6 @@ msgstr "" msgid "Loading..." msgstr "A carregar ..." -#: addons/web/static/src/xml/base.xml:0 -msgid "Create" -msgstr "Criar" - #: addons/web/static/src/xml/base.xml:0 msgid "Drop" msgstr "Excluir" @@ -276,19 +617,31 @@ msgid "Disable all tips" msgstr "Desativar todas as dicas" #: addons/web/static/src/xml/base.xml:0 -msgid "View#" +msgid "More…" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Fields" -msgstr "Campos" +msgid "Debug View#" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "View labels" -msgstr "Ver etiquetas" +msgid "- Fields View Get" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Sidebar Relates" +msgid "- Edit" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "View" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit SearchView" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit Action" msgstr "" #: addons/web/static/src/xml/base.xml:0 @@ -299,62 +652,10 @@ msgstr "Campo" msgid ":" msgstr ":" -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate view" -msgstr "Traduzir vista" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate sidebar" -msgstr "Traduzir barra lateral" - #: addons/web/static/src/xml/base.xml:0 msgid "Delete" msgstr "Apagar" -#: addons/web/static/src/xml/base.xml:0 -msgid "First" -msgstr "Primeiro" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<" -msgstr "<" - -#: addons/web/static/src/xml/base.xml:0 -msgid ">" -msgstr ">" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Last" -msgstr "Último" - -#: addons/web/static/src/xml/base.xml:0 -msgid "♻" -msgstr "♻" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Save & Edit" -msgstr "Gravar & Editar" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Create & Edit" -msgstr "Criar & Editar" - -#: addons/web/static/src/xml/base.xml:0 -msgid "New" -msgstr "Novo" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Duplicate" -msgstr "Duplicar" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Readonly/Editable" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<<" -msgstr "<<" - #: addons/web/static/src/xml/base.xml:0 msgid "0" msgstr "" @@ -364,28 +665,88 @@ msgid "/" msgstr "/" #: addons/web/static/src/xml/base.xml:0 -msgid ">>" -msgstr ">>" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Add" -msgstr "Acrescentar" +msgid "Duplicate" +msgstr "Duplicar" #: addons/web/static/src/xml/base.xml:0 msgid "Unhandled widget" msgstr "Widget não tratado" +#: addons/web/static/src/xml/base.xml:0 +msgid "Notebook Page \"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "\"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Modifiers:" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "?" msgstr "?" #: addons/web/static/src/xml/base.xml:0 -msgid "#" -msgstr "#" +msgid "(nolabel)" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Done" -msgstr "Concluído" +msgid "Field:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Object:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Widget:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Size:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Context:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Domain:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "On change:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Relation:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Selection:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "[" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "]" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#" +msgstr "#" #: addons/web/static/src/xml/base.xml:0 msgid "Open..." @@ -419,18 +780,38 @@ msgstr "Guardar como" msgid "Clear" msgstr "Limpar" +#: addons/web/static/src/xml/base.xml:0 +msgid "Button" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(no string)" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Special:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Button Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Method:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Action ID:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Advanced Filter" msgstr "Filtro avançados" -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Filters --" -msgstr "-- Filtros --" - -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Actions --" -msgstr "-- Ações --" - #: addons/web/static/src/xml/base.xml:0 msgid "Save Filter" msgstr "Guardar filtro" @@ -447,6 +828,18 @@ msgstr "Nome do filtro:" msgid "(Any existing filter with the same name will be replaced)" msgstr "(filtros existentes com esse nome serão substituídos)" +#: addons/web/static/src/xml/base.xml:0 +msgid "Select Dashboard to add this filter to:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Title of new Dashboard item:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filters" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Any of the following conditions must match" msgstr "Deve satisfazer alguma das seguintes condições" @@ -467,10 +860,6 @@ msgstr "Acrescentar condição" msgid "and" msgstr "e" -#: addons/web/static/src/xml/base.xml:0 -msgid "Cancel" -msgstr "Cancelar" - #: addons/web/static/src/xml/base.xml:0 msgid "Save & New" msgstr "Guardar & Novo" @@ -479,10 +868,6 @@ msgstr "Guardar & Novo" msgid "Save & Close" msgstr "Guardar & Fechar" -#: addons/web/static/src/xml/base.xml:0 -msgid "Export" -msgstr "Exportar" - #: addons/web/static/src/xml/base.xml:0 msgid "" "This wizard will export all data that matches the current search criteria to " @@ -519,10 +904,6 @@ msgstr "Campos a exportar" msgid "Save fields list" msgstr "Gravar lista de campos" -#: addons/web/static/src/xml/base.xml:0 -msgid "Remove" -msgstr "Remover" - #: addons/web/static/src/xml/base.xml:0 msgid "Remove All" msgstr "Remover tudo" @@ -539,10 +920,6 @@ msgstr " " msgid "Save as:" msgstr "Guardar como:" -#: addons/web/static/src/xml/base.xml:0 -msgid "Ok" -msgstr "Ok" - #: addons/web/static/src/xml/base.xml:0 msgid "Saved exports:" msgstr "Exportações guardadas:" @@ -559,10 +936,6 @@ msgstr "Nova senha:" msgid "Confirm Password:" msgstr "Confirme a senha:" -#: addons/web/static/src/xml/base.xml:0 -msgid "Import" -msgstr "Importar" - #: addons/web/static/src/xml/base.xml:0 msgid "1. Import a .CSV file" msgstr "1. Importar um ficheiro .CSV" diff --git a/addons/web/po/pt_BR.po b/addons/web/po/pt_BR.po index b80ea3a78bd..b3a68d8b539 100644 --- a/addons/web/po/pt_BR.po +++ b/addons/web/po/pt_BR.po @@ -7,54 +7,399 @@ msgid "" msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2011-10-07 10:38+0200\n" +"POT-Creation-Date: 2011-12-20 18:48+0100\n" "PO-Revision-Date: 2011-11-12 18:57+0000\n" "Last-Translator: Cristiano Gavião \n" "Language-Team: Brazilian Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n" -"X-Generator: Launchpad (build 14299)\n" +"X-Launchpad-Export-Date: 2011-12-21 05:27+0000\n" +"X-Generator: Launchpad (build 14538)\n" -#: addons/web/static/src/js/view_form.js:355 +#: addons/web/static/src/js/chrome.js:162 +#: addons/web/static/src/js/chrome.js:175 +#: addons/web/static/src/js/chrome.js:369 +#: addons/web/static/src/js/view_form.js:358 +#: addons/web/static/src/js/view_form.js:1078 +#: addons/web/static/src/xml/base.xml:0 +msgid "Ok" +msgstr "Ok" + +#: addons/web/static/src/js/chrome.js:668 +msgid "About" +msgstr "" + +#: addons/web/static/src/js/chrome.js:748 +msgid "Preferences" +msgstr "" + +#: addons/web/static/src/js/chrome.js:752 +msgid "Change password" +msgstr "" + +#: addons/web/static/src/js/chrome.js:753 +#: addons/web/static/src/js/search.js:235 +#: addons/web/static/src/js/search.js:276 +#: addons/web/static/src/js/view_editor.js:97 +#: addons/web/static/src/js/view_editor.js:778 +#: addons/web/static/src/js/view_editor.js:907 +#: addons/web/static/src/js/view_form.js:1085 +#: addons/web/static/src/xml/base.xml:0 +msgid "Cancel" +msgstr "Cancelar" + +#: addons/web/static/src/js/chrome.js:754 +#: addons/web/static/src/js/view_editor.js:75 +#: addons/web/static/src/js/views.js:871 addons/web/static/src/xml/base.xml:0 +msgid "Save" +msgstr "" + +#: addons/web/static/src/js/chrome.js:774 addons/web/static/src/xml/base.xml:0 +msgid "Change Password" +msgstr "" + +#: addons/web/static/src/js/data_export.js:6 +msgid "Export Data" +msgstr "" + +#: addons/web/static/src/js/data_export.js:23 +#: addons/web/static/src/js/data_import.js:73 +#: addons/web/static/src/js/view_editor.js:49 +#: addons/web/static/src/js/view_editor.js:387 +#: addons/web/static/src/js/view_form.js:2775 +#: addons/web/static/src/js/views.js:872 +msgid "Close" +msgstr "Fechar" + +#: addons/web/static/src/js/data_export.js:24 +msgid "Export To File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:34 +msgid "Import Data" +msgstr "" + +#: addons/web/static/src/js/data_import.js:74 +msgid "Import File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:109 +msgid "External ID" +msgstr "" + +#: addons/web/static/src/js/search.js:233 +msgid "Filter Entry" +msgstr "" + +#: addons/web/static/src/js/search.js:238 +#: addons/web/static/src/js/search.js:279 +msgid "OK" +msgstr "" + +#: addons/web/static/src/js/search.js:274 addons/web/static/src/xml/base.xml:0 +msgid "Add to Dashboard" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "Invalid Search" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "triggered from search view" +msgstr "" + +#: addons/web/static/src/js/search.js:490 +#, python-format +msgid "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s" +msgstr "" + +#: addons/web/static/src/js/search.js:822 +msgid "not a valid integer" +msgstr "" + +#: addons/web/static/src/js/search.js:836 +msgid "not a valid number" +msgstr "" + +#: addons/web/static/src/js/search.js:898 +msgid "Yes" +msgstr "" + +#: addons/web/static/src/js/search.js:899 +msgid "No" +msgstr "" + +#: addons/web/static/src/js/search.js:1252 +msgid "contains" +msgstr "" + +#: addons/web/static/src/js/search.js:1253 +msgid "doesn't contain" +msgstr "" + +#: addons/web/static/src/js/search.js:1254 +#: addons/web/static/src/js/search.js:1269 +#: addons/web/static/src/js/search.js:1289 +#: addons/web/static/src/js/search.js:1309 +#: addons/web/static/src/js/search.js:1331 +msgid "is equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1255 +#: addons/web/static/src/js/search.js:1270 +#: addons/web/static/src/js/search.js:1290 +#: addons/web/static/src/js/search.js:1310 +#: addons/web/static/src/js/search.js:1332 +msgid "is not equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1256 +#: addons/web/static/src/js/search.js:1271 +#: addons/web/static/src/js/search.js:1291 +#: addons/web/static/src/js/search.js:1311 +#: addons/web/static/src/js/search.js:1333 +msgid "greater than" +msgstr "" + +#: addons/web/static/src/js/search.js:1257 +#: addons/web/static/src/js/search.js:1272 +#: addons/web/static/src/js/search.js:1292 +#: addons/web/static/src/js/search.js:1312 +#: addons/web/static/src/js/search.js:1334 +msgid "less than" +msgstr "" + +#: addons/web/static/src/js/search.js:1258 +#: addons/web/static/src/js/search.js:1273 +#: addons/web/static/src/js/search.js:1293 +#: addons/web/static/src/js/search.js:1313 +#: addons/web/static/src/js/search.js:1335 +msgid "greater or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1259 +#: addons/web/static/src/js/search.js:1274 +#: addons/web/static/src/js/search.js:1294 +#: addons/web/static/src/js/search.js:1314 +#: addons/web/static/src/js/search.js:1336 +msgid "less or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1325 +#: addons/web/static/src/js/search.js:1350 +msgid "is" +msgstr "" + +#: addons/web/static/src/js/search.js:1351 +msgid "is not" +msgstr "" + +#: addons/web/static/src/js/search.js:1364 +msgid "is true" +msgstr "" + +#: addons/web/static/src/js/search.js:1365 +msgid "is false" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:42 +msgid "ViewEditor" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:46 +#: addons/web/static/src/js/view_list.js:17 +#: addons/web/static/src/xml/base.xml:0 +msgid "Create" +msgstr "Criar" + +#: addons/web/static/src/js/view_editor.js:47 +#: addons/web/static/src/xml/base.xml:0 +msgid "Edit" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:48 +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove" +msgstr "Remover" + +#: addons/web/static/src/js/view_editor.js:71 +#, python-format +msgid "Create a view (%s)" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:170 +msgid "Do you really want to remove this view?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:367 +#, python-format +msgid "View Editor %d - %s" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:371 +msgid "Preview" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:442 +msgid "Do you really want to remove this node?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:756 +#: addons/web/static/src/js/view_editor.js:883 +msgid "Properties" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:760 +#: addons/web/static/src/js/view_editor.js:887 +msgid "Update" +msgstr "" + +#: addons/web/static/src/js/view_form.js:17 +msgid "Form" +msgstr "" + +#: addons/web/static/src/js/view_form.js:401 msgid "" "Warning, the record has been modified, your changes will be discarded." msgstr "Aviso, o registro foi modificado, suas alterações serão descartadas." -#: addons/web/static/src/js/view_form.js:1659 +#: addons/web/static/src/js/view_form.js:612 +msgid "Attachments" +msgstr "" + +#: addons/web/static/src/js/view_form.js:650 +#, python-format +msgid "Do you really want to delete the attachment %s?" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1075 +msgid "Confirm" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1838 msgid "   Search More..." msgstr "   Procurar Mais..." -#: addons/web/static/src/js/view_form.js:1672 +#: addons/web/static/src/js/view_form.js:1851 #, python-format msgid "   Create \"%s\"" msgstr "" -#: addons/web/static/src/js/view_form.js:1678 +#: addons/web/static/src/js/view_form.js:1857 msgid "   Create and Edit..." msgstr "" -#: addons/web/static/src/js/views.js:568 +#: addons/web/static/src/js/view_form.js:2404 +#: addons/web/static/src/xml/base.xml:0 +msgid "Add" +msgstr "Adicionar" + +#: addons/web/static/src/js/view_list.js:8 +msgid "List" +msgstr "" + +#: addons/web/static/src/js/view_list.js:269 +msgid "Unlimited" +msgstr "" + +#: addons/web/static/src/js/view_list.js:516 +msgid "Do you really want to remove these records?" +msgstr "" + +#: addons/web/static/src/js/view_list.js:1202 +msgid "Undefined" +msgstr "" + +#: addons/web/static/src/js/view_page.js:8 +msgid "Page" +msgstr "" + +#: addons/web/static/src/js/view_page.js:52 +msgid "Do you really want to delete this record?" +msgstr "" + +#: addons/web/static/src/js/view_page.js:227 +msgid "Download" +msgstr "" + +#: addons/web/static/src/js/view_tree.js:11 +msgid "Tree" +msgstr "" + +#: addons/web/static/src/js/views.js:590 +msgid "Search: " +msgstr "" + +#: addons/web/static/src/js/views.js:710 +msgid "Customize" +msgstr "" + +#: addons/web/static/src/js/views.js:713 +msgid "Manage Views" +msgstr "" + +#: addons/web/static/src/js/views.js:715 addons/web/static/src/js/views.js:719 +#: addons/web/static/src/js/views.js:724 +msgid "Manage views of the current object" +msgstr "" + +#: addons/web/static/src/js/views.js:717 +msgid "Edit Workflow" +msgstr "" + +#: addons/web/static/src/js/views.js:722 +msgid "Customize Object" +msgstr "" + +#: addons/web/static/src/js/views.js:726 +msgid "Translate" +msgstr "" + +#: addons/web/static/src/js/views.js:728 +msgid "Technical translation" +msgstr "" + +#: addons/web/static/src/js/views.js:733 +msgid "Other Options" +msgstr "" + +#: addons/web/static/src/js/views.js:736 addons/web/static/src/xml/base.xml:0 +msgid "Import" +msgstr "Importar" + +#: addons/web/static/src/js/views.js:739 addons/web/static/src/xml/base.xml:0 +msgid "Export" +msgstr "Exportar" + +#: addons/web/static/src/js/views.js:742 +msgid "View Log" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Reports" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Actions" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Links" +msgstr "" + +#: addons/web/static/src/js/views.js:831 msgid "You must choose at least one record." msgstr "" -#: addons/web/static/src/js/views.js:569 +#: addons/web/static/src/js/views.js:832 msgid "Warning" msgstr "" -#: addons/web/static/src/js/views.js:609 +#: addons/web/static/src/js/views.js:866 msgid "Translations" msgstr "" -#: addons/web/static/src/js/views.js:614 addons/web/static/src/xml/base.xml:0 -msgid "Save" -msgstr "" - -#: addons/web/static/src/js/views.js:615 -msgid "Close" -msgstr "Fechar" - #: addons/web/static/src/xml/base.xml:0 msgid "x" msgstr "" @@ -83,10 +428,6 @@ msgstr "" msgid "Loading..." msgstr "Carregando..." -#: addons/web/static/src/xml/base.xml:0 -msgid "Create" -msgstr "Criar" - #: addons/web/static/src/xml/base.xml:0 msgid "Drop" msgstr "Soltar" @@ -273,19 +614,31 @@ msgid "Disable all tips" msgstr "Desligar todas as dicas" #: addons/web/static/src/xml/base.xml:0 -msgid "View#" +msgid "More…" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Fields" +msgid "Debug View#" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "View labels" +msgid "- Fields View Get" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Sidebar Relates" +msgid "- Edit" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "View" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit SearchView" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit Action" msgstr "" #: addons/web/static/src/xml/base.xml:0 @@ -296,62 +649,10 @@ msgstr "" msgid ":" msgstr "" -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate view" -msgstr "Visão de Tradução" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate sidebar" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "Delete" msgstr "Excluir" -#: addons/web/static/src/xml/base.xml:0 -msgid "First" -msgstr "Primeiro" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid ">" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Last" -msgstr "Último" - -#: addons/web/static/src/xml/base.xml:0 -msgid "♻" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Save & Edit" -msgstr "Salvar & Editar" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Create & Edit" -msgstr "Criar & Editar" - -#: addons/web/static/src/xml/base.xml:0 -msgid "New" -msgstr "Novo" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Duplicate" -msgstr "Duplicar" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Readonly/Editable" -msgstr "Apenas Leitura/Editável" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<<" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "0" msgstr "" @@ -361,28 +662,88 @@ msgid "/" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid ">>" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Add" -msgstr "Adicionar" +msgid "Duplicate" +msgstr "Duplicar" #: addons/web/static/src/xml/base.xml:0 msgid "Unhandled widget" msgstr "" +#: addons/web/static/src/xml/base.xml:0 +msgid "Notebook Page \"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "\"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Modifiers:" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "?" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "#" +msgid "(nolabel)" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Done" -msgstr "Concluído" +msgid "Field:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Object:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Widget:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Size:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Context:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Domain:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "On change:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Relation:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Selection:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "[" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "]" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#" +msgstr "" #: addons/web/static/src/xml/base.xml:0 msgid "Open..." @@ -416,18 +777,38 @@ msgstr "Salvar como" msgid "Clear" msgstr "Limpar" +#: addons/web/static/src/xml/base.xml:0 +msgid "Button" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(no string)" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Special:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Button Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Method:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Action ID:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Advanced Filter" msgstr "Filtro Avançado" -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Filters --" -msgstr "-- Filtros --" - -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Actions --" -msgstr "-- Ações --" - #: addons/web/static/src/xml/base.xml:0 msgid "Save Filter" msgstr "Salvar filtro" @@ -444,6 +825,18 @@ msgstr "Nome do Filtro" msgid "(Any existing filter with the same name will be replaced)" msgstr "(Qualquer filtro existente com o mesmo nome será substituído)" +#: addons/web/static/src/xml/base.xml:0 +msgid "Select Dashboard to add this filter to:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Title of new Dashboard item:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filters" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Any of the following conditions must match" msgstr "Qualquer das seguintes condições deve ser verdadeira" @@ -464,10 +857,6 @@ msgstr "Adicionar condição" msgid "and" msgstr "e" -#: addons/web/static/src/xml/base.xml:0 -msgid "Cancel" -msgstr "Cancelar" - #: addons/web/static/src/xml/base.xml:0 msgid "Save & New" msgstr "Salvar & Novo" @@ -476,10 +865,6 @@ msgstr "Salvar & Novo" msgid "Save & Close" msgstr "Salvar & Fechar" -#: addons/web/static/src/xml/base.xml:0 -msgid "Export" -msgstr "Exportar" - #: addons/web/static/src/xml/base.xml:0 msgid "" "This wizard will export all data that matches the current search criteria to " @@ -516,10 +901,6 @@ msgstr "Campos para exportar" msgid "Save fields list" msgstr "Salvar lista de campos" -#: addons/web/static/src/xml/base.xml:0 -msgid "Remove" -msgstr "Remover" - #: addons/web/static/src/xml/base.xml:0 msgid "Remove All" msgstr "Remover Tudo" @@ -536,10 +917,6 @@ msgstr " " msgid "Save as:" msgstr "Salvar como:" -#: addons/web/static/src/xml/base.xml:0 -msgid "Ok" -msgstr "Ok" - #: addons/web/static/src/xml/base.xml:0 msgid "Saved exports:" msgstr "" @@ -556,10 +933,6 @@ msgstr "Nova Senha:" msgid "Confirm Password:" msgstr "" -#: addons/web/static/src/xml/base.xml:0 -msgid "Import" -msgstr "Importar" - #: addons/web/static/src/xml/base.xml:0 msgid "1. Import a .CSV file" msgstr "Importar um arquivo CSV." diff --git a/addons/web/po/ru.po b/addons/web/po/ru.po new file mode 100644 index 00000000000..e34f6949ba6 --- /dev/null +++ b/addons/web/po/ru.po @@ -0,0 +1,1050 @@ +# Russian translation for openerp-web +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the openerp-web package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: openerp-web\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2011-12-20 18:48+0100\n" +"PO-Revision-Date: 2011-12-06 08:05+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Russian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-12-21 05:27+0000\n" +"X-Generator: Launchpad (build 14538)\n" + +#: addons/web/static/src/js/chrome.js:162 +#: addons/web/static/src/js/chrome.js:175 +#: addons/web/static/src/js/chrome.js:369 +#: addons/web/static/src/js/view_form.js:358 +#: addons/web/static/src/js/view_form.js:1078 +#: addons/web/static/src/xml/base.xml:0 +msgid "Ok" +msgstr "" + +#: addons/web/static/src/js/chrome.js:668 +msgid "About" +msgstr "" + +#: addons/web/static/src/js/chrome.js:748 +msgid "Preferences" +msgstr "" + +#: addons/web/static/src/js/chrome.js:752 +msgid "Change password" +msgstr "" + +#: addons/web/static/src/js/chrome.js:753 +#: addons/web/static/src/js/search.js:235 +#: addons/web/static/src/js/search.js:276 +#: addons/web/static/src/js/view_editor.js:97 +#: addons/web/static/src/js/view_editor.js:778 +#: addons/web/static/src/js/view_editor.js:907 +#: addons/web/static/src/js/view_form.js:1085 +#: addons/web/static/src/xml/base.xml:0 +msgid "Cancel" +msgstr "" + +#: addons/web/static/src/js/chrome.js:754 +#: addons/web/static/src/js/view_editor.js:75 +#: addons/web/static/src/js/views.js:871 addons/web/static/src/xml/base.xml:0 +msgid "Save" +msgstr "" + +#: addons/web/static/src/js/chrome.js:774 addons/web/static/src/xml/base.xml:0 +msgid "Change Password" +msgstr "" + +#: addons/web/static/src/js/data_export.js:6 +msgid "Export Data" +msgstr "" + +#: addons/web/static/src/js/data_export.js:23 +#: addons/web/static/src/js/data_import.js:73 +#: addons/web/static/src/js/view_editor.js:49 +#: addons/web/static/src/js/view_editor.js:387 +#: addons/web/static/src/js/view_form.js:2775 +#: addons/web/static/src/js/views.js:872 +msgid "Close" +msgstr "" + +#: addons/web/static/src/js/data_export.js:24 +msgid "Export To File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:34 +msgid "Import Data" +msgstr "" + +#: addons/web/static/src/js/data_import.js:74 +msgid "Import File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:109 +msgid "External ID" +msgstr "" + +#: addons/web/static/src/js/search.js:233 +msgid "Filter Entry" +msgstr "" + +#: addons/web/static/src/js/search.js:238 +#: addons/web/static/src/js/search.js:279 +msgid "OK" +msgstr "" + +#: addons/web/static/src/js/search.js:274 addons/web/static/src/xml/base.xml:0 +msgid "Add to Dashboard" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "Invalid Search" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "triggered from search view" +msgstr "" + +#: addons/web/static/src/js/search.js:490 +#, python-format +msgid "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s" +msgstr "" + +#: addons/web/static/src/js/search.js:822 +msgid "not a valid integer" +msgstr "" + +#: addons/web/static/src/js/search.js:836 +msgid "not a valid number" +msgstr "" + +#: addons/web/static/src/js/search.js:898 +msgid "Yes" +msgstr "" + +#: addons/web/static/src/js/search.js:899 +msgid "No" +msgstr "" + +#: addons/web/static/src/js/search.js:1252 +msgid "contains" +msgstr "" + +#: addons/web/static/src/js/search.js:1253 +msgid "doesn't contain" +msgstr "" + +#: addons/web/static/src/js/search.js:1254 +#: addons/web/static/src/js/search.js:1269 +#: addons/web/static/src/js/search.js:1289 +#: addons/web/static/src/js/search.js:1309 +#: addons/web/static/src/js/search.js:1331 +msgid "is equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1255 +#: addons/web/static/src/js/search.js:1270 +#: addons/web/static/src/js/search.js:1290 +#: addons/web/static/src/js/search.js:1310 +#: addons/web/static/src/js/search.js:1332 +msgid "is not equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1256 +#: addons/web/static/src/js/search.js:1271 +#: addons/web/static/src/js/search.js:1291 +#: addons/web/static/src/js/search.js:1311 +#: addons/web/static/src/js/search.js:1333 +msgid "greater than" +msgstr "" + +#: addons/web/static/src/js/search.js:1257 +#: addons/web/static/src/js/search.js:1272 +#: addons/web/static/src/js/search.js:1292 +#: addons/web/static/src/js/search.js:1312 +#: addons/web/static/src/js/search.js:1334 +msgid "less than" +msgstr "" + +#: addons/web/static/src/js/search.js:1258 +#: addons/web/static/src/js/search.js:1273 +#: addons/web/static/src/js/search.js:1293 +#: addons/web/static/src/js/search.js:1313 +#: addons/web/static/src/js/search.js:1335 +msgid "greater or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1259 +#: addons/web/static/src/js/search.js:1274 +#: addons/web/static/src/js/search.js:1294 +#: addons/web/static/src/js/search.js:1314 +#: addons/web/static/src/js/search.js:1336 +msgid "less or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1325 +#: addons/web/static/src/js/search.js:1350 +msgid "is" +msgstr "" + +#: addons/web/static/src/js/search.js:1351 +msgid "is not" +msgstr "" + +#: addons/web/static/src/js/search.js:1364 +msgid "is true" +msgstr "" + +#: addons/web/static/src/js/search.js:1365 +msgid "is false" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:42 +msgid "ViewEditor" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:46 +#: addons/web/static/src/js/view_list.js:17 +#: addons/web/static/src/xml/base.xml:0 +msgid "Create" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:47 +#: addons/web/static/src/xml/base.xml:0 +msgid "Edit" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:48 +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:71 +#, python-format +msgid "Create a view (%s)" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:170 +msgid "Do you really want to remove this view?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:367 +#, python-format +msgid "View Editor %d - %s" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:371 +msgid "Preview" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:442 +msgid "Do you really want to remove this node?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:756 +#: addons/web/static/src/js/view_editor.js:883 +msgid "Properties" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:760 +#: addons/web/static/src/js/view_editor.js:887 +msgid "Update" +msgstr "" + +#: addons/web/static/src/js/view_form.js:17 +msgid "Form" +msgstr "" + +#: addons/web/static/src/js/view_form.js:401 +msgid "" +"Warning, the record has been modified, your changes will be discarded." +msgstr "" + +#: addons/web/static/src/js/view_form.js:612 +msgid "Attachments" +msgstr "" + +#: addons/web/static/src/js/view_form.js:650 +#, python-format +msgid "Do you really want to delete the attachment %s?" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1075 +msgid "Confirm" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1838 +msgid "   Search More..." +msgstr "" + +#: addons/web/static/src/js/view_form.js:1851 +#, python-format +msgid "   Create \"%s\"" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1857 +msgid "   Create and Edit..." +msgstr "" + +#: addons/web/static/src/js/view_form.js:2404 +#: addons/web/static/src/xml/base.xml:0 +msgid "Add" +msgstr "" + +#: addons/web/static/src/js/view_list.js:8 +msgid "List" +msgstr "" + +#: addons/web/static/src/js/view_list.js:269 +msgid "Unlimited" +msgstr "" + +#: addons/web/static/src/js/view_list.js:516 +msgid "Do you really want to remove these records?" +msgstr "" + +#: addons/web/static/src/js/view_list.js:1202 +msgid "Undefined" +msgstr "" + +#: addons/web/static/src/js/view_page.js:8 +msgid "Page" +msgstr "" + +#: addons/web/static/src/js/view_page.js:52 +msgid "Do you really want to delete this record?" +msgstr "" + +#: addons/web/static/src/js/view_page.js:227 +msgid "Download" +msgstr "" + +#: addons/web/static/src/js/view_tree.js:11 +msgid "Tree" +msgstr "" + +#: addons/web/static/src/js/views.js:590 +msgid "Search: " +msgstr "" + +#: addons/web/static/src/js/views.js:710 +msgid "Customize" +msgstr "" + +#: addons/web/static/src/js/views.js:713 +msgid "Manage Views" +msgstr "" + +#: addons/web/static/src/js/views.js:715 addons/web/static/src/js/views.js:719 +#: addons/web/static/src/js/views.js:724 +msgid "Manage views of the current object" +msgstr "" + +#: addons/web/static/src/js/views.js:717 +msgid "Edit Workflow" +msgstr "" + +#: addons/web/static/src/js/views.js:722 +msgid "Customize Object" +msgstr "" + +#: addons/web/static/src/js/views.js:726 +msgid "Translate" +msgstr "" + +#: addons/web/static/src/js/views.js:728 +msgid "Technical translation" +msgstr "" + +#: addons/web/static/src/js/views.js:733 +msgid "Other Options" +msgstr "" + +#: addons/web/static/src/js/views.js:736 addons/web/static/src/xml/base.xml:0 +msgid "Import" +msgstr "" + +#: addons/web/static/src/js/views.js:739 addons/web/static/src/xml/base.xml:0 +msgid "Export" +msgstr "" + +#: addons/web/static/src/js/views.js:742 +msgid "View Log" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Reports" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Actions" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Links" +msgstr "" + +#: addons/web/static/src/js/views.js:831 +msgid "You must choose at least one record." +msgstr "" + +#: addons/web/static/src/js/views.js:832 +msgid "Warning" +msgstr "" + +#: addons/web/static/src/js/views.js:866 +msgid "Translations" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "x" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#{title}" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#{text}" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Powered by" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "openerp.com" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Loading..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Drop" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Backup" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Restore" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Password" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Back to Login" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "CREATE DATABASE" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Master password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "New database name:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Load Demonstration data:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Default language:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Admin password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Confirm password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "DROP DATABASE" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Database:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Master Password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "BACKUP DATABASE" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "RESTORE DATABASE" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "File:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "CHANGE MASTER PASSWORD" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "New master password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Confirm new master password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "User:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Database" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Login" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Bad username or password" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"We think that daily job activities can be more intuitive, efficient, " +"automated, .. and even fun." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP's vision to be:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Full featured" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"Today's enterprise challenges are multiple. We provide one module for each " +"need." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Open Source" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"To Build a great product, we rely on the knowledge of thousands of " +"contributors." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "User Friendly" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"In order to be productive, people need clean and easy to use interface." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid ")" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "LOGOUT" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "«" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "»" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "oe_secondary_menu_item" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "oe_secondary_submenu_item" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Hide this tip" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Disable all tips" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "More…" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Debug View#" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Fields View Get" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "View" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit SearchView" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit Action" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Field" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid ":" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Delete" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "0" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "/" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Duplicate" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Unhandled widget" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Notebook Page \"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "\"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Modifiers:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "?" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(nolabel)" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Field:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Object:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Widget:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Size:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Context:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Domain:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "On change:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Relation:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Selection:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "[" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "]" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Open..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Create..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Uploading ..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Select" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save As" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Clear" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Button" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(no string)" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Special:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Button Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Method:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Action ID:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filter" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save Filter" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Manage Filters" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Filter Name:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(Any existing filter with the same name will be replaced)" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Select Dashboard to add this filter to:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Title of new Dashboard item:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filters" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Any of the following conditions must match" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "All the following conditions must match" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "None of the following conditions must match" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Add condition" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "and" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save & New" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save & Close" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"This wizard will export all data that matches the current search criteria to " +"a CSV file.\n" +" You can export all data or only the fields that can be " +"reimported after modification." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Import Compatible Export" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export all Data" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export Formats" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Available fields" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Fields to export" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save fields list" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove All" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Name" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid " " +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save as:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Saved exports:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Old Password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "New Password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Confirm Password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "1. Import a .CSV file" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"Select a .CSV file to import. If you need a sample of file to import,\n" +" you should use the export tool with the \"Import Compatible\" option." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "CSV File:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "2. Check your file format" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Import Options" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Does your file have titles?" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Separator:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Delimiter:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Encoding:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "UTF-8" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Latin 1" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Lines to skip" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "The import failed due to:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Here is a preview of the file we could not import:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP Web" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Version" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Copyright © 2011-TODAY OpenERP SA. All Rights Reserved." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP is a trademark of the" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP SA Company" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Licenced under the terms of" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "GNU Affero General Public License" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "About OpenERP" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"is a free enterprise-scale software system that is designed to boost\n" +" productivity and profit through data integration. It connects, " +"improves and\n" +" manages business processes in areas such as sales, finance, " +"supply chain,\n" +" project management, production, services, CRM, etc..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"The system is platform-independent, and can be installed on Windows, Mac OS " +"X,\n" +" and various Linux and other Unix-based distributions. Its " +"architecture enables\n" +" new functionality to be rapidly created, modifications to be " +"made to a\n" +" production system and migration to a new version to be " +"straightforward." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"Depending on your needs, OpenERP is available through a web or application " +"client." +msgstr "" diff --git a/addons/web/po/sl.po b/addons/web/po/sl.po index 585dae78293..3f76f10af14 100644 --- a/addons/web/po/sl.po +++ b/addons/web/po/sl.po @@ -7,55 +7,400 @@ msgid "" msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2011-10-07 10:38+0200\n" +"POT-Creation-Date: 2011-12-20 18:48+0100\n" "PO-Revision-Date: 2011-10-19 07:07+0000\n" "Last-Translator: Anze (Neotek) \n" "Language-Team: Slovenian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-11-21 05:50+0000\n" -"X-Generator: Launchpad (build 14299)\n" +"X-Launchpad-Export-Date: 2011-12-21 05:27+0000\n" +"X-Generator: Launchpad (build 14538)\n" -#: addons/web/static/src/js/view_form.js:355 +#: addons/web/static/src/js/chrome.js:162 +#: addons/web/static/src/js/chrome.js:175 +#: addons/web/static/src/js/chrome.js:369 +#: addons/web/static/src/js/view_form.js:358 +#: addons/web/static/src/js/view_form.js:1078 +#: addons/web/static/src/xml/base.xml:0 +msgid "Ok" +msgstr "Vredu" + +#: addons/web/static/src/js/chrome.js:668 +msgid "About" +msgstr "" + +#: addons/web/static/src/js/chrome.js:748 +msgid "Preferences" +msgstr "" + +#: addons/web/static/src/js/chrome.js:752 +msgid "Change password" +msgstr "" + +#: addons/web/static/src/js/chrome.js:753 +#: addons/web/static/src/js/search.js:235 +#: addons/web/static/src/js/search.js:276 +#: addons/web/static/src/js/view_editor.js:97 +#: addons/web/static/src/js/view_editor.js:778 +#: addons/web/static/src/js/view_editor.js:907 +#: addons/web/static/src/js/view_form.js:1085 +#: addons/web/static/src/xml/base.xml:0 +msgid "Cancel" +msgstr "Prekliči" + +#: addons/web/static/src/js/chrome.js:754 +#: addons/web/static/src/js/view_editor.js:75 +#: addons/web/static/src/js/views.js:871 addons/web/static/src/xml/base.xml:0 +msgid "Save" +msgstr "Shrani" + +#: addons/web/static/src/js/chrome.js:774 addons/web/static/src/xml/base.xml:0 +msgid "Change Password" +msgstr "" + +#: addons/web/static/src/js/data_export.js:6 +msgid "Export Data" +msgstr "" + +#: addons/web/static/src/js/data_export.js:23 +#: addons/web/static/src/js/data_import.js:73 +#: addons/web/static/src/js/view_editor.js:49 +#: addons/web/static/src/js/view_editor.js:387 +#: addons/web/static/src/js/view_form.js:2775 +#: addons/web/static/src/js/views.js:872 +msgid "Close" +msgstr "Zapri" + +#: addons/web/static/src/js/data_export.js:24 +msgid "Export To File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:34 +msgid "Import Data" +msgstr "" + +#: addons/web/static/src/js/data_import.js:74 +msgid "Import File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:109 +msgid "External ID" +msgstr "" + +#: addons/web/static/src/js/search.js:233 +msgid "Filter Entry" +msgstr "" + +#: addons/web/static/src/js/search.js:238 +#: addons/web/static/src/js/search.js:279 +msgid "OK" +msgstr "" + +#: addons/web/static/src/js/search.js:274 addons/web/static/src/xml/base.xml:0 +msgid "Add to Dashboard" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "Invalid Search" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "triggered from search view" +msgstr "" + +#: addons/web/static/src/js/search.js:490 +#, python-format +msgid "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s" +msgstr "" + +#: addons/web/static/src/js/search.js:822 +msgid "not a valid integer" +msgstr "" + +#: addons/web/static/src/js/search.js:836 +msgid "not a valid number" +msgstr "" + +#: addons/web/static/src/js/search.js:898 +msgid "Yes" +msgstr "" + +#: addons/web/static/src/js/search.js:899 +msgid "No" +msgstr "" + +#: addons/web/static/src/js/search.js:1252 +msgid "contains" +msgstr "" + +#: addons/web/static/src/js/search.js:1253 +msgid "doesn't contain" +msgstr "" + +#: addons/web/static/src/js/search.js:1254 +#: addons/web/static/src/js/search.js:1269 +#: addons/web/static/src/js/search.js:1289 +#: addons/web/static/src/js/search.js:1309 +#: addons/web/static/src/js/search.js:1331 +msgid "is equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1255 +#: addons/web/static/src/js/search.js:1270 +#: addons/web/static/src/js/search.js:1290 +#: addons/web/static/src/js/search.js:1310 +#: addons/web/static/src/js/search.js:1332 +msgid "is not equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1256 +#: addons/web/static/src/js/search.js:1271 +#: addons/web/static/src/js/search.js:1291 +#: addons/web/static/src/js/search.js:1311 +#: addons/web/static/src/js/search.js:1333 +msgid "greater than" +msgstr "" + +#: addons/web/static/src/js/search.js:1257 +#: addons/web/static/src/js/search.js:1272 +#: addons/web/static/src/js/search.js:1292 +#: addons/web/static/src/js/search.js:1312 +#: addons/web/static/src/js/search.js:1334 +msgid "less than" +msgstr "" + +#: addons/web/static/src/js/search.js:1258 +#: addons/web/static/src/js/search.js:1273 +#: addons/web/static/src/js/search.js:1293 +#: addons/web/static/src/js/search.js:1313 +#: addons/web/static/src/js/search.js:1335 +msgid "greater or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1259 +#: addons/web/static/src/js/search.js:1274 +#: addons/web/static/src/js/search.js:1294 +#: addons/web/static/src/js/search.js:1314 +#: addons/web/static/src/js/search.js:1336 +msgid "less or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1325 +#: addons/web/static/src/js/search.js:1350 +msgid "is" +msgstr "" + +#: addons/web/static/src/js/search.js:1351 +msgid "is not" +msgstr "" + +#: addons/web/static/src/js/search.js:1364 +msgid "is true" +msgstr "" + +#: addons/web/static/src/js/search.js:1365 +msgid "is false" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:42 +msgid "ViewEditor" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:46 +#: addons/web/static/src/js/view_list.js:17 +#: addons/web/static/src/xml/base.xml:0 +msgid "Create" +msgstr "Ustvari" + +#: addons/web/static/src/js/view_editor.js:47 +#: addons/web/static/src/xml/base.xml:0 +msgid "Edit" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:48 +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove" +msgstr "Odstrani" + +#: addons/web/static/src/js/view_editor.js:71 +#, python-format +msgid "Create a view (%s)" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:170 +msgid "Do you really want to remove this view?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:367 +#, python-format +msgid "View Editor %d - %s" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:371 +msgid "Preview" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:442 +msgid "Do you really want to remove this node?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:756 +#: addons/web/static/src/js/view_editor.js:883 +msgid "Properties" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:760 +#: addons/web/static/src/js/view_editor.js:887 +msgid "Update" +msgstr "" + +#: addons/web/static/src/js/view_form.js:17 +msgid "Form" +msgstr "" + +#: addons/web/static/src/js/view_form.js:401 msgid "" "Warning, the record has been modified, your changes will be discarded." msgstr "" "Opozorilo, zapis je bil spremenjen, zato bodo vaše spremembe zavržene." -#: addons/web/static/src/js/view_form.js:1659 +#: addons/web/static/src/js/view_form.js:612 +msgid "Attachments" +msgstr "" + +#: addons/web/static/src/js/view_form.js:650 +#, python-format +msgid "Do you really want to delete the attachment %s?" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1075 +msgid "Confirm" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1838 msgid "   Search More..." msgstr "   Iskanje več..." -#: addons/web/static/src/js/view_form.js:1672 +#: addons/web/static/src/js/view_form.js:1851 #, python-format msgid "   Create \"%s\"" msgstr "   Ustvari \"%s\"" -#: addons/web/static/src/js/view_form.js:1678 +#: addons/web/static/src/js/view_form.js:1857 msgid "   Create and Edit..." msgstr "   Ustvari in uredi..." -#: addons/web/static/src/js/views.js:568 +#: addons/web/static/src/js/view_form.js:2404 +#: addons/web/static/src/xml/base.xml:0 +msgid "Add" +msgstr "Dodaj" + +#: addons/web/static/src/js/view_list.js:8 +msgid "List" +msgstr "" + +#: addons/web/static/src/js/view_list.js:269 +msgid "Unlimited" +msgstr "" + +#: addons/web/static/src/js/view_list.js:516 +msgid "Do you really want to remove these records?" +msgstr "" + +#: addons/web/static/src/js/view_list.js:1202 +msgid "Undefined" +msgstr "" + +#: addons/web/static/src/js/view_page.js:8 +msgid "Page" +msgstr "" + +#: addons/web/static/src/js/view_page.js:52 +msgid "Do you really want to delete this record?" +msgstr "" + +#: addons/web/static/src/js/view_page.js:227 +msgid "Download" +msgstr "" + +#: addons/web/static/src/js/view_tree.js:11 +msgid "Tree" +msgstr "" + +#: addons/web/static/src/js/views.js:590 +msgid "Search: " +msgstr "" + +#: addons/web/static/src/js/views.js:710 +msgid "Customize" +msgstr "" + +#: addons/web/static/src/js/views.js:713 +msgid "Manage Views" +msgstr "" + +#: addons/web/static/src/js/views.js:715 addons/web/static/src/js/views.js:719 +#: addons/web/static/src/js/views.js:724 +msgid "Manage views of the current object" +msgstr "" + +#: addons/web/static/src/js/views.js:717 +msgid "Edit Workflow" +msgstr "" + +#: addons/web/static/src/js/views.js:722 +msgid "Customize Object" +msgstr "" + +#: addons/web/static/src/js/views.js:726 +msgid "Translate" +msgstr "" + +#: addons/web/static/src/js/views.js:728 +msgid "Technical translation" +msgstr "" + +#: addons/web/static/src/js/views.js:733 +msgid "Other Options" +msgstr "" + +#: addons/web/static/src/js/views.js:736 addons/web/static/src/xml/base.xml:0 +msgid "Import" +msgstr "Uvozi" + +#: addons/web/static/src/js/views.js:739 addons/web/static/src/xml/base.xml:0 +msgid "Export" +msgstr "Izvozi" + +#: addons/web/static/src/js/views.js:742 +msgid "View Log" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Reports" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Actions" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Links" +msgstr "" + +#: addons/web/static/src/js/views.js:831 msgid "You must choose at least one record." msgstr "Izbrati morate vsaj en zapis." -#: addons/web/static/src/js/views.js:569 +#: addons/web/static/src/js/views.js:832 msgid "Warning" msgstr "Opozorilo" -#: addons/web/static/src/js/views.js:609 +#: addons/web/static/src/js/views.js:866 msgid "Translations" msgstr "Prevodi" -#: addons/web/static/src/js/views.js:614 addons/web/static/src/xml/base.xml:0 -msgid "Save" -msgstr "Shrani" - -#: addons/web/static/src/js/views.js:615 -msgid "Close" -msgstr "Zapri" - #: addons/web/static/src/xml/base.xml:0 msgid "x" msgstr "x" @@ -84,10 +429,6 @@ msgstr "." msgid "Loading..." msgstr "Nalaganje …" -#: addons/web/static/src/xml/base.xml:0 -msgid "Create" -msgstr "Ustvari" - #: addons/web/static/src/xml/base.xml:0 msgid "Drop" msgstr "Izbriši" @@ -274,20 +615,32 @@ msgid "Disable all tips" msgstr "Onemogoči vse namige" #: addons/web/static/src/xml/base.xml:0 -msgid "View#" -msgstr "Ogled#" +msgid "More…" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Fields" -msgstr "Polja" +msgid "Debug View#" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "View labels" -msgstr "Ogled oznak" +msgid "- Fields View Get" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Sidebar Relates" -msgstr "Sorodne stranske vrstice" +msgid "- Edit" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "View" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit SearchView" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit Action" +msgstr "" #: addons/web/static/src/xml/base.xml:0 msgid "Field" @@ -297,62 +650,10 @@ msgstr "Polje" msgid ":" msgstr ":" -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate view" -msgstr "Preveden pogled" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate sidebar" -msgstr "Prevedi stransko vrstico" - #: addons/web/static/src/xml/base.xml:0 msgid "Delete" msgstr "Izbriši" -#: addons/web/static/src/xml/base.xml:0 -msgid "First" -msgstr "Začetek" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<" -msgstr "<" - -#: addons/web/static/src/xml/base.xml:0 -msgid ">" -msgstr ">" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Last" -msgstr "Konec" - -#: addons/web/static/src/xml/base.xml:0 -msgid "♻" -msgstr "♻" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Save & Edit" -msgstr "Shrani & Uredi" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Create & Edit" -msgstr "Ustvari & Uredi" - -#: addons/web/static/src/xml/base.xml:0 -msgid "New" -msgstr "Novo" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Duplicate" -msgstr "Podvoji" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Readonly/Editable" -msgstr "Samo za branje/možno urejanje" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<<" -msgstr "<<" - #: addons/web/static/src/xml/base.xml:0 msgid "0" msgstr "0" @@ -362,28 +663,88 @@ msgid "/" msgstr "/" #: addons/web/static/src/xml/base.xml:0 -msgid ">>" -msgstr ">>" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Add" -msgstr "Dodaj" +msgid "Duplicate" +msgstr "Podvoji" #: addons/web/static/src/xml/base.xml:0 msgid "Unhandled widget" msgstr "Neobravnavani gradnik" +#: addons/web/static/src/xml/base.xml:0 +msgid "Notebook Page \"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "\"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Modifiers:" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "?" msgstr "?" #: addons/web/static/src/xml/base.xml:0 -msgid "#" -msgstr "#" +msgid "(nolabel)" +msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Done" -msgstr "Končano" +msgid "Field:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Object:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Widget:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Size:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Context:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Domain:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "On change:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Relation:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Selection:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "[" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "]" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#" +msgstr "#" #: addons/web/static/src/xml/base.xml:0 msgid "Open..." @@ -417,18 +778,38 @@ msgstr "Shrani kot" msgid "Clear" msgstr "Počisti" +#: addons/web/static/src/xml/base.xml:0 +msgid "Button" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(no string)" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Special:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Button Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Method:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Action ID:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Advanced Filter" msgstr "Napredni filter" -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Filters --" -msgstr "-- Filtr i--" - -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Actions --" -msgstr "-- Dejanja --" - #: addons/web/static/src/xml/base.xml:0 msgid "Save Filter" msgstr "Shrani filter" @@ -445,6 +826,18 @@ msgstr "Ime filtra:" msgid "(Any existing filter with the same name will be replaced)" msgstr "(Vsak obstoječ filter z istim imenom bo zamenjan)" +#: addons/web/static/src/xml/base.xml:0 +msgid "Select Dashboard to add this filter to:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Title of new Dashboard item:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filters" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Any of the following conditions must match" msgstr "Vsak od teh pogojev se mora ujemati" @@ -465,10 +858,6 @@ msgstr "Dodaj pogoj" msgid "and" msgstr "in" -#: addons/web/static/src/xml/base.xml:0 -msgid "Cancel" -msgstr "Prekliči" - #: addons/web/static/src/xml/base.xml:0 msgid "Save & New" msgstr "Shrani & Novo" @@ -477,10 +866,6 @@ msgstr "Shrani & Novo" msgid "Save & Close" msgstr "Shrani & Zapri" -#: addons/web/static/src/xml/base.xml:0 -msgid "Export" -msgstr "Izvozi" - #: addons/web/static/src/xml/base.xml:0 msgid "" "This wizard will export all data that matches the current search criteria to " @@ -521,10 +906,6 @@ msgstr "Polja za izvoz" msgid "Save fields list" msgstr "Shrani seznam polj" -#: addons/web/static/src/xml/base.xml:0 -msgid "Remove" -msgstr "Odstrani" - #: addons/web/static/src/xml/base.xml:0 msgid "Remove All" msgstr "Odstrani vse" @@ -541,10 +922,6 @@ msgstr " " msgid "Save as:" msgstr "Shrani kot:" -#: addons/web/static/src/xml/base.xml:0 -msgid "Ok" -msgstr "Vredu" - #: addons/web/static/src/xml/base.xml:0 msgid "Saved exports:" msgstr "Shranjeni izvozi:" @@ -561,10 +938,6 @@ msgstr "Novo geslo:" msgid "Confirm Password:" msgstr "Potrditev gesla:" -#: addons/web/static/src/xml/base.xml:0 -msgid "Import" -msgstr "Uvozi" - #: addons/web/static/src/xml/base.xml:0 msgid "1. Import a .CSV file" msgstr "1. Uvozi .CSV datoteko" diff --git a/addons/web/po/web.pot b/addons/web/po/web.pot index adfa15066fd..176cdd529b7 100644 --- a/addons/web/po/web.pot +++ b/addons/web/po/web.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2011-10-07 10:38+0200\n" +"POT-Creation-Date: 2011-12-20 18:48+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,43 +17,388 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 0.9.6\n" -#: addons/web/static/src/js/view_form.js:355 +#: addons/web/static/src/js/chrome.js:162 +#: addons/web/static/src/js/chrome.js:175 +#: addons/web/static/src/js/chrome.js:369 +#: addons/web/static/src/js/view_form.js:358 +#: addons/web/static/src/js/view_form.js:1078 +#: addons/web/static/src/xml/base.xml:0 +msgid "Ok" +msgstr "" + +#: addons/web/static/src/js/chrome.js:668 +msgid "About" +msgstr "" + +#: addons/web/static/src/js/chrome.js:748 +msgid "Preferences" +msgstr "" + +#: addons/web/static/src/js/chrome.js:752 +msgid "Change password" +msgstr "" + +#: addons/web/static/src/js/chrome.js:753 +#: addons/web/static/src/js/search.js:235 +#: addons/web/static/src/js/search.js:276 +#: addons/web/static/src/js/view_editor.js:97 +#: addons/web/static/src/js/view_editor.js:778 +#: addons/web/static/src/js/view_editor.js:907 +#: addons/web/static/src/js/view_form.js:1085 +#: addons/web/static/src/xml/base.xml:0 +msgid "Cancel" +msgstr "" + +#: addons/web/static/src/js/chrome.js:754 +#: addons/web/static/src/js/view_editor.js:75 +#: addons/web/static/src/js/views.js:871 addons/web/static/src/xml/base.xml:0 +msgid "Save" +msgstr "" + +#: addons/web/static/src/js/chrome.js:774 addons/web/static/src/xml/base.xml:0 +msgid "Change Password" +msgstr "" + +#: addons/web/static/src/js/data_export.js:6 +msgid "Export Data" +msgstr "" + +#: addons/web/static/src/js/data_export.js:23 +#: addons/web/static/src/js/data_import.js:73 +#: addons/web/static/src/js/view_editor.js:49 +#: addons/web/static/src/js/view_editor.js:387 +#: addons/web/static/src/js/view_form.js:2775 +#: addons/web/static/src/js/views.js:872 +msgid "Close" +msgstr "" + +#: addons/web/static/src/js/data_export.js:24 +msgid "Export To File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:34 +msgid "Import Data" +msgstr "" + +#: addons/web/static/src/js/data_import.js:74 +msgid "Import File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:109 +msgid "External ID" +msgstr "" + +#: addons/web/static/src/js/search.js:233 +msgid "Filter Entry" +msgstr "" + +#: addons/web/static/src/js/search.js:238 +#: addons/web/static/src/js/search.js:279 +msgid "OK" +msgstr "" + +#: addons/web/static/src/js/search.js:274 addons/web/static/src/xml/base.xml:0 +msgid "Add to Dashboard" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "Invalid Search" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "triggered from search view" +msgstr "" + +#: addons/web/static/src/js/search.js:490 +#, python-format +msgid "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s" +msgstr "" + +#: addons/web/static/src/js/search.js:822 +msgid "not a valid integer" +msgstr "" + +#: addons/web/static/src/js/search.js:836 +msgid "not a valid number" +msgstr "" + +#: addons/web/static/src/js/search.js:898 +msgid "Yes" +msgstr "" + +#: addons/web/static/src/js/search.js:899 +msgid "No" +msgstr "" + +#: addons/web/static/src/js/search.js:1252 +msgid "contains" +msgstr "" + +#: addons/web/static/src/js/search.js:1253 +msgid "doesn't contain" +msgstr "" + +#: addons/web/static/src/js/search.js:1254 +#: addons/web/static/src/js/search.js:1269 +#: addons/web/static/src/js/search.js:1289 +#: addons/web/static/src/js/search.js:1309 +#: addons/web/static/src/js/search.js:1331 +msgid "is equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1255 +#: addons/web/static/src/js/search.js:1270 +#: addons/web/static/src/js/search.js:1290 +#: addons/web/static/src/js/search.js:1310 +#: addons/web/static/src/js/search.js:1332 +msgid "is not equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1256 +#: addons/web/static/src/js/search.js:1271 +#: addons/web/static/src/js/search.js:1291 +#: addons/web/static/src/js/search.js:1311 +#: addons/web/static/src/js/search.js:1333 +msgid "greater than" +msgstr "" + +#: addons/web/static/src/js/search.js:1257 +#: addons/web/static/src/js/search.js:1272 +#: addons/web/static/src/js/search.js:1292 +#: addons/web/static/src/js/search.js:1312 +#: addons/web/static/src/js/search.js:1334 +msgid "less than" +msgstr "" + +#: addons/web/static/src/js/search.js:1258 +#: addons/web/static/src/js/search.js:1273 +#: addons/web/static/src/js/search.js:1293 +#: addons/web/static/src/js/search.js:1313 +#: addons/web/static/src/js/search.js:1335 +msgid "greater or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1259 +#: addons/web/static/src/js/search.js:1274 +#: addons/web/static/src/js/search.js:1294 +#: addons/web/static/src/js/search.js:1314 +#: addons/web/static/src/js/search.js:1336 +msgid "less or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1325 +#: addons/web/static/src/js/search.js:1350 +msgid "is" +msgstr "" + +#: addons/web/static/src/js/search.js:1351 +msgid "is not" +msgstr "" + +#: addons/web/static/src/js/search.js:1364 +msgid "is true" +msgstr "" + +#: addons/web/static/src/js/search.js:1365 +msgid "is false" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:42 +msgid "ViewEditor" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:46 +#: addons/web/static/src/js/view_list.js:17 +#: addons/web/static/src/xml/base.xml:0 +msgid "Create" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:47 +#: addons/web/static/src/xml/base.xml:0 +msgid "Edit" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:48 +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:71 +#, python-format +msgid "Create a view (%s)" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:170 +msgid "Do you really want to remove this view?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:367 +#, python-format +msgid "View Editor %d - %s" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:371 +msgid "Preview" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:442 +msgid "Do you really want to remove this node?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:756 +#: addons/web/static/src/js/view_editor.js:883 +msgid "Properties" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:760 +#: addons/web/static/src/js/view_editor.js:887 +msgid "Update" +msgstr "" + +#: addons/web/static/src/js/view_form.js:17 +msgid "Form" +msgstr "" + +#: addons/web/static/src/js/view_form.js:401 msgid "Warning, the record has been modified, your changes will be discarded." msgstr "" -#: addons/web/static/src/js/view_form.js:1659 +#: addons/web/static/src/js/view_form.js:612 +msgid "Attachments" +msgstr "" + +#: addons/web/static/src/js/view_form.js:650 +#, python-format +msgid "Do you really want to delete the attachment %s?" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1075 +msgid "Confirm" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1838 msgid "   Search More..." msgstr "" -#: addons/web/static/src/js/view_form.js:1672 +#: addons/web/static/src/js/view_form.js:1851 #, python-format msgid "   Create \"%s\"" msgstr "" -#: addons/web/static/src/js/view_form.js:1678 +#: addons/web/static/src/js/view_form.js:1857 msgid "   Create and Edit..." msgstr "" -#: addons/web/static/src/js/views.js:568 +#: addons/web/static/src/js/view_form.js:2404 +#: addons/web/static/src/xml/base.xml:0 +msgid "Add" +msgstr "" + +#: addons/web/static/src/js/view_list.js:8 +msgid "List" +msgstr "" + +#: addons/web/static/src/js/view_list.js:269 +msgid "Unlimited" +msgstr "" + +#: addons/web/static/src/js/view_list.js:516 +msgid "Do you really want to remove these records?" +msgstr "" + +#: addons/web/static/src/js/view_list.js:1202 +msgid "Undefined" +msgstr "" + +#: addons/web/static/src/js/view_page.js:8 +msgid "Page" +msgstr "" + +#: addons/web/static/src/js/view_page.js:52 +msgid "Do you really want to delete this record?" +msgstr "" + +#: addons/web/static/src/js/view_page.js:227 +msgid "Download" +msgstr "" + +#: addons/web/static/src/js/view_tree.js:11 +msgid "Tree" +msgstr "" + +#: addons/web/static/src/js/views.js:590 +msgid "Search: " +msgstr "" + +#: addons/web/static/src/js/views.js:710 +msgid "Customize" +msgstr "" + +#: addons/web/static/src/js/views.js:713 +msgid "Manage Views" +msgstr "" + +#: addons/web/static/src/js/views.js:715 addons/web/static/src/js/views.js:719 +#: addons/web/static/src/js/views.js:724 +msgid "Manage views of the current object" +msgstr "" + +#: addons/web/static/src/js/views.js:717 +msgid "Edit Workflow" +msgstr "" + +#: addons/web/static/src/js/views.js:722 +msgid "Customize Object" +msgstr "" + +#: addons/web/static/src/js/views.js:726 +msgid "Translate" +msgstr "" + +#: addons/web/static/src/js/views.js:728 +msgid "Technical translation" +msgstr "" + +#: addons/web/static/src/js/views.js:733 +msgid "Other Options" +msgstr "" + +#: addons/web/static/src/js/views.js:736 addons/web/static/src/xml/base.xml:0 +msgid "Import" +msgstr "" + +#: addons/web/static/src/js/views.js:739 addons/web/static/src/xml/base.xml:0 +msgid "Export" +msgstr "" + +#: addons/web/static/src/js/views.js:742 +msgid "View Log" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Reports" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Actions" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Links" +msgstr "" + +#: addons/web/static/src/js/views.js:831 msgid "You must choose at least one record." msgstr "" -#: addons/web/static/src/js/views.js:569 +#: addons/web/static/src/js/views.js:832 msgid "Warning" msgstr "" -#: addons/web/static/src/js/views.js:609 +#: addons/web/static/src/js/views.js:866 msgid "Translations" msgstr "" -#: addons/web/static/src/js/views.js:614 addons/web/static/src/xml/base.xml:0 -msgid "Save" -msgstr "" - -#: addons/web/static/src/js/views.js:615 -msgid "Close" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "x" msgstr "" @@ -82,10 +427,6 @@ msgstr "" msgid "Loading..." msgstr "" -#: addons/web/static/src/xml/base.xml:0 -msgid "Create" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "Drop" msgstr "" @@ -265,19 +606,31 @@ msgid "Disable all tips" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "View#" +msgid "More…" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Fields" +msgid "Debug View#" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "View labels" +msgid "- Fields View Get" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Sidebar Relates" +msgid "- Edit" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "View" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit SearchView" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit Action" msgstr "" #: addons/web/static/src/xml/base.xml:0 @@ -288,62 +641,10 @@ msgstr "" msgid ":" msgstr "" -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate view" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Translate sidebar" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "Delete" msgstr "" -#: addons/web/static/src/xml/base.xml:0 -msgid "First" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid ">" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Last" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "♻" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Save & Edit" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Create & Edit" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "New" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Duplicate" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Readonly/Editable" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "<<" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "0" msgstr "" @@ -353,27 +654,87 @@ msgid "/" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid ">>" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "Add" +msgid "Duplicate" msgstr "" #: addons/web/static/src/xml/base.xml:0 msgid "Unhandled widget" msgstr "" +#: addons/web/static/src/xml/base.xml:0 +msgid "Notebook Page \"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "\"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Modifiers:" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "?" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "#" +msgid "(nolabel)" msgstr "" #: addons/web/static/src/xml/base.xml:0 -msgid "Done" +msgid "Field:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Object:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Widget:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Size:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Context:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Domain:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "On change:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Relation:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Selection:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "[" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "]" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#" msgstr "" #: addons/web/static/src/xml/base.xml:0 @@ -408,18 +769,38 @@ msgstr "" msgid "Clear" msgstr "" +#: addons/web/static/src/xml/base.xml:0 +msgid "Button" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(no string)" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Special:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Button Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Method:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Action ID:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Advanced Filter" msgstr "" -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Filters --" -msgstr "" - -#: addons/web/static/src/xml/base.xml:0 -msgid "-- Actions --" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "Save Filter" msgstr "" @@ -436,6 +817,18 @@ msgstr "" msgid "(Any existing filter with the same name will be replaced)" msgstr "" +#: addons/web/static/src/xml/base.xml:0 +msgid "Select Dashboard to add this filter to:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Title of new Dashboard item:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filters" +msgstr "" + #: addons/web/static/src/xml/base.xml:0 msgid "Any of the following conditions must match" msgstr "" @@ -456,10 +849,6 @@ msgstr "" msgid "and" msgstr "" -#: addons/web/static/src/xml/base.xml:0 -msgid "Cancel" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "Save & New" msgstr "" @@ -468,10 +857,6 @@ msgstr "" msgid "Save & Close" msgstr "" -#: addons/web/static/src/xml/base.xml:0 -msgid "Export" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "" "This wizard will export all data that matches the current search criteria" @@ -508,10 +893,6 @@ msgstr "" msgid "Save fields list" msgstr "" -#: addons/web/static/src/xml/base.xml:0 -msgid "Remove" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "Remove All" msgstr "" @@ -528,10 +909,6 @@ msgstr "" msgid "Save as:" msgstr "" -#: addons/web/static/src/xml/base.xml:0 -msgid "Ok" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "Saved exports:" msgstr "" @@ -548,10 +925,6 @@ msgstr "" msgid "Confirm Password:" msgstr "" -#: addons/web/static/src/xml/base.xml:0 -msgid "Import" -msgstr "" - #: addons/web/static/src/xml/base.xml:0 msgid "1. Import a .CSV file" msgstr "" diff --git a/addons/web/po/zh_TW.po b/addons/web/po/zh_TW.po new file mode 100644 index 00000000000..c917753fdd9 --- /dev/null +++ b/addons/web/po/zh_TW.po @@ -0,0 +1,1050 @@ +# Chinese (Traditional) translation for openerp-web +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the openerp-web package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: openerp-web\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2011-12-20 18:48+0100\n" +"PO-Revision-Date: 2011-12-04 16:06+0000\n" +"Last-Translator: Walter Cheuk \n" +"Language-Team: Chinese (Traditional) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-12-21 05:28+0000\n" +"X-Generator: Launchpad (build 14538)\n" + +#: addons/web/static/src/js/chrome.js:162 +#: addons/web/static/src/js/chrome.js:175 +#: addons/web/static/src/js/chrome.js:369 +#: addons/web/static/src/js/view_form.js:358 +#: addons/web/static/src/js/view_form.js:1078 +#: addons/web/static/src/xml/base.xml:0 +msgid "Ok" +msgstr "" + +#: addons/web/static/src/js/chrome.js:668 +msgid "About" +msgstr "" + +#: addons/web/static/src/js/chrome.js:748 +msgid "Preferences" +msgstr "" + +#: addons/web/static/src/js/chrome.js:752 +msgid "Change password" +msgstr "" + +#: addons/web/static/src/js/chrome.js:753 +#: addons/web/static/src/js/search.js:235 +#: addons/web/static/src/js/search.js:276 +#: addons/web/static/src/js/view_editor.js:97 +#: addons/web/static/src/js/view_editor.js:778 +#: addons/web/static/src/js/view_editor.js:907 +#: addons/web/static/src/js/view_form.js:1085 +#: addons/web/static/src/xml/base.xml:0 +msgid "Cancel" +msgstr "取消" + +#: addons/web/static/src/js/chrome.js:754 +#: addons/web/static/src/js/view_editor.js:75 +#: addons/web/static/src/js/views.js:871 addons/web/static/src/xml/base.xml:0 +msgid "Save" +msgstr "儲存" + +#: addons/web/static/src/js/chrome.js:774 addons/web/static/src/xml/base.xml:0 +msgid "Change Password" +msgstr "" + +#: addons/web/static/src/js/data_export.js:6 +msgid "Export Data" +msgstr "" + +#: addons/web/static/src/js/data_export.js:23 +#: addons/web/static/src/js/data_import.js:73 +#: addons/web/static/src/js/view_editor.js:49 +#: addons/web/static/src/js/view_editor.js:387 +#: addons/web/static/src/js/view_form.js:2775 +#: addons/web/static/src/js/views.js:872 +msgid "Close" +msgstr "關閉" + +#: addons/web/static/src/js/data_export.js:24 +msgid "Export To File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:34 +msgid "Import Data" +msgstr "" + +#: addons/web/static/src/js/data_import.js:74 +msgid "Import File" +msgstr "" + +#: addons/web/static/src/js/data_import.js:109 +msgid "External ID" +msgstr "" + +#: addons/web/static/src/js/search.js:233 +msgid "Filter Entry" +msgstr "" + +#: addons/web/static/src/js/search.js:238 +#: addons/web/static/src/js/search.js:279 +msgid "OK" +msgstr "" + +#: addons/web/static/src/js/search.js:274 addons/web/static/src/xml/base.xml:0 +msgid "Add to Dashboard" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "Invalid Search" +msgstr "" + +#: addons/web/static/src/js/search.js:403 +msgid "triggered from search view" +msgstr "" + +#: addons/web/static/src/js/search.js:490 +#, python-format +msgid "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s" +msgstr "" + +#: addons/web/static/src/js/search.js:822 +msgid "not a valid integer" +msgstr "" + +#: addons/web/static/src/js/search.js:836 +msgid "not a valid number" +msgstr "" + +#: addons/web/static/src/js/search.js:898 +msgid "Yes" +msgstr "" + +#: addons/web/static/src/js/search.js:899 +msgid "No" +msgstr "" + +#: addons/web/static/src/js/search.js:1252 +msgid "contains" +msgstr "" + +#: addons/web/static/src/js/search.js:1253 +msgid "doesn't contain" +msgstr "" + +#: addons/web/static/src/js/search.js:1254 +#: addons/web/static/src/js/search.js:1269 +#: addons/web/static/src/js/search.js:1289 +#: addons/web/static/src/js/search.js:1309 +#: addons/web/static/src/js/search.js:1331 +msgid "is equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1255 +#: addons/web/static/src/js/search.js:1270 +#: addons/web/static/src/js/search.js:1290 +#: addons/web/static/src/js/search.js:1310 +#: addons/web/static/src/js/search.js:1332 +msgid "is not equal to" +msgstr "" + +#: addons/web/static/src/js/search.js:1256 +#: addons/web/static/src/js/search.js:1271 +#: addons/web/static/src/js/search.js:1291 +#: addons/web/static/src/js/search.js:1311 +#: addons/web/static/src/js/search.js:1333 +msgid "greater than" +msgstr "" + +#: addons/web/static/src/js/search.js:1257 +#: addons/web/static/src/js/search.js:1272 +#: addons/web/static/src/js/search.js:1292 +#: addons/web/static/src/js/search.js:1312 +#: addons/web/static/src/js/search.js:1334 +msgid "less than" +msgstr "" + +#: addons/web/static/src/js/search.js:1258 +#: addons/web/static/src/js/search.js:1273 +#: addons/web/static/src/js/search.js:1293 +#: addons/web/static/src/js/search.js:1313 +#: addons/web/static/src/js/search.js:1335 +msgid "greater or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1259 +#: addons/web/static/src/js/search.js:1274 +#: addons/web/static/src/js/search.js:1294 +#: addons/web/static/src/js/search.js:1314 +#: addons/web/static/src/js/search.js:1336 +msgid "less or equal than" +msgstr "" + +#: addons/web/static/src/js/search.js:1325 +#: addons/web/static/src/js/search.js:1350 +msgid "is" +msgstr "" + +#: addons/web/static/src/js/search.js:1351 +msgid "is not" +msgstr "" + +#: addons/web/static/src/js/search.js:1364 +msgid "is true" +msgstr "" + +#: addons/web/static/src/js/search.js:1365 +msgid "is false" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:42 +msgid "ViewEditor" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:46 +#: addons/web/static/src/js/view_list.js:17 +#: addons/web/static/src/xml/base.xml:0 +msgid "Create" +msgstr "建立" + +#: addons/web/static/src/js/view_editor.js:47 +#: addons/web/static/src/xml/base.xml:0 +msgid "Edit" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:48 +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove" +msgstr "移除" + +#: addons/web/static/src/js/view_editor.js:71 +#, python-format +msgid "Create a view (%s)" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:170 +msgid "Do you really want to remove this view?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:367 +#, python-format +msgid "View Editor %d - %s" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:371 +msgid "Preview" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:442 +msgid "Do you really want to remove this node?" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:756 +#: addons/web/static/src/js/view_editor.js:883 +msgid "Properties" +msgstr "" + +#: addons/web/static/src/js/view_editor.js:760 +#: addons/web/static/src/js/view_editor.js:887 +msgid "Update" +msgstr "" + +#: addons/web/static/src/js/view_form.js:17 +msgid "Form" +msgstr "" + +#: addons/web/static/src/js/view_form.js:401 +msgid "" +"Warning, the record has been modified, your changes will be discarded." +msgstr "" + +#: addons/web/static/src/js/view_form.js:612 +msgid "Attachments" +msgstr "" + +#: addons/web/static/src/js/view_form.js:650 +#, python-format +msgid "Do you really want to delete the attachment %s?" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1075 +msgid "Confirm" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1838 +msgid "   Search More..." +msgstr "   搜尋更多..." + +#: addons/web/static/src/js/view_form.js:1851 +#, python-format +msgid "   Create \"%s\"" +msgstr "   建立「%s" + +#: addons/web/static/src/js/view_form.js:1857 +msgid "   Create and Edit..." +msgstr "   建立並編輯..." + +#: addons/web/static/src/js/view_form.js:2404 +#: addons/web/static/src/xml/base.xml:0 +msgid "Add" +msgstr "添加" + +#: addons/web/static/src/js/view_list.js:8 +msgid "List" +msgstr "" + +#: addons/web/static/src/js/view_list.js:269 +msgid "Unlimited" +msgstr "" + +#: addons/web/static/src/js/view_list.js:516 +msgid "Do you really want to remove these records?" +msgstr "" + +#: addons/web/static/src/js/view_list.js:1202 +msgid "Undefined" +msgstr "" + +#: addons/web/static/src/js/view_page.js:8 +msgid "Page" +msgstr "" + +#: addons/web/static/src/js/view_page.js:52 +msgid "Do you really want to delete this record?" +msgstr "" + +#: addons/web/static/src/js/view_page.js:227 +msgid "Download" +msgstr "" + +#: addons/web/static/src/js/view_tree.js:11 +msgid "Tree" +msgstr "" + +#: addons/web/static/src/js/views.js:590 +msgid "Search: " +msgstr "" + +#: addons/web/static/src/js/views.js:710 +msgid "Customize" +msgstr "" + +#: addons/web/static/src/js/views.js:713 +msgid "Manage Views" +msgstr "" + +#: addons/web/static/src/js/views.js:715 addons/web/static/src/js/views.js:719 +#: addons/web/static/src/js/views.js:724 +msgid "Manage views of the current object" +msgstr "" + +#: addons/web/static/src/js/views.js:717 +msgid "Edit Workflow" +msgstr "" + +#: addons/web/static/src/js/views.js:722 +msgid "Customize Object" +msgstr "" + +#: addons/web/static/src/js/views.js:726 +msgid "Translate" +msgstr "" + +#: addons/web/static/src/js/views.js:728 +msgid "Technical translation" +msgstr "" + +#: addons/web/static/src/js/views.js:733 +msgid "Other Options" +msgstr "" + +#: addons/web/static/src/js/views.js:736 addons/web/static/src/xml/base.xml:0 +msgid "Import" +msgstr "匯入" + +#: addons/web/static/src/js/views.js:739 addons/web/static/src/xml/base.xml:0 +msgid "Export" +msgstr "匯出" + +#: addons/web/static/src/js/views.js:742 +msgid "View Log" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Reports" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Actions" +msgstr "" + +#: addons/web/static/src/js/views.js:751 +msgid "Links" +msgstr "" + +#: addons/web/static/src/js/views.js:831 +msgid "You must choose at least one record." +msgstr "要選擇至少一個紀錄。" + +#: addons/web/static/src/js/views.js:832 +msgid "Warning" +msgstr "警告" + +#: addons/web/static/src/js/views.js:866 +msgid "Translations" +msgstr "翻譯" + +#: addons/web/static/src/xml/base.xml:0 +msgid "x" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#{title}" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#{text}" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Powered by" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "openerp.com" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Loading..." +msgstr "載入..." + +#: addons/web/static/src/xml/base.xml:0 +msgid "Drop" +msgstr "捨棄" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Backup" +msgstr "備份" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Restore" +msgstr "還原" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Password" +msgstr "密碼" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Back to Login" +msgstr "返回登入畫面" + +#: addons/web/static/src/xml/base.xml:0 +msgid "CREATE DATABASE" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Master password:" +msgstr "主密碼:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "New database name:" +msgstr "新資料庫名稱:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Load Demonstration data:" +msgstr "載入演示資料:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Default language:" +msgstr "預設語言:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Admin password:" +msgstr "管理員密碼:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Confirm password:" +msgstr "確認密碼:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "DROP DATABASE" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Database:" +msgstr "資料庫:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Master Password:" +msgstr "主密碼:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "BACKUP DATABASE" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "RESTORE DATABASE" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "File:" +msgstr "檔案:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "CHANGE MASTER PASSWORD" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "New master password:" +msgstr "新主密碼:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Confirm new master password:" +msgstr "確認新主密碼:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "User:" +msgstr "使用者:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Password:" +msgstr "密碼:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Database" +msgstr "資料庫" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Login" +msgstr "登入" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Bad username or password" +msgstr "使用者名稱或密碼不對" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"We think that daily job activities can be more intuitive, efficient, " +"automated, .. and even fun." +msgstr "我們認為日常工作可以更直觀、更有效率、更自動化......以至更有趣。" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP's vision to be:" +msgstr "OpenERP 的願景為:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Full featured" +msgstr "完整功能" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"Today's enterprise challenges are multiple. We provide one module for each " +"need." +msgstr "今時今日企業面對的問題很多。我們為每件工作皆提供處理的模組。" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Open Source" +msgstr "開源碼" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"To Build a great product, we rely on the knowledge of thousands of " +"contributors." +msgstr "要製作好用的產品,我們靠的是成千上萬的自願貢獻者。" + +#: addons/web/static/src/xml/base.xml:0 +msgid "User Friendly" +msgstr "易用" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"In order to be productive, people need clean and easy to use interface." +msgstr "要工作更有效率,人們要更簡潔、更易用的介面。" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid ")" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "LOGOUT" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "«" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "»" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "oe_secondary_menu_item" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "oe_secondary_submenu_item" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Hide this tip" +msgstr "隱藏此提示" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Disable all tips" +msgstr "停用所有提示" + +#: addons/web/static/src/xml/base.xml:0 +msgid "More…" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Debug View#" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Fields View Get" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "View" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit SearchView" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "- Edit Action" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Field" +msgstr "欄位" + +#: addons/web/static/src/xml/base.xml:0 +msgid ":" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Delete" +msgstr "刪除" + +#: addons/web/static/src/xml/base.xml:0 +msgid "0" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "/" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Duplicate" +msgstr "製作複本" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Unhandled widget" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Notebook Page \"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "\"" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Modifiers:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "?" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(nolabel)" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Field:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Object:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Widget:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Size:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Context:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Domain:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "On change:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Relation:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Selection:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "[" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "]" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Open..." +msgstr "開啟..." + +#: addons/web/static/src/xml/base.xml:0 +msgid "Create..." +msgstr "建立..." + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search..." +msgstr "搜尋..." + +#: addons/web/static/src/xml/base.xml:0 +msgid "..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Uploading ..." +msgstr "上載 ..." + +#: addons/web/static/src/xml/base.xml:0 +msgid "Select" +msgstr "選取" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save As" +msgstr "另存為" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Clear" +msgstr "清除" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Button" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(no string)" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Special:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Button Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Method:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Action ID:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filter" +msgstr "進階篩選" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save Filter" +msgstr "儲存篩選" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Manage Filters" +msgstr "管理篩選" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Filter Name:" +msgstr "篩選名稱:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(Any existing filter with the same name will be replaced)" +msgstr "(會取代所有同名篩選)" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Select Dashboard to add this filter to:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Title of new Dashboard item:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filters" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Any of the following conditions must match" +msgstr "以下任何條件都要符合" + +#: addons/web/static/src/xml/base.xml:0 +msgid "All the following conditions must match" +msgstr "以下所有條件都要符合" + +#: addons/web/static/src/xml/base.xml:0 +msgid "None of the following conditions must match" +msgstr "以下無一條件需要符合" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Add condition" +msgstr "添加條件" + +#: addons/web/static/src/xml/base.xml:0 +msgid "and" +msgstr "和" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save & New" +msgstr "儲存並新增" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save & Close" +msgstr "儲存並關閉" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"This wizard will export all data that matches the current search criteria to " +"a CSV file.\n" +" You can export all data or only the fields that can be " +"reimported after modification." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export Type:" +msgstr "匯出類型:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Import Compatible Export" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export all Data" +msgstr "匯出所有資料" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export Formats" +msgstr "匯出格式" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Available fields" +msgstr "可提供欄位" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Fields to export" +msgstr "要匯出欄位" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save fields list" +msgstr "儲存欄位清單" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove All" +msgstr "全部移除" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Name" +msgstr "名稱" + +#: addons/web/static/src/xml/base.xml:0 +msgid " " +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save as:" +msgstr "另存為:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Saved exports:" +msgstr "已儲存匯出:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Old Password:" +msgstr "舊密碼:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "New Password:" +msgstr "新密碼:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Confirm Password:" +msgstr "確認密碼:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "1. Import a .CSV file" +msgstr "1. 匯入 .CSV 檔" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"Select a .CSV file to import. If you need a sample of file to import,\n" +" you should use the export tool with the \"Import Compatible\" option." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "CSV File:" +msgstr "CSV 檔:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "2. Check your file format" +msgstr "2. 檢查檔案格式" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Import Options" +msgstr "匯入選項" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Does your file have titles?" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Separator:" +msgstr "分隔符號:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Delimiter:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Encoding:" +msgstr "編碼:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "UTF-8" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Latin 1" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Lines to skip" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "The import failed due to:" +msgstr "匯入失敗,原因為:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Here is a preview of the file we could not import:" +msgstr "無法匯入檔案的預覽:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP Web" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Version" +msgstr "版本" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Copyright © 2011-TODAY OpenERP SA. All Rights Reserved." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP is a trademark of the" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP SA Company" +msgstr "OpenERP SA 公司" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Licenced under the terms of" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "GNU Affero General Public License" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "About OpenERP" +msgstr "有關 OpenERP" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"is a free enterprise-scale software system that is designed to boost\n" +" productivity and profit through data integration. It connects, " +"improves and\n" +" manages business processes in areas such as sales, finance, " +"supply chain,\n" +" project management, production, services, CRM, etc..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"The system is platform-independent, and can be installed on Windows, Mac OS " +"X,\n" +" and various Linux and other Unix-based distributions. Its " +"architecture enables\n" +" new functionality to be rapidly created, modifications to be " +"made to a\n" +" production system and migration to a new version to be " +"straightforward." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"Depending on your needs, OpenERP is available through a web or application " +"client." +msgstr "" diff --git a/addons/web/static/lib/jquery.tipTip/jquery.tipTip.fme.patch b/addons/web/static/lib/jquery.tipTip/jquery.tipTip.fme.patch index 7af316b2f3f..1a62870a6b0 100644 --- a/addons/web/static/lib/jquery.tipTip/jquery.tipTip.fme.patch +++ b/addons/web/static/lib/jquery.tipTip/jquery.tipTip.fme.patch @@ -1,6 +1,16 @@ ---- jquery.tipTip_old.js 2011-11-14 21:40:55.000000000 +0100 -+++ jquery.tipTip.js 2011-11-15 10:09:35.000000000 +0100 -@@ -31,7 +31,7 @@ +--- jquery.tipTip_old.js 2011-12-01 14:15:35.000000000 +0100 ++++ jquery.tipTip.js 2011-12-07 12:32:32.000000000 +0100 +@@ -20,6 +20,9 @@ + */ + + (function($){ ++ $.tipTipClear = function() { ++ $("#tiptip_holder").remove(); ++ } + $.fn.tipTip = function(options) { + var defaults = { + activation: "hover", +@@ -31,7 +34,7 @@ fadeIn: 200, fadeOut: 200, attribute: "title", @@ -9,7 +19,7 @@ enter: function(){}, exit: function(){} }; -@@ -51,12 +51,7 @@ +@@ -51,12 +54,7 @@ return this.each(function(){ var org_elem = $(this); @@ -23,24 +33,20 @@ if(!opts.content){ org_elem.removeAttr(opts.attribute); //remove original Attribute } -@@ -99,6 +94,8 @@ +@@ -99,6 +97,8 @@ function active_tiptip(){ opts.enter.call(this); -+ var org_title = typeof opts.content === 'function' ? opts.content() : opts.content; ++ var org_title = typeof opts.content === 'function' ? opts.content.call(org_elem, opts) : opts.content; + org_title = org_title || org_elem.attr(opts.attribute); tiptip_content.html(org_title); tiptip_holder.hide().removeAttr("class").css("margin","0"); tiptip_arrow.removeAttr("style"); -@@ -176,8 +173,15 @@ - tiptip_arrow.css({"margin-left": arrow_left+"px", "margin-top": arrow_top+"px"}); +@@ -177,7 +177,12 @@ tiptip_holder.css({"margin-left": marg_left+"px", "margin-top": marg_top+"px"}).attr("class","tip"+t_class); -- if (timeout){ clearTimeout(timeout); } + if (timeout){ clearTimeout(timeout); } - timeout = setTimeout(function(){ tiptip_holder.stop(true,true).fadeIn(opts.fadeIn); }, opts.delay); -+ if (timeout) { -+ clearTimeout(timeout); -+ } + timeout = setTimeout(function() { + tiptip_holder.stop(true,true); + if ($.contains(document.documentElement, org_elem[0])) { diff --git a/addons/web/static/lib/jquery.tipTip/jquery.tipTip.js b/addons/web/static/lib/jquery.tipTip/jquery.tipTip.js index 0b3a24d4beb..522df828003 100644 --- a/addons/web/static/lib/jquery.tipTip/jquery.tipTip.js +++ b/addons/web/static/lib/jquery.tipTip/jquery.tipTip.js @@ -20,6 +20,9 @@ */ (function($){ + $.tipTipClear = function() { + $("#tiptip_holder").remove(); + } $.fn.tipTip = function(options) { var defaults = { activation: "hover", @@ -94,7 +97,7 @@ function active_tiptip(){ opts.enter.call(this); - var org_title = typeof opts.content === 'function' ? opts.content() : opts.content; + var org_title = typeof opts.content === 'function' ? opts.content.call(org_elem, opts) : opts.content; org_title = org_title || org_elem.attr(opts.attribute); tiptip_content.html(org_title); tiptip_holder.hide().removeAttr("class").css("margin","0"); diff --git a/addons/web/static/lib/jquery/jquery-1.6.2.js b/addons/web/static/lib/jquery/jquery-1.6.4.js similarity index 96% rename from addons/web/static/lib/jquery/jquery-1.6.2.js rename to addons/web/static/lib/jquery/jquery-1.6.4.js index f3201aacb6f..2c12adbf3e8 100644 --- a/addons/web/static/lib/jquery/jquery-1.6.2.js +++ b/addons/web/static/lib/jquery/jquery-1.6.4.js @@ -1,5 +1,5 @@ /*! - * jQuery JavaScript Library v1.6.2 + * jQuery JavaScript Library v1.6.4 * http://jquery.com/ * * Copyright 2011, John Resig @@ -11,7 +11,7 @@ * Copyright 2011, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * - * Date: Thu Jun 30 14:16:56 2011 -0400 + * Date: Mon Sep 12 18:54:48 2011 -0400 */ (function( window, undefined ) { @@ -37,8 +37,8 @@ var jQuery = function( selector, context ) { rootjQuery, // A simple way to check for HTML strings or ID strings - // (both of which we optimize for) - quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, + // Prioritize #id over to avoid XSS via location.hash (#9521) + quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, // Check if a string has a non-whitespace character in it rnotwhite = /\S/, @@ -66,11 +66,12 @@ var jQuery = function( selector, context ) { rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, // Matches dashed string for camelizing - rdashAlpha = /-([a-z])/ig, + rdashAlpha = /-([a-z]|[0-9])/ig, + rmsPrefix = /^-ms-/, // Used by jQuery.camelCase as callback to replace() fcamelCase = function( all, letter ) { - return letter.toUpperCase(); + return ( letter + "" ).toUpperCase(); }, // Keep a UserAgent string for use with jQuery.browser @@ -212,7 +213,7 @@ jQuery.fn = jQuery.prototype = { selector: "", // The current version of jQuery being used - jquery: "1.6.2", + jquery: "1.6.4", // The default length of a jQuery object is 0 length: 0, @@ -521,10 +522,15 @@ jQuery.extend({ return false; } - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call(obj, "constructor") && - !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + try { + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 return false; } @@ -574,24 +580,23 @@ jQuery.extend({ }, // Cross-browser xml parsing - // (xml & tmp used internally) - parseXML: function( data , xml , tmp ) { - - if ( window.DOMParser ) { // Standard - tmp = new DOMParser(); - xml = tmp.parseFromString( data , "text/xml" ); - } else { // IE - xml = new ActiveXObject( "Microsoft.XMLDOM" ); - xml.async = "false"; - xml.loadXML( data ); + parseXML: function( data ) { + var xml, tmp; + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; } - - tmp = xml.documentElement; - - if ( ! tmp || ! tmp.nodeName || tmp.nodeName === "parsererror" ) { + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { jQuery.error( "Invalid XML: " + data ); } - return xml; }, @@ -611,10 +616,10 @@ jQuery.extend({ } }, - // Converts a dashed string to camelCased string; - // Used by both the css and data modules + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) camelCase: function( string ) { - return string.replace( rdashAlpha, fcamelCase ); + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); }, nodeName: function( elem, name ) { @@ -699,6 +704,9 @@ jQuery.extend({ }, inArray: function( elem, array ) { + if ( !array ) { + return -1; + } if ( indexOf ) { return indexOf.call( array, elem ); @@ -1071,7 +1079,7 @@ jQuery.extend({ if ( returned && jQuery.isFunction( returned.promise ) ) { returned.promise().then( newDefer.resolve, newDefer.reject ); } else { - newDefer[ action ]( returned ); + newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] ); } }); } else { @@ -1173,6 +1181,7 @@ jQuery.support = (function() { div.setAttribute("className", "t"); div.innerHTML = "
a"; + all = div.getElementsByTagName( "*" ); a = div.getElementsByTagName( "a" )[ 0 ]; @@ -1293,13 +1302,14 @@ jQuery.support = (function() { width: 0, height: 0, border: 0, - margin: 0 + margin: 0, + background: "none" }; if ( body ) { jQuery.extend( testElementStyle, { position: "absolute", - left: -1000, - top: -1000 + left: "-1000px", + top: "-1000px" }); } for ( i in testElementStyle ) { @@ -1404,7 +1414,7 @@ jQuery.boxModel = jQuery.support.boxModel; var rbrace = /^(?:\{.*\}|\[.*\])$/, - rmultiDash = /([a-z])([A-Z])/g; + rmultiDash = /([A-Z])/g; jQuery.extend({ cache: {}, @@ -1436,7 +1446,9 @@ jQuery.extend({ return; } - var internalKey = jQuery.expando, getByName = typeof name === "string", thisCache, + var thisCache, ret, + internalKey = jQuery.expando, + getByName = typeof name === "string", // We have to handle DOM nodes and JS objects differently because IE6-7 // can't GC object references properly across the DOM-JS boundary @@ -1452,7 +1464,7 @@ jQuery.extend({ // Avoid doing any more work than we need to when trying to get data on an // object that has no data at all - if ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) { + if ( (!id || (pvt && id && (cache[ id ] && !cache[ id ][ internalKey ]))) && getByName && data === undefined ) { return; } @@ -1511,10 +1523,24 @@ jQuery.extend({ return thisCache[ internalKey ] && thisCache[ internalKey ].events; } - return getByName ? - // Check for both converted-to-camel and non-converted data property names - thisCache[ jQuery.camelCase( name ) ] || thisCache[ name ] : - thisCache; + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( getByName ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; }, removeData: function( elem, name, pvt /* Internal Use Only */ ) { @@ -1522,7 +1548,12 @@ jQuery.extend({ return; } - var internalKey = jQuery.expando, isNode = elem.nodeType, + var thisCache, + + // Reference to internal data cache key + internalKey = jQuery.expando, + + isNode = elem.nodeType, // See jQuery.data for more information cache = isNode ? jQuery.cache : elem, @@ -1537,9 +1568,16 @@ jQuery.extend({ } if ( name ) { - var thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ]; + + thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ]; if ( thisCache ) { + + // Support interoperable removal of hyphenated or camelcased keys + if ( !thisCache[ name ] ) { + name = jQuery.camelCase( name ); + } + delete thisCache[ name ]; // If there is no data left in the cache, we want to continue @@ -1566,7 +1604,8 @@ jQuery.extend({ // Browsers that fail expando deletion also refuse to delete expandos on // the window, but it will allow it on all other JS objects; other browsers // don't care - if ( jQuery.support.deleteExpando || cache != window ) { + // Ensure that `cache` is not a window object #10080 + if ( jQuery.support.deleteExpando || !cache.setInterval ) { delete cache[ id ]; } else { cache[ id ] = null; @@ -1690,7 +1729,8 @@ function dataAttr( elem, key, data ) { // If nothing was found internally, try to fetch any // data from the HTML5 data-* attribute if ( data === undefined && elem.nodeType === 1 ) { - var name = "data-" + key.replace( rmultiDash, "$1-$2" ).toLowerCase(); + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); data = elem.getAttribute( name ); @@ -1910,8 +1950,7 @@ var rclass = /[\n\t\r]/g, rfocusable = /^(?:button|input|object|select|textarea)$/i, rclickable = /^a(?:rea)?$/i, rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, - rinvalidChar = /\:|^on/, - formHook, boolHook; + nodeHook, boolHook; jQuery.fn.extend({ attr: function( name, value ) { @@ -2049,7 +2088,7 @@ jQuery.fn.extend({ hasClass: function( selector ) { var className = " " + selector + " "; for ( var i = 0, l = this.length; i < l; i++ ) { - if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { return true; } } @@ -2229,14 +2268,11 @@ jQuery.extend({ if ( !hooks ) { // Use boolHook for boolean attributes if ( rboolean.test( name ) ) { - hooks = boolHook; - // Use formHook for forms and if the name contains certain characters - } else if ( formHook && name !== "className" && - (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) { - - hooks = formHook; + // Use nodeHook if available( IE6/7 ) + } else if ( nodeHook ) { + hooks = nodeHook; } } } @@ -2273,14 +2309,9 @@ jQuery.extend({ var propName; if ( elem.nodeType === 1 ) { name = jQuery.attrFix[ name ] || name; - - if ( jQuery.support.getSetAttribute ) { - // Use removeAttribute in browsers that support it - elem.removeAttribute( name ); - } else { - jQuery.attr( elem, name, "" ); - elem.removeAttributeNode( elem.getAttributeNode( name ) ); - } + + jQuery.attr( elem, name, "" ); + elem.removeAttribute( name ); // Set corresponding property to false for boolean attributes if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) { @@ -2308,33 +2339,20 @@ jQuery.extend({ } } }, - tabIndex: { - get: function( elem ) { - // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set - // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - var attributeNode = elem.getAttributeNode("tabIndex"); - - return attributeNode && attributeNode.specified ? - parseInt( attributeNode.value, 10 ) : - rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? - 0 : - undefined; - } - }, // Use the value property for back compat - // Use the formHook for button elements in IE6/7 (#1954) + // Use the nodeHook for button elements in IE6/7 (#1954) value: { get: function( elem, name ) { - if ( formHook && jQuery.nodeName( elem, "button" ) ) { - return formHook.get( elem, name ); + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.get( elem, name ); } return name in elem ? elem.value : null; }, set: function( elem, value, name ) { - if ( formHook && jQuery.nodeName( elem, "button" ) ) { - return formHook.set( elem, value, name ); + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.set( elem, value, name ); } // Does not return so that setAttribute is also used elem.value = value; @@ -2383,7 +2401,7 @@ jQuery.extend({ } } else { - if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== undefined ) { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { return ret; } else { @@ -2392,14 +2410,33 @@ jQuery.extend({ } }, - propHooks: {} + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabindex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + } }); +// Add the tabindex propHook to attrHooks for back-compat +jQuery.attrHooks.tabIndex = jQuery.propHooks.tabIndex; + // Hook for boolean attributes boolHook = { get: function( elem, name ) { // Align boolean attributes with corresponding properties - return jQuery.prop( elem, name ) ? + // Fall back to attribute presence where some booleans are not supported + var attrNode; + return jQuery.prop( elem, name ) === true || ( attrNode = elem.getAttributeNode( name ) ) && attrNode.nodeValue !== false ? name.toLowerCase() : undefined; }, @@ -2425,12 +2462,10 @@ boolHook = { // IE6/7 do not support getting/setting some attributes with get/setAttribute if ( !jQuery.support.getSetAttribute ) { - - // propFix is more comprehensive and contains all fixes - jQuery.attrFix = jQuery.propFix; - // Use this for any attribute on a form in IE6/7 - formHook = jQuery.attrHooks.name = jQuery.attrHooks.title = jQuery.valHooks.button = { + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = jQuery.valHooks.button = { get: function( elem, name ) { var ret; ret = elem.getAttributeNode( name ); @@ -2440,13 +2475,13 @@ if ( !jQuery.support.getSetAttribute ) { undefined; }, set: function( elem, value, name ) { - // Check form objects in IE (multiple bugs related) - // Only use nodeValue if the attribute node exists on the form + // Set the existing or create a new attribute node var ret = elem.getAttributeNode( name ); - if ( ret ) { - ret.nodeValue = value; - return value; + if ( !ret ) { + ret = document.createAttribute( name ); + elem.setAttributeNode( ret ); } + return (ret.nodeValue = value + ""); } }; @@ -2505,6 +2540,7 @@ if ( !jQuery.support.optSelected ) { parent.parentNode.selectedIndex; } } + return null; } }); } @@ -2980,7 +3016,7 @@ jQuery.event = { return event.result; }, - props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), + props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), fix: function( event ) { if ( event[ jQuery.expando ] ) { @@ -3235,8 +3271,9 @@ if ( !jQuery.support.submitBubbles ) { setup: function( data, namespaces ) { if ( !jQuery.nodeName( this, "form" ) ) { jQuery.event.add(this, "click.specialSubmit", function( e ) { + // Avoid triggering error on non-existent type attribute in IE VML (#7071) var elem = e.target, - type = elem.type; + type = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.type : ""; if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) { trigger( "submit", this, arguments ); @@ -3245,7 +3282,7 @@ if ( !jQuery.support.submitBubbles ) { jQuery.event.add(this, "keypress.specialSubmit", function( e ) { var elem = e.target, - type = elem.type; + type = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.type : ""; if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) { trigger( "submit", this, arguments ); @@ -3270,7 +3307,8 @@ if ( !jQuery.support.changeBubbles ) { var changeFilters, getVal = function( elem ) { - var type = elem.type, val = elem.value; + var type = jQuery.nodeName( elem, "input" ) ? elem.type : "", + val = elem.value; if ( type === "radio" || type === "checkbox" ) { val = elem.checked; @@ -5295,12 +5333,17 @@ jQuery.fn.extend({ // Determine the position of an element within // the matched set of elements index: function( elem ) { - if ( !elem || typeof elem === "string" ) { - return jQuery.inArray( this[0], - // If it receives a string, the selector is used - // If it receives nothing, the siblings are used - elem ? jQuery( elem ) : this.parent().children() ); + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1; } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + // Locate the position of the desired element return jQuery.inArray( // If it receives a jQuery object, the first element is used @@ -6048,7 +6091,10 @@ jQuery.extend({ // with an element if you are cloning the body and one of the // elements on the page has a name or id of "length" for ( i = 0; srcElements[i]; ++i ) { - cloneFixAttributes( srcElements[i], destElements[i] ); + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[i] ) { + cloneFixAttributes( srcElements[i], destElements[i] ); + } } } @@ -6248,14 +6294,14 @@ function evalScript( i, elem ) { + var ralpha = /alpha\([^)]*\)/i, ropacity = /opacity=([^)]*)/, // fixed for IE9, see #8346 rupper = /([A-Z]|^ms)/g, rnumpx = /^-?\d+(?:px)?$/i, rnum = /^-?\d/, - rrelNum = /^[+\-]=/, - rrelNumFilter = /[^+\-\.\de]+/g, + rrelNum = /^([\-+])=([\-+.\de]+)/, cssShow = { position: "absolute", visibility: "hidden", display: "block" }, cssWidth = [ "Left", "Right" ], @@ -6332,18 +6378,18 @@ jQuery.extend({ if ( value !== undefined ) { type = typeof value; - // Make sure that NaN and null values aren't set. See: #7116 - if ( type === "number" && isNaN( value ) || value == null ) { - return; - } - // convert relative number strings (+= or -=) to relative numbers. #7345 - if ( type === "string" && rrelNum.test( value ) ) { - value = +value.replace( rrelNumFilter, "" ) + parseFloat( jQuery.css( elem, name ) ); + if ( type === "string" && (ret = rrelNum.exec( value )) ) { + value = ( +( ret[1] + 1) * +ret[2] ) + parseFloat( jQuery.css( elem, name ) ); // Fixes bug #9237 type = "number"; } + // Make sure that NaN and null values aren't set. See: #7116 + if ( value == null || type === "number" && isNaN( value ) ) { + return; + } + // If a number was passed in, add 'px' to the (except for certain CSS properties) if ( type === "number" && !jQuery.cssNumber[ origName ] ) { value += "px"; @@ -6459,18 +6505,29 @@ if ( !jQuery.support.opacity ) { set: function( elem, value ) { var style = elem.style, - currentStyle = elem.currentStyle; + currentStyle = elem.currentStyle, + opacity = jQuery.isNaN( value ) ? "" : "alpha(opacity=" + value * 100 + ")", + filter = currentStyle && currentStyle.filter || style.filter || ""; // IE has trouble with opacity if it does not have layout // Force it by setting the zoom level style.zoom = 1; - // Set the alpha filter to set the opacity - var opacity = jQuery.isNaN( value ) ? - "" : - "alpha(opacity=" + value * 100 + ")", - filter = currentStyle && currentStyle.filter || style.filter || ""; + // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652 + if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" ) { + // Setting style.filter to null, "" & " " still leave "filter:" in the cssText + // if "filter:" is present at all, clearType is disabled, we want to avoid this + // style.removeAttribute is IE Only, but so apparently is this code path... + style.removeAttribute( "filter" ); + + // if there there is no filter style applied in a css rule, we are done + if ( currentStyle && !currentStyle.filter ) { + return; + } + } + + // otherwise, set new filter values style.filter = ralpha.test( filter ) ? filter.replace( ralpha, opacity ) : filter + " " + opacity; @@ -6625,9 +6682,9 @@ var r20 = /%20/g, rCRLF = /\r?\n/g, rhash = /#.*$/, rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL - rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i, + rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i, // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|widget):$/, + rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/, rnoContent = /^(?:GET|HEAD)$/, rprotocol = /^\/\//, rquery = /\?/, @@ -6662,7 +6719,10 @@ var r20 = /%20/g, ajaxLocation, // Document location segments - ajaxLocParts; + ajaxLocParts, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = ["*/"] + ["*"]; // #8138, IE may throw an exception when accessing // a field from window.location if document.domain has been set @@ -6755,6 +6815,22 @@ function inspectPrefiltersOrTransports( structure, options, originalOptions, jqX return selection; } +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + for( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } +} + jQuery.fn.extend({ load: function( url, params, callback ) { if ( typeof url !== "string" && _load ) { @@ -6898,23 +6974,16 @@ jQuery.extend({ // Creates a full fledged settings object into target // with both ajaxSettings and settings fields. // If target is omitted, writes into ajaxSettings. - ajaxSetup: function ( target, settings ) { - if ( !settings ) { - // Only one parameter, we extend ajaxSettings - settings = target; - target = jQuery.extend( true, jQuery.ajaxSettings, settings ); + ajaxSetup: function( target, settings ) { + if ( settings ) { + // Building a settings object + ajaxExtend( target, jQuery.ajaxSettings ); } else { - // target was provided, we extend into it - jQuery.extend( true, target, jQuery.ajaxSettings, settings ); - } - // Flatten fields we don't want deep extended - for( var field in { context: 1, url: 1 } ) { - if ( field in settings ) { - target[ field ] = settings[ field ]; - } else if( field in jQuery.ajaxSettings ) { - target[ field ] = jQuery.ajaxSettings[ field ]; - } + // Extending ajaxSettings + settings = target; + target = jQuery.ajaxSettings; } + ajaxExtend( target, settings ); return target; }, @@ -6942,7 +7011,7 @@ jQuery.extend({ html: "text/html", text: "text/plain", json: "application/json, text/javascript", - "*": "*/*" + "*": allTypes }, contents: { @@ -6972,6 +7041,15 @@ jQuery.extend({ // Parse text as xml "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + context: true, + url: true } }, @@ -7082,7 +7160,7 @@ jQuery.extend({ // Callback for when everything is done // It is defined here because jslint complains if it is declared // at the end of the function (which would be more logical and readable) - function done( status, statusText, responses, headers ) { + function done( status, nativeStatusText, responses, headers ) { // Called once if ( state === 2 ) { @@ -7105,11 +7183,12 @@ jQuery.extend({ responseHeadersString = headers || ""; // Set readyState - jqXHR.readyState = status ? 4 : 0; + jqXHR.readyState = status > 0 ? 4 : 0; var isSuccess, success, error, + statusText = nativeStatusText, response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined, lastModified, etag; @@ -7161,7 +7240,7 @@ jQuery.extend({ // Set data for the fake xhr object jqXHR.status = status; - jqXHR.statusText = statusText; + jqXHR.statusText = "" + ( nativeStatusText || statusText ); // Success/Error if ( isSuccess ) { @@ -7183,7 +7262,7 @@ jQuery.extend({ completeDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] ); if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s] ); + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); // Handle the global AJAX counter if ( !( --jQuery.active ) ) { jQuery.event.trigger( "ajaxStop" ); @@ -7264,6 +7343,8 @@ jQuery.extend({ // If data is available, append data to url if ( s.data ) { s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data; + // #9682: remove data so that it's not used in an eventual retry + delete s.data; } // Get ifModifiedKey before adding the anti-cache parameter @@ -7301,7 +7382,7 @@ jQuery.extend({ jqXHR.setRequestHeader( "Accept", s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ? - s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", */*; q=0.01" : "" ) : + s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : s.accepts[ "*" ] ); @@ -7347,7 +7428,7 @@ jQuery.extend({ transport.send( requestHeaders, done ); } catch (e) { // Propagate exception as error if not done - if ( status < 2 ) { + if ( state < 2 ) { done( -1, e ); // Simply rethrow otherwise } else { @@ -7995,10 +8076,7 @@ var elemdisplay = {}, // opacity animations [ "opacity" ] ], - fxNow, - requestAnimationFrame = window.webkitRequestAnimationFrame || - window.mozRequestAnimationFrame || - window.oRequestAnimationFrame; + fxNow; jQuery.fn.extend({ show: function( speed, easing, callback ) { @@ -8374,8 +8452,7 @@ jQuery.fx.prototype = { // Start an animation from one number to another custom: function( from, to, unit ) { var self = this, - fx = jQuery.fx, - raf; + fx = jQuery.fx; this.startTime = fxNow || createFxNow(); this.start = from; @@ -8391,20 +8468,7 @@ jQuery.fx.prototype = { t.elem = this.elem; if ( t() && jQuery.timers.push(t) && !timerId ) { - // Use requestAnimationFrame instead of setInterval if available - if ( requestAnimationFrame ) { - timerId = true; - raf = function() { - // When timerId gets set to null at any point, this stops - if ( timerId ) { - requestAnimationFrame( raf ); - fx.tick(); - } - }; - requestAnimationFrame( raf ); - } else { - timerId = setInterval( fx.tick, fx.interval ); - } + timerId = setInterval( fx.tick, fx.interval ); } }, @@ -8947,9 +9011,10 @@ jQuery.each([ "Height", "Width" ], function( i, name ) { if ( jQuery.isWindow( elem ) ) { // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode // 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat - var docElemProp = elem.document.documentElement[ "client" + name ]; + var docElemProp = elem.document.documentElement[ "client" + name ], + body = elem.document.body; return elem.document.compatMode === "CSS1Compat" && docElemProp || - elem.document.body[ "client" + name ] || docElemProp; + body && body[ "client" + name ] || docElemProp; // Get document width or height } else if ( elem.nodeType === 9 ) { diff --git a/addons/web/static/lib/py.parse/lib/py.js b/addons/web/static/lib/py.parse/lib/py.js index 0f2415f1252..19f95a870bb 100644 --- a/addons/web/static/lib/py.parse/lib/py.js +++ b/addons/web/static/lib/py.parse/lib/py.js @@ -334,7 +334,7 @@ var py = {}; }, number: function (str, index) { var character = str[index]; - if (!NUMBER.test(character)) { + if (!(character == '.' || NUMBER.test(character))) { this.tokens.push(create(symbols['(number)'], { value: parseFloat(this.builder(true).join('')) })); diff --git a/addons/web/static/lib/qunit/qunit-2011-23-22.css b/addons/web/static/lib/qunit/qunit-2011-23-22.css deleted file mode 100644 index cc791a9b099..00000000000 --- a/addons/web/static/lib/qunit/qunit-2011-23-22.css +++ /dev/null @@ -1,248 +0,0 @@ -/** Font Family and Sizes */ - -#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult { - font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial; -} - -#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { - font-size: small; -} - -#qunit-tests { - font-size: smaller; -} - -/** Resets */ - -#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult { - margin: 0; - padding: 0; -} - -/** Header */ - -#qunit-header { - padding: 0.5em 0 0.5em 1em; - - color: #8699a4; - background-color: #0d3349; - - font-size: 1.5em; - line-height: 1em; - font-weight: normal; - - border-radius: 15px 15px 0 0; - -moz-border-radius: 15px 15px 0 0; - -webkit-border-top-right-radius: 15px; - -webkit-border-top-left-radius: 15px; -} - -#qunit-header a { - text-decoration: none; - color: #c2ccd1; -} - -#qunit-header a:hover, -#qunit-header a:focus { - color: #fff; -} - -#qunit-banner { - height: 5px; -} - -#qunit-testrunner-toolbar { - padding: 0.5em 0 0.5em 2em; - color: #5E740B; - background-color: #eee; -} - -#qunit-userAgent { - padding: 0.5em 0 0.5em 2.5em; - background-color: #2b81af; - color: #fff; - text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; -} - -/** Tests: Pass/Fail */ - -#qunit-tests { - list-style-position: inside; -} - -#qunit-tests li { - padding: 0.4em 0.5em 0.4em 2.5em; - border-bottom: 1px solid #fff; - list-style-position: inside; -} - -#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running { - display: none; -} - -#qunit-tests li strong { - cursor: pointer; -} - -#qunit-tests li a { - padding: 0.5em; - color: #c2ccd1; - text-decoration: none; -} - -#qunit-tests li a:hover, -#qunit-tests li a:focus { - color: #000; -} - -#qunit-tests ol { - margin-top: 0.5em; - padding: 0.5em; - - background-color: #fff; - - border-radius: 15px; - -moz-border-radius: 15px; - -webkit-border-radius: 15px; - - box-shadow: inset 0px 2px 13px #999; - -moz-box-shadow: inset 0px 2px 13px #999; - -webkit-box-shadow: inset 0px 2px 13px #999; -} - -#qunit-tests table { - border-collapse: collapse; - margin-top: .2em; -} - -#qunit-tests th { - text-align: right; - vertical-align: top; - padding: 0 .5em 0 0; -} - -#qunit-tests td { - vertical-align: top; -} - -#qunit-tests pre { - margin: 0; - white-space: pre-wrap; - word-wrap: break-word; -} - -#qunit-tests del { - background-color: #e0f2be; - color: #374e0c; - text-decoration: none; -} - -#qunit-tests ins { - background-color: #ffcaca; - color: #500; - text-decoration: none; -} - -/*** Test Counts */ - -#qunit-tests b.counts { - color: black; -} - -#qunit-tests b.passed { - color: #5E740B; -} - -#qunit-tests b.failed { - color: #710909; -} - -#qunit-tests li li { - margin: 0.5em; - padding: 0.4em 0.5em 0.4em 0.5em; - background-color: #fff; - border-bottom: none; - list-style-position: inside; -} - -/*** Passing Styles */ - -#qunit-tests li li.pass { - color: #5E740B; - background-color: #fff; - border-left: 26px solid #C6E746; -} - -#qunit-tests .pass { - color: #528CE0; - background-color: #D2E0E6; -} - -#qunit-tests .pass .test-name { - color: #366097; -} - -#qunit-tests .pass .test-actual, -#qunit-tests .pass .test-expected { - color: #999999; -} - -#qunit-banner.qunit-pass { - background-color: #C6E746; -} - -/*** Failing Styles */ - -#qunit-tests li li.fail { - color: #710909; - background-color: #fff; - border-left: 26px solid #EE5757; -} - -#qunit-tests > li:last-child { - border-radius: 0 0 15px 15px; - -moz-border-radius: 0 0 15px 15px; - -webkit-border-bottom-right-radius: 15px; - -webkit-border-bottom-left-radius: 15px; -} - -#qunit-tests .fail { - color: #000000; - background-color: #EE5757; -} - -#qunit-tests .fail .test-name, -#qunit-tests .fail .module-name { - color: #000000; -} - -#qunit-tests .fail .test-actual { - color: #EE5757; -} - -#qunit-tests .fail .test-expected { - color: green; -} - -#qunit-banner.qunit-fail { - background-color: #EE5757; -} - -/** Result */ - -#qunit-testresult { - padding: 0.5em 0.5em 0.5em 2.5em; - - color: #2b81af; - background-color: #D2E0E6; - - border-bottom: 1px solid white; -} - -/** Fixture */ - -#qunit-fixture { - position: absolute; - top: -10000px; - left: -10000px; -} diff --git a/addons/web/static/lib/qunit/qunit-2011-23-22.js b/addons/web/static/lib/qunit/qunit-2011-23-22.js deleted file mode 100644 index 18f8ae1715c..00000000000 --- a/addons/web/static/lib/qunit/qunit-2011-23-22.js +++ /dev/null @@ -1,1456 +0,0 @@ -/* - * QUnit - A JavaScript Unit Testing Framework - * - * http://docs.jquery.com/QUnit - * - * Copyright (c) 2011 John Resig, Jörn Zaefferer - * Dual licensed under the MIT (MIT-LICENSE.txt) - * or GPL (GPL-LICENSE.txt) licenses. - */ - -(function(window) { - - var defined = { - setTimeout: typeof window.setTimeout !== "undefined", - sessionStorage: (function() { - try { - return !!sessionStorage.getItem; - } catch(e) { - return false; - } - })() - }; - - var testId = 0; - - var Test = function(name, testName, expected, testEnvironmentArg, async, callback) { - this.name = name; - this.testName = testName; - this.expected = expected; - this.testEnvironmentArg = testEnvironmentArg; - this.async = async; - this.callback = callback; - this.assertions = []; - }; - Test.prototype = { - init: function() { - var tests = id("qunit-tests"); - if (tests) { - var b = document.createElement("strong"); - b.innerHTML = "Running " + this.name; - var li = document.createElement("li"); - li.appendChild(b); - li.className = "running"; - li.id = this.id = "test-output" + testId++; - tests.appendChild(li); - } - }, - setup: function() { - if (this.module != config.previousModule) { - if (config.previousModule) { - QUnit.moduleDone({ - name: config.previousModule, - failed: config.moduleStats.bad, - passed: config.moduleStats.all - config.moduleStats.bad, - total: config.moduleStats.all - }); - } - config.previousModule = this.module; - config.moduleStats = { all: 0, bad: 0 }; - QUnit.moduleStart({ - name: this.module - }); - } - - config.current = this; - this.testEnvironment = extend({ - setup: function() { - }, - teardown: function() { - } - }, this.moduleTestEnvironment); - if (this.testEnvironmentArg) { - extend(this.testEnvironment, this.testEnvironmentArg); - } - - QUnit.testStart({ - name: this.testName - }); - - // allow utility functions to access the current test environment - // TODO why?? - QUnit.current_testEnvironment = this.testEnvironment; - - try { - if (!config.pollution) { - saveGlobal(); - } - - this.testEnvironment.setup.call(this.testEnvironment); - } catch(e) { - QUnit.ok(false, "Setup failed on " + this.testName + ": " + e.message); - } - }, - run: function() { - if (this.async) { - QUnit.stop(); - } - - if (config.notrycatch) { - this.callback.call(this.testEnvironment); - return; - } - try { - this.callback.call(this.testEnvironment); - } catch(e) { - fail("Test " + this.testName + " died, exception and test follows", e, this.callback); - QUnit.ok(false, "Died on test #" + (this.assertions.length + 1) + ": " + e.message + " - " + QUnit.jsDump.parse(e)); - // else next test will carry the responsibility - saveGlobal(); - - // Restart the tests if they're blocking - if (config.blocking) { - start(); - } - } - }, - teardown: function() { - try { - checkPollution(); - this.testEnvironment.teardown.call(this.testEnvironment); - } catch(e) { - QUnit.ok(false, "Teardown failed on " + this.testName + ": " + e.message); - } - }, - finish: function() { - if (this.expected && this.expected != this.assertions.length) { - QUnit.ok(false, "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run"); - } - - var good = 0, bad = 0, - tests = id("qunit-tests"); - - config.stats.all += this.assertions.length; - config.moduleStats.all += this.assertions.length; - - if (tests) { - var ol = document.createElement("ol"); - - for (var i = 0; i < this.assertions.length; i++) { - var assertion = this.assertions[i]; - - var li = document.createElement("li"); - li.className = assertion.result ? "pass" : "fail"; - li.innerHTML = assertion.message || (assertion.result ? "okay" : "failed"); - ol.appendChild(li); - - if (assertion.result) { - good++; - } else { - bad++; - config.stats.bad++; - config.moduleStats.bad++; - } - } - - // store result when possible - if (QUnit.config.reorder && defined.sessionStorage) { - if (bad) { - sessionStorage.setItem("qunit-" + this.module + "-" + this.testName, bad) - } else { - sessionStorage.removeItem("qunit-" + this.testName); - } - } - - if (bad == 0) { - ol.style.display = "none"; - } - - var b = document.createElement("strong"); - b.innerHTML = this.name + " (" + bad + ", " + good + ", " + this.assertions.length + ")"; - - var a = document.createElement("a"); - a.innerHTML = "Rerun"; - a.href = QUnit.url({ filter: getText([b]).replace(/\([^)]+\)$/, "").replace(/(^\s*|\s*$)/g, "") }); - - addEvent(b, "click", function() { - var next = b.nextSibling.nextSibling, - display = next.style.display; - next.style.display = display === "none" ? "block" : "none"; - }); - - addEvent(b, "dblclick", function(e) { - var target = e && e.target ? e.target : window.event.srcElement; - if (target.nodeName.toLowerCase() == "span" || target.nodeName.toLowerCase() == "b") { - target = target.parentNode; - } - if (window.location && target.nodeName.toLowerCase() === "strong") { - window.location = QUnit.url({ filter: getText([target]).replace(/\([^)]+\)$/, "").replace(/(^\s*|\s*$)/g, "") }); - } - }); - - var li = id(this.id); - li.className = bad ? "fail" : "pass"; - li.removeChild(li.firstChild); - li.appendChild(b); - li.appendChild(a); - li.appendChild(ol); - - } else { - for (var i = 0; i < this.assertions.length; i++) { - if (!this.assertions[i].result) { - bad++; - config.stats.bad++; - config.moduleStats.bad++; - } - } - } - - try { - QUnit.reset(); - } catch(e) { - fail("reset() failed, following Test " + this.testName + ", exception and reset fn follows", e, QUnit.reset); - } - - QUnit.testDone({ - name: this.testName, - failed: bad, - passed: this.assertions.length - bad, - total: this.assertions.length - }); - }, - - queue: function() { - var test = this; - synchronize(function() { - test.init(); - }); - function run() { - // each of these can by async - synchronize(function() { - test.setup(); - }); - synchronize(function() { - test.run(); - }); - synchronize(function() { - test.teardown(); - }); - synchronize(function() { - test.finish(); - }); - } - - // defer when previous test run passed, if storage is available - var bad = QUnit.config.reorder && defined.sessionStorage && +sessionStorage.getItem("qunit-" + this.module + "-" + this.testName); - if (bad) { - run(); - } else { - synchronize(run); - } - ; - } - - }; - - var QUnit = { - - // call on start of module test to prepend name to all tests - module: function(name, testEnvironment) { - config.currentModule = name; - config.currentModuleTestEnviroment = testEnvironment; - }, - - asyncTest: function(testName, expected, callback) { - if (arguments.length === 2) { - callback = expected; - expected = 0; - } - - QUnit.test(testName, expected, callback, true); - }, - - test: function(testName, expected, callback, async) { - var name = '' + testName + '', testEnvironmentArg; - - if (arguments.length === 2) { - callback = expected; - expected = null; - } - // is 2nd argument a testEnvironment? - if (expected && typeof expected === 'object') { - testEnvironmentArg = expected; - expected = null; - } - - if (config.currentModule) { - name = '' + config.currentModule + ": " + name; - } - - if (!validTest(config.currentModule + ": " + testName)) { - return; - } - - var test = new Test(name, testName, expected, testEnvironmentArg, async, callback); - test.module = config.currentModule; - test.moduleTestEnvironment = config.currentModuleTestEnviroment; - test.queue(); - }, - - /** - * Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through. - */ - expect: function(asserts) { - config.current.expected = asserts; - }, - - /** - * Asserts true. - * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" ); - */ - ok: function(a, msg) { - a = !!a; - var details = { - result: a, - message: msg - }; - msg = escapeHtml(msg); - QUnit.log(details); - config.current.assertions.push({ - result: a, - message: msg - }); - }, - - /** - * Checks that the first two arguments are equal, with an optional message. - * Prints out both actual and expected values. - * - * Prefered to ok( actual == expected, message ) - * - * @example equal( format("Received {0} bytes.", 2), "Received 2 bytes." ); - * - * @param Object actual - * @param Object expected - * @param String message (optional) - */ - equal: function(actual, expected, message) { - QUnit.push(expected == actual, actual, expected, message); - }, - - notEqual: function(actual, expected, message) { - QUnit.push(expected != actual, actual, expected, message); - }, - - deepEqual: function(actual, expected, message) { - QUnit.push(QUnit.equiv(actual, expected), actual, expected, message); - }, - - notDeepEqual: function(actual, expected, message) { - QUnit.push(!QUnit.equiv(actual, expected), actual, expected, message); - }, - - strictEqual: function(actual, expected, message) { - QUnit.push(expected === actual, actual, expected, message); - }, - - notStrictEqual: function(actual, expected, message) { - QUnit.push(expected !== actual, actual, expected, message); - }, - - raises: function(block, expected, message) { - var actual, ok = false; - - if (typeof expected === 'string') { - message = expected; - expected = null; - } - - try { - block(); - } catch (e) { - actual = e; - } - - if (actual) { - // we don't want to validate thrown error - if (!expected) { - ok = true; - // expected is a regexp - } else if (QUnit.objectType(expected) === "regexp") { - ok = expected.test(actual); - // expected is a constructor - } else if (actual instanceof expected) { - ok = true; - // expected is a validation function which returns true is validation passed - } else if (expected.call({}, actual) === true) { - ok = true; - } - } - - QUnit.ok(ok, message); - }, - - start: function() { - config.semaphore--; - if (config.semaphore > 0) { - // don't start until equal number of stop-calls - return; - } - if (config.semaphore < 0) { - // ignore if start is called more often then stop - config.semaphore = 0; - } - // A slight delay, to avoid any current callbacks - if (defined.setTimeout) { - window.setTimeout(function() { - if (config.timeout) { - clearTimeout(config.timeout); - } - - config.blocking = false; - process(); - }, 13); - } else { - config.blocking = false; - process(); - } - }, - - stop: function(timeout) { - config.semaphore++; - config.blocking = true; - - if (timeout && defined.setTimeout) { - clearTimeout(config.timeout); - config.timeout = window.setTimeout(function() { - QUnit.ok(false, "Test timed out"); - QUnit.start(); - }, timeout); - } - } - }; - -// Backwards compatibility, deprecated - QUnit.equals = QUnit.equal; - QUnit.same = QUnit.deepEqual; - -// Maintain internal state - var config = { - // The queue of tests to run - queue: [], - - // block until document ready - blocking: true, - - // by default, run previously failed tests first - // very useful in combination with "Hide passed tests" checked - reorder: true, - - noglobals: false, - notrycatch: false - }; - -// Load paramaters - (function() { - var location = window.location || { search: "", protocol: "file:" }, - params = location.search.slice(1).split("&"), - length = params.length, - urlParams = {}, - current; - - if (params[ 0 ]) { - for (var i = 0; i < length; i++) { - current = params[ i ].split("="); - current[ 0 ] = decodeURIComponent(current[ 0 ]); - // allow just a key to turn on a flag, e.g., test.html?noglobals - current[ 1 ] = current[ 1 ] ? decodeURIComponent(current[ 1 ]) : true; - urlParams[ current[ 0 ] ] = current[ 1 ]; - if (current[ 0 ] in config) { - config[ current[ 0 ] ] = current[ 1 ]; - } - } - } - - QUnit.urlParams = urlParams; - config.filter = urlParams.filter; - - // Figure out if we're running the tests from a server or not - QUnit.isLocal = !!(location.protocol === 'file:'); - })(); - -// Expose the API as global variables, unless an 'exports' -// object exists, in that case we assume we're in CommonJS - if (typeof exports === "undefined" || typeof require === "undefined") { - extend(window, QUnit); - window.QUnit = QUnit; - } else { - extend(exports, QUnit); - exports.QUnit = QUnit; - } - -// define these after exposing globals to keep them in these QUnit namespace only - extend(QUnit, { - config: config, - - // Initialize the configuration options - init: function() { - extend(config, { - stats: { all: 0, bad: 0 }, - moduleStats: { all: 0, bad: 0 }, - started: +new Date, - updateRate: 1000, - blocking: false, - autostart: true, - autorun: false, - filter: "", - queue: [], - semaphore: 0 - }); - - var tests = id("qunit-tests"), - banner = id("qunit-banner"), - result = id("qunit-testresult"); - - if (tests) { - tests.innerHTML = ""; - } - - if (banner) { - banner.className = ""; - } - - if (result) { - result.parentNode.removeChild(result); - } - - if (tests) { - result = document.createElement("p"); - result.id = "qunit-testresult"; - result.className = "result"; - tests.parentNode.insertBefore(result, tests); - result.innerHTML = 'Running...
 '; - } - }, - - /** - * Resets the test setup. Useful for tests that modify the DOM. - * - * If jQuery is available, uses jQuery's html(), otherwise just innerHTML. - */ - reset: function() { - if (window.jQuery) { - jQuery("#main, #qunit-fixture").html(config.fixture); - } else { - var main = id('main') || id('qunit-fixture'); - if (main) { - main.innerHTML = config.fixture; - } - } - }, - - /** - * Trigger an event on an element. - * - * @example triggerEvent( document.body, "click" ); - * - * @param {Element} elem - * @param {String} type - */ - triggerEvent: function(elem, type, event) { - if (document.createEvent) { - event = document.createEvent("MouseEvents"); - event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView, - 0, 0, 0, 0, 0, false, false, false, false, 0, null); - elem.dispatchEvent(event); - - } else if (elem.fireEvent) { - elem.fireEvent("on" + type); - } - }, - - // Safe object type checking - is: function(type, obj) { - return QUnit.objectType(obj) == type; - }, - - objectType: function(obj) { - if (typeof obj === "undefined") { - return "undefined"; - - // consider: typeof null === object - } - if (obj === null) { - return "null"; - } - - var type = Object.prototype.toString.call(obj) - .match(/^\[object\s(.*)\]$/)[1] || ''; - - switch (type) { - case 'Number': - if (isNaN(obj)) { - return "nan"; - } else { - return "number"; - } - case 'String': - case 'Boolean': - case 'Array': - case 'Date': - case 'RegExp': - case 'Function': - return type.toLowerCase(); - } - if (typeof obj === "object") { - return "object"; - } - return undefined; - }, - - push: function(result, actual, expected, message) { - var details = { - result: result, - message: message, - actual: actual, - expected: expected - }; - - message = escapeHtml(message) || (result ? "okay" : "failed"); - message = '' + message + ""; - expected = escapeHtml(QUnit.jsDump.parse(expected)); - actual = escapeHtml(QUnit.jsDump.parse(actual)); - var output = message + ''; - if (actual != expected) { - output += ''; - output += ''; - } - if (!result) { - var source = sourceFromStacktrace(); - if (source) { - details.source = source; - output += ''; - } - } - output += "
Expected:
' + expected + '
Result:
' + actual + '
Diff:
' + QUnit.diff(expected, actual) + '
Source:
' + source + '
"; - - QUnit.log(details); - - config.current.assertions.push({ - result: !!result, - message: output - }); - }, - - url: function(params) { - params = extend(extend({}, QUnit.urlParams), params); - var querystring = "?", - key; - for (key in params) { - querystring += encodeURIComponent(key) + "=" + - encodeURIComponent(params[ key ]) + "&"; - } - return window.location.pathname + querystring.slice(0, -1); - }, - - // Logging callbacks; all receive a single argument with the listed properties - // run test/logs.html for any related changes - begin: function() { - }, - // done: { failed, passed, total, runtime } - done: function() { - }, - // log: { result, actual, expected, message } - log: function() { - }, - // testStart: { name } - testStart: function() { - }, - // testDone: { name, failed, passed, total } - testDone: function() { - }, - // moduleStart: { name } - moduleStart: function() { - }, - // moduleDone: { name, failed, passed, total } - moduleDone: function() { - } - }); - - if (typeof document === "undefined" || document.readyState === "complete") { - config.autorun = true; - } - - addEvent(window, "load", function() { - QUnit.begin({}); - - // Initialize the config, saving the execution queue - var oldconfig = extend({}, config); - QUnit.init(); - extend(config, oldconfig); - - config.blocking = false; - - var userAgent = id("qunit-userAgent"); - if (userAgent) { - userAgent.innerHTML = navigator.userAgent; - } - var banner = id("qunit-header"); - if (banner) { - banner.innerHTML = ' ' + banner.innerHTML + ' ' + - '' + - ''; - addEvent(banner, "change", function(event) { - var params = {}; - params[ event.target.name ] = event.target.checked ? true : undefined; - window.location = QUnit.url(params); - }); - } - - var toolbar = id("qunit-testrunner-toolbar"); - if (toolbar) { - var filter = document.createElement("input"); - filter.type = "checkbox"; - filter.id = "qunit-filter-pass"; - addEvent(filter, "click", function() { - var ol = document.getElementById("qunit-tests"); - if (filter.checked) { - ol.className = ol.className + " hidepass"; - } else { - var tmp = " " + ol.className.replace(/[\n\t\r]/g, " ") + " "; - ol.className = tmp.replace(/ hidepass /, " "); - } - if (defined.sessionStorage) { - if (filter.checked) { - sessionStorage.setItem("qunit-filter-passed-tests", "true"); - } else { - sessionStorage.removeItem("qunit-filter-passed-tests"); - } - } - }); - if (defined.sessionStorage && sessionStorage.getItem("qunit-filter-passed-tests")) { - filter.checked = true; - var ol = document.getElementById("qunit-tests"); - ol.className = ol.className + " hidepass"; - } - toolbar.appendChild(filter); - - var label = document.createElement("label"); - label.setAttribute("for", "qunit-filter-pass"); - label.innerHTML = "Hide passed tests"; - toolbar.appendChild(label); - } - - var main = id('main') || id('qunit-fixture'); - if (main) { - config.fixture = main.innerHTML; - } - - if (config.autostart) { - QUnit.start(); - } - }); - - function done() { - config.autorun = true; - - // Log the last module results - if (config.currentModule) { - QUnit.moduleDone({ - name: config.currentModule, - failed: config.moduleStats.bad, - passed: config.moduleStats.all - config.moduleStats.bad, - total: config.moduleStats.all - }); - } - - var banner = id("qunit-banner"), - tests = id("qunit-tests"), - runtime = +new Date - config.started, - passed = config.stats.all - config.stats.bad, - html = [ - 'Tests completed in ', - runtime, - ' milliseconds.
', - '', - passed, - ' tests of ', - config.stats.all, - ' passed, ', - config.stats.bad, - ' failed.' - ].join(''); - - if (banner) { - banner.className = (config.stats.bad ? "qunit-fail" : "qunit-pass"); - } - - if (tests) { - id("qunit-testresult").innerHTML = html; - } - - QUnit.done({ - failed: config.stats.bad, - passed: passed, - total: config.stats.all, - runtime: runtime - }); - } - - function validTest(name) { - var filter = config.filter, - run = false; - - if (!filter) { - return true; - } - - var not = filter.charAt(0) === "!"; - if (not) { - filter = filter.slice(1); - } - - if (name.indexOf(filter) !== -1) { - return !not; - } - - if (not) { - run = true; - } - - return run; - } - -// so far supports only Firefox, Chrome and Opera (buggy) -// could be extended in the future to use something like https://github.com/csnover/TraceKit - function sourceFromStacktrace() { - try { - throw new Error(); - } catch (e) { - if (e.stacktrace) { - // Opera - return e.stacktrace.split("\n")[6]; - } else if (e.stack) { - // Firefox, Chrome - return e.stack.split("\n")[4]; - } - } - } - - function escapeHtml(s) { - if (!s) { - return ""; - } - s = s + ""; - return s.replace(/[\&"<>\\]/g, function(s) { - switch (s) { - case "&": return "&"; - case "\\": return "\\\\"; - case '"': return '\"'; - case "<": return "<"; - case ">": return ">"; - default: return s; - } - }); - } - - function synchronize(callback) { - config.queue.push(callback); - - if (config.autorun && !config.blocking) { - process(); - } - } - - function process() { - var start = (new Date()).getTime(); - - while (config.queue.length && !config.blocking) { - if (config.updateRate <= 0 || (((new Date()).getTime() - start) < config.updateRate)) { - config.queue.shift()(); - } else { - window.setTimeout(process, 13); - break; - } - } - if (!config.blocking && !config.queue.length) { - done(); - } - } - - function saveGlobal() { - config.pollution = []; - - if (config.noglobals) { - for (var key in window) { - config.pollution.push(key); - } - } - } - - function checkPollution(name) { - var old = config.pollution; - saveGlobal(); - - var newGlobals = diff(config.pollution, old); - if (newGlobals.length > 0) { - ok(false, "Introduced global variable(s): " + newGlobals.join(", ")); - } - - var deletedGlobals = diff(old, config.pollution); - if (deletedGlobals.length > 0) { - ok(false, "Deleted global variable(s): " + deletedGlobals.join(", ")); - } - } - -// returns a new Array with the elements that are in a but not in b - function diff(a, b) { - var result = a.slice(); - for (var i = 0; i < result.length; i++) { - for (var j = 0; j < b.length; j++) { - if (result[i] === b[j]) { - result.splice(i, 1); - i--; - break; - } - } - } - return result; - } - - function fail(message, exception, callback) { - if (typeof console !== "undefined" && console.error && console.warn) { - console.error(message); - console.error(exception); - console.warn(callback.toString()); - - } else if (window.opera && opera.postError) { - opera.postError(message, exception, callback.toString); - } - } - - function extend(a, b) { - for (var prop in b) { - if (b[prop] === undefined) { - delete a[prop]; - } else { - a[prop] = b[prop]; - } - } - - return a; - } - - function addEvent(elem, type, fn) { - if (elem.addEventListener) { - elem.addEventListener(type, fn, false); - } else if (elem.attachEvent) { - elem.attachEvent("on" + type, fn); - } else { - fn(); - } - } - - function id(name) { - return !!(typeof document !== "undefined" && document && document.getElementById) && - document.getElementById(name); - } - -// Test for equality any JavaScript type. -// Discussions and reference: http://philrathe.com/articles/equiv -// Test suites: http://philrathe.com/tests/equiv -// Author: Philippe Rathé - QUnit.equiv = function () { - - var innerEquiv; // the real equiv function - var callers = []; // stack to decide between skip/abort functions - var parents = []; // stack to avoiding loops from circular referencing - - // Call the o related callback with the given arguments. - function bindCallbacks(o, callbacks, args) { - var prop = QUnit.objectType(o); - if (prop) { - if (QUnit.objectType(callbacks[prop]) === "function") { - return callbacks[prop].apply(callbacks, args); - } else { - return callbacks[prop]; // or undefined - } - } - } - - var callbacks = function () { - - // for string, boolean, number and null - function useStrictEquality(b, a) { - if (b instanceof a.constructor || a instanceof b.constructor) { - // to catch short annotaion VS 'new' annotation of a declaration - // e.g. var i = 1; - // var j = new Number(1); - return a == b; - } else { - return a === b; - } - } - - return { - "string": useStrictEquality, - "boolean": useStrictEquality, - "number": useStrictEquality, - "null": useStrictEquality, - "undefined": useStrictEquality, - - "nan": function (b) { - return isNaN(b); - }, - - "date": function (b, a) { - return QUnit.objectType(b) === "date" && a.valueOf() === b.valueOf(); - }, - - "regexp": function (b, a) { - return QUnit.objectType(b) === "regexp" && - a.source === b.source && // the regex itself - a.global === b.global && // and its modifers (gmi) ... - a.ignoreCase === b.ignoreCase && - a.multiline === b.multiline; - }, - - // - skip when the property is a method of an instance (OOP) - // - abort otherwise, - // initial === would have catch identical references anyway - "function": function () { - var caller = callers[callers.length - 1]; - return caller !== Object && - typeof caller !== "undefined"; - }, - - "array": function (b, a) { - var i, j, loop; - var len; - - // b could be an object literal here - if (! (QUnit.objectType(b) === "array")) { - return false; - } - - len = a.length; - if (len !== b.length) { // safe and faster - return false; - } - - //track reference to avoid circular references - parents.push(a); - for (i = 0; i < len; i++) { - loop = false; - for (j = 0; j < parents.length; j++) { - if (parents[j] === a[i]) { - loop = true;//dont rewalk array - } - } - if (!loop && ! innerEquiv(a[i], b[i])) { - parents.pop(); - return false; - } - } - parents.pop(); - return true; - }, - - "object": function (b, a) { - var i, j, loop; - var eq = true; // unless we can proove it - var aProperties = [], bProperties = []; // collection of strings - - // comparing constructors is more strict than using instanceof - if (a.constructor !== b.constructor) { - return false; - } - - // stack constructor before traversing properties - callers.push(a.constructor); - //track reference to avoid circular references - parents.push(a); - - for (i in a) { // be strict: don't ensures hasOwnProperty and go deep - loop = false; - for (j = 0; j < parents.length; j++) { - if (parents[j] === a[i]) - loop = true; //don't go down the same path twice - } - aProperties.push(i); // collect a's properties - - if (!loop && ! innerEquiv(a[i], b[i])) { - eq = false; - break; - } - } - - callers.pop(); // unstack, we are done - parents.pop(); - - for (i in b) { - bProperties.push(i); // collect b's properties - } - - // Ensures identical properties name - return eq && innerEquiv(aProperties.sort(), bProperties.sort()); - } - }; - }(); - - innerEquiv = function () { // can take multiple arguments - var args = Array.prototype.slice.apply(arguments); - if (args.length < 2) { - return true; // end transition - } - - return (function (a, b) { - if (a === b) { - return true; // catch the most you can - } else if (a === null || b === null || typeof a === "undefined" || typeof b === "undefined" || QUnit.objectType(a) !== QUnit.objectType(b)) { - return false; // don't lose time with error prone cases - } else { - return bindCallbacks(a, callbacks, [b, a]); - } - - // apply transition with (1..n) arguments - })(args[0], args[1]) && arguments.callee.apply(this, args.splice(1, args.length - 1)); - }; - - return innerEquiv; - - }(); - - /** - * jsDump - * Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com - * Licensed under BSD (http://www.opensource.org/licenses/bsd-license.php) - * Date: 5/15/2008 - * @projectDescription Advanced and extensible data dumping for Javascript. - * @version 1.0.0 - * @author Ariel Flesler - * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html} - */ - QUnit.jsDump = (function() { - function quote(str) { - return '"' + str.toString().replace(/"/g, '\\"') + '"'; - } - - function literal(o) { - return o + ''; - } - - function join(pre, arr, post) { - var s = jsDump.separator(), - base = jsDump.indent(), - inner = jsDump.indent(1); - if (arr.join) - arr = arr.join(',' + s + inner); - if (!arr) - return pre + post; - return [ pre, inner + arr, base + post ].join(s); - } - - function array(arr) { - var i = arr.length, ret = Array(i); - this.up(); - while (i--) - ret[i] = this.parse(arr[i]); - this.down(); - return join('[', ret, ']'); - } - - var reName = /^function (\w+)/; - - var jsDump = { - parse:function(obj, type) { //type is used mostly internally, you can fix a (custom)type in advance - var parser = this.parsers[ type || this.typeOf(obj) ]; - type = typeof parser; - - return type == 'function' ? parser.call(this, obj) : - type == 'string' ? parser : - this.parsers.error; - }, - typeOf:function(obj) { - var type; - if (obj === null) { - type = "null"; - } else if (typeof obj === "undefined") { - type = "undefined"; - } else if (QUnit.is("RegExp", obj)) { - type = "regexp"; - } else if (QUnit.is("Date", obj)) { - type = "date"; - } else if (QUnit.is("Function", obj)) { - type = "function"; - } else if (typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined") { - type = "window"; - } else if (obj.nodeType === 9) { - type = "document"; - } else if (obj.nodeType) { - type = "node"; - } else if (typeof obj === "object" && typeof obj.length === "number" && obj.length >= 0) { - type = "array"; - } else { - type = typeof obj; - } - return type; - }, - separator:function() { - return this.multiline ? this.HTML ? '
' : '\n' : this.HTML ? ' ' : ' '; - }, - indent:function(extra) {// extra can be a number, shortcut for increasing-calling-decreasing - if (!this.multiline) - return ''; - var chr = this.indentChar; - if (this.HTML) - chr = chr.replace(/\t/g, ' ').replace(/ /g, ' '); - return Array(this._depth_ + (extra || 0)).join(chr); - }, - up:function(a) { - this._depth_ += a || 1; - }, - down:function(a) { - this._depth_ -= a || 1; - }, - setParser:function(name, parser) { - this.parsers[name] = parser; - }, - // The next 3 are exposed so you can use them - quote:quote, - literal:literal, - join:join, - // - _depth_: 1, - // This is the list of parsers, to modify them, use jsDump.setParser - parsers:{ - window: '[Window]', - document: '[Document]', - error:'[ERROR]', //when no parser is found, shouldn't happen - unknown: '[Unknown]', - 'null':'null', - 'undefined':'undefined', - 'function':function(fn) { - var ret = 'function', - name = 'name' in fn ? fn.name : (reName.exec(fn) || [])[1];//functions never have name in IE - if (name) - ret += ' ' + name; - ret += '('; - - ret = [ ret, QUnit.jsDump.parse(fn, 'functionArgs'), '){'].join(''); - return join(ret, QUnit.jsDump.parse(fn, 'functionCode'), '}'); - }, - array: array, - nodelist: array, - arguments: array, - object:function(map) { - var ret = [ ]; - QUnit.jsDump.up(); - for (var key in map) - ret.push(QUnit.jsDump.parse(key, 'key') + ': ' + QUnit.jsDump.parse(map[key])); - QUnit.jsDump.down(); - return join('{', ret, '}'); - }, - node:function(node) { - var open = QUnit.jsDump.HTML ? '<' : '<', - close = QUnit.jsDump.HTML ? '>' : '>'; - - var tag = node.nodeName.toLowerCase(), - ret = open + tag; - - for (var a in QUnit.jsDump.DOMAttrs) { - var val = node[QUnit.jsDump.DOMAttrs[a]]; - if (val) - ret += ' ' + a + '=' + QUnit.jsDump.parse(val, 'attribute'); - } - return ret + close + open + '/' + tag + close; - }, - functionArgs:function(fn) {//function calls it internally, it's the arguments part of the function - var l = fn.length; - if (!l) return ''; - - var args = Array(l); - while (l--) - args[l] = String.fromCharCode(97 + l);//97 is 'a' - return ' ' + args.join(', ') + ' '; - }, - key:quote, //object calls it internally, the key part of an item in a map - functionCode:'[code]', //function calls it internally, it's the content of the function - attribute:quote, //node calls it internally, it's an html attribute value - string:quote, - date:quote, - regexp:literal, //regex - number:literal, - 'boolean':literal - }, - DOMAttrs:{//attributes to dump from nodes, name=>realName - id:'id', - name:'name', - 'class':'className' - }, - HTML:false,//if true, entities are escaped ( <, >, \t, space and \n ) - indentChar:' ',//indentation unit - multiline:true //if true, items in a collection, are separated by a \n, else just a space. - }; - - return jsDump; - })(); - -// from Sizzle.js - function getText(elems) { - var ret = "", elem; - - for (var i = 0; elems[i]; i++) { - elem = elems[i]; - - // Get the text from text nodes and CDATA nodes - if (elem.nodeType === 3 || elem.nodeType === 4) { - ret += elem.nodeValue; - - // Traverse everything else, except comment nodes - } else if (elem.nodeType !== 8) { - ret += getText(elem.childNodes); - } - } - - return ret; - } - - /* - * Javascript Diff Algorithm - * By John Resig (http://ejohn.org/) - * Modified by Chu Alan "sprite" - * - * Released under the MIT license. - * - * More Info: - * http://ejohn.org/projects/javascript-diff-algorithm/ - * - * Usage: QUnit.diff(expected, actual) - * - * QUnit.diff("the quick brown fox jumped over", "the quick fox jumps over") == "the quick brown fox jumped jumps over" - */ - QUnit.diff = (function() { - function diff(o, n) { - var ns = new Object(); - var os = new Object(); - - for (var i = 0; i < n.length; i++) { - if (ns[n[i]] == null) - ns[n[i]] = { - rows: new Array(), - o: null - }; - ns[n[i]].rows.push(i); - } - - for (var i = 0; i < o.length; i++) { - if (os[o[i]] == null) - os[o[i]] = { - rows: new Array(), - n: null - }; - os[o[i]].rows.push(i); - } - - for (var i in ns) { - if (ns[i].rows.length == 1 && typeof(os[i]) != "undefined" && os[i].rows.length == 1) { - n[ns[i].rows[0]] = { - text: n[ns[i].rows[0]], - row: os[i].rows[0] - }; - o[os[i].rows[0]] = { - text: o[os[i].rows[0]], - row: ns[i].rows[0] - }; - } - } - - for (var i = 0; i < n.length - 1; i++) { - if (n[i].text != null && n[i + 1].text == null && n[i].row + 1 < o.length && o[n[i].row + 1].text == null && - n[i + 1] == o[n[i].row + 1]) { - n[i + 1] = { - text: n[i + 1], - row: n[i].row + 1 - }; - o[n[i].row + 1] = { - text: o[n[i].row + 1], - row: i + 1 - }; - } - } - - for (var i = n.length - 1; i > 0; i--) { - if (n[i].text != null && n[i - 1].text == null && n[i].row > 0 && o[n[i].row - 1].text == null && - n[i - 1] == o[n[i].row - 1]) { - n[i - 1] = { - text: n[i - 1], - row: n[i].row - 1 - }; - o[n[i].row - 1] = { - text: o[n[i].row - 1], - row: i - 1 - }; - } - } - - return { - o: o, - n: n - }; - } - - return function(o, n) { - o = o.replace(/\s+$/, ''); - n = n.replace(/\s+$/, ''); - var out = diff(o == "" ? [] : o.split(/\s+/), n == "" ? [] : n.split(/\s+/)); - - var str = ""; - - var oSpace = o.match(/\s+/g); - if (oSpace == null) { - oSpace = [" "]; - } - else { - oSpace.push(" "); - } - var nSpace = n.match(/\s+/g); - if (nSpace == null) { - nSpace = [" "]; - } - else { - nSpace.push(" "); - } - - if (out.n.length == 0) { - for (var i = 0; i < out.o.length; i++) { - str += '' + out.o[i] + oSpace[i] + ""; - } - } - else { - if (out.n[0].text == null) { - for (n = 0; n < out.o.length && out.o[n].text == null; n++) { - str += '' + out.o[n] + oSpace[n] + ""; - } - } - - for (var i = 0; i < out.n.length; i++) { - if (out.n[i].text == null) { - str += '' + out.n[i] + nSpace[i] + ""; - } - else { - var pre = ""; - - for (n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++) { - pre += '' + out.o[n] + oSpace[n] + ""; - } - str += " " + out.n[i].text + nSpace[i] + pre; - } - } - } - - return str; - }; - })(); - -})(this); diff --git a/addons/web/static/lib/qunit/qunit.css b/addons/web/static/lib/qunit/qunit.css new file mode 100755 index 00000000000..bcecc4c0daf --- /dev/null +++ b/addons/web/static/lib/qunit/qunit.css @@ -0,0 +1,226 @@ +/** + * QUnit v1.2.0 - A JavaScript Unit Testing Framework + * + * http://docs.jquery.com/QUnit + * + * Copyright (c) 2011 John Resig, Jörn Zaefferer + * Dual licensed under the MIT (MIT-LICENSE.txt) + * or GPL (GPL-LICENSE.txt) licenses. + */ + +/** Font Family and Sizes */ + +#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult { + font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif; +} + +#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; } +#qunit-tests { font-size: smaller; } + + +/** Resets */ + +#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult { + margin: 0; + padding: 0; +} + + +/** Header */ + +#qunit-header { + padding: 0.5em 0 0.5em 1em; + + color: #8699a4; + background-color: #0d3349; + + font-size: 1.5em; + line-height: 1em; + font-weight: normal; + + border-radius: 15px 15px 0 0; + -moz-border-radius: 15px 15px 0 0; + -webkit-border-top-right-radius: 15px; + -webkit-border-top-left-radius: 15px; +} + +#qunit-header a { + text-decoration: none; + color: #c2ccd1; +} + +#qunit-header a:hover, +#qunit-header a:focus { + color: #fff; +} + +#qunit-banner { + height: 5px; +} + +#qunit-testrunner-toolbar { + padding: 0.5em 0 0.5em 2em; + color: #5E740B; + background-color: #eee; +} + +#qunit-userAgent { + padding: 0.5em 0 0.5em 2.5em; + background-color: #2b81af; + color: #fff; + text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; +} + + +/** Tests: Pass/Fail */ + +#qunit-tests { + list-style-position: inside; +} + +#qunit-tests li { + padding: 0.4em 0.5em 0.4em 2.5em; + border-bottom: 1px solid #fff; + list-style-position: inside; +} + +#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running { + display: none; +} + +#qunit-tests li strong { + cursor: pointer; +} + +#qunit-tests li a { + padding: 0.5em; + color: #c2ccd1; + text-decoration: none; +} +#qunit-tests li a:hover, +#qunit-tests li a:focus { + color: #000; +} + +#qunit-tests ol { + margin-top: 0.5em; + padding: 0.5em; + + background-color: #fff; + + border-radius: 15px; + -moz-border-radius: 15px; + -webkit-border-radius: 15px; + + box-shadow: inset 0px 2px 13px #999; + -moz-box-shadow: inset 0px 2px 13px #999; + -webkit-box-shadow: inset 0px 2px 13px #999; +} + +#qunit-tests table { + border-collapse: collapse; + margin-top: .2em; +} + +#qunit-tests th { + text-align: right; + vertical-align: top; + padding: 0 .5em 0 0; +} + +#qunit-tests td { + vertical-align: top; +} + +#qunit-tests pre { + margin: 0; + white-space: pre-wrap; + word-wrap: break-word; +} + +#qunit-tests del { + background-color: #e0f2be; + color: #374e0c; + text-decoration: none; +} + +#qunit-tests ins { + background-color: #ffcaca; + color: #500; + text-decoration: none; +} + +/*** Test Counts */ + +#qunit-tests b.counts { color: black; } +#qunit-tests b.passed { color: #5E740B; } +#qunit-tests b.failed { color: #710909; } + +#qunit-tests li li { + margin: 0.5em; + padding: 0.4em 0.5em 0.4em 0.5em; + background-color: #fff; + border-bottom: none; + list-style-position: inside; +} + +/*** Passing Styles */ + +#qunit-tests li li.pass { + color: #5E740B; + background-color: #fff; + border-left: 26px solid #C6E746; +} + +#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; } +#qunit-tests .pass .test-name { color: #366097; } + +#qunit-tests .pass .test-actual, +#qunit-tests .pass .test-expected { color: #999999; } + +#qunit-banner.qunit-pass { background-color: #C6E746; } + +/*** Failing Styles */ + +#qunit-tests li li.fail { + color: #710909; + background-color: #fff; + border-left: 26px solid #EE5757; + white-space: pre; +} + +#qunit-tests > li:last-child { + border-radius: 0 0 15px 15px; + -moz-border-radius: 0 0 15px 15px; + -webkit-border-bottom-right-radius: 15px; + -webkit-border-bottom-left-radius: 15px; +} + +#qunit-tests .fail { color: #000000; background-color: #EE5757; } +#qunit-tests .fail .test-name, +#qunit-tests .fail .module-name { color: #000000; } + +#qunit-tests .fail .test-actual { color: #EE5757; } +#qunit-tests .fail .test-expected { color: green; } + +#qunit-banner.qunit-fail { background-color: #EE5757; } + + +/** Result */ + +#qunit-testresult { + padding: 0.5em 0.5em 0.5em 2.5em; + + color: #2b81af; + background-color: #D2E0E6; + + border-bottom: 1px solid white; +} + +/** Fixture */ + +#qunit-fixture { + position: absolute; + top: -10000px; + left: -10000px; +} diff --git a/addons/web/static/lib/qunit/qunit.js b/addons/web/static/lib/qunit/qunit.js new file mode 100755 index 00000000000..6d2a8a7b8ab --- /dev/null +++ b/addons/web/static/lib/qunit/qunit.js @@ -0,0 +1,1597 @@ +/** + * QUnit v1.2.0 - A JavaScript Unit Testing Framework + * + * http://docs.jquery.com/QUnit + * + * Copyright (c) 2011 John Resig, Jörn Zaefferer + * Dual licensed under the MIT (MIT-LICENSE.txt) + * or GPL (GPL-LICENSE.txt) licenses. + */ + +(function(window) { + +var defined = { + setTimeout: typeof window.setTimeout !== "undefined", + sessionStorage: (function() { + try { + return !!sessionStorage.getItem; + } catch(e) { + return false; + } + })() +}; + +var testId = 0, + toString = Object.prototype.toString, + hasOwn = Object.prototype.hasOwnProperty; + +var Test = function(name, testName, expected, testEnvironmentArg, async, callback) { + this.name = name; + this.testName = testName; + this.expected = expected; + this.testEnvironmentArg = testEnvironmentArg; + this.async = async; + this.callback = callback; + this.assertions = []; +}; +Test.prototype = { + init: function() { + var tests = id("qunit-tests"); + if (tests) { + var b = document.createElement("strong"); + b.innerHTML = "Running " + this.name; + var li = document.createElement("li"); + li.appendChild( b ); + li.className = "running"; + li.id = this.id = "test-output" + testId++; + tests.appendChild( li ); + } + }, + setup: function() { + if (this.module != config.previousModule) { + if ( config.previousModule ) { + runLoggingCallbacks('moduleDone', QUnit, { + name: config.previousModule, + failed: config.moduleStats.bad, + passed: config.moduleStats.all - config.moduleStats.bad, + total: config.moduleStats.all + } ); + } + config.previousModule = this.module; + config.moduleStats = { all: 0, bad: 0 }; + runLoggingCallbacks( 'moduleStart', QUnit, { + name: this.module + } ); + } + + config.current = this; + this.testEnvironment = extend({ + setup: function() {}, + teardown: function() {} + }, this.moduleTestEnvironment); + if (this.testEnvironmentArg) { + extend(this.testEnvironment, this.testEnvironmentArg); + } + + runLoggingCallbacks( 'testStart', QUnit, { + name: this.testName, + module: this.module + }); + + // allow utility functions to access the current test environment + // TODO why?? + QUnit.current_testEnvironment = this.testEnvironment; + + try { + if ( !config.pollution ) { + saveGlobal(); + } + + this.testEnvironment.setup.call(this.testEnvironment); + } catch(e) { + QUnit.ok( false, "Setup failed on " + this.testName + ": " + e.message ); + } + }, + run: function() { + config.current = this; + if ( this.async ) { + QUnit.stop(); + } + + if ( config.notrycatch ) { + this.callback.call(this.testEnvironment); + return; + } + try { + this.callback.call(this.testEnvironment); + } catch(e) { + fail("Test " + this.testName + " died, exception and test follows", e, this.callback); + QUnit.ok( false, "Died on test #" + (this.assertions.length + 1) + ": " + e.message + " - " + QUnit.jsDump.parse(e) ); + // else next test will carry the responsibility + saveGlobal(); + + // Restart the tests if they're blocking + if ( config.blocking ) { + QUnit.start(); + } + } + }, + teardown: function() { + config.current = this; + try { + this.testEnvironment.teardown.call(this.testEnvironment); + checkPollution(); + } catch(e) { + QUnit.ok( false, "Teardown failed on " + this.testName + ": " + e.message ); + } + }, + finish: function() { + config.current = this; + if ( this.expected != null && this.expected != this.assertions.length ) { + QUnit.ok( false, "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run" ); + } + + var good = 0, bad = 0, + tests = id("qunit-tests"); + + config.stats.all += this.assertions.length; + config.moduleStats.all += this.assertions.length; + + if ( tests ) { + var ol = document.createElement("ol"); + + for ( var i = 0; i < this.assertions.length; i++ ) { + var assertion = this.assertions[i]; + + var li = document.createElement("li"); + li.className = assertion.result ? "pass" : "fail"; + li.innerHTML = assertion.message || (assertion.result ? "okay" : "failed"); + ol.appendChild( li ); + + if ( assertion.result ) { + good++; + } else { + bad++; + config.stats.bad++; + config.moduleStats.bad++; + } + } + + // store result when possible + if ( QUnit.config.reorder && defined.sessionStorage ) { + if (bad) { + sessionStorage.setItem("qunit-" + this.module + "-" + this.testName, bad); + } else { + sessionStorage.removeItem("qunit-" + this.module + "-" + this.testName); + } + } + + if (bad == 0) { + ol.style.display = "none"; + } + + var b = document.createElement("strong"); + b.innerHTML = this.name + " (" + bad + ", " + good + ", " + this.assertions.length + ")"; + + var a = document.createElement("a"); + a.innerHTML = "Rerun"; + a.href = QUnit.url({ filter: getText([b]).replace(/\([^)]+\)$/, "").replace(/(^\s*|\s*$)/g, "") }); + + addEvent(b, "click", function() { + var next = b.nextSibling.nextSibling, + display = next.style.display; + next.style.display = display === "none" ? "block" : "none"; + }); + + addEvent(b, "dblclick", function(e) { + var target = e && e.target ? e.target : window.event.srcElement; + if ( target.nodeName.toLowerCase() == "span" || target.nodeName.toLowerCase() == "b" ) { + target = target.parentNode; + } + if ( window.location && target.nodeName.toLowerCase() === "strong" ) { + window.location = QUnit.url({ filter: getText([target]).replace(/\([^)]+\)$/, "").replace(/(^\s*|\s*$)/g, "") }); + } + }); + + var li = id(this.id); + li.className = bad ? "fail" : "pass"; + li.removeChild( li.firstChild ); + li.appendChild( b ); + li.appendChild( a ); + li.appendChild( ol ); + + } else { + for ( var i = 0; i < this.assertions.length; i++ ) { + if ( !this.assertions[i].result ) { + bad++; + config.stats.bad++; + config.moduleStats.bad++; + } + } + } + + try { + QUnit.reset(); + } catch(e) { + fail("reset() failed, following Test " + this.testName + ", exception and reset fn follows", e, QUnit.reset); + } + + runLoggingCallbacks( 'testDone', QUnit, { + name: this.testName, + module: this.module, + failed: bad, + passed: this.assertions.length - bad, + total: this.assertions.length + } ); + }, + + queue: function() { + var test = this; + synchronize(function() { + test.init(); + }); + function run() { + // each of these can by async + synchronize(function() { + test.setup(); + }); + synchronize(function() { + test.run(); + }); + synchronize(function() { + test.teardown(); + }); + synchronize(function() { + test.finish(); + }); + } + // defer when previous test run passed, if storage is available + var bad = QUnit.config.reorder && defined.sessionStorage && +sessionStorage.getItem("qunit-" + this.module + "-" + this.testName); + if (bad) { + run(); + } else { + synchronize(run, true); + }; + } + +}; + +var QUnit = { + + // call on start of module test to prepend name to all tests + module: function(name, testEnvironment) { + config.currentModule = name; + config.currentModuleTestEnviroment = testEnvironment; + }, + + asyncTest: function(testName, expected, callback) { + if ( arguments.length === 2 ) { + callback = expected; + expected = null; + } + + QUnit.test(testName, expected, callback, true); + }, + + test: function(testName, expected, callback, async) { + var name = '' + testName + '', testEnvironmentArg; + + if ( arguments.length === 2 ) { + callback = expected; + expected = null; + } + // is 2nd argument a testEnvironment? + if ( expected && typeof expected === 'object') { + testEnvironmentArg = expected; + expected = null; + } + + if ( config.currentModule ) { + name = '' + config.currentModule + ": " + name; + } + + if ( !validTest(config.currentModule + ": " + testName) ) { + return; + } + + var test = new Test(name, testName, expected, testEnvironmentArg, async, callback); + test.module = config.currentModule; + test.moduleTestEnvironment = config.currentModuleTestEnviroment; + test.queue(); + }, + + /** + * Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through. + */ + expect: function(asserts) { + config.current.expected = asserts; + }, + + /** + * Asserts true. + * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" ); + */ + ok: function(a, msg) { + a = !!a; + var details = { + result: a, + message: msg + }; + msg = escapeInnerText(msg); + runLoggingCallbacks( 'log', QUnit, details ); + config.current.assertions.push({ + result: a, + message: msg + }); + }, + + /** + * Checks that the first two arguments are equal, with an optional message. + * Prints out both actual and expected values. + * + * Prefered to ok( actual == expected, message ) + * + * @example equal( format("Received {0} bytes.", 2), "Received 2 bytes." ); + * + * @param Object actual + * @param Object expected + * @param String message (optional) + */ + equal: function(actual, expected, message) { + QUnit.push(expected == actual, actual, expected, message); + }, + + notEqual: function(actual, expected, message) { + QUnit.push(expected != actual, actual, expected, message); + }, + + deepEqual: function(actual, expected, message) { + QUnit.push(QUnit.equiv(actual, expected), actual, expected, message); + }, + + notDeepEqual: function(actual, expected, message) { + QUnit.push(!QUnit.equiv(actual, expected), actual, expected, message); + }, + + strictEqual: function(actual, expected, message) { + QUnit.push(expected === actual, actual, expected, message); + }, + + notStrictEqual: function(actual, expected, message) { + QUnit.push(expected !== actual, actual, expected, message); + }, + + raises: function(block, expected, message) { + var actual, ok = false; + + if (typeof expected === 'string') { + message = expected; + expected = null; + } + + try { + block(); + } catch (e) { + actual = e; + } + + if (actual) { + // we don't want to validate thrown error + if (!expected) { + ok = true; + // expected is a regexp + } else if (QUnit.objectType(expected) === "regexp") { + ok = expected.test(actual); + // expected is a constructor + } else if (actual instanceof expected) { + ok = true; + // expected is a validation function which returns true is validation passed + } else if (expected.call({}, actual) === true) { + ok = true; + } + } + + QUnit.ok(ok, message); + }, + + start: function(count) { + config.semaphore -= count || 1; + if (config.semaphore > 0) { + // don't start until equal number of stop-calls + return; + } + if (config.semaphore < 0) { + // ignore if start is called more often then stop + config.semaphore = 0; + } + // A slight delay, to avoid any current callbacks + if ( defined.setTimeout ) { + window.setTimeout(function() { + if (config.semaphore > 0) { + return; + } + if ( config.timeout ) { + clearTimeout(config.timeout); + } + + config.blocking = false; + process(true); + }, 13); + } else { + config.blocking = false; + process(true); + } + }, + + stop: function(count) { + config.semaphore += count || 1; + config.blocking = true; + + if ( config.testTimeout && defined.setTimeout ) { + clearTimeout(config.timeout); + config.timeout = window.setTimeout(function() { + QUnit.ok( false, "Test timed out" ); + config.semaphore = 1; + QUnit.start(); + }, config.testTimeout); + } + } +}; + +//We want access to the constructor's prototype +(function() { + function F(){}; + F.prototype = QUnit; + QUnit = new F(); + //Make F QUnit's constructor so that we can add to the prototype later + QUnit.constructor = F; +})(); + +// Backwards compatibility, deprecated +QUnit.equals = QUnit.equal; +QUnit.same = QUnit.deepEqual; + +// Maintain internal state +var config = { + // The queue of tests to run + queue: [], + + // block until document ready + blocking: true, + + // when enabled, show only failing tests + // gets persisted through sessionStorage and can be changed in UI via checkbox + hidepassed: false, + + // by default, run previously failed tests first + // very useful in combination with "Hide passed tests" checked + reorder: true, + + // by default, modify document.title when suite is done + altertitle: true, + + urlConfig: ['noglobals', 'notrycatch'], + + //logging callback queues + begin: [], + done: [], + log: [], + testStart: [], + testDone: [], + moduleStart: [], + moduleDone: [] +}; + +// Load paramaters +(function() { + var location = window.location || { search: "", protocol: "file:" }, + params = location.search.slice( 1 ).split( "&" ), + length = params.length, + urlParams = {}, + current; + + if ( params[ 0 ] ) { + for ( var i = 0; i < length; i++ ) { + current = params[ i ].split( "=" ); + current[ 0 ] = decodeURIComponent( current[ 0 ] ); + // allow just a key to turn on a flag, e.g., test.html?noglobals + current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true; + urlParams[ current[ 0 ] ] = current[ 1 ]; + } + } + + QUnit.urlParams = urlParams; + config.filter = urlParams.filter; + + // Figure out if we're running the tests from a server or not + QUnit.isLocal = !!(location.protocol === 'file:'); +})(); + +// Expose the API as global variables, unless an 'exports' +// object exists, in that case we assume we're in CommonJS +if ( typeof exports === "undefined" || typeof require === "undefined" ) { + extend(window, QUnit); + window.QUnit = QUnit; +} else { + extend(exports, QUnit); + exports.QUnit = QUnit; +} + +// define these after exposing globals to keep them in these QUnit namespace only +extend(QUnit, { + config: config, + + // Initialize the configuration options + init: function() { + extend(config, { + stats: { all: 0, bad: 0 }, + moduleStats: { all: 0, bad: 0 }, + started: +new Date, + updateRate: 1000, + blocking: false, + autostart: true, + autorun: false, + filter: "", + queue: [], + semaphore: 0 + }); + + var tests = id( "qunit-tests" ), + banner = id( "qunit-banner" ), + result = id( "qunit-testresult" ); + + if ( tests ) { + tests.innerHTML = ""; + } + + if ( banner ) { + banner.className = ""; + } + + if ( result ) { + result.parentNode.removeChild( result ); + } + + if ( tests ) { + result = document.createElement( "p" ); + result.id = "qunit-testresult"; + result.className = "result"; + tests.parentNode.insertBefore( result, tests ); + result.innerHTML = 'Running...
 '; + } + }, + + /** + * Resets the test setup. Useful for tests that modify the DOM. + * + * If jQuery is available, uses jQuery's html(), otherwise just innerHTML. + */ + reset: function() { + if ( window.jQuery ) { + jQuery( "#qunit-fixture" ).html( config.fixture ); + } else { + var main = id( 'qunit-fixture' ); + if ( main ) { + main.innerHTML = config.fixture; + } + } + }, + + /** + * Trigger an event on an element. + * + * @example triggerEvent( document.body, "click" ); + * + * @param DOMElement elem + * @param String type + */ + triggerEvent: function( elem, type, event ) { + if ( document.createEvent ) { + event = document.createEvent("MouseEvents"); + event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView, + 0, 0, 0, 0, 0, false, false, false, false, 0, null); + elem.dispatchEvent( event ); + + } else if ( elem.fireEvent ) { + elem.fireEvent("on"+type); + } + }, + + // Safe object type checking + is: function( type, obj ) { + return QUnit.objectType( obj ) == type; + }, + + objectType: function( obj ) { + if (typeof obj === "undefined") { + return "undefined"; + + // consider: typeof null === object + } + if (obj === null) { + return "null"; + } + + var type = toString.call( obj ).match(/^\[object\s(.*)\]$/)[1] || ''; + + switch (type) { + case 'Number': + if (isNaN(obj)) { + return "nan"; + } else { + return "number"; + } + case 'String': + case 'Boolean': + case 'Array': + case 'Date': + case 'RegExp': + case 'Function': + return type.toLowerCase(); + } + if (typeof obj === "object") { + return "object"; + } + return undefined; + }, + + push: function(result, actual, expected, message) { + var details = { + result: result, + message: message, + actual: actual, + expected: expected + }; + + message = escapeInnerText(message) || (result ? "okay" : "failed"); + message = '' + message + ""; + expected = escapeInnerText(QUnit.jsDump.parse(expected)); + actual = escapeInnerText(QUnit.jsDump.parse(actual)); + var output = message + ''; + if (actual != expected) { + output += ''; + output += ''; + } + if (!result) { + var source = sourceFromStacktrace(); + if (source) { + details.source = source; + output += ''; + } + } + output += "
Expected:
' + expected + '
Result:
' + actual + '
Diff:
' + QUnit.diff(expected, actual) +'
Source:
' + escapeInnerText(source) + '
"; + + runLoggingCallbacks( 'log', QUnit, details ); + + config.current.assertions.push({ + result: !!result, + message: output + }); + }, + + url: function( params ) { + params = extend( extend( {}, QUnit.urlParams ), params ); + var querystring = "?", + key; + for ( key in params ) { + if ( !hasOwn.call( params, key ) ) { + continue; + } + querystring += encodeURIComponent( key ) + "=" + + encodeURIComponent( params[ key ] ) + "&"; + } + return window.location.pathname + querystring.slice( 0, -1 ); + }, + + extend: extend, + id: id, + addEvent: addEvent +}); + +//QUnit.constructor is set to the empty F() above so that we can add to it's prototype later +//Doing this allows us to tell if the following methods have been overwritten on the actual +//QUnit object, which is a deprecated way of using the callbacks. +extend(QUnit.constructor.prototype, { + // Logging callbacks; all receive a single argument with the listed properties + // run test/logs.html for any related changes + begin: registerLoggingCallback('begin'), + // done: { failed, passed, total, runtime } + done: registerLoggingCallback('done'), + // log: { result, actual, expected, message } + log: registerLoggingCallback('log'), + // testStart: { name } + testStart: registerLoggingCallback('testStart'), + // testDone: { name, failed, passed, total } + testDone: registerLoggingCallback('testDone'), + // moduleStart: { name } + moduleStart: registerLoggingCallback('moduleStart'), + // moduleDone: { name, failed, passed, total } + moduleDone: registerLoggingCallback('moduleDone') +}); + +if ( typeof document === "undefined" || document.readyState === "complete" ) { + config.autorun = true; +} + +QUnit.load = function() { + runLoggingCallbacks( 'begin', QUnit, {} ); + + // Initialize the config, saving the execution queue + var oldconfig = extend({}, config); + QUnit.init(); + extend(config, oldconfig); + + config.blocking = false; + + var urlConfigHtml = '', len = config.urlConfig.length; + for ( var i = 0, val; i < len, val = config.urlConfig[i]; i++ ) { + config[val] = QUnit.urlParams[val]; + urlConfigHtml += ''; + } + + var userAgent = id("qunit-userAgent"); + if ( userAgent ) { + userAgent.innerHTML = navigator.userAgent; + } + var banner = id("qunit-header"); + if ( banner ) { + banner.innerHTML = ' ' + banner.innerHTML + ' ' + urlConfigHtml; + addEvent( banner, "change", function( event ) { + var params = {}; + params[ event.target.name ] = event.target.checked ? true : undefined; + window.location = QUnit.url( params ); + }); + } + + var toolbar = id("qunit-testrunner-toolbar"); + if ( toolbar ) { + var filter = document.createElement("input"); + filter.type = "checkbox"; + filter.id = "qunit-filter-pass"; + addEvent( filter, "click", function() { + var ol = document.getElementById("qunit-tests"); + if ( filter.checked ) { + ol.className = ol.className + " hidepass"; + } else { + var tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " "; + ol.className = tmp.replace(/ hidepass /, " "); + } + if ( defined.sessionStorage ) { + if (filter.checked) { + sessionStorage.setItem("qunit-filter-passed-tests", "true"); + } else { + sessionStorage.removeItem("qunit-filter-passed-tests"); + } + } + }); + if ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem("qunit-filter-passed-tests") ) { + filter.checked = true; + var ol = document.getElementById("qunit-tests"); + ol.className = ol.className + " hidepass"; + } + toolbar.appendChild( filter ); + + var label = document.createElement("label"); + label.setAttribute("for", "qunit-filter-pass"); + label.innerHTML = "Hide passed tests"; + toolbar.appendChild( label ); + } + + var main = id('qunit-fixture'); + if ( main ) { + config.fixture = main.innerHTML; + } + + if (config.autostart) { + QUnit.start(); + } +}; + +addEvent(window, "load", QUnit.load); + +// addEvent(window, "error") gives us a useless event object +window.onerror = function( message, file, line ) { + if ( QUnit.config.current ) { + ok( false, message + ", " + file + ":" + line ); + } else { + test( "global failure", function() { + ok( false, message + ", " + file + ":" + line ); + }); + } +}; + +function done() { + config.autorun = true; + + // Log the last module results + if ( config.currentModule ) { + runLoggingCallbacks( 'moduleDone', QUnit, { + name: config.currentModule, + failed: config.moduleStats.bad, + passed: config.moduleStats.all - config.moduleStats.bad, + total: config.moduleStats.all + } ); + } + + var banner = id("qunit-banner"), + tests = id("qunit-tests"), + runtime = +new Date - config.started, + passed = config.stats.all - config.stats.bad, + html = [ + 'Tests completed in ', + runtime, + ' milliseconds.
', + '', + passed, + ' tests of ', + config.stats.all, + ' passed, ', + config.stats.bad, + ' failed.' + ].join(''); + + if ( banner ) { + banner.className = (config.stats.bad ? "qunit-fail" : "qunit-pass"); + } + + if ( tests ) { + id( "qunit-testresult" ).innerHTML = html; + } + + if ( config.altertitle && typeof document !== "undefined" && document.title ) { + // show ✖ for good, ✔ for bad suite result in title + // use escape sequences in case file gets loaded with non-utf-8-charset + document.title = [ + (config.stats.bad ? "\u2716" : "\u2714"), + document.title.replace(/^[\u2714\u2716] /i, "") + ].join(" "); + } + + runLoggingCallbacks( 'done', QUnit, { + failed: config.stats.bad, + passed: passed, + total: config.stats.all, + runtime: runtime + } ); +} + +function validTest( name ) { + var filter = config.filter, + run = false; + + if ( !filter ) { + return true; + } + + var not = filter.charAt( 0 ) === "!"; + if ( not ) { + filter = filter.slice( 1 ); + } + + if ( name.indexOf( filter ) !== -1 ) { + return !not; + } + + if ( not ) { + run = true; + } + + return run; +} + +// so far supports only Firefox, Chrome and Opera (buggy) +// could be extended in the future to use something like https://github.com/csnover/TraceKit +function sourceFromStacktrace() { + try { + throw new Error(); + } catch ( e ) { + if (e.stacktrace) { + // Opera + return e.stacktrace.split("\n")[6]; + } else if (e.stack) { + // Firefox, Chrome + return e.stack.split("\n")[4]; + } else if (e.sourceURL) { + // Safari, PhantomJS + // TODO sourceURL points at the 'throw new Error' line above, useless + //return e.sourceURL + ":" + e.line; + } + } +} + +function escapeInnerText(s) { + if (!s) { + return ""; + } + s = s + ""; + return s.replace(/[\&<>]/g, function(s) { + switch(s) { + case "&": return "&"; + case "<": return "<"; + case ">": return ">"; + default: return s; + } + }); +} + +function synchronize( callback, last ) { + config.queue.push( callback ); + + if ( config.autorun && !config.blocking ) { + process(last); + } +} + +function process( last ) { + var start = new Date().getTime(); + config.depth = config.depth ? config.depth + 1 : 1; + + while ( config.queue.length && !config.blocking ) { + if ( !defined.setTimeout || config.updateRate <= 0 || ( ( new Date().getTime() - start ) < config.updateRate ) ) { + config.queue.shift()(); + } else { + window.setTimeout( function(){ + process( last ); + }, 13 ); + break; + } + } + config.depth--; + if ( last && !config.blocking && !config.queue.length && config.depth === 0 ) { + done(); + } +} + +function saveGlobal() { + config.pollution = []; + + if ( config.noglobals ) { + for ( var key in window ) { + if ( !hasOwn.call( window, key ) ) { + continue; + } + config.pollution.push( key ); + } + } +} + +function checkPollution( name ) { + var old = config.pollution; + saveGlobal(); + + var newGlobals = diff( config.pollution, old ); + if ( newGlobals.length > 0 ) { + ok( false, "Introduced global variable(s): " + newGlobals.join(", ") ); + } + + var deletedGlobals = diff( old, config.pollution ); + if ( deletedGlobals.length > 0 ) { + ok( false, "Deleted global variable(s): " + deletedGlobals.join(", ") ); + } +} + +// returns a new Array with the elements that are in a but not in b +function diff( a, b ) { + var result = a.slice(); + for ( var i = 0; i < result.length; i++ ) { + for ( var j = 0; j < b.length; j++ ) { + if ( result[i] === b[j] ) { + result.splice(i, 1); + i--; + break; + } + } + } + return result; +} + +function fail(message, exception, callback) { + if ( typeof console !== "undefined" && console.error && console.warn ) { + console.error(message); + console.error(exception); + console.warn(callback.toString()); + + } else if ( window.opera && opera.postError ) { + opera.postError(message, exception, callback.toString); + } +} + +function extend(a, b) { + for ( var prop in b ) { + if ( b[prop] === undefined ) { + delete a[prop]; + + // Avoid "Member not found" error in IE8 caused by setting window.constructor + } else if ( prop !== "constructor" || a !== window ) { + a[prop] = b[prop]; + } + } + + return a; +} + +function addEvent(elem, type, fn) { + if ( elem.addEventListener ) { + elem.addEventListener( type, fn, false ); + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, fn ); + } else { + fn(); + } +} + +function id(name) { + return !!(typeof document !== "undefined" && document && document.getElementById) && + document.getElementById( name ); +} + +function registerLoggingCallback(key){ + return function(callback){ + config[key].push( callback ); + }; +} + +// Supports deprecated method of completely overwriting logging callbacks +function runLoggingCallbacks(key, scope, args) { + //debugger; + var callbacks; + if ( QUnit.hasOwnProperty(key) ) { + QUnit[key].call(scope, args); + } else { + callbacks = config[key]; + for( var i = 0; i < callbacks.length; i++ ) { + callbacks[i].call( scope, args ); + } + } +} + +// Test for equality any JavaScript type. +// Author: Philippe Rathé +QUnit.equiv = function () { + + var innerEquiv; // the real equiv function + var callers = []; // stack to decide between skip/abort functions + var parents = []; // stack to avoiding loops from circular referencing + + // Call the o related callback with the given arguments. + function bindCallbacks(o, callbacks, args) { + var prop = QUnit.objectType(o); + if (prop) { + if (QUnit.objectType(callbacks[prop]) === "function") { + return callbacks[prop].apply(callbacks, args); + } else { + return callbacks[prop]; // or undefined + } + } + } + + var getProto = Object.getPrototypeOf || function (obj) { + return obj.__proto__; + }; + + var callbacks = function () { + + // for string, boolean, number and null + function useStrictEquality(b, a) { + if (b instanceof a.constructor || a instanceof b.constructor) { + // to catch short annotaion VS 'new' annotation of a + // declaration + // e.g. var i = 1; + // var j = new Number(1); + return a == b; + } else { + return a === b; + } + } + + return { + "string" : useStrictEquality, + "boolean" : useStrictEquality, + "number" : useStrictEquality, + "null" : useStrictEquality, + "undefined" : useStrictEquality, + + "nan" : function(b) { + return isNaN(b); + }, + + "date" : function(b, a) { + return QUnit.objectType(b) === "date" + && a.valueOf() === b.valueOf(); + }, + + "regexp" : function(b, a) { + return QUnit.objectType(b) === "regexp" + && a.source === b.source && // the regex itself + a.global === b.global && // and its modifers + // (gmi) ... + a.ignoreCase === b.ignoreCase + && a.multiline === b.multiline; + }, + + // - skip when the property is a method of an instance (OOP) + // - abort otherwise, + // initial === would have catch identical references anyway + "function" : function() { + var caller = callers[callers.length - 1]; + return caller !== Object && typeof caller !== "undefined"; + }, + + "array" : function(b, a) { + var i, j, loop; + var len; + + // b could be an object literal here + if (!(QUnit.objectType(b) === "array")) { + return false; + } + + len = a.length; + if (len !== b.length) { // safe and faster + return false; + } + + // track reference to avoid circular references + parents.push(a); + for (i = 0; i < len; i++) { + loop = false; + for (j = 0; j < parents.length; j++) { + if (parents[j] === a[i]) { + loop = true;// dont rewalk array + } + } + if (!loop && !innerEquiv(a[i], b[i])) { + parents.pop(); + return false; + } + } + parents.pop(); + return true; + }, + + "object" : function(b, a) { + var i, j, loop; + var eq = true; // unless we can proove it + var aProperties = [], bProperties = []; // collection of + // strings + + // comparing constructors is more strict than using + // instanceof + if (a.constructor !== b.constructor) { + // Allow objects with no prototype to be equivalent to + // objects with Object as their constructor. + if (!((getProto(a) === null && getProto(b) === Object.prototype) || + (getProto(b) === null && getProto(a) === Object.prototype))) + { + return false; + } + } + + // stack constructor before traversing properties + callers.push(a.constructor); + // track reference to avoid circular references + parents.push(a); + + for (i in a) { // be strict: don't ensures hasOwnProperty + // and go deep + loop = false; + for (j = 0; j < parents.length; j++) { + if (parents[j] === a[i]) + loop = true; // don't go down the same path + // twice + } + aProperties.push(i); // collect a's properties + + if (!loop && !innerEquiv(a[i], b[i])) { + eq = false; + break; + } + } + + callers.pop(); // unstack, we are done + parents.pop(); + + for (i in b) { + bProperties.push(i); // collect b's properties + } + + // Ensures identical properties name + return eq + && innerEquiv(aProperties.sort(), bProperties + .sort()); + } + }; + }(); + + innerEquiv = function() { // can take multiple arguments + var args = Array.prototype.slice.apply(arguments); + if (args.length < 2) { + return true; // end transition + } + + return (function(a, b) { + if (a === b) { + return true; // catch the most you can + } else if (a === null || b === null || typeof a === "undefined" + || typeof b === "undefined" + || QUnit.objectType(a) !== QUnit.objectType(b)) { + return false; // don't lose time with error prone cases + } else { + return bindCallbacks(a, callbacks, [ b, a ]); + } + + // apply transition with (1..n) arguments + })(args[0], args[1]) + && arguments.callee.apply(this, args.splice(1, + args.length - 1)); + }; + + return innerEquiv; + +}(); + +/** + * jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com | + * http://flesler.blogspot.com Licensed under BSD + * (http://www.opensource.org/licenses/bsd-license.php) Date: 5/15/2008 + * + * @projectDescription Advanced and extensible data dumping for Javascript. + * @version 1.0.0 + * @author Ariel Flesler + * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html} + */ +QUnit.jsDump = (function() { + function quote( str ) { + return '"' + str.toString().replace(/"/g, '\\"') + '"'; + }; + function literal( o ) { + return o + ''; + }; + function join( pre, arr, post ) { + var s = jsDump.separator(), + base = jsDump.indent(), + inner = jsDump.indent(1); + if ( arr.join ) + arr = arr.join( ',' + s + inner ); + if ( !arr ) + return pre + post; + return [ pre, inner + arr, base + post ].join(s); + }; + function array( arr, stack ) { + var i = arr.length, ret = Array(i); + this.up(); + while ( i-- ) + ret[i] = this.parse( arr[i] , undefined , stack); + this.down(); + return join( '[', ret, ']' ); + }; + + var reName = /^function (\w+)/; + + var jsDump = { + parse:function( obj, type, stack ) { //type is used mostly internally, you can fix a (custom)type in advance + stack = stack || [ ]; + var parser = this.parsers[ type || this.typeOf(obj) ]; + type = typeof parser; + var inStack = inArray(obj, stack); + if (inStack != -1) { + return 'recursion('+(inStack - stack.length)+')'; + } + //else + if (type == 'function') { + stack.push(obj); + var res = parser.call( this, obj, stack ); + stack.pop(); + return res; + } + // else + return (type == 'string') ? parser : this.parsers.error; + }, + typeOf:function( obj ) { + var type; + if ( obj === null ) { + type = "null"; + } else if (typeof obj === "undefined") { + type = "undefined"; + } else if (QUnit.is("RegExp", obj)) { + type = "regexp"; + } else if (QUnit.is("Date", obj)) { + type = "date"; + } else if (QUnit.is("Function", obj)) { + type = "function"; + } else if (typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined") { + type = "window"; + } else if (obj.nodeType === 9) { + type = "document"; + } else if (obj.nodeType) { + type = "node"; + } else if ( + // native arrays + toString.call( obj ) === "[object Array]" || + // NodeList objects + ( typeof obj.length === "number" && typeof obj.item !== "undefined" && ( obj.length ? obj.item(0) === obj[0] : ( obj.item( 0 ) === null && typeof obj[0] === "undefined" ) ) ) + ) { + type = "array"; + } else { + type = typeof obj; + } + return type; + }, + separator:function() { + return this.multiline ? this.HTML ? '
' : '\n' : this.HTML ? ' ' : ' '; + }, + indent:function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing + if ( !this.multiline ) + return ''; + var chr = this.indentChar; + if ( this.HTML ) + chr = chr.replace(/\t/g,' ').replace(/ /g,' '); + return Array( this._depth_ + (extra||0) ).join(chr); + }, + up:function( a ) { + this._depth_ += a || 1; + }, + down:function( a ) { + this._depth_ -= a || 1; + }, + setParser:function( name, parser ) { + this.parsers[name] = parser; + }, + // The next 3 are exposed so you can use them + quote:quote, + literal:literal, + join:join, + // + _depth_: 1, + // This is the list of parsers, to modify them, use jsDump.setParser + parsers:{ + window: '[Window]', + document: '[Document]', + error:'[ERROR]', //when no parser is found, shouldn't happen + unknown: '[Unknown]', + 'null':'null', + 'undefined':'undefined', + 'function':function( fn ) { + var ret = 'function', + name = 'name' in fn ? fn.name : (reName.exec(fn)||[])[1];//functions never have name in IE + if ( name ) + ret += ' ' + name; + ret += '('; + + ret = [ ret, QUnit.jsDump.parse( fn, 'functionArgs' ), '){'].join(''); + return join( ret, QUnit.jsDump.parse(fn,'functionCode'), '}' ); + }, + array: array, + nodelist: array, + arguments: array, + object:function( map, stack ) { + var ret = [ ]; + QUnit.jsDump.up(); + for ( var key in map ) { + var val = map[key]; + ret.push( QUnit.jsDump.parse(key,'key') + ': ' + QUnit.jsDump.parse(val, undefined, stack)); + } + QUnit.jsDump.down(); + return join( '{', ret, '}' ); + }, + node:function( node ) { + var open = QUnit.jsDump.HTML ? '<' : '<', + close = QUnit.jsDump.HTML ? '>' : '>'; + + var tag = node.nodeName.toLowerCase(), + ret = open + tag; + + for ( var a in QUnit.jsDump.DOMAttrs ) { + var val = node[QUnit.jsDump.DOMAttrs[a]]; + if ( val ) + ret += ' ' + a + '=' + QUnit.jsDump.parse( val, 'attribute' ); + } + return ret + close + open + '/' + tag + close; + }, + functionArgs:function( fn ) {//function calls it internally, it's the arguments part of the function + var l = fn.length; + if ( !l ) return ''; + + var args = Array(l); + while ( l-- ) + args[l] = String.fromCharCode(97+l);//97 is 'a' + return ' ' + args.join(', ') + ' '; + }, + key:quote, //object calls it internally, the key part of an item in a map + functionCode:'[code]', //function calls it internally, it's the content of the function + attribute:quote, //node calls it internally, it's an html attribute value + string:quote, + date:quote, + regexp:literal, //regex + number:literal, + 'boolean':literal + }, + DOMAttrs:{//attributes to dump from nodes, name=>realName + id:'id', + name:'name', + 'class':'className' + }, + HTML:false,//if true, entities are escaped ( <, >, \t, space and \n ) + indentChar:' ',//indentation unit + multiline:true //if true, items in a collection, are separated by a \n, else just a space. + }; + + return jsDump; +})(); + +// from Sizzle.js +function getText( elems ) { + var ret = "", elem; + + for ( var i = 0; elems[i]; i++ ) { + elem = elems[i]; + + // Get the text from text nodes and CDATA nodes + if ( elem.nodeType === 3 || elem.nodeType === 4 ) { + ret += elem.nodeValue; + + // Traverse everything else, except comment nodes + } else if ( elem.nodeType !== 8 ) { + ret += getText( elem.childNodes ); + } + } + + return ret; +}; + +//from jquery.js +function inArray( elem, array ) { + if ( array.indexOf ) { + return array.indexOf( elem ); + } + + for ( var i = 0, length = array.length; i < length; i++ ) { + if ( array[ i ] === elem ) { + return i; + } + } + + return -1; +} + +/* + * Javascript Diff Algorithm + * By John Resig (http://ejohn.org/) + * Modified by Chu Alan "sprite" + * + * Released under the MIT license. + * + * More Info: + * http://ejohn.org/projects/javascript-diff-algorithm/ + * + * Usage: QUnit.diff(expected, actual) + * + * QUnit.diff("the quick brown fox jumped over", "the quick fox jumps over") == "the quick brown fox jumped jumps over" + */ +QUnit.diff = (function() { + function diff(o, n) { + var ns = {}; + var os = {}; + + for (var i = 0; i < n.length; i++) { + if (ns[n[i]] == null) + ns[n[i]] = { + rows: [], + o: null + }; + ns[n[i]].rows.push(i); + } + + for (var i = 0; i < o.length; i++) { + if (os[o[i]] == null) + os[o[i]] = { + rows: [], + n: null + }; + os[o[i]].rows.push(i); + } + + for (var i in ns) { + if ( !hasOwn.call( ns, i ) ) { + continue; + } + if (ns[i].rows.length == 1 && typeof(os[i]) != "undefined" && os[i].rows.length == 1) { + n[ns[i].rows[0]] = { + text: n[ns[i].rows[0]], + row: os[i].rows[0] + }; + o[os[i].rows[0]] = { + text: o[os[i].rows[0]], + row: ns[i].rows[0] + }; + } + } + + for (var i = 0; i < n.length - 1; i++) { + if (n[i].text != null && n[i + 1].text == null && n[i].row + 1 < o.length && o[n[i].row + 1].text == null && + n[i + 1] == o[n[i].row + 1]) { + n[i + 1] = { + text: n[i + 1], + row: n[i].row + 1 + }; + o[n[i].row + 1] = { + text: o[n[i].row + 1], + row: i + 1 + }; + } + } + + for (var i = n.length - 1; i > 0; i--) { + if (n[i].text != null && n[i - 1].text == null && n[i].row > 0 && o[n[i].row - 1].text == null && + n[i - 1] == o[n[i].row - 1]) { + n[i - 1] = { + text: n[i - 1], + row: n[i].row - 1 + }; + o[n[i].row - 1] = { + text: o[n[i].row - 1], + row: i - 1 + }; + } + } + + return { + o: o, + n: n + }; + } + + return function(o, n) { + o = o.replace(/\s+$/, ''); + n = n.replace(/\s+$/, ''); + var out = diff(o == "" ? [] : o.split(/\s+/), n == "" ? [] : n.split(/\s+/)); + + var str = ""; + + var oSpace = o.match(/\s+/g); + if (oSpace == null) { + oSpace = [" "]; + } + else { + oSpace.push(" "); + } + var nSpace = n.match(/\s+/g); + if (nSpace == null) { + nSpace = [" "]; + } + else { + nSpace.push(" "); + } + + if (out.n.length == 0) { + for (var i = 0; i < out.o.length; i++) { + str += '' + out.o[i] + oSpace[i] + ""; + } + } + else { + if (out.n[0].text == null) { + for (n = 0; n < out.o.length && out.o[n].text == null; n++) { + str += '' + out.o[n] + oSpace[n] + ""; + } + } + + for (var i = 0; i < out.n.length; i++) { + if (out.n[i].text == null) { + str += '' + out.n[i] + nSpace[i] + ""; + } + else { + var pre = ""; + + for (n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++) { + pre += '' + out.o[n] + oSpace[n] + ""; + } + str += " " + out.n[i].text + nSpace[i] + pre; + } + } + } + + return str; + }; +})(); + +})(this); diff --git a/addons/web/static/lib/qweb/qweb2.js b/addons/web/static/lib/qweb/qweb2.js index a6a6da5a6d7..093b3651fa0 100644 --- a/addons/web/static/lib/qweb/qweb2.js +++ b/addons/web/static/lib/qweb/qweb2.js @@ -373,6 +373,12 @@ QWeb2.Engine = (function() { if (!this.jQuery) { return this.tools.exception("Can't extend template " + template + " without jQuery"); } + var template_dest = this.templates[template], + msie_trololo = false; + if (template_dest.xml !== undefined) { + template_dest = this.jQuery(template_dest.xml); + msie_trololo = true; + } for (var i = 0, ilen = extend_node.childNodes.length; i < ilen; i++) { var child = extend_node.childNodes[i]; if (child.nodeType === 1) { @@ -382,7 +388,7 @@ QWeb2.Engine = (function() { target, error_msg = "Error while extending template '" + template; if (jquery) { - target = this.jQuery(jquery, this.templates[template]); + target = this.jQuery(jquery, template_dest); } else if (xpath) { // NOTE: due to the XPath implementation, extending a template will only work once // when using XPath because XPathResult won't match objects with other constructor than 'Element' @@ -415,6 +421,9 @@ QWeb2.Engine = (function() { } } } + if (msie_trololo) { + this.templates[template] = template_dest[0]; + } } }); return Engine; diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index cad536c0f1f..ed9e9212da7 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -1,15 +1,24 @@ -/* TODO: separate openerp web client page css from openerp views css */ body.openerp { padding: 0; margin: 0; height: 100%; - min-width: 1000px; overflow-y: scroll; font-size: 80%; + font-family: Ubuntu, Helvetica, sans-serif; } body.openerp, .openerp textarea, .openerp input, .openerp select, .openerp option, .openerp button, .openerp .ui-widget { font-family: Ubuntu, Helvetica, sans-serif; + font-size:85%; +} + +.openerp .view-manager-main-content { + width: 100%; + padding: 0 8px 8px 8px; +} + +.openerp .oe_form_frame_cell .view-manager-main-content { + padding: 0; } .oe_box { @@ -29,6 +38,17 @@ body.openerp, .openerp textarea, .openerp input, .openerp select, .openerp optio .openerp .oe-listview .oe-number { text-align: right !important; } +.oe-listview-header-columns { + background: #444; /* Old browsers */ + background: -moz-linear-gradient(top, #ffffff 0%, #d1d1d1 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#d1d1d1)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #ffffff 0%,#d1d1d1 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #ffffff 0%,#d1d1d1 100%); /* Opera11.10+ */ + background: -ms-linear-gradient(top, #ffffff 0%,#d1d1d1 100%); /* IE10+ */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#FFFFFF', endColorstr='#d1d1d1',GradientType=0 ); /* IE6-9 */ + background: linear-gradient(top, #ffffff 0%,#d1d1d1 100%); /* W3C */ +} + .openerp .oe_hide { display: none !important; } @@ -72,12 +92,6 @@ body.openerp, .openerp textarea, .openerp input, .openerp select, .openerp optio .openerp .login { display: none; } -.openerp .login form { - float: left; - width: 420px; - margin-left: 40px; - margin-bottom: 60px; -} .openerp .login fieldset { padding-bottom: 5px; min-width: 100px; @@ -117,19 +131,27 @@ body.openerp, .openerp textarea, .openerp input, .openerp select, .openerp optio } .openerp .login .login_error_message { display: none; - background-color: #9A0404; - border-radius: 3px; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - color: white; + background-color: #b41616; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.8); + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.8); + -box-shadow: 0 1px 4px rgba(0, 0, 0, 0.8); + filter: alpha(opacity=95); + -khtml-opacity: 0.95; + -moz-opacity: 0.95; + color: #eee; font-size: 16px; - font-weight: bold; - padding: 5px; - margin-top: 5px; + padding: 8px 12px; + margin-top: 15px; + text-align: center; +} +.openerp .login .login_invalid { text-align: center; } .openerp .login .login_invalid .login_error_message { - display: block; + display: inline-block; } .openerp.login-mode .login-container { @@ -141,6 +163,8 @@ body.openerp, .openerp textarea, .openerp input, .openerp select, .openerp optio .openerp.login-mode .menu, .openerp.login-mode .secondary_menu, .openerp.login-mode .oe-application, +.openerp.login-mode .oe_footer, +.openerp.login-mode .header, .openerp.login-mode .db_options_row { display: none; } @@ -261,7 +285,7 @@ label.error { filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#BD5E54', endColorstr='#90322A',GradientType=0 ); /* IE6-9 */ background: linear-gradient(top, #bd5e54 0%,#90322a 60%); /* W3C */ - border: 1px solid #6E2A24; + border: 1px solid #5E1A14; border-radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; @@ -272,7 +296,7 @@ label.error { text-transform: uppercase; line-height: 20px; font-weight: bold; - font-size: 85%; + font-size: 75%; white-space: nowrap; } @@ -331,6 +355,7 @@ label.error { height: 100%; display: block; position: relative; + font-size:85%; } .openerp .secondary_menu.oe_folded { width: 20px; @@ -341,7 +366,7 @@ label.error { position: absolute; z-index: 100; border: 4px solid #585858; - border: 4px solid rgba(88, 88, 88, .5); + border-color: rgba(88, 88, 88, .5); border-radius: 4px; min-width: 200px; } @@ -371,6 +396,10 @@ label.error { white-space: nowrap; color: white; text-shadow: 0 1px 0 #333; + +} +.openerp a.oe_secondary_submenu_item { + padding: 0 5px 2px 10px; } .openerp a.oe_secondary_submenu_item:hover, .openerp a.oe_secondary_submenu_item.leaf.active { @@ -383,7 +412,7 @@ label.error { background: -ms-linear-gradient(top, #ffffff 0%,#d8d8d8 11%,#afafaf 86%,#333333 91%,#5a5858 96%); /* IE10+ */ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#FFFFFF', endColorstr='#5A5858',GradientType=0 ); /* IE6-9 */ background: linear-gradient(top, #ffffff 0%,#d8d8d8 11%,#afafaf 86%,#333333 91%,#5a5858 96%); /* W3C */ - padding: 0 5px 2px 5px; + padding: 0 5px 2px 10px; line-height: 20px; color: #3f3d3d; text-decoration: none; @@ -431,6 +460,8 @@ label.error { margin: 0; padding: 4px 10px; text-shadow: 0 1px 0 #111111; + font-weight:normal; + line-height:14px; } .openerp .header_title small { color: #ccc; @@ -464,15 +495,11 @@ label.error { filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#929292', endColorstr='#4D4D4D',GradientType=0 ); } .openerp .header_corner ul.block { - /*float: left;*/ list-style: none; height: 34px; margin: 0; padding: 0 0 0 2px; - /*background: url(../images/top-sep-a.png) no-repeat;*/ line-height: 33px; - /*font-size: 1em;*/ - /*text-transform: uppercase;*/ } .openerp .header_corner ul.block li { float: left; @@ -498,6 +525,10 @@ label.error { font-weight: bold; } +.openerp .logout { + font-size:80%; +} + /* Footer */ .openerp div.oe_footer { background: none repeat scroll 0 0 #CCCCCC; @@ -522,31 +553,47 @@ label.error { color: #666666; } + /* Main Application */ -.openerp .oe-main-content, -.openerp .oe-application { +.openerp .oe-main-content { padding: 0; height: 100%; } .openerp h2.oe_view_title { - font-size: 175%; + font-size: 110%; font-weight: normal; margin: 2px 0; color: #252424; text-shadow: white 0 1px 0; } +.openerp div[id^="notebook"] .oe_view_title { + font-size:85%; + padding-bottom:4px; +} /* View Manager */ .openerp .oe_vm_switch { float: right; } +.openerp .oe-view-manager-header .oe_view_title { + font-size:150%; + padding:2px 0 0 0; +} /* SearchView */ +.openerp .oe_searchview_field > div { + position: relative; + white-space: nowrap; +} +.openerp .oe_searchview_field .oe_input_icon { + top: auto; + bottom: 3px; +} + .openerp .filter_label, .openerp .filter_icon { - border: 1px solid #666; - border-left-width: 0; background: #F0F0F0; + border: 1px solid #999; background: -moz-linear-gradient(top, #F0F0F0 0%, #C0C0C0 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F0F0F0), color-stop(100%,#C0C0C0)); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#F0F0F0', endColorstr='#C0C0C0',GradientType=0 ); @@ -558,13 +605,17 @@ label.error { filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#F0F0F0', endColorstr='#A1A7CE',GradientType=0 ); } .openerp .filter_label:active, .openerp .filter_icon:active { - background: #AAAAAA; + background: #aaa; background: -moz-linear-gradient(top, #999999 0%, #EEEEEE 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#999999), color-stop(100%,#EEEEEE)); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#999999', endColorstr='#EEEEEE',GradientType=0 ); } .openerp .filter_label.enabled, .openerp .filter_icon.enabled { - background: #AAAAAA; + background: #aaa; + -moz-box-shadow: none; + -webkit-box-shadow: none; + -o-box-shadow: none; + box-shadow: none; } .openerp .filter_icon { height: 22px; @@ -587,14 +638,21 @@ label.error { padding-right: 0.4em; white-space: nowrap; } + +.openerp .filter_label_group button { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + border-right: none; +} .openerp .filter_label_group button:first-child { - border-left: 1px solid #666; -webkit-border-top-left-radius: 7px; -webkit-border-bottom-left-radius: 7px; -moz-border-radius-topleft: 7px; -moz-border-radius-bottomleft: 7px; border-top-left-radius: 7px; border-bottom-left-radius: 7px; + border-right: none; } .openerp .filter_label_group button:last-child { -webkit-border-top-right-radius: 7px; @@ -603,6 +661,20 @@ label.error { -moz-border-radius-bottomright: 7px; border-top-right-radius: 7px; border-bottom-right-radius: 7px; + border-right: 1px solid #999; +} +.openerp .filter_label_group button.filter_icon img { + padding: 1px 8px 0 8px; +} +.openerp .filter_label_group button.filter_icon:first-child { + border-left: solid 1px #999; + margin-left: -7px; + -webkit-border-top-left-radius: 0; + -webkit-border-bottom-left-radius: 0; + -moz-border-radius-topleft: 0; + -moz-border-radius-bottomleft: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0; } .openerp .searchview_group_string { @@ -610,7 +682,6 @@ label.error { color: #7D7979; font-weight: bold; padding: 2px 0 2px 10px; - margin-top: 4px; text-decoration: none; } .openerp .searchview_group_string:hover { @@ -627,9 +698,18 @@ label.error { } .openerp .searchview_group.expanded .searchview_group_content { display: block; + padding-bottom:3px; } -.openerp .searchview_group_content { - padding-left: 10px; + +.openerp .searchview_group_content .oe_label, .openerp .searchview_group_content .oe_label_help { + font-weight: bold; + color: #4c4c4c; +} + +.openerp .oe-searchview-render-line .oe_label, .openerp .oe-searchview-render-line .oe_label_help { + font-weight: bold; + font-size: 80%; + white-space: nowrap; } .openerp .searchview_extended_group { @@ -655,11 +735,14 @@ label.error { } .openerp .oe_search-view-buttons { - padding: 10px 0 10px 0; + padding: 2px 0 10px 0; + vertical-align:middle; } -.openerp .oe_search-view-custom-filter-btn span { - background: url(/web/static/src/img/icons/gtk-add.png) repeat-y; - padding-left: 18px; +.openerp .oe_search-view-filters-management { + float: right; +} +.openerp .oe_search-view-filters-management, .openerp .oe_search-view-custom-filter-btn { + float:right; } .openerp .searchview_extended_add_proposition span { @@ -684,7 +767,7 @@ label.error { padding-left: 18px; } /* List */ -.openerp .oe-listview table { +.openerp table.oe-listview-content { clear: right; width: 100%; border-spacing: 0; @@ -709,26 +792,33 @@ label.error { background: none; } -.openerp .oe-listview td, +.openerp .oe-listview > table > tbody > tr > td, .openerp .oe-listview th { vertical-align: middle; text-align: left; padding: 1px 2px; } -.openerp .oe-listview th.oe-record-selector, -.openerp .oe-listview td.oe-button, -.openerp .oe-listview td.oe-record-delete { - padding: 0 1px; + +.openerp .oe-record-delete button, +.openerp button.oe-edit-row-save { + border: none; + height: 12px; + width: 12px; + background: url("/web/static/src/img/iconset-b-remove.png") no-repeat scroll center center transparent; + cursor: pointer; +} +.openerp button.oe-edit-row-save { + background-image: url('/web/static/src/img/icons/save-document.png'); } /* Could use :not selectors if they were supported by MSIE8... */ -.openerp .oe-listview tbody td { - border-left: 1px solid #dadada; +.openerp .oe-listview > table > tbody > tr > td { + border-left: 1px solid #dadada; /*currently commenting to test with no vertical lines in list view*/ } .openerp .oe-listview tbody td:first-child, .openerp .oe-listview tbody td.oe-button, -.openerp .oe-listview tbody td.oe-button+td, -.openerp .oe-listview tbody th.oe-record-selector+td, +.openerp .oe-listview tbody td.oe-button, +.openerp .oe-listview tbody th.oe-record-selector, .openerp .oe-listview tbody td.oe-record-delete { border-left: none; } @@ -738,25 +828,58 @@ label.error { } .openerp .oe-listview th.oe-sortable { cursor: pointer; + font-size: 75%; + text-transform: uppercase; + padding: 0; + margin: 0; + padding-left: 3px; + color: #333; } .openerp .oe-listview th.oe-sortable .ui-icon { - height: 1em; + height: 60%; + margin: -6px 0 0; display: inline; display: inline-block; + vertical-align: middle; +} + +.openerp .oe-listview > table > tbody > tr > td { + border-bottom: 1px solid #E3E3E3; +} + + +.openerp .oe-listview td.oe-actions { + border-bottom:none; +} + +.openerp .oe-listview .oe-record-selector, .openerp .oe-listview .oe-record-edit-link { + border-bottom: 1px solid #E3E3E3; +} +.openerp .oe-listview .oe-record-edit-link { + cursor: pointer; } .openerp .oe-listview .oe-field-cell { cursor: pointer; + margin-top: 0; + margin-bottom: 0; + padding-top: 3px; + padding-bottom: 3px; + font-size: 80%; } .openerp .oe-listview .oe-field-cell progress { width: 100%; } -.openerp .oe-listview .oe-field-cell button { +.openerp .oe-listview .oe-field-cell.oe-button button, +.openerp .oe-listview .oe_form_button button { margin: 0; padding: 0; border: none; background: none; width: 16px; + box-shadow: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; } .openerp .oe-listview .oe-field-cell button:active { opacity: 0.5; @@ -778,8 +901,25 @@ label.error { } .openerp .oe-list-pager .oe-pager-state { cursor: pointer; + font-size: 90%; + color: #555; } +.openerp .oe_button.oe_button_pager, +.openerp .oe-list-pager > span, +.openerp .oe_form_pager > span { + line-height: 17px; + height: 17px; + cursor: pointer; + color: gray; + font-weight: bold; + vertical-align: middle; +} +.openerp .oe_button.oe_button_pager, +.openerp .oe_button.oe_button_pager:disabled { + padding: 0 3px 0 3px; + margin: 0; +} .openerp .oe-listview .oe-group-name { padding-right: 1em; } @@ -794,6 +934,8 @@ label.error { .openerp .oe-listview .oe-list-footer { text-align: center; white-space: nowrap; + color: #444; + font-size: 85%; } .openerp .oe-listview .oe-list-footer span { margin: 0 1em; @@ -846,28 +988,66 @@ label.error { } .openerp .oe_form_notebook .ui-tabs-panel { padding: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; } .openerp .oe_form_notebook ul.ui-tabs-nav { padding-left: 0; background: transparent; - border-width: 0 0 1px 0; + border-width: 0; border-radius: 0; -moz-border-radius: 0; -webkit-border-radius: 0; - line-height: 0.5em; + line-height: 0.8em; + font-size: 95%; + color: #555; } .openerp .oe_form_notebook ul.ui-tabs-nav li { font-weight: bold; } .openerp .oe_form_notebook .ui-tabs-panel { background: #f9f9f9; - border-width: 0 1px 1px 1px; + border-width: 1px; } .openerp .oe_form_notebook .ui-tabs-selected { background: #f9f9f9; } +/* Unedit Form */ +.openerp .field_char, +.openerp .field_date, +.openerp .field_float, +.openerp .field_selection, +.openerp a.oe_form_uri { + vertical-align: middle; + padding-top: 3px; + font-size: 90%; + color: #222; +} +.openerp a.oe_form_uri { + color: #9A0404; + line-height: 12px; +} + + /* Form */ + +.openerp .oe_form_frame_cell input[type="checkbox"] { + margin-top: 3px; + vertical-align: middle; +} +.openerp .oe_form_frame_cell .input[type="text"] { + padding-bottom: 1px; +} + +.openerp table.oe_frame td { + color: #4c4c4c; +} +.openerp td.oe_form_frame_cell { + padding: 2px; + position: relative; +} .openerp .oe_frame.oe_forms { clear: both; } @@ -888,6 +1068,10 @@ label.error { .openerp td.oe_form_frame_cell { padding: 2px; position: relative; + white-space: nowrap; +} +.openerp td.oe_form_field_boolean { + padding-top: 4px; } .openerp td.oe_form_frame_cell.oe_form_group { padding: 0; @@ -900,14 +1084,31 @@ label.error { } .openerp .oe_form_pager, .openerp .oe_list_pager { float: right; + font-size: 80%; + color: gray; + font-weight: bold; +} + +.openerp .oe_form_pager { + margin-right: 3px; +} + + +.openerp label.oe_label_help, .openerp label.oe_label, .openerp .oe_forms input[type="text"], .openerp .oe_forms input[type="password"], .openerp .oe_forms select, .openerp .oe_forms .oe_button, .openerp .oe_forms textarea { + font-size: 85%; } .openerp label.oe_label_help, .openerp label.oe_label { display: block; + color: #4c4c4c; + font-weight: normal; } .openerp label.oe_label_help { cursor: help; } +.openerp .oe_form_frame_cell .oe_label, .openerp .oe_form_frame_cell .oe_label_help { + font-weight: normal; +} .openerp #tiptip_content { font-size: 12px; } @@ -916,6 +1117,9 @@ label.error { font-weight: bold; font-size: 13px; } +.openerp .oe_tooltip_help { + white-space: pre-wrap; +} .openerp .oe_tooltip_technical { padding: 0 0 4px 0; margin: 5px 0 0 15px; @@ -926,8 +1130,13 @@ label.error { } .openerp .oe_forms label.oe_label, .openerp .oe_forms label.oe_label_help { - margin: 3px 0 0 10px; + margin: 3px 0 0 3px; + white-space: nowrap; } +.openerp .oe_forms .searchview_group_content label.oe_label, .openerp .searchview_group_content .oe_forms label.oe_label_help { /* making a distinction between labels in search view and other labels */ + margin: 3px 0 0 3px; +} + .openerp label.oe_label_help span { font-size: 80%; color: darkgreen; @@ -947,15 +1156,66 @@ label.error { } .openerp .oe_forms .oe_form_paragraph { margin: 3px 0 0 0; + white-space: normal; } +.openerp .oe_form_field_one2many .oe-actions h3.oe_view_title, +.openerp .oe_form_field_one2many_list .oe-actions h3.oe_view_title{ + display: inline; + margin: 0 0.5em 0 0; +} + +/* Uneditable Form View */ +.openerp .oe_form_readonly { + +} +.openerp .oe_form_readonly .oe_form_frame_cell .field_text, +.openerp .oe_form_readonly .field_char, +.openerp .oe_form_readonly .field_int, +.openerp .oe_form_readonly .field_float, +.openerp .oe_form_readonly .field_email, +.openerp .oe_form_readonly .field_date, +.openerp .oe_form_readonly .field_selection, +.openerp .oe_forms_readonly .oe_form_field_many2one { + padding: 3px 2px 2px 2px; + background-color: white; + height: 17px; +} +.openerp .oe_form_readonly .oe_form_frame_cell .field_text { + height: auto; +} +.openerp .oe_form_readonly .field_datetime { + padding: 1px 2px 2px 2px; + background-color: white; + height:19px; +} +.openerp .oe_form_readonly .oe_form_field_many2one div { + background-color:white; + height:18px; + margin-bottom:1px; + padding: 0px 2px 5px 2px; +} + +.openerp .oe_form_readonly .oe_form_field_email div { + background-color: white; + padding: 1px 2px 3px 2px; +} + + +.openerp .oe_form_readonly .oe_form_field_text div.field_text { + white-space: pre-wrap; +} +.openerp .oe_form_readonly .oe_form_frame_cell .field_text { + min-height:100px; +} /* Inputs */ .openerp .oe_forms input[type="text"], .openerp .oe_forms input[type="password"], .openerp .oe_forms select, .openerp .oe_forms textarea { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; - padding: 0 2px 0 2px; + padding: 0 2px; + margin: 0 2px; border: 1px solid #999; -moz-border-radius: 3px; -webkit-border-radius: 3px; @@ -964,21 +1224,67 @@ label.error { min-width: 90px; color: #1f1f1f; } + +.openerp .oe_forms input.field_many2one, +.openerp .oe_forms input.field_binary, +.openerp .oe_forms input.field_binary, +.openerp .oe_forms input.field_email, +.openerp .oe_forms input.field_url { + border-right: none; + -webkit-border-top-right-radius: 0px; + -webkit-border-bottom-right-radius: 0px; + -moz-border-radius-topright: 0px; + -moz-border-radius-bottomright: 0px; + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; +} +.openerp .oe_button.oe_field_button { + -webkit-border-top-left-radius: 0px; + -webkit-border-bottom-left-radius: 0px; + -moz-border-radius-topleft: 0px; + -moz-border-radius-bottomleft: 0px; + border-top-left-radius: 0px; + border-bottom-left-radius: 0px; + margin-right:-1px; + height: 22px; +} + +.openerp .oe_form_field_email button img, +.openerp .oe_form_field_url button img { + vertical-align: top; +} +/* vertically recentering filter management select tag */ +.openerp select.oe_search-view-filters-management { + margin-top:2px; +} + +.openerp .oe_forms select{ + padding-top: 2px; +} +.openerp .oe_forms input[disabled], +.openerp .oe_forms select[disabled], +.openerp .oe_forms textarea[disabled]{ + background: #E0E0E0; +} .openerp .oe_forms textarea { resize:vertical; } .openerp .oe_forms input[type="text"], .openerp .oe_forms input[type="password"], .openerp .oe_forms select, .openerp .oe_forms .oe_button { height: 22px; } + .openerp .oe_forms input.field_datetime { min-width: 11em; } -.openerp .oe_forms .oe_button { +.openerp .oe_forms .oe_form_button .oe_button { color: #4c4c4c; white-space: nowrap; min-width: 100%; width: 100%; } +.openerp .oe_forms .button { + height: 22px; +} @-moz-document url-prefix() { /* Strange firefox behaviour on width: 100% + white-space: nowrap */ .openerp .oe_forms .oe_button { @@ -990,23 +1296,17 @@ label.error { vertical-align: top; } .openerp .oe_input_icon { - position: absolute; cursor: pointer; - right: 5px; - top: 3px; - z-index: 2; + margin: 3px 0 0 -21px; + vertical-align: top; } .openerp .oe_datepicker_container { - position: absolute; - top: 0; - right: 0; display: none; } .openerp .oe_datepicker_root { - position: relative; display: inline-block; } -.openerp .oe_forms.oe_frame .oe_datepicker_root { +.openerp .oe_form_frame_cell .oe_datepicker_root { width: 100%; } .openerp .oe_input_icon_disabled { @@ -1017,13 +1317,6 @@ label.error { right: 5px; top: 3px; } -.openerp img.oe_field_translate { - margin-left: -21px; - vertical-align: top; - cursor: pointer; - position: relative; - top: 4px; -} .openerp .oe_trad_field.touched { border: 1px solid green !important; } @@ -1055,10 +1348,14 @@ label.error { border: 0 solid #666; } .openerp .separator.horizontal { - font-weight: bold; + font-weight: bold; border-bottom-width: 1px; margin: 3px 4px 3px 1px; - height: 15px; + height: 17px; + font-size: 95%; +} +.openerp .separator.horizontal:empty { + height: 5px; } .openerp .oe_form_frame_cell.oe_form_separator_vertical { border-left: 1px solid #666; @@ -1095,6 +1392,17 @@ label.error { background: white; min-width: 90px; } +.openerp tbody.ui-widget-content { + margin-bottom: 10px; + border-spacing: 4px; +} +.openerp .ui-widget-header { + background: white none; +} +/* progress bars */ +.openerp .ui-progressbar .ui-widget-header { + background: #cccccc url(/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; +} /* Sidebar */ .openerp .view-manager-main-table { @@ -1108,16 +1416,20 @@ label.error { vertical-align: top; } -.openerp .view-manager-main-content { - width: 100%; -} .openerp .oe-view-manager-header { overflow: auto; + background: url("/web/static/src/img/sep-a.gif") 0 100% repeat-x; + margin:6px 0 6px 2px; } +.openerp .oe_form_frame_cell .oe-view-manager-header { /* Trick: remove the background when element is in a formular */ + background: none; +} + .openerp .oe-view-manager-header h2 { float: left; } -.openerp .oe-view-manager-header blockquote { + +.openerp .oe_view_manager_menu_tips blockquote { display: none; font-size: 85%; margin: 0; @@ -1126,14 +1438,17 @@ label.error { padding: 1px 10px; color: #4C4C4C; } -.openerp .oe-view-manager-header blockquote p { +.openerp .oe_view_manager_menu_tips blockquote p { margin: 0; padding: 6px 1px 4px; } -.openerp .oe-view-manager-header blockquote div { + +.openerp .oe_view_manager_menu_tips blockquote div { text-align: right; + margin-right:10px; } -.openerp .oe-view-manager-header blockquote div button { + +.openerp .oe_view_manager_menu_tips blockquote div button { border: none; background: none; padding: 0 4px; @@ -1275,6 +1590,9 @@ label.error { border-right-width: 0; border-left-width: 0; } +.openerp .view-manager-main-sidebar h2 { + border-top-width: 0; +} .openerp .view-manager-main-sidebar ul { list-style-type: none; @@ -1291,6 +1609,7 @@ label.error { .openerp .toggle-sidebar { cursor: pointer; border: 1px solid #D2CFCF; + border-top-width: 0; display: block; background: url(/web/static/src/img/toggle-a-bg.png); width: 21px; @@ -1310,17 +1629,17 @@ label.error { background: 1px 3px url(/web/static/src/img/icons/gtk-print.png) no-repeat; } -.openerp .oe-running-kitten { - display: none; -} - -.openerp.kitten-mode-activated .oe-running-kitten { - display: inherit; +.openerp .oe_sidebar_print ul { + padding-left:8px; } .openerp.kitten-mode-activated .main_table { background: url(http://placekitten.com/g/1500/800) repeat; } +.openerp.kitten-mode-activated.clark-gable .main_table { + background: url(http://amigrave.com/ClarkGable.jpg); + background-size: 100%; +} .openerp.kitten-mode-activated .header { background: url(http://placekitten.com/g/211/65) repeat; @@ -1367,27 +1686,24 @@ label.error { border-color: #828282; } -.openerp .oe-m2o { - padding-right: 20px; - white-space: nowrap; -} -.openerp .oe_forms .oe-m2o input[type="text"] { - padding-right: 20px; -} .openerp .oe-m2o-drop-down-button { - margin-left: -23px; + margin-left: -24px; } -.openerp .oe-m2o-drop-down-button img, -.openerp .oe-m2o-cm-button img { +.openerp .oe-m2o-drop-down-button img { margin-bottom: -4px; cursor: pointer; } -.openerp .oe-m2o-cm-button img { - margin-left: 4px; +.openerp .oe-m2o input { + border-right: none; + margin-right: 0px !important; + padding-bottom: 2px !important; } .openerp .oe-m2o-disabled-cm { color: grey; } +.openerp ul[role="listbox"] li a { + font-size:80%; +} .parent_top { vertical-align: text-top; } @@ -1433,20 +1749,19 @@ label.error { /* Shortcuts*/ .oe-shortcut-toggle { height: 20px; + margin-top: 3px; padding: 0; width: 24px; cursor: pointer; display: block; - background: url(/web/static/src/img/add-shortcut.png) no-repeat bottom; + background: url(/web/static/src/img/add-shortcut.png) no-repeat center center; float: left; } .oe-shortcut-remove{ - background: url(/web/static/src/img/remove-shortcut.png) no-repeat bottom; + background: url(/web/static/src/img/remove-shortcut.png) no-repeat center center; } -/* ================ */ .oe-shortcuts { position: absolute; - margin: 0; padding: 6px 15px; top: 37px; @@ -1471,9 +1786,14 @@ label.error { color: #fff; text-align: center; border-left: 1px solid #909090; - padding: 4px; - font-size: 90%; + padding: 0 4px; + font-size: 80%; font-weight: normal; + vertical-align: top; +} + +.oe-shortcuts li:hover { + background-color: #666; } .oe-shortcuts li:first-child { border-left: none; @@ -1492,9 +1812,7 @@ ul.oe-arrow-list li { ul.oe-arrow-list li span { vertical-align: top; display: inline-block; - border-width:1em; - border-style:solid; - border-color: #DEDEDE; + border: 1em solid #DEDEDE; line-height:0em; } ul.oe-arrow-list .oe-arrow-list-before { @@ -1516,6 +1834,22 @@ ul.oe-arrow-list li.oe-arrow-list-selected .oe-arrow-list-after { border-color: rgba(0,0,0,0); border-left-color: #B5B9FF; } +.openerp ul.oe-arrow-list li:first-child span:first-child{ + -webkit-border-top-left-radius: 3px; + -moz-border-radius-topleft: 3px; + border-top-left-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + -moz-border-radius-bottomleft: 3px; + border-bottom-left-radius: 3px; +} +.openerp ul.oe-arrow-list li:last-child span:last-child{ + -webkit-border-top-right-radius: 3px; + -moz-border-radius-topright: 3px; + border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + -moz-border-radius-bottomright: 3px; + border-bottom-right-radius: 3px; +} .openerp .oe_view_editor { border-collapse: collapse; padding: 0; @@ -1528,9 +1862,10 @@ ul.oe-arrow-list li.oe-arrow-list-selected .oe-arrow-list-after { padding: 0; border-bottom: 1px solid #CFCCCC; } -.openerp .oe_view_editor_row:hover{ +.openerp .oe_view_editor_row:hover { background-color: #F3F3F3; } + .openerp .oe_view_editor_tree_grid{ text-align: left; white-space: nowrap; @@ -1544,3 +1879,352 @@ ul.oe-arrow-list li.oe-arrow-list-selected .oe-arrow-list-after { display: block; } +.openerp .oe_applications_tiles { + color: #4C4C4C; + text-shadow: #EEE 0 1px 0; + margin: 0 20px; +} + +.openerp .oe_vm_switch { + margin:2px 0 0 0; +} + +.openerp .oe_vm_switch_form, +.openerp .oe_vm_switch_page, +.openerp .oe_vm_switch_list, +.openerp .oe_vm_switch_graph, +.openerp .oe_vm_switch_gantt, +.openerp .oe_vm_switch_calendar, +.openerp .oe_vm_switch_kanban, +.openerp .oe_vm_switch_diagram { + background: url("/web/static/src/img/views-icons-a.png") repeat-x scroll left top transparent; + overflow: hidden; + width: 22px; + height: 21px; + border: none; + background-position: 0px 0px; +} + +.openerp .oe_vm_switch_form span, +.openerp .oe_vm_switch_page span, +.openerp .oe_vm_switch_list span, +.openerp .oe_vm_switch_graph span, +.openerp .oe_vm_switch_gantt span, +.openerp .oe_vm_switch_calendar span, +.openerp .oe_vm_switch_kanban span, +.openerp .oe_vm_switch_diagram span { + display: none; +} + +.openerp .oe_vm_switch_list { + background-position: 0px 0px; +} +.openerp .oe_vm_switch_list:active, +.openerp .oe_vm_switch_list:hover, +.openerp .oe_vm_switch_list:focus, +.openerp .oe_vm_switch_list[disabled="disabled"] { + background-position: 0px -21px; +} + +.openerp .oe_vm_switch_form { + background-position: -22px 0px; +} +.openerp .oe_vm_switch_form:active, +.openerp .oe_vm_switch_form:hover, +.openerp .oe_vm_switch_form:focus, +.openerp .oe_vm_switch_form[disabled="disabled"] { + background-position: -22px -21px; +} + +.openerp .oe_vm_switch_graph { + background-position: -44px 0px; +} +.openerp .oe_vm_switch_graph:active, +.openerp .oe_vm_switch_graph:hover, +.openerp .oe_vm_switch_graph:focus, +.openerp .oe_vm_switch_graph[disabled="disabled"] { + background-position: -44px -21px; +} + +.openerp .oe_vm_switch_gantt { + background-position: -66px 0px; +} +.openerp .oe_vm_switch_gantt:active, +.openerp .oe_vm_switch_gantt:hover, +.openerp .oe_vm_switch_gantt:focus, +.openerp .oe_vm_switch_gantt[disabled="disabled"] { + background-position: -66px -21px; +} + +.openerp .oe_vm_switch_calendar { + background-position: -88px 0px; +} +.openerp .oe_vm_switch_calendar:active, +.openerp .oe_vm_switch_calendar:hover, +.openerp .oe_vm_switch_calendar:focus, +.openerp .oe_vm_switch_calendar[disabled="disabled"] { + background-position: -88px -21px; +} +.openerp .oe_vm_switch_kanban { + background-position: -110px 0px; +} +.openerp .oe_vm_switch_kanban:active, +.openerp .oe_vm_switch_kanban:hover, +.openerp .oe_vm_switch_kanban:focus, +.openerp .oe_vm_switch_kanban[disabled="disabled"] { + background-position: -110px -21px; +} + +.openerp .oe_vm_switch_diagram { + background-position: 0px 0px; +} +.openerp .oe_vm_switch_diagram:active, +.openerp .oe_vm_switch_diagram:hover, +.openerp .oe_vm_switch_diagram:focus, +.openerp .oe_vm_switch_diagram[disabled="disabled"] { + background-position: 0px -21px; +} + +/* Buttons */ +.openerp .oe_button:link, +.openerp .oe_button:visited, +.openerp .oe_button { + display: inline-block; + border: 1px solid #ababab; + color: #404040; + font-size: 12px; + padding: 3px 10px; + text-align: center; + -o-background-size: 100% 100%; + -moz-background-size: 100% 100%; + -webkit-background-size: auto auto !important; + background-size: 100% 100%; + background: #d8d8d8 none; + background: none, -webkit-gradient(linear, left top, left bottom, from(#efefef), to(#d8d8d8)); + background: none, -webkit-linear-gradient(#efefef, #d8d8d8); + background: none, -moz-linear-gradient(#efefef, #d8d8d8); + background: none, -o-linear-gradient(top, #efefef, #d8d8d8); + background: none, -khtml-gradient(linear, left top, left bottom, from(#efefef), to(#d8d8d8)); + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + -o-border-radius: 3px; + -ms-border-radius: 3px; + border-radius: 3px; + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + -o-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5); + -webkit-font-smoothing: antialiased; + outline: none; +} + +.openerp .oe_button:hover { + -o-background-size: 100% 100%; + -moz-background-size: 100% 100%; + -webkit-background-size: auto auto !important; + background-size: 100% 100%; + background: #e3e3e3 none; + background: none, -webkit-gradient(linear, left top, left bottom, from(#f6f6f6), to(#e3e3e3)); + background: none, -webkit-linear-gradient(#f6f6f6, #e3e3e3); + background: none, -moz-linear-gradient(#f6f6f6, #e3e3e3); + background: none, -o-linear-gradient(top, #f6f6f6, #e3e3e3); + background: none, -khtml-gradient(linear, left top, left bottom, from(#f6f6f6), to(#e3e3e3)); + cursor: pointer; +} + +.openerp .oe_button:focus { + border: 1px solid #80bfff; + -o-background-size: 100% 100%; + -moz-background-size: 100% 100%; + -webkit-background-size: auto auto !important; + background-size: 100% 100%; + background: #e3e3e3, none; + background: none, -webkit-gradient(linear, left top, left bottom, from(#f6f6f6), to(#e3e3e3)); + background: none, -webkit-linear-gradient(#f6f6f6, #e3e3e3); + background: none, -moz-linear-gradient(#f6f6f6, #e3e3e3); + background: none, -o-linear-gradient(top, #f6f6f6, #e3e3e3); + background: none, -khtml-gradient(linear, left top, left bottom, from(#f6f6f6), to(#e3e3e3)); + -moz-box-shadow: 0 0 3px #80bfff, 0 1px 1px rgba(255, 255, 255, 0.8) inset; + -webkit-box-shadow: 0 0 3px #80bfff, 0 1px 1px rgba(255, 255, 255, 0.8) inset; + -o-box-shadow: 0 0 3px #80bfff, 0 1px 1px rgba(255, 255, 255, 0.8) inset; + box-shadow: 0 0 3px #80bfff, 0 1px 1px rgba(255, 255, 255, 0.8) inset; +} + +.openerp .oe_button:active, +.openerp .oe_button.active { + background: #e3e3e3; + background: -moz-linear-gradient(top, #e3e3e3, #f6f6f6) #1b468f; + background: -webkit-gradient(linear, left top, left bottom, from(#e3e3e3), to(#f6f6f6)) #1b468f; + background: linear-gradient(top, #e3e3e3, #f6f6f6) #1b468f; + -moz-box-shadow: none, 0 0 0 transparent; + -webkit-box-shadow: none, 0 0 0 transparent; + -o-box-shadow: none, 0 0 0 transparent; + box-shadow: none, 0 0 0 transparent; +} + +.openerp .oe_button.disabled, +.openerp .oe_button:disabled { + background: #efefef !important; + border: 1px solid #d1d1d1 !important; + font-size: 12px; + padding: 3px 10px; + -moz-box-shadow: none !important, 0 0 0 transparent; + -webkit-box-shadow: none !important, 0 0 0 transparent; + -o-box-shadow: none !important, 0 0 0 transparent; + box-shadow: none !important, 0 0 0 transparent; + color: #aaaaaa !important; + cursor: default; + text-shadow: 0 1px 1px white !important; +} + +/* Login page */ + +#oe_login { + padding: 0; + margin: 0; + font-family: "Lucida Grande", Helvetica, Verdana, Arial; + background: url("/web/static/src/img/pattern.png") repeat; + color: #eee; + font-size: 14px; + height: 100%; +} + +#oe_login ul, ol { + padding: 0; + margin: 0; +} + +#oe_login li { + list-style-type: none; + padding-bottom: 4px; +} + +#oe_login a { + color: #eee; + text-decoration: none; +} + +#oe_login button { + float: right; + display: inline-block; + cursor: pointer; + padding: 6px 16px; + font-size: 13px; + font-family: "Lucida Grande", Helvetica, Verdana, Arial; + border: 1px solid #222222; + color: white; + margin: 0; + background: #600606; + background: -moz-linear-gradient(#b92020, #600606); + background: -webkit-gradient(linear, left top, left bottom, from(#b92020), to(#600606)); + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(155, 155, 155, 0.4) inset; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(155, 155, 155, 0.4) inset; + -o-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(155, 155, 155, 0.4) inset; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(155, 155, 155, 0.4) inset; +} + +#oe_login input, #oe_login select { + width: 250px; + margin-bottom: 10px; + font-size: 14px; + padding: 5px 6px; + border: 1px solid #999999; + background: whitesmoke; + -moz-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3); + -box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3); + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +#oe_login .dbpane { + position: fixed; + top: 0; + right: 8px; + padding: 6px 12px 0px; + color: #eee; + border: solid 1px #333; + background: #101010; + filter: alpha(opacity=95); + -khtml-opacity: 0.95; + -moz-opacity: 0.95; + opacity: 0.95; + -moz-border-radius: 0 0 8px 8px; + -webkit-border-radius: 0 0 8px 8px; + border-radius: 0 0 8px 8px; +} + +#oe_login .bottom { + position: absolute; + top: 50%; + left: 0; + right: 0; + bottom: 0; + text-shadow: 0 1px 1px #999999; + background: #600606; + background: -moz-linear-gradient(#b41616, #600606); + background: -webkit-gradient(linear, left top, left bottom, from(#b41616), to(#600606)); +} + +#oe_login .pane { + position: absolute; + top: 50%; + left: 50%; + margin: -160px -166px; + border: solid 1px #333333; + background: #101010; + padding: 20px 32px; + text-align: left; + -moz-border-radius: 8px; + -webkit-border-radius: 8px; + border-radius: 8px; + -moz-box-shadow: 0 0 18px rgba(0, 0, 0, 0.9); + -webkit-box-shadow: 0 0 18px rgba(0, 0, 0, 0.9); + -box-shadow: 0 0 18px rgba(0, 0, 0, 0.9); + filter: alpha(opacity=95); + -khtml-opacity: 0.95; + -moz-opacity: 0.95; + opacity: 0.95; +} + +#oe_login .pane h2 { + margin-top: 0; + font-size: 18px; +} + +#oe_login #logo { + position: absolute; + top: -70px; + left: 0; + width: 100%; + margin: 0 auto; + text-align: center; +} + +#oe_login .footer { + position: absolute; + bottom: -40px; + left: 0; + width: 100%; + text-align: center; +} + +#oe_login .footer a { + font-size: 13px; + margin: 0 8px; +} + +#oe_login .footer a:hover { + text-decoration: underline; +} + +#oe_login .openerp { + font-weight: bold; + font-family: serif; + font-size: 16px; +} diff --git a/addons/web/static/src/css/data_import.css b/addons/web/static/src/css/data_import.css index e5d1c9a910c..a63a52802f0 100644 --- a/addons/web/static/src/css/data_import.css +++ b/addons/web/static/src/css/data_import.css @@ -27,7 +27,7 @@ .openerp .oe-import fieldset.oe-closed table { display: none; } -.openerp .separator.horizontal { +.openerp .oe-import .separator.horizontal { font-weight: bold; border-bottom-width: 1px; margin: 6px 4px 6px 1px; diff --git a/addons/web/static/src/img/icons/lead-stage-won.png b/addons/web/static/src/img/icons/kanban-apply.png similarity index 100% rename from addons/web/static/src/img/icons/lead-stage-won.png rename to addons/web/static/src/img/icons/kanban-apply.png diff --git a/addons/web/static/src/img/icons/lead-stage-pending.png b/addons/web/static/src/img/icons/kanban-pause.png similarity index 100% rename from addons/web/static/src/img/icons/lead-stage-pending.png rename to addons/web/static/src/img/icons/kanban-pause.png diff --git a/addons/web/static/src/img/icons/lead-stage-lost.png b/addons/web/static/src/img/icons/kanban-stop.png similarity index 100% rename from addons/web/static/src/img/icons/lead-stage-lost.png rename to addons/web/static/src/img/icons/kanban-stop.png diff --git a/addons/web/static/src/img/icons/save-document.png b/addons/web/static/src/img/icons/save-document.png new file mode 100644 index 00000000000..8933ca0bed9 Binary files /dev/null and b/addons/web/static/src/img/icons/save-document.png differ diff --git a/addons/web/static/src/img/iconset-a-help.gif b/addons/web/static/src/img/iconset-a-help.gif new file mode 100644 index 00000000000..5400acec57b Binary files /dev/null and b/addons/web/static/src/img/iconset-a-help.gif differ diff --git a/addons/web/static/src/img/iconset-a-help.png b/addons/web/static/src/img/iconset-a-help.png new file mode 100644 index 00000000000..4af5ac170d6 Binary files /dev/null and b/addons/web/static/src/img/iconset-a-help.png differ diff --git a/addons/web/static/src/img/iconset-b-remove.png b/addons/web/static/src/img/iconset-b-remove.png new file mode 100644 index 00000000000..497f03b4ceb Binary files /dev/null and b/addons/web/static/src/img/iconset-b-remove.png differ diff --git a/addons/web/static/src/img/logo2.png b/addons/web/static/src/img/logo2.png new file mode 100644 index 00000000000..aca5f4c60d8 Binary files /dev/null and b/addons/web/static/src/img/logo2.png differ diff --git a/addons/web/static/src/img/pager_first.png b/addons/web/static/src/img/pager_first.png new file mode 100644 index 00000000000..83074ed696f Binary files /dev/null and b/addons/web/static/src/img/pager_first.png differ diff --git a/addons/web/static/src/img/pager_last.png b/addons/web/static/src/img/pager_last.png new file mode 100644 index 00000000000..dedcede4b62 Binary files /dev/null and b/addons/web/static/src/img/pager_last.png differ diff --git a/addons/web/static/src/img/pager_next.png b/addons/web/static/src/img/pager_next.png new file mode 100644 index 00000000000..9b5e7090735 Binary files /dev/null and b/addons/web/static/src/img/pager_next.png differ diff --git a/addons/web/static/src/img/pager_previous.png b/addons/web/static/src/img/pager_previous.png new file mode 100644 index 00000000000..7134186008c Binary files /dev/null and b/addons/web/static/src/img/pager_previous.png differ diff --git a/addons/web/static/src/img/pattern.png b/addons/web/static/src/img/pattern.png new file mode 100644 index 00000000000..7e3a2b37834 Binary files /dev/null and b/addons/web/static/src/img/pattern.png differ diff --git a/addons/web/static/src/img/pencil.gif b/addons/web/static/src/img/pencil.gif new file mode 100644 index 00000000000..6e9aa5ef659 Binary files /dev/null and b/addons/web/static/src/img/pencil.gif differ diff --git a/addons/web/static/src/img/sep-a.gif b/addons/web/static/src/img/sep-a.gif new file mode 100644 index 00000000000..5a064f21e89 Binary files /dev/null and b/addons/web/static/src/img/sep-a.gif differ diff --git a/addons/web/static/src/img/views-icons-a.png b/addons/web/static/src/img/views-icons-a.png new file mode 100644 index 00000000000..0be5b655e66 Binary files /dev/null and b/addons/web/static/src/img/views-icons-a.png differ diff --git a/addons/web/static/src/js/boot.js b/addons/web/static/src/js/boot.js index 58dcd922ea9..c2aea24276b 100644 --- a/addons/web/static/src/js/boot.js +++ b/addons/web/static/src/js/boot.js @@ -59,7 +59,7 @@ openerp.web = function(instance) { openerp.web.formats(instance); openerp.web.chrome(instance); openerp.web.data(instance); - var files = ["views","search","list","form","list_editable","web_mobile","view_tree","data_export","data_import","view_editor"]; + var files = ["views","search","list","form", "page","list_editable","web_mobile","view_tree","data_export","data_import","view_editor"]; for(var i=0; i 1024) ? 0.5 : 0.75), min_width: 0, - max_width: '100%', + max_width: '95%', height: 'auto', min_height: 0, - max_height: '100%', + max_height: '95%', autoOpen: false, + position: [false, 50], + autoResize : 'auto', buttons: {}, - beforeClose: function () { self.on_close(); } + beforeClose: function () { self.on_close(); }, + resizeStop: this.on_resized }; for (var f in this) { if (f.substr(0, 10) == 'on_button_') { @@ -78,7 +81,7 @@ openerp.web.Dialog = openerp.web.OldWidget.extend(/** @lends openerp.web.Dialog# options.max_width = this.get_width(options.max_width || this.dialog_options.max_width); options.height = this.get_height(options.height || this.dialog_options.height); options.min_height = this.get_height(options.min_height || this.dialog_options.min_height); - options.max_height = this.get_height(options.max_height || this.dialog_options.max_width); + options.max_height = this.get_height(options.max_height || this.dialog_options.max_height); if (options.width !== 'auto') { if (options.width > options.max_width) options.width = options.max_width; @@ -109,7 +112,7 @@ openerp.web.Dialog = openerp.web.OldWidget.extend(/** @lends openerp.web.Dialog# } }, start: function () { - this.$dialog = $(this.$element).dialog(this.dialog_options); + this.$element.dialog(this.dialog_options); this._super(); return this; }, @@ -119,19 +122,26 @@ openerp.web.Dialog = openerp.web.OldWidget.extend(/** @lends openerp.web.Dialog# this.$element.html(this.render()); } this.set_options(dialog_options); - this.$dialog.dialog(this.dialog_options).dialog('open'); + this.$element.dialog(this.dialog_options).dialog('open'); return this; }, close: function() { - // Closes the dialog but leave it in a state where it could be opened again. - this.$dialog.dialog('close'); + this.$element.dialog('close'); }, on_close: function() { + if (this.dialog_options.destroy_on_close) { + this.$element.dialog('destroy'); + } + }, + on_resized: function() { + if (openerp.connection.debug) { + console.log("Dialog resized to %d x %d", this.$element.width(), this.$element.height()); + } }, stop: function () { // Destroy widget this.close(); - this.$dialog.dialog('destroy'); + this.$element.dialog('destroy'); this._super(); } }); @@ -159,26 +169,18 @@ openerp.web.CrashManager = openerp.web.CallbackEnabled.extend({ on_managed_error: function(error) { $('
' + QWeb.render('DialogWarning', {error: error}) + '
').dialog({ title: "OpenERP " + _.str.capitalize(error.type), - buttons: { - Ok: function() { - $(this).dialog("close"); - } - } + buttons: [ + {text: _t("Ok"), click: function() { $(this).dialog("close"); }} + ] }); }, on_traceback: function(error) { var dialog = new openerp.web.Dialog(this, { title: "OpenERP " + _.str.capitalize(error.type), autoOpen: true, - width: '90%', - height: '90%', - min_width: '800px', - min_height: '600px', - buttons: { - Ok: function() { - $(this).dialog("close"); - } - } + buttons: [ + {text: _t("Ok"), click: function() { $(this).dialog("close"); }} + ] }).start(); dialog.$element.html(QWeb.render('DialogTraceback', {error: error})); } @@ -242,6 +244,7 @@ openerp.web.Database = openerp.web.Widget.extend(/** @lends openerp.web.Database init: function(parent, element_id, option_id) { this._super(parent, element_id); this.$option_id = $('#' + option_id); + this.unblockUIFunction = $.unblockUI; }, start: function() { this._super(); @@ -337,10 +340,26 @@ openerp.web.Database = openerp.web.Widget.extend(/** @lends openerp.web.Database self.widget_parent.do_login( info.db, admin.login, admin.password); self.stop(); - $.unblockUI(); + self.unblockUI(); }); }); }, + /** + * Blocks UI and replaces $.unblockUI by a noop to prevent third parties + * from unblocking the UI + */ + blockUI: function () { + $.blockUI(); + $.unblockUI = function () {}; + }, + /** + * Reinstates $.unblockUI so third parties can play with blockUI, and + * unblocks the UI + */ + unblockUI: function () { + $.unblockUI = this.unblockUIFunction; + $.unblockUI(); + }, /** * Displays an error dialog resulting from the various RPC communications * failing over themselves @@ -353,11 +372,9 @@ openerp.web.Database = openerp.web.Widget.extend(/** @lends openerp.web.Database return $('
').dialog({ modal: true, title: error.title, - buttons: { - Ok: function() { - $(this).dialog("close"); - } - } + buttons: [ + {text: _t("Ok"), click: function() { $(this).dialog("close"); }} + ] }).html(error.error); }, do_create: function() { @@ -366,10 +383,10 @@ openerp.web.Database = openerp.web.Widget.extend(/** @lends openerp.web.Database self.$option_id.find("form[name=create_db_form]").validate({ submitHandler: function (form) { var fields = $(form).serializeArray(); - $.blockUI(); + self.blockUI(); self.rpc("/web/database/create", {'fields': fields}, function(result) { if (result.error) { - $.unblockUI(); + self.unblockUI(); self.display_error(result); return; } @@ -417,7 +434,7 @@ openerp.web.Database = openerp.web.Widget.extend(/** @lends openerp.web.Database .html(QWeb.render("BackupDB", self)) .find("form[name=backup_db_form]").validate({ submitHandler: function (form) { - $.blockUI(); + self.blockUI(); self.session.get_file({ form: form, error: function (body) { @@ -427,7 +444,7 @@ openerp.web.Database = openerp.web.Widget.extend(/** @lends openerp.web.Database error: error[1] }); }, - complete: $.unblockUI + complete: $.proxy(self, 'unblockUI') }); } }); @@ -438,7 +455,7 @@ openerp.web.Database = openerp.web.Widget.extend(/** @lends openerp.web.Database self.$option_id.find("form[name=restore_db_form]").validate({ submitHandler: function (form) { - $.blockUI(); + self.blockUI(); $(form).ajaxSubmit({ url: '/web/database/restore', type: 'POST', @@ -463,9 +480,7 @@ openerp.web.Database = openerp.web.Widget.extend(/** @lends openerp.web.Database }) } }, - complete: function () { - $.unblockUI(); - } + complete: $.proxy(self, 'unblockUI') }); } }); @@ -524,15 +539,6 @@ openerp.web.Login = openerp.web.Widget.extend(/** @lends openerp.web.Login# */{ this.selected_password = localStorage.getItem('last_password_login_success'); } } - - var qs = jQuery.deparam(jQuery.param.querystring()); - if (qs.db) { - this.selected_db = qs.db; - } - if (qs.login) { - this.selected_login = qs.login; - } - }, start: function() { var self = this; @@ -572,7 +578,9 @@ openerp.web.Login = openerp.web.Widget.extend(/** @lends openerp.web.Login# */{ this.$element.closest(".openerp").removeClass("login-mode"); }, on_submit: function(ev) { - ev.preventDefault(); + if(ev) { + ev.preventDefault(); + } var $e = this.$element; var db = $e.find("form [name=db]").val(); var login = $e.find("form input[name=login]").val(); @@ -589,7 +597,7 @@ openerp.web.Login = openerp.web.Widget.extend(/** @lends openerp.web.Login# */{ */ do_login: function (db, login, password) { var self = this; - this.session.session_login(db, login, password, function() { + this.session.session_authenticate(db, login, password).then(function() { if(self.session.session_is_valid()) { if (self.has_local_storage) { if(self.remember_credentials) { @@ -621,9 +629,6 @@ openerp.web.Login = openerp.web.Widget.extend(/** @lends openerp.web.Login# */{ callback: continuation || function() {} }); }, - on_logout: function() { - this.session.logout(); - } }); openerp.web.Header = openerp.web.Widget.extend(/** @lends openerp.web.Header# */{ @@ -650,7 +655,7 @@ openerp.web.Header = openerp.web.Widget.extend(/** @lends openerp.web.Header# * self.$content.remove(); if (!self.session.uid) return; - var func = new openerp.web.Model(self.session, "res.users").get_func("read"); + var func = new openerp.web.Model("res.users").get_func("read"); return func(self.session.uid, ["name", "company_id"]).pipe(function(res) { self.$content = $(QWeb.render("Header-content", {widget: self, user: res})); self.$content.appendTo(self.$element); @@ -667,7 +672,7 @@ openerp.web.Header = openerp.web.Widget.extend(/** @lends openerp.web.Header# * self.rpc("/web/webclient/version_info", {}).then(function(res) { var $help = $(QWeb.render("About-Page", {version_info: res})); $help.dialog({autoOpen: true, - modal: true, width: 960, title: "About"}); + modal: true, width: 960, title: _t("About")}); }); }, shortcut_load :function(){ @@ -746,26 +751,21 @@ openerp.web.Header = openerp.web.Widget.extend(/** @lends openerp.web.Header# * }); }); this.dialog = new openerp.web.Dialog(this,{ - modal: true, - title: 'Preferences', - width: 600, - height: 500, - buttons: { - "Change password": function(){ - self.change_password(); - }, - Cancel: function(){ - $(this).dialog('destroy'); - }, - Save: function(){ - var inner_viewmanager = action_manager.inner_viewmanager; - inner_viewmanager.views[inner_viewmanager.active_view].controller.do_save() - .then(function() { - self.dialog.stop(); - window.location.reload(); - }); + title: _t("Preferences"), + width: '700px', + buttons: [ + {text: _t("Change password"), click: function(){ self.change_password(); }}, + {text: _t("Cancel"), click: function(){ $(this).dialog('destroy'); }}, + {text: _t("Save"), click: function(){ + var inner_viewmanager = action_manager.inner_viewmanager; + inner_viewmanager.views[inner_viewmanager.active_view].controller.do_save() + .then(function() { + self.dialog.stop(); + window.location.reload(); + }); + } } - } + ] }); this.dialog.start().open(); action_manager.appendTo(this.dialog); @@ -774,11 +774,9 @@ openerp.web.Header = openerp.web.Widget.extend(/** @lends openerp.web.Header# * change_password :function() { var self = this; - this.dialog = new openerp.web.Dialog(this,{ - modal : true, - title : 'Change Password', - width : 'auto', - height : 'auto' + this.dialog = new openerp.web.Dialog(this, { + title: _t("Change Password"), + width : 'auto' }); this.dialog.start().open(); this.dialog.$element.html(QWeb.render("Change_Pwd", self)); @@ -801,11 +799,9 @@ openerp.web.Header = openerp.web.Widget.extend(/** @lends openerp.web.Header# * return $('
').dialog({ modal: true, title: error.title, - buttons: { - Ok: function() { - $(this).dialog("close"); - } - } + buttons: [ + {text: _("Ok"), click: function() { $(this).dialog("close"); }} + ] }).html(error.error); }, on_logout: function() { @@ -824,7 +820,7 @@ openerp.web.Menu = openerp.web.Widget.extend(/** @lends openerp.web.Menu# */{ init: function(parent, element_id, secondary_menu_id) { this._super(parent, element_id); this.secondary_menu_id = secondary_menu_id; - this.$secondary_menu = $("#" + secondary_menu_id).hide(); + this.$secondary_menu = $("#" + secondary_menu_id); this.menu = false; this.folded = false; if (window.localStorage) { @@ -836,7 +832,7 @@ openerp.web.Menu = openerp.web.Widget.extend(/** @lends openerp.web.Menu# */{ this.$secondary_menu.addClass(this.folded ? 'oe_folded' : 'oe_unfolded'); }, do_reload: function() { - this.rpc("/web/menu/load", {}, this.on_loaded); + return this.rpc("/web/menu/load", {}, this.on_loaded); }, on_loaded: function(data) { this.data = data; @@ -898,11 +894,13 @@ openerp.web.Menu = openerp.web.Widget.extend(/** @lends openerp.web.Menu# */{ sub_menu_visible = $sub_menu.is(':visible'); this.$secondary_menu.find('.oe_secondary_menu').hide(); - $('.active', this.$element.add(this.$secondary_menu.show())).removeClass('active'); + $('.active', this.$element.add(this.$secondary_menu)).removeClass('active'); $main_menu.add($clicked_menu).add($sub_menu).addClass('active'); if (!(this.folded && manual)) { this.do_show_secondary($sub_menu, $main_menu); + } else { + this.do_show_secondary(); } if ($main_menu != $clicked_menu) { @@ -928,8 +926,15 @@ openerp.web.Menu = openerp.web.Widget.extend(/** @lends openerp.web.Menu# */{ } return false; }, + do_hide_secondary: function() { + this.$secondary_menu.hide(); + }, do_show_secondary: function($sub_menu, $main_menu) { var self = this; + this.$secondary_menu.show(); + if (!arguments.length) { + return; + } if (this.folded) { var css = $main_menu.position(), fold_width = this.$secondary_menu.width() + 2, @@ -944,13 +949,16 @@ openerp.web.Menu = openerp.web.Widget.extend(/** @lends openerp.web.Menu# */{ $sub_menu.css(css); $sub_menu.mouseenter(function() { clearTimeout($sub_menu.data('timeoutId')); + $sub_menu.data('timeoutId', null); + return false; }).mouseleave(function(evt) { var timeoutId = setTimeout(function() { - if (self.folded) { - $sub_menu.hide(); + if (self.folded && $sub_menu.data('timeoutId')) { + $sub_menu.hide().unbind('mouseenter').unbind('mouseleave'); } }, self.float_timeout); $sub_menu.data('timeoutId', timeoutId); + return false; }); } $sub_menu.show(); @@ -959,7 +967,10 @@ openerp.web.Menu = openerp.web.Widget.extend(/** @lends openerp.web.Menu# */{ var self = this; if (data.action.length) { var action = data.action[0][2]; + action.from_menu = true; self.on_action(action); + } else { + self.on_action({type: 'null_action'}); } }, on_action: function(action) { @@ -974,49 +985,60 @@ openerp.web.WebClient = openerp.web.Widget.extend(/** @lends openerp.web.WebClie * @param element_id */ init: function(element_id) { + var self = this; this._super(null, element_id); openerp.webclient = this; - var params = {}; - if(jQuery.param != undefined && jQuery.deparam(jQuery.param.querystring()).kitten != undefined) { - this.$element.addClass("kitten-mode-activated"); - } - this.$element.html(QWeb.render("Interface", params)); - this.notification = new openerp.web.Notification(this); this.loading = new openerp.web.Loading(this); this.crashmanager = new openerp.web.CrashManager(); this.header = new openerp.web.Header(this); this.login = new openerp.web.Login(this); - this.header.on_logout.add(this.login.on_logout); + this.header.on_logout.add(this.on_logout); this.header.on_action.add(this.on_menu_action); - this.session.on_session_invalid.add(this.login.do_ask_login); - this.session.on_session_valid.add_last(this.header.do_update); - this.session.on_session_invalid.add_last(this.header.do_update); - this.session.on_session_valid.add_last(this.on_logged); - - this.menu = new openerp.web.Menu(this, "oe_menu", "oe_secondary_menu"); - this.menu.on_action.add(this.on_menu_action); - - this.url_internal_hashchange = false; - this.url_external_hashchange = false; - jQuery(window).bind('hashchange', this.on_url_hashchange); - + this._current_state = null; }, start: function() { this._super.apply(this, arguments); - this.notification.prependTo(this.$element); - this.loading.appendTo($('#oe_loading')); - this.header.appendTo($("#oe_header")); - this.session.start(); - this.login.appendTo($('#oe_login')); - this.menu.start(); + var self = this; + this.session.bind().then(function() { + var params = {}; + if (jQuery.param != undefined && jQuery.deparam(jQuery.param.querystring()).kitten != undefined) { + this.$element.addClass("kitten-mode-activated"); + this.$element.delegate('img.oe-record-edit-link-img', 'hover', function(e) { + self.$element.toggleClass('clark-gable'); + }); + } + self.$element.html(QWeb.render("Interface", params)); + self.menu = new openerp.web.Menu(self, "oe_menu", "oe_secondary_menu"); + self.menu.on_action.add(self.on_menu_action); + + self.notification.prependTo(self.$element); + self.loading.appendTo($('#oe_loading')); + self.header.appendTo($("#oe_header")); + self.login.appendTo($('#oe_login')); + self.menu.start(); + if(self.session.session_is_valid()) { + self.login.on_login_valid(); + } else { + self.login.on_login_invalid(); + } + }); + this.session.ready.then(function() { + self.login.on_login_valid(); + self.header.do_update(); + self.menu.do_reload(); + if(self.action_manager) + self.action_manager.stop(); + self.action_manager = new openerp.web.ActionManager(self); + self.action_manager.appendTo($("#oe_app")); + self.bind_hashchange(); + }); }, do_reload: function() { - this.session.session_restore(); - this.menu.do_reload(); + return this.session.session_init().pipe(_.bind(function() {this.menu.do_reload();}, this)); }, do_notify: function() { var n = this.notification; @@ -1026,98 +1048,101 @@ openerp.web.WebClient = openerp.web.Widget.extend(/** @lends openerp.web.WebClie var n = this.notification; n.warn.apply(n, arguments); }, - on_logged: function() { - this.menu.do_reload(); + on_logout: function() { + this.session.session_logout(); + this.login.on_login_invalid(); + this.header.do_update(); + $(window).unbind('hashchange', this.on_hashchange); + this.do_push_state({}); if(this.action_manager) this.action_manager.stop(); - this.action_manager = new openerp.web.ActionManager(this); - this.action_manager.appendTo($("#oe_app")); - this.action_manager.do_url_set_hash.add_last(this.do_url_set_hash); + this.action_manager = null; + }, + bind_hashchange: function() { + $(window).bind('hashchange', this.on_hashchange); - // if using saved actions, load the action and give it to action manager - var parameters = jQuery.deparam(jQuery.param.querystring()); - if (parameters["s_action"] != undefined) { - var key = parseInt(parameters["s_action"], 10); - var self = this; - this.rpc("/web/session/get_session_action", {key:key}, function(action) { - self.action_manager.do_action(action); - }); - } else if (openerp._modules_loaded) { // TODO: find better option than this - this.load_url_state() + var state = $.bbq.getState(true); + if (! _.isEmpty(state)) { + $(window).trigger('hashchange'); } else { - this.session.on_modules_loaded.add({ - callback: $.proxy(this, 'load_url_state'), - unique: true, - position: 'last' - }) + this.action_manager.do_action({type: 'ir.actions.client', tag: 'default_home'}); } }, - /** - * Loads state from URL if any, or checks if there is a home action and - * loads that, assuming we're at the index - */ - load_url_state: function () { - var self = this; - // TODO: add actual loading if there is url state to unpack, test on window.location.hash - // not logged in - if (!this.session.uid) { return; } - var ds = new openerp.web.DataSetSearch(this, 'res.users'); - ds.read_ids([this.session.uid], ['action_id'], function (users) { - var home_action = users[0].action_id; - if (!home_action) { - self.default_home(); - return; - } - self.execute_home_action(home_action[0], ds); - }) - }, - default_home: function () { - }, - /** - * Bundles the execution of the home action - * - * @param {Number} action action id - * @param {openerp.web.DataSet} dataset action executor - */ - execute_home_action: function (action, dataset) { - var self = this; - this.rpc('/web/action/load', { - action_id: action, - context: dataset.get_context() - }, function (meh) { - var action = meh.result; - action.context = _.extend(action.context || {}, { - active_id: false, - active_ids: [false], - active_model: dataset.model - }); - self.action_manager.do_action(action); - }); - }, - do_url_set_hash: function(url) { - if(!this.url_external_hashchange) { - this.url_internal_hashchange = true; - jQuery.bbq.pushState(url); + on_hashchange: function(event) { + var state = event.getState(true); + if (!_.isEqual(this._current_state, state)) { + this.action_manager.do_load_state(state); } + this._current_state = state; }, - on_url_hashchange: function() { - if(this.url_internal_hashchange) { - this.url_internal_hashchange = false; - } else { - var url = jQuery.deparam.fragment(); - this.url_external_hashchange = true; - this.action_manager.on_url_hashchange(url); - this.url_external_hashchange = false; - } + do_push_state: function(state) { + var url = '#' + $.param(state); + this._current_state = _.clone(state); + $.bbq.pushState(url); }, on_menu_action: function(action) { this.action_manager.do_action(action); }, - do_about: function() { - } + do_action: function(action) { + var self = this; + // TODO replace by client action menuclick + if(action.menu_id) { + this.do_reload().then(function () { + self.menu.on_menu_click(null, action.menu_id); + }); + } + }, +}); + +openerp.web.EmbeddedClient = openerp.web.Widget.extend({ + template: 'EmptyComponent', + init: function(action_id, options) { + this._super(); + // TODO take the xmlid of a action instead of its id + this.action_id = action_id; + this.options = options || {}; + this.am = new openerp.web.ActionManager(this); + }, + + start: function() { + var self = this; + this.am.appendTo(this.$element.addClass('openerp')); + return this.rpc("/web/action/load", { action_id: this.action_id }, function(result) { + var action = result.result; + action.flags = _.extend({ + //views_switcher : false, + search_view : false, + action_buttons : false, + sidebar : false + //pager : false + }, self.options, action.flags || {}); + + self.am.do_action(action); + }); + }, }); +openerp.web.embed = function (origin, dbname, login, key, action, options) { + $('head').append($('', { + 'rel': 'stylesheet', + 'type': 'text/css', + 'href': origin +'/web/webclient/css' + })); + var currentScript = document.currentScript; + if (!currentScript) { + var sc = document.getElementsByTagName('script'); + currentScript = sc[sc.length-1]; + } + openerp.connection.bind(origin).then(function () { + openerp.connection.session_authenticate(dbname, login, key, true).then(function () { + var client = new openerp.web.EmbeddedClient(action, options); + client.insertAfter(currentScript); + }); + }); + +} + }; // vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax: diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js index d271fbc430e..066e904a8df 100644 --- a/addons/web/static/src/js/core.js +++ b/addons/web/static/src/js/core.js @@ -254,14 +254,16 @@ openerp.web.Registry = openerp.web.Class.extend( /** @lends openerp.web.Registry * Retrieves the object matching the provided key string. * * @param {String} key the key to fetch the object for + * @param {Boolean} [silent_error=false] returns undefined if the key or object is not found, rather than throwing an exception * @returns {Class} the stored class, to initialize * * @throws {openerp.web.KeyNotFound} if the object was not in the mapping * @throws {openerp.web.ObjectNotFound} if the object path was invalid */ - get_object: function (key) { + get_object: function (key, silent_error) { var path_string = this.map[key]; if (path_string === undefined) { + if (silent_error) { return void 'nooo'; } throw new openerp.web.KeyNotFound(key); } @@ -272,6 +274,7 @@ openerp.web.Registry = openerp.web.Class.extend( /** @lends openerp.web.Registry object_match = object_match[path[i]]; if (object_match === undefined) { + if (silent_error) { return void 'noooooo'; } throw new openerp.web.ObjectNotFound(path_string); } } @@ -350,12 +353,21 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp. * @param {String} [server] JSON-RPC endpoint hostname * @param {String} [port] JSON-RPC endpoint port */ - init: function(server, port) { + init: function() { this._super(); - this.server = (server == undefined) ? location.hostname : server; - this.port = (port == undefined) ? location.port : port; - this.rpc_mode = (server == location.hostname) ? "ajax" : "jsonp"; - this.debug = (window.location.search.indexOf('?debug') !== -1); + this.server = null; + this.debug = ($.deparam($.param.querystring()).debug != undefined); + // TODO: session store in cookie should be optional + this.name = openerp._session_id; + this.qweb_mutex = new $.Mutex(); + }, + bind: function(origin) { + var window_origin = location.protocol+"//"+location.host; + this.origin = origin ? _.str.rtrim(origin,'/') : window_origin; + this.prefix = this.origin; + this.server = this.origin; // keep chs happy + openerp.web.qweb.default_dict['_s'] = this.origin; + this.rpc_function = (this.origin == window_origin) ? this.rpc_json : this.rpc_jsonp; this.session_id = false; this.uid = false; this.username = false; @@ -366,14 +378,8 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp. this.context = {}; this.shortcuts = []; this.active_id = null; - // TODO: session should have an optional name indicating that they'll - // be saved to (and revived from) cookies - this.name = 'session'; - this.do_load_qweb(['/web/webclient/qweb']); - }, - - start: function() { - this.session_restore(); + this.ready = $.Deferred(); + return this.session_init(); }, /** * Executes an RPC call, registering the provided callbacks. @@ -390,82 +396,137 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp. */ rpc: function(url, params, success_callback, error_callback) { var self = this; + // url can be an $.ajax option object + if (_.isString(url)) { + url = { url: url }; + } // Construct a JSON-RPC2 request, method is currently unused params.session_id = this.session_id; if (this.debug) params.debug = 1; - - // Call using the rpc_mode - var deferred = $.Deferred(); - this.rpc_ajax(url, { - jsonrpc: "2.0", - method: "call", + var payload = { + jsonrpc: '2.0', + method: 'call', params: params, - id: _.uniqueId('browser-client-') - }).then(function () {deferred.resolve.apply(deferred, arguments);}, - function(error) {deferred.reject(error, $.Event());}); - return deferred.fail(function() { + id: _.uniqueId('r') + }; + var deferred = $.Deferred(); + this.on_rpc_request(); + this.rpc_function(url, payload).then( + function (response, textStatus, jqXHR) { + self.on_rpc_response(); + if (!response.error) { + deferred.resolve(response["result"], textStatus, jqXHR); + } else if (response.error.data.type === "session_invalid") { + self.uid = false; + // TODO deprecate or use a deferred on login.do_ask_login() + self.on_session_invalid(function() { + self.rpc(url, payload.params, + function() { deferred.resolve.apply(deferred, arguments); }, + function() { deferred.reject.apply(deferred, arguments); }); + }); + } else { + deferred.reject(response.error, $.Event()); + } + }, + function(jqXHR, textStatus, errorThrown) { + self.on_rpc_response(); + var error = { + code: -32098, + message: "XmlHttpRequestError " + errorThrown, + data: {type: "xhr"+textStatus, debug: jqXHR.responseText, objects: [jqXHR, errorThrown] } + }; + deferred.reject(error, $.Event()); + }); + // Allow deferred user to disable on_rpc_error in fail + deferred.fail(function() { deferred.fail(function(error, event) { if (!event.isDefaultPrevented()) { self.on_rpc_error(error, event); } }); }).then(success_callback, error_callback).promise(); + return deferred; }, /** * Raw JSON-RPC call * * @returns {jQuery.Deferred} ajax-webd deferred object */ - rpc_ajax: function(url, payload) { + rpc_json: function(url, payload) { var self = this; - this.on_rpc_request(); - // url can be an $.ajax option object - if (_.isString(url)) { - url = { - url: url - } - } var ajax = _.extend({ type: "POST", - url: url, dataType: 'json', contentType: 'application/json', data: JSON.stringify(payload), - processData: false + processData: false, }, url); - var deferred = $.Deferred(); - $.ajax(ajax).done(function(response, textStatus, jqXHR) { - self.on_rpc_response(); - if (!response.error) { - deferred.resolve(response["result"], textStatus, jqXHR); - return; - } - if (response.error.data.type !== "session_invalid") { - deferred.reject(response.error); - return; - } - self.uid = false; - self.on_session_invalid(function() { - self.rpc(url, payload.params, - function() { - deferred.resolve.apply(deferred, arguments); - }, - function(error, event) { - event.preventDefault(); - deferred.reject.apply(deferred, arguments); - }); - }); - }).fail(function(jqXHR, textStatus, errorThrown) { - self.on_rpc_response(); - var error = { - code: -32098, - message: "XmlHttpRequestError " + errorThrown, - data: {type: "xhr"+textStatus, debug: jqXHR.responseText, objects: [jqXHR, errorThrown] } + if (this.synch) + ajax.async = false; + return $.ajax(ajax); + }, + rpc_jsonp: function(url, payload) { + var self = this; + // extracted from payload to set on the url + var data = { + session_id: this.session_id, + id: payload.id, + }; + url.url = this.get_url(url.url); + var ajax = _.extend({ + type: "GET", + dataType: 'jsonp', + jsonp: 'jsonp', + cache: false, + data: data + }, url); + if (this.synch) + ajax.async = false; + var payload_str = JSON.stringify(payload); + var payload_url = $.param({r:payload_str}); + if(payload_url.length < 2000) { + // Direct jsonp request + ajax.data.r = payload_str; + return $.ajax(ajax); + } else { + // Indirect jsonp request + var ifid = _.uniqueId('oe_rpc_iframe'); + var display = options.openerp.debug ? 'block' : 'none'; + var $iframe = $(_.str.sprintf("", ifid, ifid, display)); + var $form = $('
') + .attr('method', 'POST') + .attr('target', ifid) + .attr('enctype', "multipart/form-data") + .attr('action', ajax.url + '?' + $.param(data)) + .append($('').attr('value', payload_str)) + .hide() + .appendTo($('body')); + var cleanUp = function() { + if ($iframe) { + $iframe.unbind("load").attr("src", "javascript:false;").remove(); + } + $form.remove(); }; - deferred.reject(error); - }); - return deferred.promise(); + var deferred = $.Deferred(); + // the first bind is fired up when the iframe is added to the DOM + $iframe.bind('load', function() { + // the second bind is fired up when the result of the form submission is received + $iframe.unbind('load').bind('load', function() { + $.ajax(ajax).always(function() { + cleanUp(); + }).then( + function() { deferred.resolve.apply(deferred, arguments); }, + function() { deferred.reject.apply(deferred, arguments); } + ); + }); + // now that the iframe can receive data, we fill and submit the form + $form.submit(); + }); + // append the iframe to the DOM (will trigger the first load) + $form.after($iframe); + return deferred; + } }, on_rpc_request: function() { }, @@ -474,76 +535,63 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp. on_rpc_error: function(error) { }, /** - * The session is validated either by login or by restoration of a previous session + * Init a session, reloads from cookie, if it exists */ - on_session_valid: function() { - if(!openerp._modules_loaded) - this.load_modules(); - }, - on_session_invalid: function(contination) { - }, - session_is_valid: function() { - return this.uid; - }, - session_login: function(db, login, password, success_callback) { - var self = this; - var params = { db: db, login: login, password: password }; - return this.rpc("/web/session/login", params, function(result) { - _.extend(self, { - session_id: result.session_id, - uid: result.uid, - user_context: result.context, - db: result.db, - username: result.login - }); - self.session_save(); - self.on_session_valid(); - return true; - }).then(success_callback); - }, - login: function() { this.session_login.apply(this, arguments); }, - /** - * Reloads uid and session_id from local storage, if they exist - */ - session_restore: function () { + session_init: function () { var self = this; + // TODO: session store in cookie should be optional this.session_id = this.get_cookie('session_id'); - return this.rpc("/web/session/get_session_info", {}).then(function(result) { + return this.rpc("/web/session/get_session_info", {}).pipe(function(result) { // If immediately follows a login (triggered by trying to restore // an invalid session or no session at all), refresh session data - // (should not change, but just in case...) but should not call - // on_session_valid again as it triggers reloading the menu - var already_logged = self.uid; + // (should not change, but just in case...) _.extend(self, { - uid: result.uid, - user_context: result.context, db: result.db, - username: result.login + username: result.login, + uid: result.uid, + user_context: result.context }); - if (!already_logged) { - if (self.uid) { - self.on_session_valid(); - } else { - self.on_session_invalid(); - } + var deferred = self.do_load_qweb(['/web/webclient/qweb']); + if(self.session_is_valid()) { + return deferred.pipe(_.bind(function() { this.load_modules(); }, self)); } - }, function() { - self.on_session_invalid(); + return deferred; }); }, + session_is_valid: function() { + return !!this.uid; + }, /** - * Saves the session id and uid locally + * The session is validated either by login or by restoration of a previous session */ - session_save: function () { - this.set_cookie('session_id', this.session_id); + session_authenticate: function(db, login, password, volatile) { + var self = this; + var base_location = document.location.protocol + '//' + document.location.host; + var params = { db: db, login: login, password: password, base_location: base_location }; + return this.rpc("/web/session/authenticate", params).pipe(function(result) { + _.extend(self, { + session_id: result.session_id, + db: result.db, + username: result.login, + uid: result.uid, + user_context: result.context + }); + if (!volatile) { + self.set_cookie('session_id', self.session_id); + } + return self.load_modules(); + }); }, - logout: function() { + session_logout: function() { this.set_cookie('session_id', ''); - this.reload_client(); - }, - reload_client: function() { window.location.reload(); }, + /** + * Called when a rpc call fail due to an invalid session. + * By default, it's a noop + */ + on_session_invalid: function(retry_callback) { + }, /** * Fetches a cookie stored by an openerp session * @@ -585,23 +633,26 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp. */ load_modules: function() { var self = this; - this.rpc('/web/session/modules', {}, function(result) { + if(openerp._modules_loaded) { + return $.when(); + } + return this.rpc('/web/session/modules', {}).pipe(function(result) { self.module_list = result; var lang = self.user_context.lang; var params = { mods: ["web"].concat(result), lang: lang}; - self.rpc('/web/webclient/translations',params).then(function(transs) { - openerp.web._t.database.set_bundle(transs); - var modules = self.module_list.join(','); - var file_list = ["/web/static/lib/datejs/globalization/" + - self.user_context.lang.replace("_", "-") + ".js" - ]; - - self.rpc('/web/webclient/csslist', {"mods": modules}, self.do_load_css); - self.rpc('/web/webclient/jslist', {"mods": modules}, function(files) { - self.do_load_js(file_list.concat(files)); - }); - self.rpc('/web/webclient/qweblist', {"mods": modules}, self.do_load_qweb); - openerp._modules_loaded = true; + var modules = self.module_list.join(','); + return $.when( + self.rpc('/web/webclient/csslist', {mods: modules}, self.do_load_css), + self.rpc('/web/webclient/qweblist', {mods: modules}).pipe(self.do_load_qweb), + self.rpc('/web/webclient/translations', params).pipe(function(trans) { + openerp.web._t.database.set_bundle(trans); + var file_list = ["/web/static/lib/datejs/globalization/" + lang.replace("_", "-") + ".js"]; + return self.rpc('/web/webclient/jslist', {mods: modules}).pipe(function(files) { + return self.do_load_js(file_list.concat(files)); + }); + }) + ).then(function() { + self.ready.resolve(); }); }); }, @@ -609,7 +660,7 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp. var self = this; _.each(files, function (file) { $('head').append($('', { - 'href': file, + 'href': self.get_url(file), 'rel': 'stylesheet', 'type': 'text/css' })); @@ -617,28 +668,38 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp. }, do_load_js: function(files) { var self = this; + var d = $.Deferred(); if(files.length != 0) { var file = files.shift(); var tag = document.createElement('script'); tag.type = 'text/javascript'; - tag.src = file; + tag.src = self.get_url(file); tag.onload = tag.onreadystatechange = function() { if ( (tag.readyState && tag.readyState != "loaded" && tag.readyState != "complete") || tag.onload_done ) return; tag.onload_done = true; - self.do_load_js(files); + self.do_load_js(files).then(function () { + d.resolve(); + }); }; var head = document.head || document.getElementsByTagName('head')[0]; head.appendChild(tag); } else { - this.on_modules_loaded(); + self.on_modules_loaded(); + d.resolve(); } + return d; }, do_load_qweb: function(files) { var self = this; _.each(files, function(file) { - openerp.web.qweb.add_template(file); + self.qweb_mutex.exec(function() { + return self.rpc('/web/proxy/load', {path: file}).pipe(function(xml) { + openerp.web.qweb.add_template(_.str.trim(xml)); + }); + }); }); + return self.qweb_mutex.def; }, on_modules_loaded: function() { for(var j=0; j= this.ids.length) { + if (!this.ids.length) { + this.index = null; + } else if (this.index >= this.ids.length) { this.index = 0; } return this; }, select_id: function(id) { - var idx = _.indexOf(this.ids, id); - if (idx === -1) { + var idx = this.get_id_index(id); + if (idx === null) { return false; } else { this.index = idx; return true; } }, + get_id_index: function(id) { + for (var i=0, ii=this.ids.length; i 0 ? this.length - 1 : 0); + if (ids.length === 0) { + this.index = null; + } else if (this.index >= ids.length - 1) { + this.index = ids.length - 1; } }, unlink: function(ids) { @@ -673,7 +689,7 @@ openerp.web.BufferedDataSet = openerp.web.DataSetStatic.extend({ this.set_ids(_.without.apply(_, [this.ids].concat(ids))); this.on_change(); var to_return = $.Deferred().then(callback); - setTimeout(function () {to_return.resolve({result: true});}, 0); + $.async_when().then(function () {to_return.resolve({result: true});}); return to_return.promise(); }, reset_ids: function(ids) { @@ -772,7 +788,7 @@ openerp.web.ProxyDataSet = openerp.web.DataSetSearch.extend({ } else { console.warn("trying to create a record using default proxy dataset behavior"); var to_return = $.Deferred().then(callback); - setTimeout(function () {to_return.resolve({"result": undefined});}, 0); + $.async_when().then(function () {to_return.resolve({"result": undefined});}); return to_return.promise(); } }, @@ -784,7 +800,7 @@ openerp.web.ProxyDataSet = openerp.web.DataSetSearch.extend({ } else { console.warn("trying to write a record using default proxy dataset behavior"); var to_return = $.Deferred().then(callback); - setTimeout(function () {to_return.resolve({"result": true});}, 0); + $.async_when().then(function () {to_return.resolve({"result": true});}); return to_return.promise(); } }, @@ -793,14 +809,14 @@ openerp.web.ProxyDataSet = openerp.web.DataSetSearch.extend({ this.on_unlink(ids); console.warn("trying to unlink a record using default proxy dataset behavior"); var to_return = $.Deferred().then(callback); - setTimeout(function () {to_return.resolve({"result": true});}, 0); + $.async_when().then(function () {to_return.resolve({"result": true});}); return to_return.promise(); }, on_unlink: function(ids) {} }); openerp.web.Model = openerp.web.CallbackEnabled.extend({ - init: function(_, model_name) { + init: function(model_name) { this._super(); this.model_name = model_name; }, diff --git a/addons/web/static/src/js/data_export.js b/addons/web/static/src/js/data_export.js index ea142606b5b..78dc3bef1f9 100644 --- a/addons/web/static/src/js/data_export.js +++ b/addons/web/static/src/js/data_export.js @@ -1,8 +1,9 @@ openerp.web.data_export = function(openerp) { -var QWeb = openerp.web.qweb; +var QWeb = openerp.web.qweb, + _t = openerp.web._t; openerp.web.DataExport = openerp.web.Dialog.extend({ template: 'ExportTreeView', - dialog_title: 'Export Data', + dialog_title: {toString: function () { return _t("Export Data"); }}, init: function(parent, dataset) { this._super(parent); this.records = {}; @@ -14,18 +15,10 @@ openerp.web.DataExport = openerp.web.Dialog.extend({ var self = this; this._super.apply(this, arguments); this.open({ - modal: true, - width: '55%', - height: 'auto', - position: 'top', - buttons : { - "Close" : function() { - self.close(); - }, - "Export To File" : function() { - self.on_click_export_data(); - } - }, + buttons : [ + {text: _t("Close"), click: function() { self.close(); }}, + {text: _t("Export To File"), click: function() { self.on_click_export_data(); }} + ], close: function(event, ui){ self.close();} }); self.$element.removeClass('ui-dialog-content ui-widget-content'); @@ -388,7 +381,7 @@ openerp.web.DataExport = openerp.web.Dialog.extend({ }); }, close: function() { - $(this.$dialog).remove(); + this.$element.remove(); this._super(); } }); diff --git a/addons/web/static/src/js/data_import.js b/addons/web/static/src/js/data_import.js index d5e789ce3e7..2b252454869 100644 --- a/addons/web/static/src/js/data_import.js +++ b/addons/web/static/src/js/data_import.js @@ -31,7 +31,7 @@ function jsonp(form, attributes, callback) { openerp.web.DataImport = openerp.web.Dialog.extend({ template: 'ImportDataView', - dialog_title: "Import Data", + dialog_title: {toString: function () { return _t("Import Data"); }}, init: function(parent, dataset){ var self = this; this._super(parent, {}); @@ -65,10 +65,6 @@ openerp.web.DataImport = openerp.web.Dialog.extend({ var self = this; this._super(); this.open({ - modal: true, - width: '70%', - height: 'auto', - position: 'top', buttons: [ {text: _t("Close"), click: function() { self.stop(); }}, {text: _t("Import File"), click: function() { self.do_import(); }, 'class': 'oe-dialog-import-button'} @@ -111,7 +107,11 @@ openerp.web.DataImport = openerp.web.Dialog.extend({ }); } _(fields).each(function (field, field_name) { - if (field_name === 'id') { return; } + // Ignore spec for id field + // Don't import function fields (function and related) + if (field_name === 'id' || 'function' in field) { + return; + } var f = { id: field_name, name: field_name, @@ -140,7 +140,7 @@ openerp.web.DataImport = openerp.web.Dialog.extend({ }); }, toggle_import_button: function (newstate) { - this.$dialog.dialog('widget') + this.$element.dialog('widget') .find('.oe-dialog-import-button') .button('option', 'disabled', !newstate); }, @@ -183,6 +183,20 @@ openerp.web.DataImport = openerp.web.Dialog.extend({ this.$element.find('#result').empty(); var headers, result_node = this.$element.find("#result"); + if (results['error']) { + result_node.append(QWeb.render('ImportView.error', { + 'error': results['error']})); + this.$element.find('fieldset').removeClass('oe-closed'); + return; + } + if (results['success']) { + if (this.widget_parent.widget_parent.active_view == "list") { + this.widget_parent.reload_content(); + } + this.stop(); + return; + } + if (results['records']) { var lines_to_skip = parseInt(this.$element.find('#csv_skip').val(), 10), with_headers = this.$element.find('#file_has_headers').prop('checked'); @@ -195,16 +209,6 @@ openerp.web.DataImport = openerp.web.Dialog.extend({ : results.records })); this.$element.find('fieldset').addClass('oe-closed'); - } else if (results['error']) { - result_node.append(QWeb.render('ImportView.error', { - 'error': results['error']})); - this.$element.find('fieldset').removeClass('oe-closed'); - } else if (results['success']) { - if (this.widget_parent.widget_parent.active_view == "list") { - this.widget_parent.reload_content(); - } - this.stop(); - return; } this.$element.find('form').removeClass('oe-import-no-result'); @@ -344,7 +348,7 @@ openerp.web.DataImport = openerp.web.Dialog.extend({ return true; }, stop: function() { - $(this.$dialog).remove(); + this.$element.remove(); this._super(); } }); diff --git a/addons/web/static/src/js/dates.js b/addons/web/static/src/js/dates.js index 7861dd21b79..907eaa39fcd 100644 --- a/addons/web/static/src/js/dates.js +++ b/addons/web/static/src/js/dates.js @@ -20,7 +20,7 @@ openerp.web.str_to_datetime = function(str) { if ( !res ) { throw new Error("'" + str + "' is not a valid datetime"); } - var obj = Date.parse(res[1] + " GMT"); + var obj = Date.parseExact(res[1] + " UTC", 'yyyy-MM-dd HH:mm:ss zzz'); if (! obj) { throw new Error("'" + str + "' is not a valid datetime"); } @@ -43,7 +43,7 @@ openerp.web.str_to_date = function(str) { if ( !res ) { throw new Error("'" + str + "' is not a valid date"); } - var obj = Date.parse(str); + var obj = Date.parseExact(str + ' UTC', 'yyyy-MM-dd zzz'); if (! obj) { throw new Error("'" + str + "' is not a valid date"); } @@ -66,7 +66,7 @@ openerp.web.str_to_time = function(str) { if ( !res ) { throw new Error("'" + str + "' is not a valid time"); } - var obj = Date.parse(res[1]); + var obj = Date.parseExact(res[1] + ' UTC', 'HH:mm:ss zzz'); if (! obj) { throw new Error("'" + str + "' is not a valid time"); } diff --git a/addons/web/static/src/js/formats.js b/addons/web/static/src/js/formats.js index 3151b34636b..264cc836e2d 100644 --- a/addons/web/static/src/js/formats.js +++ b/addons/web/static/src/js/formats.js @@ -158,16 +158,17 @@ openerp.web.parse_value = function (value, descriptor, value_if_empty) { var tmp = Number(value); if (!isNaN(tmp)) return tmp; - tmp = value.replace(openerp.web._t.database.parameters.decimal_point, "."); - var tmp2 = tmp; + + var tmp2 = value; do { tmp = tmp2; tmp2 = tmp.replace(openerp.web._t.database.parameters.thousands_sep, ""); } while(tmp !== tmp2); - tmp = Number(tmp); - if (isNaN(tmp)) + var reformatted_value = tmp.replace(openerp.web._t.database.parameters.decimal_point, "."); + var parsed = Number(reformatted_value); + if (isNaN(parsed)) throw new Error(value + " is not a correct float"); - return tmp; + return parsed; case 'float_time': var float_time_pair = value.split(":"); if (float_time_pair.length != 2) @@ -253,7 +254,7 @@ openerp.web.format_cell = function (row_data, column, value_if_empty, process_mo if (column.tag === 'button') { return [ '' ].join('') diff --git a/addons/web/static/src/js/search.js b/addons/web/static/src/js/search.js index f95801975b5..27441a66eaf 100644 --- a/addons/web/static/src/js/search.js +++ b/addons/web/static/src/js/search.js @@ -1,13 +1,14 @@ openerp.web.search = function(openerp) { var QWeb = openerp.web.qweb, - _t = openerp.web._t; + _t = openerp.web._t, + _lt = openerp.web._lt; openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.SearchView# */{ template: "EmptyComponent", /** * @constructs openerp.web.SearchView * @extends openerp.web.Widget - * + * * @param parent * @param element_id * @param dataset @@ -68,7 +69,6 @@ openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.Search rows.push(row); var filters = []; _.each(items, function (item) { - if (item.attrs.invisible === '1') { return; } if (filters.length && item.tag !== 'filter') { row.push( new openerp.web.search.FilterGroup( @@ -139,6 +139,7 @@ openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.Search } }, on_loaded: function(data) { + this.fields_view = data.fields_view; if (data.fields_view.type !== 'search' || data.fields_view.arch.tag !== 'search') { throw new Error(_.str.sprintf( @@ -154,7 +155,8 @@ openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.Search var ext = new openerp.web.search.ExtendedSearch(this, this.model); lines.push([ext]); this.inputs.push(ext); - + this.extended_search = ext; + var render = QWeb.render("SearchView", { 'view': data.fields_view['arch'], 'lines': lines, @@ -162,7 +164,6 @@ openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.Search }); this.$element.html(render); - this.$element.find(".oe_search-view-custom-filter-btn").click(ext.on_activate); var f = this.$element.find('form'); this.$element.find('form') @@ -176,7 +177,7 @@ openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.Search $.when.apply(null, widget_starts).then(function () { self.ready.resolve(); }); - + this.reload_managed_filters(); }, reload_managed_filters: function() { @@ -197,18 +198,25 @@ openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.Search var self = this; var select = this.$element.find(".oe_search-view-filters-management"); var val = select.val(); - - if (val.slice(0,1) == "_") { // useless action - select.val("_filters"); - return; - } - if (val.slice(0, "get:".length) == "get:") { - val = val.slice("get:".length); - val = parseInt(val); - var filter = this.managed_filters[val]; - this.on_search([filter.domain], [filter.context], []); - } else if (val == "save_filter") { - select.val("_filters"); + switch(val) { + case 'advanced_filter': + this.extended_search.on_activate(); + break; + case 'add_to_dashboard': + this.on_add_to_dashboard(); + break; + case 'manage_filters': + this.do_action({ + res_model: 'ir.filters', + views: [[false, 'list'], [false, 'form']], + type: 'ir.actions.act_window', + context: {"search_default_user_id": this.session.uid, + "search_default_model_id": this.dataset.model}, + target: "current", + limit : 80 + }); + break; + case 'save_filter': var data = this.build_search_data(); var context = new openerp.web.CompoundContext(); _.each(data.contexts, function(x) { @@ -241,19 +249,63 @@ openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.Search }} ] }); - } else { // manage_filters - select.val("_filters"); - this.do_action({ - res_model: 'ir.filters', - views: [[false, 'list'], [false, 'form']], - type: 'ir.actions.act_window', - context: {"search_default_user_id": this.session.uid, - "search_default_model_id": this.dataset.model}, - target: "current", - limit : 80, - auto_search : true - }); + break; } + if (val.slice(0, 4) == "get:") { + val = val.slice(4); + val = parseInt(val, 10); + var filter = this.managed_filters[val]; + this.on_search([filter.domain], [filter.context], []); + } else { + select.val(''); + } + }, + on_add_to_dashboard: function() { + this.$element.find(".oe_search-view-filters-management")[0].selectedIndex = 0; + var self = this, + menu = openerp.webclient.menu, + $dialog = $(QWeb.render("SearchView.add_to_dashboard", { + dashboards : menu.data.data.children, + selected_menu_id : menu.$element.find('a.active').data('menu') + })); + $dialog.find('input').val(this.fields_view.name); + $dialog.dialog({ + modal: true, + title: _t("Add to Dashboard"), + buttons: [ + {text: _t("Cancel"), click: function() { + $(this).dialog("close"); + }}, + {text: _t("OK"), click: function() { + $(this).dialog("close"); + var menu_id = $(this).find("select").val(), + title = $(this).find("input").val(), + data = self.build_search_data(), + context = new openerp.web.CompoundContext(), + domain = new openerp.web.CompoundDomain(); + _.each(data.contexts, function(x) { + context.add(x); + }); + _.each(data.domains, function(x) { + domain.add(x); + }); + self.rpc('/web/searchview/add_to_dashboard', { + menu_id: menu_id, + action_id: self.widget_parent.action.id, + context_to_save: context, + domain: domain, + view_mode: self.widget_parent.active_view, + name: title + }, function(r) { + if (r === false) { + self.do_warn("Could not add filter to dashboard"); + } else { + self.do_notify("Filter added to dashboard", ''); + } + }); + }} + ] + }); }, /** * Performs the search view collection of widget data. @@ -360,6 +412,11 @@ openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.Search this.$element.find('table:last').hide(); $('.searchview_extended_groups_list').empty(); + _.each(this.inputs, function (input) { + if(input.datewidget && input.datewidget.value) { + input.datewidget.set_value(false); + } + }); setTimeout(this.on_clear, 0); }, /** @@ -527,6 +584,7 @@ openerp.web.search.Input = openerp.web.search.Widget.extend( /** @lends openerp. init: function (view) { this._super(view); this.view.inputs.push(this); + this.style = undefined; }, get_context: function () { throw new Error( @@ -535,6 +593,16 @@ openerp.web.search.Input = openerp.web.search.Widget.extend( /** @lends openerp. get_domain: function () { throw new Error( "get_domain not implemented for widget " + this.attrs.type); + }, + load_attrs: function (attrs) { + if (attrs.modifiers) { + attrs.modifiers = JSON.parse(attrs.modifiers); + attrs.invisible = attrs.modifiers.invisible || false; + if (attrs.invisible) { + this.style = 'display: none;' + } + } + this.attrs = attrs; } }); openerp.web.search.FilterGroup = openerp.web.search.Input.extend(/** @lends openerp.web.search.FilterGroup# */{ @@ -595,7 +663,7 @@ openerp.web.search.Filter = openerp.web.search.Input.extend(/** @lends openerp.w */ init: function (node, view) { this._super(view); - this.attrs = node.attrs; + this.load_attrs(node.attrs); this.classes = [this.attrs.string ? 'filter_label' : 'filter_icon']; this.make_id('filter', this.attrs.name); }, @@ -653,8 +721,8 @@ openerp.web.search.Field = openerp.web.search.Input.extend( /** @lends openerp.w */ init: function (view_section, field, view) { this._super(view); - this.attrs = _.extend({}, field, view_section.attrs); - this.filters = new openerp.web.search.FilterGroup(_.map( + this.load_attrs(_.extend({}, field, view_section.attrs)); + this.filters = new openerp.web.search.FilterGroup(_.compact(_.map( view_section.children, function (filter_node) { if (filter_node.attrs.string && typeof console !== 'undefined' && console.debug) { @@ -664,7 +732,7 @@ openerp.web.search.Field = openerp.web.search.Input.extend( /** @lends openerp.w delete filter_node.attrs.string; return new openerp.web.search.Filter( filter_node, view); - }), view); + })), view); this.make_id('input', field.type, this.attrs.name); }, start: function () { @@ -827,8 +895,8 @@ openerp.web.search.BooleanField = openerp.web.search.SelectionField.extend(/** @ init: function () { this._super.apply(this, arguments); this.attrs.selection = [ - ['true', 'Yes'], - ['false', 'No'] + ['true', _t("Yes")], + ['false', _t("No")] ]; }, /** @@ -1126,7 +1194,7 @@ openerp.web.search.ExtendedSearchProposition = openerp.web.OldWidget.extend(/** * @param field a field descriptor object (as returned by fields_get, augmented by the field name) */ select_field: function(field) { - var _this = this; + var self = this; if(this.attrs.selected != null) { this.value.stop(); this.value = null; @@ -1153,14 +1221,14 @@ openerp.web.search.ExtendedSearchProposition = openerp.web.OldWidget.extend(/** this.value.set_field(field); } _.each(this.value.operators, function(operator) { - var option = jQuery('